face recognition[variations of softmax][L-Softmax]


本文来自《Large-Margin Softmax Loss for Convolutional Neural Networks》,时间线为2016年12月,是北大和CMU的做品。网络

0 引言

过去十几年,CNN被应用在各个领域。你们设计的结构,基本都包含卷积层和池化层,能够将局部特征转换成全局特征,并具备很强的视觉表征能力。在面对更复杂的数据下,结构也变得更深(VGG),更小的strides(VGG),新的非线性激活函数(ReLU)。同时受益于很强的学习能力,CNN一样须要面对过拟合的问题。因此一些如大规模的训练集,dropout,数据加强,正则,随机池化等都不断被提出。ide

最近的主流方向倾向于让CNN可以学到更具辨识性的特征。直观上来讲,若是特征具备可分性且同时具备辨识性,这是极好的。但是由于许多任务中自己包含较大的类内变化,因此这样的特征也不是轻易可以学到的。不过CNN强大的表征能力能够学到该方向上的不变性特征,受到这样的启发,contrastive loss和triplet loss都所以提出来加强类内紧凑性和类间可分性。然而,一个后续问题是,所须要的图片二元组或者三元组理论上须要的量是\(O(N^2)\),这里\(N\)是训练样本的个数。考虑到CNN常常处理大规模训练集合,因此须要精心的选择训练集的一个子集来拟合这些loss函数。由于softmax的简洁和几率可解释性,softmax被普遍的应用。再加入cross-entropy loss一块儿使用,造成了最CNN分类结构中最经常使用的组件。函数

本文中,做者将softmax loss定义为cross-entropy loss,softmax函数和最后一层全链接层的组合。以下图
性能


基于这样的设定,许多流行的CNN模型能够被当作一个卷积特征学习组件和一个softmax loss组件的组合。但是以前的softmax loss不能显式的推动类内紧凑和类间可分。做者一个直观观点是模型的参数和样本能够因式分解成幅度和具备cos的类似性角度:
\[\mathbf{W}_cx=||\mathbf{W}_c||_2||x||_2cos(\theta_c)\]
这里 \(c\)是类别索引,对应的最后全链接层参数 \(\mathbf{W}_c\)能够当作是关于类 \(c\)的线性分类器的参数。基于softmax loss,标签预测决策规则很大程度上是被每一个类别的角度类似度决定的(由于softmax loss使用余弦距离做为分类得分)。

做者本文的目的就是经过角度类似度项,泛化softmax loss到一个更通用的大边际softmax(L-Softmax)loss上,从而让学到的特征之间具备更大的角度可分性。经过预设常数\(m\),乘以样本和ground-truth类别分类器之间的角度。\(m\)肯定了靠近ground-truth类的强度,提供了一个角度边际。而传统的softmax loss能够当作是L-sofmax loss的一个特例。
学习


如上图能够看出,L-Softmax学到的特征能够变得更紧凑和更可分。
L-Softmax loss是一个灵活的能够调整类内角度边际限制的目标函数。它提出了可调节难度的学习任务,其中随着所需边际变大,难度逐渐增长。L-Softmax loss有好几个优点:

  • 倾向扩大类之间的角度决策边际,生成更多辨识性的特征。它的几何解释也十分清晰和直观;
  • 经过定义一个更困难的学习目标来部分避免过拟合,即采用了不一样的观点来阐述过拟合;
  • L-Softmax不止得益于分类问题。在验证问题中,最小的类间距离也会大于最大的类内距离。这种状况下,学习可分性的特征能够明显的提高性能。

做者的实验验证了L-Softmax能够有效的加速分类和验证任务的性能。更直观的,图2和图5中的特征可视化都揭示了L-Softmax loss更好的辨识性
测试


做为一个直观的softmax loss泛化,L-softmax loss不止是继承了全部softmax loss的优势,同时让特征体现不一样类别之间大角度边际特性。

1 Softmax Loss以cos方式呈现

当前普遍使用的数据loss函数包含欧式loss,hinge(平方) loss,信息增益loss,contrastive loss, triplet loss, softmax loss等等。为了加强类内紧凑性和类间可分性,《Deep learning face representation by joint identificationverification》提出将softmax和contrastive相结合。contrastive loss输入的是一对训练样本,若是这对样本属于同一个类,那么contrastive loss须要他们的特征尽量的类似;不然,contrastive loss会让他们的距离超过一个边际阈值。优化

而不论是contrastive loss仍是triplet loss都须要仔细的设计样本选择过程。而他们都更加倾向类内紧凑性和类间可分性,这也给做者一些灵感:在原始softmax loss上增长一个边际限制spa

