1. 均方差损失 MSE Loss (L2 Loss)
- 针对回归问题
MSE也称为L2 loss:
随着预测与真实值的绝对误差的增加,均方差损失呈二次方增加。
2. 平均绝对误差损失 MAE Loss (L1 Loss)
- 针对回归问题
MSE和MAE的区别
MSE可以更快收敛:
MSE的损失梯度为,MAE的损失梯度为+-1,也就是说MSE的梯度scale会随着误差大小变化,而MAE的梯度则一直保持为1(即使是在绝对误差很小的情况下).
MAE对于outlier更加鲁棒:
MAE损失对于绝对误差是线性关系,MSE是平方关系。当误差非常大的时候,MSE损失会远远大于MAE,导致对模型的影响比较大。
3. Huber Loss
- 针对回归问题
Huber Loss将L1和L2结合起来,也被称做smoothed L1 Loss。增加了一个需要额外设置的超参数,来控制L2和L1的连接位置。 在误差接近0的时候使用L2,使损失函数可导,梯度更加稳定;误差较大的时候用L1,可以降低outlier带来的巨大误差的影响。
4. 交叉熵损失 Cross Entropy Loss
- 针对分类问题
二分类
二分类中,通常使用Sigmoid函数将模型的输出压缩到(0, 1)区间。给定输入,模型判断为正类/负类的概率:
合并成一个:
取对数加负号之后,得到:
N是所有样本的数量。
图中曲线可以看出,当预测值越接近目标值损失越小,随着误差变差,损失呈现指数增长。
多分类
真实值现在是一个One-hot向量,Sigmoid换成了Softmax来把输出值压缩到(0, 1)之间,所有维度的输出和为1.
Softmax公式:
表示K个类别中的一个,k只在对应的类别上是1,其他时候是0。
于是上式可以改写成:
是样本
的目标类。
Cross Entropy和MSE
分类问题中为什么不用MSE? 因为MSE假设了误差服从高斯分布,在分类任务下这个假设无法满足,因此效果会很差。
第二个论点是从信息论的角度来分析的,是关于由KL散度的角度来推导Cross Entropy的过程(原文)
5. Hinge Loss
是另一种二分类损失函数,适用于Maximum-margin的分类,SVM的损失函数就是hinge loss + L2正则化
下图为,当y为正类的时候(),不同的输出
对应的loss图
当y为正类时,模型输出负值会有很大的惩罚。即使输出为正值在(0, 1)区间,也还是会有一个较小的惩罚。也就是只有置信度高的才会有零损失。使用hinge loss直觉上的理解是要找到一个决策边界,使得素有数据点被这个边界正确地,高置信度地被分类。
同时hinge loss也反应了一点,对于那些已经可以被很好分类的样本,它不再对loss产生贡献,可以让模型花更多的energy去学习难以分类的样本。