[论文笔记] 损失函数整理

[论文笔记] 损失函数整理

纯属个人理解,梳理自己思路用,仅供参考(可能会有标点错误或语句不通顺 +_+)

损失函数集合

损失函数对于机器学习,就像一把尺子,用来度量模型,指导模型训练用,因此损失函数的设计和模型结构设计一样重要。损失函数用来评价预测值和真实值间的关系,好像大多数关于loss的论文都出在人脸辨识和细粒度分类领域。

Contrastive Loss

对比损失函数,来自Yann LeCun的论文Dimensionality Reduction by Learning an Invariant Mapping,出发点想让增大类间差异并且减小类内差异.
公式如下:

Y=0表示x1和x2是相似的,Ls表示相似时候的度量,通常用距离的平方表示,用来惩罚相似时候预测距离变大的问题。Y=1表示x1和x2不相似,Ld表示不相似的距离,用hinge loss的平方表示,用来鼓励x1和x2不一致时,二者距离越大越好。公式4是L函数,其中中的Ls和Ld如下图所示。

上图图表示的就是损失函数L与样本特征的欧式距离之间的关系,其中红色虚线表示的是相似样本的损失值,蓝色实线表示的不相似样本的损失值。

Triplet Loss

来自论文FaceNet: A Unified Embedding for Face Recognition and Clustering,本文基本上是对上文的改进,但这次要求的是输入三张信息,正样本x1,负样本x2,以及要判断的输入x,定义公式如下:

原理上,是衡量输入x与正负样本对的相对距离差,如下图所示:

之后有大量关于triplet loss的改进方法,例如Quadruplet Loss等。

Softmax Cross-Entropy Loss

简称为softmax loss,公式如下,xi表示第i维特征,分子中的指数项表示xi预测指为yi所得的分数。用softmax函数做压缩,用来表示多类预测的概率,整体是将其带入交叉熵公式所得。m表示对应的mini-batch样本数。偏置b分析时候可以省略影响不大,因为其和输入的xi没有关系。

如果cnn网络使用softmax loss的话,可以将其分类前提取到的特征xi投影到2d平面上(应该是用t-sne),如下图所示。由于fc层其实就是一个近似线性的分类器,从下图可以看出其决策边界,可以注意到,类间基本可分,但是类内分布并不均匀。

标准CNN训练流程如下图所示:


Center Loss

中心损失函数center loss,来自论文A Discriminative Feature Learning Approach for Deep Face Recognition,其目的是关注类内分布均匀性的,想让其绕类内中心均匀分布,最小化类内差异,公式如下:

其中Cyi表示对应yi的类别中心,Lc可以有效描述类内的关系。λ表示融合关系,当λ=0时,就变成softmax loss。想法很好,但问题是Cyi类别中心怎么确定,总不能遍历所有样本后提取特征在做平均求得,这样计算效率太低。所以有没有像meanshift那样的,通过迭代或求导的方式慢慢逼近中心。方法每次中心计算依赖mini-batch,为了避免错误分类时的干扰,利用学习率α控制Cyi的更新,如下公式所示:

这样整个cost loss就是可以训练的,通过sgd就可以优化了,计算流程如下。

训练效果如下所示:


L-Softmax

最大间隔softmax loss,出发点也是类内压缩和类间分离,对于softmax loss,向量相乘可以转化为cos距离,可以改写为下式:

softmax loss的目的也是想让两个特征分开,但是设计上没有加强约束,其中m就是约束,是一个控制距离的变量,它越大训练会变得越困难,如下公式所示

L-softmax可以由下公式表示:

针对φ函数可简化为

关于L-softmax的几何解释,这对二分类简单说明,只有W1和W2,可以下面这张图:

在训练过程中,当W1=W2时,softmax loss要求 θ1<θ2, 而L-Softmax则要求θ1<θ2,所以可以看出L-softmax要求更严格,单也要主要到当W1和W2不等(以及x1和x2分布不均匀)时,分类会存在较大的径向偏差,因此才有下面LMCL。