做者提出在原始softmax loss上进行泛化。假设第\(i\)个输入特征\(x_i\)和对应的label是\(y_i\)。那么原始softmax loss能够写成:
\[L=\frac{1}{N}\sum_i L_i=\frac{1}{N}\sum_i-\log \left ( \frac{e^{f_{y_i}}}{\sum_j e^{f_j}}\right ) \tag{1}\]
其中,\(f_j\)表示类别得分\(\mathbf{f}\)向量的第\(j\)个元素(\(j\in [1,K]\),K表示类别个数),N表示样本个数。在softmax loss中,\(\mathbf{f}\)一般表示全链接层\(\mathbf{W}\)的激活函数,因此\(f_{y_i}\)能够写成\(f_{y_i}=\mathbf{W}_{y_i}^Tx_i\),这里\(\mathbf{W}_{y_i}\)\(\mathbf{W}\)的第\(y_i\)列。注意到,忽略了\(f_j\)中的常量\(b\)\(\forall j\)为了简化分析,可是L-Softmax loss仍然能够容易的修改为带有\(b\)的(性能没什么差异)。
由于\(f_j\)是基于\(\mathbf{W}_j\)\(x_i\)的内积,能够写成\(f_j=||\mathbf{W}_j||||x_i||cos(\theta_j)\),这里\(\theta_j(0\leq \theta_j \leq \pi)\)是基于\(\mathbf{W}_j\)\(x_i\)向量的夹角,所以loss变成:
\[L_i=-\log\left( \frac{ e^{||\mathbf{W}_{y_i}||||x_i||cos(\theta_{y_i})} }{ \sum_i e^{||\mathbf{W}_j|| ||x_i|| cos(\theta_j)} } \right ) \]设计

2 Large-Margin Softmax Loss

2.1 直观

这里先给出一个简单的例子来直观的描述一下。考虑一个二分类问题,有一个来自类别1的样本\(x\),为了正确分类,原始softmax表现为\(\mathbf{W}_1^Tx> \mathbf{W}_2^Tx\)(即,\(||\mathbf{W}_1||||x||cos(\theta_1)> ||\mathbf{W}_2||||x||cos(\theta_2)\))。然而,为了生成一个决策边际而让分类更严格,做者认为能够\(||\mathbf{W}_1||||x||cos(m\theta_1)>||\mathbf{W}_2||||x||cos(\theta_2)(0 \leq \theta_1 \leq \frac{\pi}{m})\),这里\(m\)是一个正整数,由于有下面不等式:
\[ ||\mathbf{W}_1||||x||cos(\theta_1) \geq ||\mathbf{W}_1||||x||cos(m\theta_1) > ||\mathbf{W}_2||||x||cos(\theta_2) \]
所以,\(||\mathbf{W}_1||||x||cos(\theta_1) > ||\mathbf{W}_2||||x||cos(\theta_2)\).因此新分类标准是一个更强的标准。3d

2.2 定义

按照上面的解释,L-Softmax loss定义为:


其中定义为:

这里 \(m\)是一个整数,与分类边际密切相关。当 \(m\)变得更大时,分类边际也更大,学习的目标同时也变得更难。同时 \(\mathcal{D}(\theta)\)是一个单调递减的函数, \(\mathcal{D}(\frac{\pi}{m})\)等于 \(cos(\frac{\pi}{m})\)

为了简化前向和后向传播,本文中做者构建了一个特殊的函数 \(\psi (\theta_i)\)
\[\psi (\theta)=(-1)^kcos(m\theta)-2k,\, \, \theta\in\left [ \frac{k\pi}{m},\, \frac{(k+1)\pi}{m}\right ] \tag{6} \]
这里 \(k\in[0, m-1]\), \(k\)是一个整数。将式子1,式子4,式子6相结合,获得的L-Softmax loss。对于前向和后向传播,须要将 \(cos(\theta_j)\)替换为 \(\frac{\mathbf{W}_j^Tx_i}{||\mathbf{W}_j||||x_i||}\),而后将 \(cos(m \theta_{y_i})\)替换成:

这里n是整数且 \(2n \leq m\)。在消掉 \(\theta\)以后,能够求关于 \(x\)\(\mathbf{W}\)的偏导。

2.3 几何解释

做者的目标是经过L-Softmax loss来获得一个角度边际。为了简化几何上的解释,这里分析二分类状况,其中只有\(\mathbf{W}_1\)\(\mathbf{W}_2\)
首先,假设\(||\mathbf{W}_1||=||\mathbf{W}_2||\),如图4。


