Angular Softmax Loss
A-softmax loss可以看作是softmax loss的一个增强版本。softmax loss给出的后验概率为:
pi = e W i T x + b i Σ j e W j T x + b j \frac{e^{W{^T_i}x+b{_i}}}{\Sigma_je^{W{^T_j}x+b{_j}}} ΣjeWjTx+bjeWiTx+bi其中x为输入特征向量。Wi和bi分别为与类i对应的softmax层的权向量和偏置。
为了说明A-softmax损失,我们考虑了两类情况。将下面的分析推广到多类情况是不重要的。softmax loss给出的两类情形的后验概率为:
如果p1 > p2,则将预测标签分配给类别1;如果p1<p2,则将预测标签分配给类别2。决策边界是 ( W 1 T − W 2 T ) x = 0 (W{^T_1}-W{^T_2})x=0 (W1T−W2T)x=0,也可以写成 ( ∥ W 1 ∥ C O S ( θ 1 ) − ∥ W 2 ∥ C O S ( θ 2 ) ) ∥ x ∥ = 0 (\begin{Vmatrix}W_1\end{Vmatrix}COS(\theta_1)-\begin{Vmatrix}W_2\end{Vmatrix}COS(\theta_2))\begin{Vmatrix}x\end{Vmatrix}=0 (∥∥W1∥∥COS(θ1)−∥∥W2∥∥COS(θ2))∥∥x∥∥=0。 θ 1 , θ 2 \theta_1,\theta_2 θ1,θ2是x和W1,W2的夹角。
**A-softmax有两处修改之处,首先,当使用余弦距离度量时,最好是将权值标准化并使偏差为零,即 ∥ W 1 ∥ = ∥ W 2 ∥ = 1 \begin{Vmatrix}W_1\end{Vmatrix}=\begin{Vmatrix}W_2\end{Vmatrix}=1 ∥∥W1∥∥=∥∥W2∥∥=1且 b 1 = b 2 = 0 b_1=b_2=0 b1=b2=0。(跟L-softma loss的主要不同点)**决策边界变成了角边界,定义为 c o s ( θ 1 ) − c o s ( θ 2 ) = 0 cos(\theta_1)-cos(\theta_2)=0 cos(θ1)−cos(θ2)=0。然而,学习到的特征仍然不一定是有区别度的。其次,[14]进一步提出引入角裕度以增强分辨力。具体地说,引入整数m(m ≥ \ge ≥ 2)来定量控制角裕度的大小。类1和类2的决策条件变为 c o s ( m θ 1 ) − c o s ( θ 2 ) > 0 cos(m\theta_1)-cos(\theta_2)>0 cos(mθ1)−cos(θ2)>0和 c o s ( m θ 2 ) − c o s ( θ 1 ) > 0 cos(m\theta_2)-cos(\theta_1)>0 cos(mθ2)−cos(θ1)>0。
A-softmax决策条件将产生角裕度: m − 1 m + 1 Θ , Θ \frac{m-1}{m+1}\Theta,\Theta m+1m−1Θ,Θ代表W1,W2间的夹角
将上述思想转化为损失函数,得到多类情况下的A-softmax损失函数:
其中N为训练样本的总数。x(n)和y(n)分别表示第n个训练样本的输入特征向量和类别标签。 θ j ( n ) \theta^{(n)}_j θj(n)为x(n)与wj夹角, θ y n ( n ) \theta^{(n)}_{y_n} θyn(n)为x(n)与权向量 W y n W_{y_n} Wyn之间的夹角。
值得注意的是,
θ
y
n
(
n
)
\theta^{(n)}_{y_n}
θyn(n)应该在
[
0
,
m
π
]
[0,\frac{m}{\pi}]
[0,πm],为了消除这个限制,我们定义了一个新的函数来代替余弦函数,如下所示:
θ
y
n
(
n
)
∈
[
k
π
m
,
(
k
+
1
)
π
m
]
\theta^{(n)}_{y_n}\in[\frac{k\pi}{m},\frac{(k+1)\pi}{m}]
θyn(n)∈[mkπ,m(k+1)π]且
k
∈
[
0
,
m
−
1
]
k\in[0,m-1]
k∈[0,m−1]。因此A-softmax损失函数最终定义如下:
A-Softmax loss通过引入m,对不同的类采用不同的决策边界(每个边界比原边界更严格),从而产生角裕度。
角裕度随m的增大而增大,当m=1时,角裕度为零。与标准的softmax相比,A-softmax算法使得决策边界更加严格和分离,能够驱动更具区分性的特征学习。与triplet loss相比,使用A-softmax loss不需要仔细采样三元组来训练网络。
用A-softmax loss不需要仔细采样三元组来训练网络。
在训练中使用A-softmax损失也很简单。在前向传播期间,我们使用规范化的网络权值。为了方便梯度计算和反向传播, c o s ( θ j ( n ) ) cos(\theta_j^{(n)}) cos(θj(n))和 c o s ( m θ y n ( n ) ) cos(m\theta_{y_n}^{(n)}) cos(mθyn(n))可以用只包含W和x(n)的表达式代替,根据余弦的定义和多角度公式,通过这种方法,我们可以计算关于W和x(n)的导数,这类似于在训练中使用softmax loss。