CVPR2018:腾讯AI LAB 基于大间隔余弦损失的人脸识别

今天的深度学习,最牛的大佬们在改结构,比如Hinton,何凯明
很牛的大佬在改损失函数,比如这篇《CosFace: Large Margin Cosine Loss for Deep Face Recognition》
牛的大佬在现有的算法上提出层出不穷的新应用
而我,在当分母~

文章主要创新点就是对人脸识别的损失函数做了优化。
首先复习点余弦距离:

1、余弦距离

余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。

向量,是多维空间中有方向的线段,如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。而要确定两个向量方向是否一致,这就要用到余弦定理计算向量的夹角。

余弦定理描述了三角形中任何一个夹角和三个边的关系。给定三角形的三条边,可以使用余弦定理求出三角形各个角的角度。

2、余弦距离和欧氏距离的对比

从上图可以看出,余弦距离使用两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比欧氏距离,余弦距离更加注重两个向量在方向上的差异。

借助三维坐标系来看下欧氏距离和余弦距离的区别:


从上图可以看出,欧氏距离衡量的是空间各点的绝对距离,跟各个点所在的位置坐标直接相关;而余弦距离衡量的是空间向量的夹角,更加体现在方向上的差异,而不是位置。如果保持A点位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦距离 是保持不变的(因为夹角没有发生变化),而A、B两点的距离显然在发生改变,这就是欧氏距离和余弦距离之间的不同之处。

欧氏距离和余弦距离各自有不同的计算方式和衡量特征,因此它们适用于不同的数据分析模型:

欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异。

余弦距离更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦距离对绝对数值不敏感)。


回到论文,一般的Softmax损失函数是这样:



这里的F是模型中最后一层的输出score:





也就是说,传统的f是与W的范数和X的范数,以及他们之间的夹角有关系,W系数L2范数将W的每个类别系数正则化到1,实验证明了L2范数好使,余弦距离也好使,那么只要让特性X的范数也为常数s,那么就将两者统一了。
到这里,也不是这篇论文的创新点,这是Normalized version of Softmax Loss(NSL)。

NSL的缺点是判别性不强,为啥嘞?因为它只强调了对的类别。举个栗子,桌子椅子孩子,三个类别,椅子的label应该是[0,1,0]但是如果你的预测结果向量是[0.4,0.5,0.1]也算对,因为最大的值就是椅子,Loss不变,模型不会再优化系数了。
为了让对的概率更大,引入了最大余弦间隔m,Large Margin Cosine Loss.
就是这个m , 是本文的创新点。




这种情况下,刚才的预测[0.4,0.5,0.1]就不行了,因为类别间隔Top1 和Top2只有0.1,整个模型还需要再优化。
至此,理论完毕。


文章还总结了之前的损失函数,学习一波:
这是以类别之间的角度为坐标轴画图,也就是说,SoftMax是W范数乘以余弦角度,所以只看余弦角度,类别之间是有重合的,margin<0.
而NSL类别角度刚好不重合margin=0,A-softmax的类别margin随着他们余弦的增大而增大,而LMCL具有稳定的间隔大小。




特征正则化的必要性:
传统的加了L2范数的W正则化,损失函数是X范数与余弦的乘积,所以,只要在easy sample上X的范数减小就可以让Loss下降,削弱了余弦角度的影响。

间隔m的取值:
理论分析是

K指的是分类的类别数目

试验中的取值是这样:



论文中的实验是用caffe跑的,github上有用tensorflow实现的版本,链接在这里:

https://github.com/yule-li/CosFace


接下来,我会跑跑这个实验。



你可能感兴趣的:(论文学习)