\(||\mathbf{W}_1||=||\mathbf{W}_2||\)时,分类结果彻底依赖介于 \(x\)\(\mathbf{W}_1(\mathbf{W}_2)\)。在训练阶段,原始的softmax须要 \(\theta_1<\theta_2\)去将样本 \(x\)分为1类,同时,L-Softmax loss须要 \(m\theta_1<\theta_2\)来保证一样的决策。能够发现L-Softmax是更严格的分类标准,从而生成一个介于类1和类2分类边际。假设softmax和L-Softmax都优化到相同的值,而后全部的训练特征能够十分完美的分类,那么,介于类1和类2之间的角度边际能够经过 \(\frac{m-1}{m+1}\theta_{1,2}\)得出,这里 \(\theta_{1,2}\)是基于向量 \(\mathbf{W}_1\)\(\mathbf{W}_2\)之间的角度。L-Softmax loss一样也会创建类1和类2的决策面。从另外一个角度,让 \(\theta_1^{'}=m\theta_1\),并假设原始softmax和L-Softmax能够优化到相同的值。那么能够知道在原始softmax中 \(\theta_1^{'}\)是L-Softmax中 \(\theta_1\)的m-1倍。因此介于学到的特征和 \(\mathbf{W}_1\)之间的角度会变得更小。对于每一个类别,都有相同的结论。本质上,L-Softmax 会缩小每一个类可行的角度,并在这些类上生成 一个边际。

对于\(||\mathbf{W}_1||>||\mathbf{W}_2||\)\(||\mathbf{W}_1||<||\mathbf{W}_2||\)等状况,几何解释更复杂一些。由于\(\mathbf{W}_1\)\(\mathbf{W}_2\)的模是不一样的,类1和类2的可行角度也是不一样的。正常的更大的\(\mathbf{W}_j\),对应的类就有更大的可行角度。因此,L-Softmax loss会对不一样的类生成不一样角度的边际。同时也会对不一样的类生成不一样的边际。

2.4 讨论

L-Softmax loss在原始softmax上作了一个简单的修改,在类之间得到了一个分类角度边际。经过设定不一样的m值,就定义了一个可调整难度的CNN模型。L-Softmax loss有许多不错的特性:

  • L-Softmax 有一个清晰的几何解释。m控制着类别之间的边际。更大的m(在相同训练loss下),表示类别之间理想的边际也更大,同时学习的困难程度也会上升。当m=1,L-Softmax就是原始softmax;
  • L-Softmax 定义了一个带有可调整边际(困难)的学习目标。一个困难的学习目标能够有效的避免过拟合,同时继承深度和广度结构上很强的学习能力;
  • L-Softmax 能够很容易的做为标准loss的一个选择,就和其余标准loss同样,也包含可学习的激活函数,数据加强,池化函数或其余网络结构模型。

3 优化

L-Softmax loss的前向和后向是很容易计算的,因此也很容易经过SGD进行迭代优化。对于\(L_i\),原始softmax和L-Softmax之间的差异在于\(f_{y_i}\)。所以只须要在前向和后向中计算\(f_{y_i}\),且同时其余的\(f_j,\, j \neq y_i\)与原始softmax是同样的,将式子6和式子7相结合,获得\(f_{y_i}\)


其中:

且,k是一个整数,取值为 \([0,m-1]\)。对于后向传播,使用链式法则去计算偏导

由于 \(\frac{\partial L_i}{\partial f_j}\)\(\frac{\partial f_j}{\partial x_i},\, \frac{\partial f_j}{\mathbf{W}_{y_i}},\forall j \neq y_i\)在原始softmax和L-Softmax都是同样的,因此为了简洁, \(\frac{\partial f_{y_i}}{\partial x_i}\)\(\frac{\partial f_{y_i}}{\partial \mathbf{W}_{y_i}}\)能够经过下面式子计算:


在实现过程当中,k能够经过构建一个关于 \(\frac{\mathbf{W}_{y_i}^Tx_i}{||\mathbf{W}_{y_i}||||x_i||}\)(即 \(cos(\theta_{y_i})\))的查找表。举个例子,给定一个m=2时候的力气,此时 \(f_i\)写成:

其中:

在后向传播中, \(\frac{\partial f_{y_i}}{\partial x_i}\)\(\frac{\partial f_{y_i}}{\partial \mathbf{W}_{y_i}}\)计算为:

\(m\geq 3\)时,仍然能够经过式子8,式子9,式子10来计算前向和后向。

4 实验细节

在两个类型数据集上进行了本文方法的测试:图像分类和人脸验证。在图像分类中使用MNIST,CIFAR10,CIFAR100;在人脸验证中使用LFW。只有在softmax层有差异,前面的网络结构在每一个数据集上都是各自同样的。以下图


网络结构上,略

训练具备较多目标的数据集如CASIA-WebFace上,L-Softmax的收敛会变得比softmax 要困难,对于这种状况,L-Softmax就更难收敛,这时候的学习策略是


且梯度降低开始时采用较大值的 \(\lambda\)(接近原始softmax),而后逐步的减少 \(\lambda\),理想状况下 \(\lambda\)会减小到0,不过实际状况中,一个较小的值就能知足了。

相关文章
相关标签/搜索