人脸识别-arcface损失函数

参考博客:网络

L-margin softmax loss:https://blog.csdn.net/u014380165/article/details/76864572函数

A-softmax loss:https://blog.csdn.net/u011808673/article/details/80491361学习

AM-softmax loss:https://blog.csdn.net/fire_light_/article/details/79602310优化

arcface:https://blog.csdn.net/Fire_Light_/article/details/79602705spa

softmax loss:.net

N是样本的数量,i表明第i个样本,j表明第j个类别,fyi表明着第i个样本所属的类别的分数3d

fyi是全链接层的输出,表明着每个类别的分数,orm

   每个分数即为权重W和特征向量X的内积blog

每一个样本的softmax值即为:ci

 

L-softmax loss:

假设一个2分类问题,x属于类别1,那么原来的softmax确定是但愿:

也就是属于类别1的几率大于类别2的几率,这个式子和下式是等效的:

large margin softmax就是将上面不等式替换为:

m是正整数,cos函数在0到π范围又是单调递减的,因此cos(mx)要小于cos(x)。经过这种方式定义损失会逼得模型学到类间距离更大的,类内距离更小的特征。

从几何的角度看两种损失的差异:

设置为cos(mx)后,使得学习到的W参数更加的扁平,能够加大样本的类间距离。

Large-Margin Softmax的实验效果:

 

A-softmax loss

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

softmax的计算:

能够写成

若引入两个限制条件,

decision boundary变为,只取决于角度了

 

则损失函数变为:

在这两个限制条件的基础上,做者又添加了和large margin softmax loss同样的角度参数,使得公式变为:

 

AM-softmax

在A-softmax的基础上,修改Cos(mθ)为一个新函数: 

与ASoftmax中定的的相似,能够达到减少对应标签项的几率,增大损失的效果,所以对同一类的聚合更有帮助

而后根据Normface,对f进行归一化,乘上缩放系数s,最终的损失函数变为:

 

这样作的好处在于A-Softmax的倍角计算是要经过倍角公式,反向传播时不方便求导,而只减m反向传播时导数不用变化

Asoftmax是用m乘以θ,而AMSoftmax是用cosθ减去m,这是二者的最大不一样之处:一个是角度距离,一个是余弦距离。

之因此选择cosθ-m而不是cos(θ-m),这是由于咱们从网络中获得的是W和f的内积,若是要优化cos(θ-m)那么会涉及到arccos操做,计算量过大。 

arcface

 

分类正确label的值为,cos函数在(0,1)内是单调递减的,加上m,会使该值变得更小,从而loss会变得很大。

 

这样修改的缘由:角度距离比余弦距离在对角度的影响更加直接

相关文章
相关标签/搜索