常见损失函数总结-图像分类篇【上】
一、前言 在深度学习中,损失函数扮演着至关重要的角色。通过最小化损失函数,使模型达到收敛状态,减少模型预测值的误差。因此,不同的损失函数,对模型的影响是十分重大的。
接下来,重点总结一下在实习工作实践中经常用到的损失函数:
- 图像分类:softmax,weighted softmax loss,focal loss,soft softmax loss,L-softmax Loss,Hinge,Exponential loss与Logistic loss
- 目标检测:Focal loss,L1/L2损失,IOU Loss,GIOU ,DIOU,CIOU
- 图像识别:Triplet Loss,Center Loss,Sphereface,Cosface,Arcface
什么是损失函数? 深度学习中的损失函数(loss function)是用来评估模型的预测值-f(x)与真实值-y的不一致程度,损失函数越小,代表模型的鲁棒性越好,损失函数能指导模型学习。
二、常见图像分类损失函数 2.1、0-1 loss
0-1 loss是最原始的loss,它直接比较输出值与输入值是否相等,对于样本i,它的loss等于:
当标签与预测类别相等时,loss为0,否则为1。可以看出,0-1 loss无法对x进行求导,在依赖于反向传播的深度学习任务中,无法被使用,0-1 loss更多的是启发新的loss的产生。
2.2、熵与交叉熵loss 物理学中的熵,表示一个热力学系统的无序程度。为了解决对信息的量化度量问题,香农在1948年提出了“信息熵”的概念,它使用对数函数表示对不确定性的测量。熵越高,表示能传输的信息越多,熵越少,表示传输的信息越少,可以直接将熵理解为信息量。
对于单个的信息源,信源的平均不确定性就是单个符号不确定性-logpi的统计平均值,信息熵的定义如下:
假设有两个概率分布p(x)和q(x),其中p是已知的分布,q是未知的分布,则其交叉熵函数是两个分布的互信息,可以反应其相关程度。至此,引出了分类任务中最常用的loss,即log loss,又名交叉熵loss,后统一称为交叉熵:
在图像分类中,经常使用softmax+交叉熵作为损失函数:
其中
p(x)" role="presentation" style=" display: inline; line-height: normal; word-spacing: normal; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">p(x)表示真实概率分布,
q(x)" role="presentation" style=" display: inline; line-height: normal; word-spacing: normal; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">q(x)表示预测概率分布。交叉熵损失函数通过缩小两个概率分布的差异,来使预测概率分布尽可能达到真实概率分布。
后来,谷歌在交叉熵的基础上,提出了
label smoothing(标签平滑)
1. 无法保证模型的泛化能力,容易造成过拟合;
2. 全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,而由梯度有界可知,这种情况很难适应,会造成模型过于相信预测的类别。
因此,为了减少这种过于自信,同时减缓人为标注的误差带来的影响,需要对 p(x)" role="presentation" style=" display: inline; line-height: normal; word-spacing: normal; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">p(x)进行变化:
其中,
δ(k,y)" role="presentation" style=" display: inline; line-height: normal; word-spacing: normal; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">δ(k,y)为Dirac函数,
u(k)" role="presentation" style=" display: inline; line-height: normal; word-spacing: normal; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">u(k)为均匀分布
。简单而言,降低标签y的置信度,提高其余类别的置信度。从而,交叉熵变成:
2.3、softmax loss及其变种 假如log loss中的f(x)的表现形式是softmax概率的形式,那么交叉熵loss就是熟知的softmax with cross-entropy loss,简称softmax loss,所以说softmax loss只是交叉熵的一个特例。
softmax loss被广泛用于分类分割等任务,且发展出了很多的变种,有针对不平衡样本问题的weighted softmax loss,focal loss,针对蒸馏学习的soft softmax loss,促进类内更加紧凑的L-softmax Loss等一系列的改进。
限于篇幅,更多精彩,请关注下期内容~
推荐阅读文章