Softmax到Arcface的转变过程

二分类下的Softmax

在这里插入图片描述

当P1 = P2

p 1 − p 2 = = = > ( W 1 − W 2 ) x + b 1 − b 2 = 0 p_1-p_2 === >(W_1 - W_2)x + b_1 - b_2 = 0 p1p2===>(W1W2)x+b1b2=0

W i T x + b i W_i^Tx + b_i WiTx+bi进行改写

∣ ∣ W i T ∣ ∣ ∗ ∣ ∣ x ∣ ∣ ∗ c o s ( θ ) + b i ||W_i^T|| * ||x|| * cos(θ) + b_i WiTxcos(θ)+bi 其中 θ是W与x的夹角

∣ ∣ W i ∣ ∣ = 1 ||W_i|| = 1 Wi=1, b i = 0 b_i = 0 bi=0 , 如果此时P1 = P2, 我们可以推导出

c o s ( θ 1 ) − c o s ( θ 2 ) = 0 cos(θ_1) - cos(θ_2) = 0 cos(θ1)cos(θ2)=0

为此,我们可以看出输入一个数据的特征值 x i x_i xi属于 y i y_i yi类,那么 θ y i θ_{yi} θyi比其他类别的角度要小,也就是: W y i W_{yi} Wyi更靠近 x i x_i xi

c o s ( θ 1 ) > c o s ( θ 2 ) cos(θ_1) > cos(θ_2) cos(θ1)>cos(θ2)时,我们可以定义为类别1

为此我们推出了Softmax 的 修正函数:Modified Softmax


Modified softmax

Modified softmax 相当于对softmax中的权重做了归一化(W=1, b=0)

在这里插入图片描述
softmax的散点分类图
在这里插入图片描述
修正后的softmax : Modified softmax的散点分类图
在这里插入图片描述

但是 即便是当 c o s ( θ 1 ) > c o s ( θ 2 ) cos(θ_1) > cos(θ_2) cos(θ1)>cos(θ2)时,我们可以定义为类别1 但是直观上的感觉不是很明显

为了分类更加的明显:我们加上一个角度距离,也就是 c o s ( m ∗ θ ) cos(m*θ) cos(mθ)在这里插入图片描述

A-SoftmaxLoss(SphereFace)

在这里插入图片描述
在这里插入图片描述

为了解决这个问题,我们将倍角关系改为cos值的比较,直接减小相似度的系数来增大向量间的距离

我们知道cos值越大,说明两个类别越相近cos(0)=1, cos值越小,说明两个类别差别越大,所以我们减少相似度,增大向量距离

距离大了,导致收敛的速度降低了,为此,我们引进一个超参数s,默认值为30. 来提高收敛速度

AM-Softmax

在这里插入图片描述
在这里插入图片描述

原本绿色分割线是之前两个类的边界,现在紫色线是两个类的区域边界。即直接增加了向量距离来迫使两个类分开。


大家都知道,直接增大角度比减小相似度距离的方式其实对分类的影响是更大的

  • 360度 = 2Π弧度

  • 1弧度 = 57.3度
    在这里插入图片描述

  • 我们将归一化后的特征(X)和归一化后的权重(W)透过叉乘得到一个arccos的值,这个值对应的角度就是θ

  • 然后在这个角度上加上超参m

  • 将新的cos(θ+m)换成之前的余弦距离

这样我们就得到了Arc-Softmax, 也就是ArcFace


Arc-SoftmaxLoss(ArcFace)

在这里插入图片描述


softmax手写数字分类效果
在这里插入图片描述

Arcface手写数字分类效果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38973721/article/details/113102949