度量损失:
SoftMax
- 根据softmax的函数公式进行变换,然后归一化到概率
- 解决上溢和下溢出问题(softmax函数自身性质问题),取一个log
- 用一个a做恒等变换,解决这个问题,带入softmax函数,值不变
- 决策边界是没有变的
转换成角度
- 用向量的性质,
x
=
∣
∣
x
∣
∣
∗
c
o
s
(
θ
)
x=||x|| *cos(\theta)
x=∣∣x∣∣∗cos(θ)
解决的核心问题:用欧几里得距离度量,不同类之间的距离可能小于同类之间的距离,用角度来度量可以缓解优化这个问题
Large-Margin Softmax Loss
- 对cos角度进行改进,使得类别标签之间的角度更小(误差更小)
Modified Softmax
- 把原来的softmax的权重赋值为1和偏差赋值为0
- 显然,规约到球面是一个好的选择
SphereFace Angular Softmax
SphereFace的损失函数:
NormFace
background
- 在特征提取中都没有归一化(训练过程中),但是在测试中都使用了归一化
- feature的scale(缩放尺度)越大, P i ( s f ) P_i(sf) Pi(sf)越大,softmax loss就越小
为什么会是特征会呈辐射状分布?
- Softmax 交叉熵损失函数总是会鼓励已经被分类正确的特征得到更大的幅度。
在迭代过程中,特征的幅度会被越拉越大,这就是为什么 Softmax 交叉熵损失函数训练出的特征总是呈现出辐射状分布的原因
- softmax前的内积层不可以添加偏置项
原理
- 完全专注于角度,在放缩的时候加了一个 α \alpha α
CosFace /AM-softmax
- 该方法间隔固定,不依赖于theta, sphereFace的间隔依赖于theta
- AM-softmax
ArcFace
总结一下角度的损失函数