LMCL

论文为解决人脸识别问题,提出LMCL损失函数,其认为softmax作为损失函数,不能够使模型学到更具判别能力的特征,不足以最大化在分类任务上的判别能力,来自论文cosFace:Large Margin cosine loss for deep face recognitionCenter Loss、L-Softmax、A-Softmax等所有这些改进算法都基于一个核心思想:增大类间差异并且减小类内差异。本文也本着这样想法,通过对特征向量和权重向量的L2归一化,把softmax loss损失函数转化为余弦损失函数,这样做消除了半径方向的变化(相比与L-Softmax),并在此基础上引入了一个余弦边缘值 m 来进一步最大化所学习的特征在角度空间的决策边界。
人脸识别中,训练时用loss进行监督,测试时verification和identification流程如下图。

通过对特征向量和权重向量的L2归一化,LMCL的公式定义如下:

其决策边界的几何解释如下图所示:

  • softmax在不考虑x的影响(归一化),可以表示为:
  • NSL在不考虑x和w的影响,可以表示为:
  • A-Softmax在不考虑x和w的影响,可以表示为:
  • LMCL在不考虑x和w的影响,可以表示为:

论文推出了尺度因子s的下界,给定Pw时,类别数增大,s将增大:

这篇和下面两篇基本一样:
1.additive margin softmax for face verification
2.ArcFace: additive angular margin loss for deep face recognition

L-GM

论文提出了最大间隔混合高斯损失函数L-GM,其希望特征分布是混合高斯的,同时特征间满足最大间隔,可以看作是center loss的泛化版本,相当于说center loss要求特征是关于中心对称分布的(欧氏距离),但是L-GM中的混合高斯可以用马氏距离建模,能表征相关性特征间的距离(话虽如此,但论文中为了优化,选择协方差矩阵为对角矩阵,虽然是对角但不是单位阵,还是有区别的),同时关于类别损失函数也不一样,center loss的类别损失项使用softmax loss,用的是cos距离衡量相似性,L-GM的类别损失项利用的是欧式距离衡量相似性。
基于混合高斯的类别损失函数loss,如下公式定义(简介明了,很容易得到,后验概率用GM来构造,然后带入cross-entropy):

换成一般化的写法,用距离来度量,如下式:

文中出现了我没见过的新名词likelihood regularization,是这样解释:只用上式的分类loss并不能使特征朝着GM的分布去优化。我的理解就是极大似然估计(不考虑相关性就是最小二乘的概率解释),公式如下:

如果对距离度量加上margin,同时认为p(k)是均匀分布,如下式:

对上面式子分析的话,式子17的第一项(类别损失项),由于p(k)是均匀分布,是常数项,可以省略。分母项归一化用,而且放在log里面,也相当于加上一个常数项。做完这些操作后,发现式子17第一项和第二项,基本一样。 第一项分子项有指数幂,可以简化出来成关于距离d的量,所以对于后面likelihood regularization,也简化为距离d加常数项。那么这两项都是关于距离d的,基本一样,所以感觉作用不是很大,感觉α和λ基本上一回事(以上分析,不知道对错,是我哪里出错了吗?)。论文后面我也没找到关于加likelihood regularization和不加的对比(我没找到?),总感觉这个likelihood regularization不起作用。
关于margin,定义为平均特征距离的α倍数,有如下特性:

在minst上的对比效果,如下图所示:

可能理解不对,还请见谅。

关于损失函数,现在看来要不从softmax出发,好处是模型不用怎么改动,有两个思路,转成cos距离或者是欧式距离,要不就像Contrastive Loss和Triplet Loss等考虑,从样本度量对比出发,考虑样本距离的约束。哪种loss好呢?可能只有试试才知道。
编辑于 2018-03-28