深度学习之损失函数小结
在深度学习中,损失函数扮演着很重要的角色。通过最小化损失函数,使得模型达到收敛状态,减少模型预测值的误差。因此,不同的损失函数,对模型的影响是重大的。下面总结一下常用的损失函数:
- 图像分类:交叉熵
- 目标检测:Focal loss、L1/L2损失函数、IOU Loss、GIOU、DIOU、CIOU
IOU Loss:考虑检测框和目标框重叠面积。
GIOU Loss:在IOU的基础上,解决边界框不重合时的问题。
DIOU Loss:在IOU的基础上,考虑边界框中心距离的信息。
CIOU Loss:在DIOU的基础上,考虑边界框宽高比的尺度信息。
- 图像识别:Triplet Loss、Center Loss、Sphereface、Cosface、Arcface
现存问题
IOU、GIOU没有考虑真值框与预测框中心的之间的距离信息,实际情况下,中心点的距离越小框预测的越准。DIOU可以很好的反应中心点距离的情况z
图像分类
交叉熵
在图像分类中,经常使用softmax+交叉熵作为损失函数:
其中,p(x)表示真实概率分布,q(x)表示预测概率分布。交叉熵损失函数通过缩小两个概率分布的差异,来使预测概率分布尽可能达到真实概率分布。
后来,谷歌在交叉熵的基础上,提出了label smoothing(标签平滑),具体介绍,可以参考这篇博客。
在实际中,需要用预测概率去拟合真实概率,而拟合one-hot的真实概率函数会带来两个问题:
- 无法保证模型的泛化能力,容易造成过拟合;
- 全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,而由梯度有界可知,这种情况很难adapt,会造成模型过于相信预测的类别。
因此,为了减少这种过于自信,同时减缓人为标注的误差带来的影响,需要对p(x)进行变化:
其中,δ(k,y)为Dirac函数,u(k)为均匀分布。简单而言,降低标签y的置信度,提高其余类别的置信度。从而,交叉熵变成了: