Large-Margin Softmax Loss for Convolutional Neural Networks

Large-Margin Softmax Loss for Convolutional Neural Networks

在本文中,我们将软最大损耗定义为交叉熵损耗、软最大函数和最后一个完全连接层的组合(见图1)。在这种定义下,许多流行的CNN模型可以被视为卷积特征学习组件和softmax损失组件的组合,如图1所示。
Large-Margin Softmax Loss for Convolutional Neural Networks

尽管它的流行,当前的软最大损失并不明确鼓励类内的紧密性和类间的可分离性。

我们的主要直觉是,样本和参数之间的可分性可以分解为具有余弦相似性的幅值和角值:

Large-Margin Softmax Loss for Convolutional Neural Networks
其中c是类索引,最后一个完全连接层的相应参数Wc可以看作是c类的线性分类器。在softmax loss情况下,由于softmax loss使用余弦距离作为分类分数,所以标签预测决策规则在很大程度上是由每个类的角度相似性决定的。因此,本文的目的是根据角度相似性将softmax损失推广到更一般的大边缘softmax(L-softmax)损失,从而导致学习特征之间潜在的更大角度可分性。这是通过将预设常数m乘以样本和ground truth class类分类器之间的角度来实现的。m决定了接近ground truth class类的强度,产生一个角边。我们可以看到,在我们提出的框架下,传统的软最大损耗成为了LSoftmax损耗的一个特例。我们的想法在图2中得到了验证,在图2中L-Softmax的学习特征变得更加紧凑和分离良好。

Large-Margin Softmax Loss for Convolutional Neural Networks

图2。CNN learned在MNIST数据集中具有可视化特征(Softmax Loss(m=1)与L-Softmax lo(m=2,3,4))。具体地说,我们将特征(L-Softmax损耗的输入)维度设置为2,然后按类绘制它们。我们忽略了全连接层中的常数项,因为它只会使我们的分析变得复杂,而且几乎不会影响性能。注意,测试精度不如图2的原因是我们这里只使用2D特征对数字进行分类。

L-Softmax损失是一个灵活的学习目标,具有可调的类间角裕度约束。提出了一种难度可调的学习任务,难度随着所需裕度的增大而逐渐增大。L-Softmax损耗有几个可取的优点。首先,它鼓励类之间的角度决策裕度,从而生成更具分辨性的特征。其几何解释非常清晰直观,如3.2节。其次,通过定义一个更困难的学习目标,对过拟合问题提出了不同的观点,在一定程度上避免了过拟合。第三,L-Softmax不仅有利于分类问题,也有利于验证问题,在理想的情况下,学习的特征应该具有最小的类间距离大于最大的类内距离。在这种情况下,学习良好分离的特性可以显著提高性能。

2. Related Work and Preliminaries

不同于以往的工作,我们的工作提出了一个新颖的观点,概括了最初的softmax loss。我们用标签yi定义第i个输入特性xi。那么原始的softmax loss可以写成
Large-Margin Softmax Loss for Convolutional Neural Networks

式中,f j表示类分数向量f的第j个元素(j[1,k]j\in[1,k],K是类的数目),N是训练数据的数目。

在softmax loss中,f通常是一个全连通层的**,所以fyi可以写成fyi=WyiTxif_{y_i}=W^T_{y_i}x_i

其中Wyi是W的第i列。注意,我们忽略了常数b为了简化分析,但我们的L-Softmax损失仍然可以很容易地修改为与b一起工作。(事实上,性能几乎没有差别,所以我们在这里不把它复杂化。)因为fj是wj和xi的内积,所以也可以表示为fj=Wjxicosθj(0θjπ)f_j=\parallel W_j \parallel \parallel x_i \parallel cos\theta_j(0\le\theta_j\le \pi)是向量Wj和xi之间的夹角。这样损失就变成了
Large-Margin Softmax Loss for Convolutional Neural Networks

3. Large-Margin Softmax Loss

3.1. Intuition

我们用一个简单的例子来描述我们的直觉。考虑二进制分类,我们有一个来自类1的样本x。原来的softmax是用来强制W1Tx>W2Tx(i.e.W1xcos(θ1)>W2xcos(θ2)W^T_1x>W^T_2x,(i.e. \parallel W_1 \parallel \parallel x \parallel cos(\theta_1) >\parallel W_2 \parallel \parallel x \parallel cos(\theta_2)为了正确的对x进行分类。然而,我们想要使分类更加严格,以产生决策边界。

Large-Margin Softmax Loss for Convolutional Neural Networks

因此,W1xcos(θ1)>W2xcos(θ2)\parallel W_1 \parallel \parallel x \parallel cos(\theta_1) >\parallel W_2 \parallel \parallel x \parallel cos(\theta_2) 成立。因此,新的分类标准是对正确分类x的一个更强的要求,为类1产生一个更严格的决策边界。

3.2. Definition

L-Softmax损失被定义为
Large-Margin Softmax Loss for Convolutional Neural Networks

我们通常需要Large-Margin Softmax Loss for Convolutional Neural Networks

其中m为与classification margin密切相关的整数。m越大,classification margin越大,学习目标也越难。同时,D(θ)\mathcal D(\theta)是一个单调递减函数,而且D(πm)\mathcal D(\frac{\pi}{m})应该等于cos(πm)\mathcal cos(\frac{\pi}{m})
Large-Margin Softmax Loss for Convolutional Neural Networks

为了简化正向和反向传播,本文构造了一个具体的ψ(θi)\psi(\theta_i):

Large-Margin Softmax Loss for Convolutional Neural Networks

k \in (0,m-1)且k是一个整数。结合式(1),式(4)和式(6),我们得到了本文中使用的L-Softmax loss。对于正向和反向传播,我们需要替换cos(θ\theta j)为Large-Margin Softmax Loss for Convolutional Neural Networks和替换cos(θ\thetayi)为:Large-Margin Softmax Loss for Convolutional Neural Networks

那么公式(7)是怎么来的呢?

Large-Margin Softmax Loss for Convolutional Neural Networks

3.3. Geometric Interpretation

我们的目标是通过L-Softmax损失来鼓励类之间的aaangle margin。为了简化几何解释,我们分析了只有W1和W2的二元分类情况。首先,我们考虑如图4所示的||W1|| = ||W2||场景。
Large-Margin Softmax Loss for Convolutional Neural Networks

在||W1|| = ||W2||时,分类结果完全取决于x与W1(W2)之间的夹角。在训练阶段,原始的softmax损失将样本x分类为1类要求θ\theta1<θ\theta 2,L-Softmax loss做出同样的决策要求m θ\theta1<θ\theta 2。我们可以看到L-Softmax的损失在分类标准上更加严格,这导致了在类1和类2之间的classification margin。如果我们假设softmax-loss和L-softmax-loss都被优化到相同的值,并且所有的训练特征都可以被完美地分类,那么类1和类2之间的angle margin由m1m+1θ1,2,whereθ1,2\frac{m-1}{m+1}\theta_{1,2},where \quad \theta_{1,2}是分类器向量W1和w2之间的角度。L-Softmax损失还使得类1和类2的决策边界不同,如图4所示,而最初的决策边界相同

从另一个角度出发,我们假设θ\theta 1=m θ\theta1,并且假设original softmax loss和L-softmax loss都可以优化到相同的值。我们可以知道original softmax loss里的θ\theta 1比L-softmax loss里的 θ\theta1大m-1倍。这样一来,所学习的特征与W1之间的夹角就会变小。对于每一个类别,都有相同的结论。本质上,L-Softmax损失缩小了每个类的可行角1,并在这些类之间产生 angle margin。

对于W 1 \begin{Vmatrix}W~1~ \end{Vmatrix} >W 2 \begin{Vmatrix}W~2~ \end{Vmatrix}W 2 \begin{Vmatrix}W ~2~ \end{Vmatrix} >W 1 \begin{Vmatrix}W~1~ \end{Vmatrix}的场景,几何解释有点复杂。由于W1和W2的长度不同,类1和类2的可行角也不同(见图4中original softmax loss的判定边界)。一般情况下,Wj越大,对应类的可行角越大。因此,L-Softmax loss对于不同的类也会产生不同的可行角度。与W 1 \begin{Vmatrix}W~1~ \end{Vmatrix} =W 2 \begin{Vmatrix}W~2~ \end{Vmatrix}场景的分析类似,所提议的损失也会在第1类和第2类之间产生一个决策边界。

3.4. Discussion

L-Softmax loss利用对原始Softmax loss的简单修改,实现类之间的分类角度裕度。通过给m赋值,我们定义了一个具有可调难度的CNNs柔性学习任务。L-Softmax loss具有一些很好的特性,例如

L-Softmax loss具有清晰的几何解释。m控制类之间的边距。在相同的训练损失下,随着m值的增大,理想的班距变大,学习难度也随之增加。当m=1时,L-Softmax loss与原始Softmax loss相同。

L-Softmax loss定义了一个相对困难的学习目标,其裕度(难度)可调。一个困难的学习目标可以有效地避免过度拟合,充分利用来自深、广体系结构的强大学习能力。

L-Softmax loss可以很容易地用作standard loss的替换,也可以与其他性能提升方法和模块(包括学习**功能、数据增强、池功能或其他修改的网络架构)一起使用。

4. Optimization

由于L-Softmax loss的正向和反向传播易于计算,因此利用典型的随机梯度下降法对L-Softmax损耗进行优化也很简单。对于Li,原始softmax loss和L-softmax loss之间的唯一区别在于fyi。因此,我们只需要计算向前和向后传播中的fyi,而fj,j \neyi与原始的softmax损耗相同。在式(6)和式(7)中,fyi写为

Large-Margin Softmax Loss for Convolutional Neural Networks

Large-Margin Softmax Loss for Convolutional Neural Networksk是一个整数,它属于[0,m-1]

对于反向传播,我们使用链式法则计算偏导:
Large-Margin Softmax Loss for Convolutional Neural Networks
可以通过构造 WjTxiWjxi\frac{W^T_jx_i}{\parallel W_j\parallel\parallel x_i\parallel} (即 cos(θi)cos(\theta_i) )的查找表来有效地计算k。具体来说,我们举一个 m=2m=2 时候前向和后向传播的例子。因此, fif_i 可以写成

Large-Margin Softmax Loss for Convolutional Neural Networks

Large-Margin Softmax Loss for Convolutional Neural Networks

在反向传播中,计算Large-Margin Softmax Loss for Convolutional Neural Networks

Large-Margin Softmax Loss for Convolutional Neural Networks

m3m\geq3 时,我们仍然可以使用式子(8)式子(9) 和**式子(10)**计算正向和反向传播。

对于优化问题,通常随机梯度下降法是有效的。然而,当训练数据有太多的对象(如CASIA-WebFace数据集)时,L-Softmax的收敛将比softmax的loss更困难。对于L-Softmax难以收敛的情况,我们使用一种学习策略

10)**计算正向和反向传播。

对于优化问题,通常随机梯度下降法是有效的。然而,当训练数据有太多的对象(如CASIA-WebFace数据集)时,L-Softmax的收敛将比softmax的loss更困难。对于L-Softmax难以收敛的情况,我们使用一种学习策略

Large-Margin Softmax Loss for Convolutional Neural Networks并以非常大的 λ\lambda (类似于优化原始softmax)开始梯度下降。然后 λ\lambda 在迭代过程中逐渐减少。理想情况下 λ\lambda 可以逐渐减少到零,但实际上,一个小值通常就足够了。