softmax loss
softmax将模型输出映射到0 ~ 1之间,共有n个类,对于每个样本,可以理解为它属于类别i的概率。若z 表示全连接层的输出,zi 表示第i 类的值,即
z=W⋅x+b
h(zi)=∑k=1nezkezi
假设当前样本属于类别j,则其真实概率分布为y1,y2…yn,只有第 j 类的概率 yj 为1,其他为0。
而预测分布即Softmax的输出为h1,h2,…hn,hi=h(zi)
其loss即交叉熵为
loss=∑i=1nyi⋅log(hi1)=−∑i=1nyi⋅log(hi)
如其真实label为j,则
loss=−log(hj)
其对于hj的导数为
αhjαL=−hj1=−hzj1
为了进行反向传播,首先求Softmax的导数,分两种情况。如果 j==i :
αziαh(zj)=(∑kezk)2∑kezk−ezj⋅ezj=h(zj)∗(1−h(zj))
如果 j!=i
αziαh(zj)=(∑kezk)20−ezj⋅ezi=−h(zi)⋅h(zj)
于是
αzjαL={h(zj)−1h(zi);y=i;y!=i
原始的softmax loss非常优雅,简洁,被广泛用于分类问题。它的特点就是优化类间的距离非常棒,但是优化类内距离时比较弱。
weighted softmax loss
当样本不均衡时进行加权
loss=−∑i=1nwi⋅yi⋅log(hi)
soft softmax loss
h(zi)=∑k=1nezk/Tezi/T
当T = 1时,就是原始的softmax,当 T > 1 时,称之为soft softmax,T越大,因为Zk产生的概率差异就会越小。
当训练好一个模型之后,模型为所有的误标签都分配了很小的概率;然而实际上对于不同的错误标签,其被分配的概率仍然可能存在数个量级的悬殊差距。这个差距,在softmax中直接就被忽略了,但这其实是一部分有用的信息。
文章的做法是先利用softmaxloss训练获得一个大模型,然后基于大模型的softmax输出结果获取每一类的概率,将这个概率,作为小模型训练时soft target的label。
L2-constrained softmax loss
将学习的特征x归一化。作者观测到好的正面的脸,特征的L2-norm大,而特征不明显的脸,其对应的特征L2-norm小,因此提出这样的约束来增强特征的区分度。

上面式就是将其归一化到固定值α。实际训练的时候都不需要修改代码,只需要添加L2-norm层与scale层,如下图。

为什么要加这个scale层?NormFace【6】中作出了解释。
该文章指出了直接归一化权重和特征,会导致loss不能下降。因为就算是极端情况下,多类样本,令正样本|wx|=1取最大值,负样本|wx|=-1取最小值,这时候分类概率也是
e1/(e1+(n−1)e−1)
当类别数n=10,p=0.45;n=1000,p=0.007。当类别数增加到1000类时,正样本最大的概率还不足0.01,而反向求导的时候,梯度=1-p,会导致一直传回去很大的loss。
所以,有必要在后面加上scale层,作者还计算出了该值的下界,具体可自行参考。
large margin softmax loss
将全连接层的输出替换成內积的形式,即
zk=Wk⋅x=∣∣Wk∣∣⋅∣∣x∣∣⋅cosθk;0≤θk≤π
我们看二分类的情况,对于属于第1类的样本,我们希望
∣∣W1∣∣⋅∣∣x∣∣⋅cosθ1>∣∣W2∣∣⋅∣∣x∣∣⋅cosθ2
如果我们对它提出更高的要求,由于cos函数在 0 ~ π之间是递减函数,我们将要求更改为
∣∣W1∣∣⋅∣∣x∣∣⋅cosmθ1>∣∣W2∣∣⋅∣∣x∣∣⋅cosθ2;m≥1,0≤θj≤π
在这个条件下,原始的softmax条件仍然得到满足。
我们看下图,如果W1=W2,那么满足条件2,显然需要θ1与θ2之间的差距变得更大,原来的softmax的decision boundary只有一个,而现在类别1和类别2的decision boundary不相同,这样类间的距离进一步增加,类内更近紧凑。

更具体的定义如下:

其中,m是一个控制距离的变量,它越大训练会变得越困难,因为类内不可能无限紧凑。实际表现如下图所示

angular softmax loss
也称A-softmax loss。它就是在large margin softmax loss的基础上添加了两个限制条件||W||=1和b=0,使得预测仅取决于W和x之间的角度θ。

上图分别比较了原softmax loss,原softmax loss添加||w||=1约束,以及在L-softmax loss基础上添加||w||=1约束的结果。
为什么要添加|w|=1的约束呢? 作者做了两方面的解释,一个是softmax loss学习到的特征,本来就依据角度有很强的区分度,另一方面,人脸是一个流形,将其特征映射到超平面表面,也可以解释。
additive margin softmax loss

就是把L-Softmax的乘法改成了减法,同时加上了尺度因子s。作者这样改变之后前向后向传播变得更加简单。其中W和f都是归一化过的,作者在论文中将m设为0.35。

值得注意的是,normalization是收敛到好的点的保证,同时,必须加上scale层,scale的尺度在文中被固定设置为30。
那到底什么时候需要normalization什么时候又不需要呢?这实际上依赖于图片的质量。
我们看一个公式如下
y=