常用损失函数
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就是猫, 此时, 左边的熵,就是真实值的分布, 是一个常数, 已知的常数, 它对于损失函数的比较和梯度下降没有帮助, 所以可以丢掉, 直接用交叉熵