自然语言处理—学习Machine Learning & Recommendation & NLP & DL自然语言处理(NLP)

有监督学习中的损失函数

2019-03-22  本文已影响0人  b424191ea349

分类问题

在有监督学习中,损失函数刻画了模型和训练样本的匹配程度。假设训练样本的形式为x_i,y_i,其中x_i \in X,表示第i个样本点的特征,y_i \in Y,表示该样本点的标签。

那么对于一个二分类问题,Y=\{1,-1\},这样子最自然的损失函数是0-1损失。说白了也就是预测和真实一致时,函数取值为1,否则取值为0。但是这个函数非凸、非光滑,这使得我们很难对这个函数进行直接优化。但不可否认,它是一个很好的思路。

注:在下面所有的地方,我们用L表示损失函数,用\hat{y}表示预测值,用y表示真实值。

Hinge损失函数

Hinge损失函数是一个0-1损失的凸上界,通常用在"maximum-margin"的分类任务中,比如支持向量机。具体数学表达式如下:

L(y)=\max (0,1-\hat{y} y)

其中\hat{y}表示预测值,但通常是软结果,比如输出不是0/1,而是0.87。

那么对应到上面的式子,如果:

它的图像相比较0/1损失而言如下:


其中图像横轴表示\hat{y}y,纵轴表示损失。很明显,图像在横轴为1,也就是\hat{y}y=1这一点不可导。因此不能用梯度下降法进行优化,而要采用次梯度下降法。

参考链接:
Wikiwand Hinge loss

Logistic 损失函数

Logistic 损失函数也是一种0/1损失的代理损失函数,也是0/1损失函数的凸上界,其中数学表达式如下:
L_{\text { logistic }}(\hat y, y)=\log _{2}(1+\exp (-\hat y y))

并且这个函数处处光滑,因此可以使用梯度下降法进行优化,但是这个损失函数对所有的样本点都进行惩罚,所以对异常点比较敏感。

交叉熵损失函数

这个损失函数用到的地方比较多,也是0/1损失函数的一个凸上界。数学表达式如下:
L_{\text { cross entropy }}(\hat y, y)=-\log _{2}\left(\frac{1+\hat y y}{2}\right)

最后这四种损失函数在图像中显示如下:

回归问题

对于一个回归问题,我们希望我们预测出来的值能够尽量的接近真实的值。

最常用的实际上是平方损失。

注:在下面所有的地方,我们用L表示损失函数,用\hat{y}表示预测值,用y表示真实值。

平方损失

数学表达式也非常简单:
L_{\text { square }}(\hat y, y)=(\hat y-y)^{2}
平方损失不仅较简单,而且可以用梯度下降进行优化,但是当预测值距离真实值较远时,平方损失函数的惩罚力度较大。故而它对异常点比较敏感。

绝对值损失函数

为了解决平方损失对异常点惩罚力度较大的问题,可以采用绝对损失函数。
数学表达式如下:
L_{\text { absolute }}(\hat y, y)=|\hat y-y|

绝对损失函数相当于是在做中值回归,相比做均值回归的平方损失函数,绝对损失函数对异常点更鲁棒一些。但是,绝对损失函数在f=y处无法求导数。因而综合考虑可导性和异常点的鲁棒性,可以采用Huber损失函数。

Huber损失函数

L_{\mathrm{Hubur}}(\hat y, y)=\left\{\begin{array}{ll}{(\hat y-y)^{2},} & {|\hat y-y| \leqslant \delta} \\ {2 \delta|\hat y-y|-\delta^{2},} & {|\hat y-y>\delta}\end{array}\right.

Huber损失函数在|\hat y−y|较小时为平方损失,在|\hat y−y|较大时为线性损失,处处可导,且对异常点鲁棒。

三种函数的对比图如下:

参考

百面机器学习
loss function

上一篇 下一篇

猜你喜欢

热点阅读