AM-Softmax
论文:Additive Margin Softmax for Face Verification
0 摘要
AM-Softmax,additive margin softmax。
人脸识别任务是一个度量学习任务,目的是使学习到的特征具有类内高度聚合、类间尽可能分离的特性。前面L-softmax和Sphereface中都通过乘积的方式解释了人脸识别中的角度间隔。本文作者提出了为softmax loss使用相加的角度间隔,效果更好并且理论上更合理。文中仍然强调和验证了特征归一化的必要性。在LFW和Megaface数据集上证明了AM-Softmax的先进性。
1 Softmax & A-Softmax
Softmax:
f f f表示最后一个全连接层的输入, f i f_i fi表示第 i i i个样本。 W j W_j Wj表示最后一个全连接层的第 j j j列。 W y i T f i W_{y_i}^Tf_i WyiTfi称为第 i i i个样本的target logit。
A-Softmax:
A-Softmax中对softmax进行了两项修改,一是对权重进行归一化( ∣ ∣ W ∣ ∣ = 1 ||W|| = 1 ∣∣W∣∣=1),而是修改 ∣ ∣ f i ∣ ∣ c o s ( θ ) ||f_i||cos(\theta) ∣∣fi∣∣cos(θ)为 ∣ ∣ f i ∣ ∣ ψ ( θ y i ) ||f_i||\psi(\theta_{y_i}) ∣∣fi∣∣ψ(θyi).
m是大于1的整数, λ \lambda λ是一个超参数,用于控制损失函数的优化难易程度。在训练过程中, λ \lambda λ初始值为1000,随着训练的进行慢慢减小以增大每一类样本角空间的聚合度。Sphereface论文中,作者设置的最优参数是 λ = 5 , m = 4 \lambda = 5,m = 4 λ=5,m=4,通过图2的分析显示,这相当于 λ = 0 , m = 1.5 \lambda = 0,m = 1.5 λ=0,m=1.5。
图2横轴是角度,纵轴是 W y i T f i W_{y_i}^Tf_i WyiTfi。上图可以看出, λ = 5 , m = 4 \lambda = 5,m = 4 λ=5,m=4时的A-Softmax和m=0.35时的AM-Softmax在[0,90°]中取值很接近,而[0,90°]也是现实中 θ \theta θ的常见取值范围。
2 AM-Softmax
定义 ψ ( θ ) \psi(\theta) ψ(θ)为:
实现时,进行了权重和输入特征的归一化之后的输入为: x = cos ( θ y i ) = W y i T f i ∣ ∣ W y i ∣ ∣ ∣ ∣ f i ∣ ∣ x = \cos(\theta_{yi})=\frac{W_{y_i}^Tf_i}{||W_{y_i}||||f_i||} x=cos(θyi)=∣∣Wyi∣∣∣∣fi∣∣WyiTfi,所以前向过程中只需要计算:
反向传播时, Ψ ′ ( x ) = 1 \Psi^{'}(x) = 1 Ψ′(x)=1,计算上要比Sphereface容易。
作者这里还是使用余弦度量两个特征间的相似度,因此作者是对一个全连接层进行输入和权重的归一化来构建一个余弦层。然后对余弦值使用超参数s。最终的损失函数为:
作者发现如果通过训练过程学习超参数s的话,则会造成网络收敛速度非常慢。所以作者设置超参数s为人为设定的足够大的固定值。
在L-Softmax和A-Softmax的训练过程中,超参数 λ \lambda λ是逐渐减小的,但是作者人为控制 λ \lambda λ的递减策略又引入了很多难以调试的超参数。作者这里不使用 λ \lambda λ递减训练策略。并且发现,即便从一开始就固定超参数m,训练过程也可以很好的收敛。
几何解释:
对于传统的softmax损失,分类边界 P 0 P_0 P0处满足 W 1 T P 0 W_1^TP_0 W1TP0 = W 2 T P 0 W_2^TP_0 W2TP0。
对于AM-Softmax,分类边界不再是一个向量,而是一个间隔区域。对于类别1的边界 P 1 P_1 P1,有 W 1 T P 1 − m = W 2 T P 1 W_1^TP_1 - m = W_2^TP_1 W1TP1−m=W2TP1,得到 m = W 1 T P 1 − W 2 T P 1 = cos ( θ W 1 , P 1 ) − cos ( θ W 2 , P 1 ) m = W_1^TP_1 - W_2^TP_1 = \cos(\theta_{W_1,P_1}) - \cos(\theta_{W_2,P_1}) m=W1TP1−W2TP1=cos(θW1,P1)−cos(θW2,P1)。同理对于类别2的边界 P 2 P_2 P2,有 W 2 T P 2 − m = W 1 T P 2 W_2^TP_2 - m = W_1^TP_2 W2TP2−m=W1TP2,得到 m = W 2 T P 2 − W 1 T P 2 = cos ( θ W 2 , P 2 ) − cos ( θ W 1 , P 2 ) m = W_2^TP_2 - W_1^TP_2 = \cos(\theta_{W_2,P_2}) - \cos(\theta_{W_1,P_2}) m=W2TP2−W1TP2=cos(θW2,P2)−cos(θW1,P2)。假设各类类内方差相同,那么就有 cos ( θ W 2 , P 1 ) = cos ( θ W 1 , P 2 ) \cos(\theta_{W_2,P_1}) = \cos(\theta_{W_1,P_2}) cos(θW2,P1)=cos(θW1,P2)。所以 m = cos ( θ W 1 , P 1 ) − cos ( θ W 1 , P 2 ) m = \cos(\theta_{W_1,P_1}) - \cos(\theta_{W_1,P_2}) m=cos(θW1,P1)−cos(θW1,P2)。也就是说,m等于对于类别1而言,间隔区域两个边界相对于类别1的余弦差值。
角度间隔和余弦间隔的区别:
SphereFace中,margin m是乘到 θ \theta θ上的,所以是以乘积的方式影响loss值。在AM-Softmax中,间隔m是从 cos ( θ ) \cos(\theta) cos(θ)中减去的,是以相加的方式影响loss值的。
虽然 θ \theta θ和 cos ( θ ) \cos(\theta) cos(θ)是一一对应的,但是由于cos函数引入了非线性,这两者还是有所区别的。
AM-Softmax的优化目标是cos相似度,而不是A-Softmax中的角度。如果使用传统的softmax函数时,这两者是相同的,因为 cos θ 1 = cos θ 2 ⇒ θ 1 = θ 2 \cos \theta_1 = \cos \theta_2 \Rightarrow \theta_1 = \theta_2 cosθ1=cosθ2⇒θ1=θ2。但是,两者在计算上还是有所区别,如果我们优化的是 cos ( θ ) \cos(\theta) cos(θ),那么在 θ \theta θ取值为0或者 π \pi π的地方, cos ( θ ) \cos(\theta) cos(θ)的取值比较密集。如果我们优化的是角度,那么在计算了 W T f W^Tf WTf之后,还需要进行 arccos \arccos arccos的操作,计算复杂度会更高。
总体来说,角度间隔在概念上比余弦间隔更合理,但是考虑到计算复杂度,余弦间隔在相同目的的情况下计算量更小。
特征归一化:
A-Softmax中只使用了权重归一化,但是AM-Softmax中在权重归一化的基础上又使用了特征归一化,那么该不该应用特征归一化呢?
答案是取决于图像的质量。L2-Softmax论文中指出了高质量图像的特征范数更大。
从上面式子可以看出,进行归一化操作之后,范数越小的特征相比范数更大的特征,梯度被放大的倍数越大。那么网络就会更加注意对这些低质量图像的拟合。这样做很类似于难例挖掘,因此对于低质量的图像集,特征归一化还是很必要的。
使用了特征归一化之后,对于范数很小的特征,梯度值可能很大,有可能造成梯度爆炸。作者认为理想的梯度应该是介于上述两条曲线之间,这个也是后面需要进一步研究的问题。
可视化特征:
3 实验
超参数:
实验中,s固定为30.m的值经过实验证明取0.35到0.4时效果最好。
在LFW和MegaFace上的实验效果:
AM-Softmax在LFW和MegaFace数据集上比A-Softmax效果要更好。
4 总结
AM-Softmax : 特征归一化,权重归一化,优化目标 cos ( θ ) − m \cos(\theta) - m cos(θ)−m。
超参数:s=30,m取0.35/0.4,作者认为如何自动去学习间隔m的值以及如何去解释指定类/样本的间隔依然值得继续研究。
AM-Softmax相关推荐
- pytorch之expand,gather,squeeze,sum,contiguous,softmax,max,argmax
目录 gather squeeze expand sum contiguous softmax max argmax gather torch.gather(input,dim,index,out=N ...
- PyTorch学习笔记——softmax和log_softmax的区别、CrossEntropyLoss() 与 NLLLoss() 的区别、log似然代价函数...
1.softmax 函数 Softmax(x) 也是一个 non-linearity, 但它的特殊之处在于它通常是网络中一次操作. 这是因为它接受了一个实数向量并返回一个概率分布.其定义如下. 定义 ...
- 机器学习入门(13)— Affine 仿射层、Softmax 归一化指数函数层实现
1. 一维 Affine 仿射层 我们回顾下之前为了计算加权信号的总和,使用了矩阵的乘积运算 NumPy 中是 np.dot() , 参照代码如下: In [7]: X = np.random.ran ...
- 机器学习入门(06)— 输出层多元分类、softmax 归一化指数函数以及输出层的神经元数量
输出层所用的激活函数,要根据求解问题的性质决定.一般地, 回归问题可以使用恒等函数,也就是说会将输入按原样输出: 二元分类问题可以使用 sigmoid 函数: 多元分类问题可以使用 softmax 函 ...
- Deep Learning 学习随记(三)续 Softmax regression练习
上一篇讲的Softmax regression,当时时间不够,没把练习做完.这几天学车有点累,又特别想动动手自己写写matlab代码 所以等到了现在,这篇文章就当做上一篇的续吧. 回顾: 上一篇最后给 ...
- logisitic和softmax函数
1,logistic函数 其实logistic函数也就是经常说的sigmoid函数,它的几何形状也就是一条sigmoid曲线.logistic函数的公式形式如下: 其中,x0表示了函数曲线的中心(si ...
- 激活函数之softmax介绍及C++实现
下溢(underflow):当接近零的数被四舍五入为零时发生下溢.许多函数在其参数为零而不是一个很小的正数时才会表现出质的不同.例如,我们通常要避免被零除或避免取零的对数. 上溢(overflow): ...
- 今日头条李磊等最新论文:用于文本生成的核化贝叶斯Softmax
译者 | Raku 出品 | AI科技大本营(ID:rgznai100) 摘要 用于文本生成的神经模型需要在解码阶段具有适当词嵌入的softmax层,大多数现有方法采用每个单词单点嵌入的方式,但是一个 ...
- 在注意力中重新思考Softmax:分解非线性,这个线性transformer变体实现多项SOTA
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨机器之心 编辑丨极市平台 导读 来自商汤.上海人工智能实验室等 ...
- Softmax和Cross-entropy是什么关系?
公众号关注 "视学算法" 设为 "星标",DLCV消息即可送达! 来自 | 知乎 作者 | 董鑫 https://www.zhihu.com/questio ...
最新文章
- 移动端300ms延迟解决的几种方法;
- 6.Verilog的always语句使用
- yum安装docker(阿里镜像源)及docker-compose二进制安装
- 地址栏中的问号有什么作用
- 【英语学习】【WOTD】lacuna 释义/词源/示例
- win11系统正式版介绍
- pytorch--nn模块(2)optim
- 违章查询源码 php,PHP教程:php车辆违章查询数据示例
- jdbc连接linux下的mysql_Linux JDBC连接MySQL数据库
- 施努卡:锂电池电芯底面和侧板的压胶面积
- 计算机加域和用户权限分配关系,加入域需要什么样的权限?
- qq音乐排行榜数据爬取
- 音视频编解码之路:JPEG编码
- odroid-xu4(ubuntu mate 16.04)源码编译opencv 3.2
- 嵌入式linux学习笔记--gitlab学习笔记-gitlab-runnner简单的使用介绍
- 骨传导耳机有哪些品牌、最好的骨传导蓝牙耳机品牌介绍
- 雪加,电子烟风口上的“孙宇晨”
- 计算机学院刘岗,中科院金属所刘岗研究员访问城市环境研究所
- 现代化物流对应术语解释
- 信天创投蒋宇捷:我对区块链行业的12点观察与思考