本文来自《Large-Margin Softmax Loss for Convolutional Neural Networks》,时间线为2016年12月,是北大和CMU的做品。网络
过去十几年,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函数和最后一层全链接层的组合。以下图
性能
做者本文的目的就是经过角度类似度项,泛化softmax loss到一个更通用的大边际softmax(L-Softmax)loss上,从而让学到的特征之间具备更大的角度可分性。经过预设常数\(m\),乘以样本和ground-truth类别分类器之间的角度。\(m\)肯定了靠近ground-truth类的强度,提供了一个角度边际。而传统的softmax loss能够当作是L-sofmax loss的一个特例。
学习
- 倾向扩大类之间的角度决策边际,生成更多辨识性的特征。它的几何解释也十分清晰和直观;
- 经过定义一个更困难的学习目标来部分避免过拟合,即采用了不一样的观点来阐述过拟合;
- L-Softmax不止得益于分类问题。在验证问题中,最小的类间距离也会大于最大的类内距离。这种状况下,学习可分性的特征能够明显的提高性能。
做者的实验验证了L-Softmax能够有效的加速分类和验证任务的性能。更直观的,图2和图5中的特征可视化都揭示了L-Softmax loss更好的辨识性
测试
当前普遍使用的数据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 ) \]设计
这里先给出一个简单的例子来直观的描述一下。考虑一个二分类问题,有一个来自类别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
按照上面的解释,L-Softmax loss定义为:
做者的目标是经过L-Softmax loss来获得一个角度边际。为了简化几何上的解释,这里分析二分类状况,其中只有\(\mathbf{W}_1\)和\(\mathbf{W}_2\)。
首先,假设\(||\mathbf{W}_1||=||\mathbf{W}_2||\),如图4。
对于\(||\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会对不一样的类生成不一样角度的边际。同时也会对不一样的类生成不一样的边际。
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同样,也包含可学习的激活函数,数据加强,池化函数或其余网络结构模型。
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}\):
在两个类型数据集上进行了本文方法的测试:图像分类和人脸验证。在图像分类中使用MNIST,CIFAR10,CIFAR100;在人脸验证中使用LFW。只有在softmax层有差异,前面的网络结构在每一个数据集上都是各自同样的。以下图
当训练具备较多目标的数据集如CASIA-WebFace上,L-Softmax的收敛会变得比softmax 要困难,对于这种状况,L-Softmax就更难收敛,这时候的学习策略是
。