常用损失函数

0-1损失函数

预测值和目标值不等, 则为1, 否则为0

\[L(Y,f(x))= \begin{cases} 1, Y\not=f(x) \\ 0, Y=f(x) \end{cases} \]

0-1损失直接对应分类判别的错误与否, 可以理解为是一个\(sign\)函数, 这样的函数, 是不连续的, 非凸的, 感知机就是用的这种损失, 这种损失太严格

绝对值损失(MAE)

\[L(Y,f(x))=|Y-f(x)| \]

MAE对于异常样本具有很好的适应能力, 但它的损失往往不考虑方向, 导数不连续使得寻找最优解的过程低效

对数损失

常见用于: 逻辑回归

\[L(Y, P(Y|X))=-\log P(Y|X) \]

log对数损失函数能非常好的表征概率分布,在很多场景尤其是多分类,如果需要知道结果属于每个类别的置信度,那它非常适合。但它对噪声也比较敏感

平方误差损失

\[L(Y,f(x))=\sum (Y-f(x))^2 \]

常见于回归问题

指数损失

指数损失很少用, 出现在Adaboost中

\[L(y,f(x))=e^{-yf(x)} \]

同样的, 它对噪声也是比较敏感的

交叉熵损失

二分类

\[L(Y,f(x))=-\frac{1}{n}\sum [y\ln f(x)+(1-y)\ln (1-f(x))] \]

多分类

\[L(Y,f(x))=-\frac{1}{n}\sum y_i ln f(x) \]

在二分类任务中, 交叉煽损失也就是逻辑回归里面的对数损失, 或者说是对数似然损失.
多分类中的交叉熵, 是描述2个概率分布之间的差距, 它和KL散度也有着千丝万缕的联系,

\[D_{KL}(P|Q)=\sum_{x\in i}P(x_i)*\log P(x_i)-P(x_i)\log Q(x_i) \]

可以看到, 等号右边就是交叉熵, 左边是熵
交叉熵也等于2个概率分布的KL散度加上真实分布的熵,这个真实的分布也可以理解为是我们的标签, 另一个概率分布也就是预测值, 预测值是一个概率分布, 所以这也是为什么交叉熵常常和softmax联系起来的原因

在深度学习的损失评估中,相对熵(KL散度)可以比较两个分布(真实分布和预测结果的分布)的差异。当训练数据给定,其真实分布是确定的。比如多分类问题中,一张图片的结果是猫,无论模型怎么优化,其预测结果是不确定的,但真实的label就是猫, 此时, 左边的熵,就是真实值的分布, 是一个常数, 已知的常数, 它对于损失函数的比较和梯度下降没有帮助, 所以可以丢掉, 直接用交叉熵

posted @ 2020-03-12 14:08  real-zhouyc  阅读(387)  评论(0编辑  收藏  举报