常见损失函数总结-图像分类篇【上】

一、前言 在深度学习中,损失函数扮演着至关重要的角色。通过最小化损失函数,使模型达到收敛状态,减少模型预测值的误差。因此,不同的损失函数,对模型的影响是十分重大的。

接下来,重点总结一下在实习工作实践中经常用到的损失函数:

  • 图像分类: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的不一致程度,损失函数越小,代表模型的鲁棒性越好,损失函数能指导模型学习。


损失函数图绘画python 损失函数图像_深度学习训练损失为none

  二、常见图像分类损失函数 2.1、0-1 loss

0-1 loss是最原始的loss,它直接比较输出值与输入值是否相等,对于样本i,它的loss等于:


损失函数图绘画python 损失函数图像_inline函数_02

当标签与预测类别相等时,loss为0,否则为1。可以看出,0-1 loss无法对x进行求导,在依赖于反向传播的深度学习任务中,无法被使用,0-1 loss更多的是启发新的loss的产生。

2.2、熵与交叉熵loss 物理学中的熵,表示一个热力学系统的无序程度。为了解决对信息的量化度量问题,香农在1948年提出了“信息熵”的概念,它使用对数函数表示对不确定性的测量。熵越高,表示能传输的信息越多,熵越少,表示传输的信息越少,可以直接将熵理解为信息量。


对于单个的信息源,信源的平均不确定性就是单个符号不确定性-logpi的统计平均值,信息熵的定义如下:


损失函数图绘画python 损失函数图像_display函数怎么使用_03

假设有两个概率分布p(x)和q(x),其中p是已知的分布,q是未知的分布,则其交叉熵函数是两个分布的互信息,可以反应其相关程度。至此,引出了分类任务中最常用的loss,即log loss,又名交叉熵loss,后统一称为交叉熵:


损失函数图绘画python 损失函数图像_损失函数图绘画python_04

在图像分类中,经常使用softmax+交叉熵作为损失函数:


损失函数图绘画python 损失函数图像_深度学习 二分类 损失函数_05

其中

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的置信度,提高其余类别的置信度。从而,交叉熵变成:

损失函数图绘画python 损失函数图像_inline函数_06


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等一系列的改进。

限于篇幅,更多精彩,请关注下期内容~

推荐阅读文章

[1] AI入门-人工智能的前世今生[2] AI入门-深度学习综述[3] AI入门-计算机视觉学习指南[附资源][4] 深度学习框架总结—国际篇[5] 深度学习-CNN结构设计技巧[6] 资源分享-深度学习及数据分析等资源合集

[7] 今日分享—统计学习方法

[8] 算法总结—人脸检测算法