softmax loss 系列记录

一、前言

最近看人脸识别方面的内容,遇到了好多个损失函数,结合所看的博客,在这里先大致记录下,方便查阅,暂不做太深的挖掘。

二、主要内容

2.1、Softmax loss

其公式如下:
在这里插入图片描述
其中,N表示训练数据的数量。 f j f_j fj代表 class scores f f f的第j个元素。也是全连接层的输出,所以 f j f_j fj可以写为:
在这里插入图片描述

用模的形式表示的话如下:
在这里插入图片描述

所以Softmax loss L i L_i Li变为:
在这里插入图片描述

2.2、L-Softmax loss

Softmax loss的改进,Large-Margin softmax loss,来自ICML2016的论文:Large-Margin Softmax Loss for Convolutional Neural Networks

论文地址:(http://proceedings.mlr.press/v48/liud16.pdf)

L-Softmax loss公式( L i L_i Li):
在这里插入图片描述
这里是论文对此公式定义做出的一个解释:
在这里插入图片描述
大致意思就是说 x x x来自于class 1,若分类正确呢,肯定是:
W 1 T x > W 2 T x 即 ∥ W 1 T ∥ ∥ x ∥ c o s ( θ 1 ) > ∥ W 2 T ∥ ∥ x ∥ c o s ( θ 2 ) W_1^Tx>W_2^Tx{即\left\|W^T_1\right\|\left\|x \right\|cos(\theta_1)>\left\|W^T_2\right\|\left\|x \right\|cos(\theta_2)} W1Tx>W2TxW1Txcos(θ1)>W2Txcos(θ2)
但是呢,为使分类更明显点,作者决定用:
∥ W 1 T ∥ ∥ x ∥ c o s ( m θ 1 ) > ∥ W 2 T ∥ ∥ x ∥ c o s ( θ 2 ) \left\|W^T_1\right\|\left\|x \right\|cos(m\theta_1)>\left\|W^T_2\right\|\left\|x \right\|cos(\theta_2) W1Txcos(mθ1)>W2Txcos(θ2)

因为我们知道:
∥ W 1 T ∥ ∥ x ∥ c o s ( θ 1 ) > ∥ W 1 T ∥ ∥ x ∥ c o s ( m θ 1 ) > ∥ W 2 T ∥ ∥ x ∥ c o s ( θ 2 ) \left\|W^T_1\right\|\left\|x \right\|cos(\theta_1)>\left\|W^T_1\right\|\left\|x \right\|cos(m\theta_1)>\left\|W^T_2\right\|\left\|x \right\|cos(\theta_2) W1Txcos(θ1)>W1Txcos(mθ1)>W2Txcos(θ2)

其中,m 是一个正整数。

下图是从几何角度直观地看两种损失的差别,通过对比我们可以发现L-softmax loss最后学到的特征之间的分离程度比softmax loss的要明显得多。
在这里插入图片描述

2.3、Center loss

来自ECCV2016的一篇论文:A Discriminative Feature Learning Approach for Deep Face Recognition。
论文地址:http://ydwen.github.io/papers/WenECCV16.pdf
Center loss公式( L i L_i Li)是什么呢?简单讲就是在Softmax loss的基础上加了一项 L C L_C LC
在这里插入图片描述
c y i c_{y_i} cyi表示第 y i y_i yi个类别的特征中心, x i x_i xi表示全连接层之前的特征,m表示mini-batch的大小,n表示类别数。
L C L_C LC梯度和 c y i c_{y_i} cyi的更新公式如下:
在这里插入图片描述
具体的算法如下:
在这里插入图片描述

2.4、SphereFace

来自于CVPR2017的一篇论文:
SphereFace: Deep Hypersphere Embedding for Face Recognition
论文地址:https://arxiv.org/abs/1704.08063
代码地址:https://github.com/wy1iu/sphereface
pytorch地址:https://github.com/clcarwin/sphereface_pytorch

提出基于 angular margin的angular softmax loss,之前的损失函数基本都基于 Euclidean margin。这里我们看到本文的作者和L-Softmax loss的作者是同一批,那么,A-Softmax loss(angular softmax loss)就是在L-Softmax loss的基础上,令 ∥ W ∥ = 1 \left\|W \right\| =1 W=1 b = 0 b = 0 b=0
这是Softmax loss
在这里插入图片描述

于是,结合上面两个条件,便有了modified softmax loss
在这里插入图片描述
然后又添加了和large margin softmax loss一样的角度参数angular margin,便得到了A-Softmax loss
在这里插入图片描述
但是上述公式有个角度限制,即 θ \theta θ 的范围为[0,π/m]。为了打破这个限制,便有了能够在CNN网络中优化的公式:
在这里插入图片描述
且最后证明得出:对于二分类 m m i n > 2 + 3 m_{min}>2+\sqrt{3} mmin>2+3 ,对于多分类, m m i n > 3 m_{min}>3 mmin>3。文中作者m取的是4。

后来,又有了F-Norm SphereFace
在这里插入图片描述

2.5、CosinFace

理解了SphereFace的angular softmax loss公式,这个也就好理解了。就是将 c o s θ cos\theta cosθ 变为了 c o s θ − m cos\theta-m cosθm。CosinFace中的additive margin softmax loss公式如下(AM-Softmax):
在这里插入图片描述

2.6、Arcface

c o s θ cos\theta cosθ 变为了 c o s ( θ + m ) cos(\theta+m) cos(θ+m)

在这里插入图片描述

2.8、分类边界

在这里插入图片描述
在这里插入图片描述
可以看到,CosineFace的坐标轴是关于cos的,不是直接在角度空间。

三、结尾

差不多到这里就结束了。下面是学习时参考的一些博客。

参考:
损失函数改进之Large-Margin Softmax Loss
损失函数改进之Center Loss
人脸识别–SphereFace
SphereFace算法详解
ArcFace算法笔记

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值