【CS231n】Deep Learning using Linear Support Vector Machines全文翻译

【CS231n】斯坦福大学李飞飞视觉识别课程笔记

Deep Learning using Linear Support Vector Machines

Yichuan Tang

Deep Learning using Linear Support Vector Machines - 原文

0 Abstract

最近,已经训练了全连接和卷积神经网络,去在语音识别,图像分类,自然语言处理和生物信息学等各种任务上实现最先进的性能。对于分类任务,大多数这些“深度学习”模型使用softmaxsoftmaxsoftmax激活函数进行预测并最小化交叉熵损失。在本文中,我们展示了用线性支持向量机替换softmaxsoftmaxsoftmax层的一个小而一致的优点。学习可以最大限度地减少基于保证金的损失,而不是交叉熵损失。虽然在现有技术中存在神经网络和SVMSVMSVM的各种组合,但是我们使用L2SVML2-SVML2−SVM的结果表明,通过简单地用线性SVMSVMSVM替换softmaxsoftmaxsoftmax,在流行的深度学习数据集MNISTMNISTMNIST,CIFAR10CIFAR-10CIFAR−10和ICML2013ICML 2013ICML2013表示学习研讨会的面部表情识别挑战上都获得显着的收益。

1 Introduction

使用神经网络的深度学习已经声称自己在各个领域的任务中都具有最先进的性能。这些包括(但不限于)演讲(Mohamed等人,2009; Dahl等人,2010)和视觉(Jarrett等人,2009; Ciresan等人,2011; Rifai等人,2011a; Krizhevsky等人,2012)。所有上述论文都使用softmax激活函数(也称为多项逻辑回归)进行分类。

用于分类的问题时,支持向量机是一个广泛使用的用来替代softmaxsoftmaxsoftmax的方案(Boser等,1992)。过去已经提出将SVMSVMSVM(尤其是线性的)与卷积网络结合使用作为多阶段过程的一部分。具体而言,首先使用监督/无监督目标训练深度卷积网络以学习良好的不变的隐藏表示。然后将数据样本的相应隐藏变量视为输入并馈入线性(或内核)SVMSVMSVM(Huang&LeCun,2006; Lee等人,2009; Quoc等人,2010; Coates等人,2011)。这种技术通常可以提高性能,但缺点是较低级别的功能是没有经过微调w.r.t.SVMw.r.t. SVMw.r.t.SVM的目标。

其他论文也提出了相似的模型,但是使用标准神经网络和卷积神经网络对较低层的权重进行联合训练(Zhong&Ghosh,2000; Collobert&Bengio,2004; Nagi等,2012)。在其他相关的著作中,(Weston等人,2008)提出了一种用于深度学习的半监督嵌入算法,其中铰链损失与来自siamesesiamesesiamese网络的“contrastivelosscontrastive losscontrastiveloss”相结合(Hadsell等,2006)。使用随机梯度下降来学习较低层权重。(Vinyals等,2012)在每一层使用线性SVMSVMSVM学习递归表示,但不对隐藏表示进行联合微调。

在本文中,我们展示了,对于一些深层架构使用线性SVMSVMSVM顶层而不是softmaxsoftmaxsoftmax是有益的。我们优化了SVMSVMSVM的原始问题,并且可以反向传播梯度以学习较低级别的特征。我们的模型基本上与(Zhong&Ghosh,2000; Nagi等,2012)中提出的模型相同,提出的小小新颖性是使用L2SVML2-SVML2−SVM的损失代替标准铰链损失。与标准SVMSVMSVM的铰链损失不同,L2SVML2-SVML2−SVM的损失是可微分的并且严重地惩罚误差。原始的L2SVML2-SVML2−SVM目标是在SVMSVMSVM发明之前3年提出的(Hinton,1989)!(Lee&Mangasarian,2001)也讨论了类似的目标及其优化。

与使用顶层softmaxsoftmaxsoftmax的网络相比,我们在MNISTMNISTMNIST,CIFAR10CIFAR-10CIFAR−10以及最近的KaggleKaggleKaggle竞赛上展示了识别面部表情的卓越性能。使用小型微型计算机上的随机梯度下降进行优化。比较Sec3.4中的两个模型,我们认为性能增益很大程度上归功于SVMSVMSVM损失函数的优越正则化效应,而不是更好的参数优化的优势。

2 The model

2.1 Softmax

对于使用深度学习技术的分类问题来说,在顶部使用softmaxsoftmaxsoftmax或1ofK1-of-K1−of−K编码是标准的。例如,给定10个可能的类,softmaxsoftmaxsoftmax层具有由pip_ipi​表示的10个节点,其中i=1...10i = 1,...,10i=1,...,10。pip_ipi​指定一个离散概率分布,因此,i10pi=1\sum_{i}^{10} p_{i}=1∑i10​pi​=1。

hhh为倒数第二层节点的激活,WWW为连接倒数第二层与softmaxsoftmaxsoftmax层的权重,由aaa给出的到softmaxsoftmaxsoftmax层的总输入为
ai=khkWki a_{i}=\sum_{k} h_{k} W_{k i} ai​=k∑​hk​Wki​
然后我们有
pi=exp(ai)j10exp(aj) p_{i}=\frac{\exp \left(a_{i}\right)}{\sum_{j}^{10} \exp \left(a_{j}\right)} pi​=∑j10​exp(aj​)exp(ai​)​
预计的分类i^\hat{i}i^将会是
i^=argmaximaxpi=argmaxiai \begin{aligned} \hat{i} &=\arg \max _{i} \max p_{i} \\ &=\underset{i}{\arg \max } a_{i} \end{aligned} i^​=argimax​maxpi​=iargmax​ai​​
2.2 Support Vector Machines

线性支持向量机(SVM)(SVM)(SVM)最初是为二元分类而设计的。给定训练数据及其对应的标签(xnyn)(x_n,y_n)(xn​,yn​),n=1...Nn = 1,...,Nn=1,...,N,xnRDx_n∈R^Dxn​∈RD,tn{1+1}t_n∈\{-1,+ 1\}tn​∈{−1,+1},SVMsSVMsSVMs学习包括以下约束优化:
minw,ξn12ww+Cn=1Nξn \min _{\mathbf{w}, \xi_{n}} \frac{1}{2} \mathbf{w}^{\top} \mathbf{w}+C \sum_{n=1}^{N} \xi_{n} w,ξn​min​21​w⊤w+Cn=1∑N​ξn​
 s.t. wxntn1ξnnξn0n \begin{array}{l}{\text { s.t. } \mathbf{w}^{\top} \mathbf{x}_{n} t_{n} \geq 1-\xi_{n} \quad \forall n} \\ {\xi_{n} \geq 0 \quad \forall n}\end{array}  s.t. w⊤xn​tn​≥1−ξn​∀nξn​≥0∀n​
ξnξ_nξn​是松弛变量,它会惩罚违反保证金要求的数据点。请注意,我们可以通过使用标量值1来扩充所有数据向量xnx_nxn​来包含偏差。相应的无约束优化问题如下:
minw12ww+Cn=1Nmax(1wxntn,0) \min _{\mathbf{w}} \frac{1}{2} \mathbf{w}^{\top} \mathbf{w}+C \sum_{n=1}^{N} \max \left(1-\mathbf{w}^{\top} \mathbf{x}_{n} t_{n}, 0\right) wmin​21​w⊤w+Cn=1∑N​max(1−w⊤xn​tn​,0)
方程式的公式5被称为L1SVML1-SVML1−SVM的原始形式问题,具有标准铰链损失。由于L1SVML1-SVML1−SVM不可微分,因此一种流行的变体称为L2SVML2-SVML2−SVM,它最大限度地减小了平方铰链损耗:
minw12ww+Cn=1Nmax(1wxntn,0)2 \min _{\mathbf{w}} \frac{1}{2} \mathbf{w}^{\top} \mathbf{w}+C \sum_{n=1}^{N} \max \left(1-\mathbf{w}^{\top} \mathbf{x}_{n} t_{n}, 0\right)^{2} wmin​21​w⊤w+Cn=1∑N​max(1−w⊤xn​tn​,0)2

L2SVML2-SVML2−SVM是可微分的,并且对于违反边际的点施加更大(二次与线性)损失。要预测测试数据x的类标签:
argmaxt(wx)t \arg \max _{t}\left(\mathbf{w}^{\top} \mathbf{x}\right) t argtmax​(w⊤x)t
对于内核SVMsSVMsSVMs,必须在双重中执行优化。但是,可伸缩性是内核SVMsSVMsSVMs的一个问题,在本文中,我们将仅使用具有标准深度学习模型的线性SVMsSVMsSVMs。

2.3 Multiclass SVMs

为多类问题扩展SVMsSVMsSVMs的最简单方法是使用所谓的onevsrestone-vs-restone−vs−rest方法(Vapnik,1995)。对于KKK类问题,KKK线性SVMsSVMsSVMs将被独立训练,其中来自其他类的数据形成负面情况。Hsu&Lin(2002)讨论了其他替代多类SVMSVMSVM方法,但我们将这些方法留给将来的工作。

将第kkk个SVMSVMSVM的输出表示为
ak(x)=wx a_{k}(\mathbf{x})=\mathbf{w}^{\top} \mathbf{x} ak​(x)=w⊤x
预测的分类是
argmaxkak(x) \arg \max _{k} a_{k}(\mathbf{x}) argkmax​ak​(x)

请注意,使用SVMsSVMsSVMs的预测与使用softmaxsoftmaxsoftmax Eq. 3完全相同。softmaxsoftmaxsoftmax和多类SVMsSVMsSVMs之间的唯一区别在于它们的目标由所有的权重矩阵WWW参数化。SoftmaxSoftmaxSoftmax层最小化了交叉熵或最大化了对数似然,而SVMsSVMsSVMs只是试图找到不同类的数据点之间的最大余量。

2.4 Deep Learning with Support Vector Machines

大多数使用全连接层和卷积层进行分类的深度学习方法使用softmaxsoftmaxsoftmax层目标来学习较低级别的参数。有一些例外,特别是(Zhong&Ghosh,2000; Collobert&Bengio,2004; Nagi等,2012),监督嵌入非线性NCANCANCA(Salakhutdinov&Hinton,2007)和半监督深度嵌入(Weston等人,2008)的论文中。在本文中,我们使用L2SVML2-SVML2−SVM的目标来训练深度神经网络进行分类。通过反向传播来自顶层线性SVMSVMSVM的梯度来学习较低层权重。为此,我们需要区分SVMSVMSVM目标与倒数第二层的激活。让我们的在Eq. 5中的目标为l(w)l(w)l(w),和输入xxx用倒数第二个激活hhh替换,
l(w)hn=Ctnw(I{1>whntn}) \frac{\partial l(\mathbf{w})}{\partial \mathbf{h}_{n}}=-C t_{n} \mathbf{w}\left(\mathbb{I}\left\{1>\mathbf{w}^{\top} \mathbf{h}_{n} t_{n}\right\}\right) ∂hn​∂l(w)​=−Ctn​w(I{1>w⊤hn​tn​})
其中I{}\mathbb{I}\{\cdot\}I{⋅}是指标函数。同样,对于L2SVML2-SVML2−SVM,我们有
l(w)hn=2Ctnw(max(1whntn,0)) \frac{\partial l(\mathbf{w})}{\partial \mathbf{h}_{n}}=-2 C t_{n} \mathbf{w}\left(\max \left(1-\mathbf{w}^{\top} \mathbf{h}_{n} t_{n}, 0\right)\right) ∂hn​∂l(w)​=−2Ctn​w(max(1−w⊤hn​tn​,0))
从这一点来看,反向传播算法与基于标准softmaxsoftmaxsoftmax的深度学习网络完全相同。我们发现大多数时候L2-SVM略好于L1-SVM,并且在实验部分将使用L2-SVM。

3 Experiments

3.1 Facial Expression Recognition

本次竞赛/挑战由ICML2013ICML 2013ICML2013年代表性学习研讨会主办,该研讨会由蒙特利尔大学LISALISALISA组织。比赛本身在KaggleKaggleKaggle举办,在最初的发展期间有超过120个竞争团队。该数据由7种不同类型表达下的28709个48x48的面部图像组成。有关示例及其相应的表达类别,请参见图1。验证和测试集由3589个图像组成,这是一个分类任务。

Winning Solution

我们提交了获胜解决方案,公共验证分数为69.4%,相应的私人测试分数为71.2%。我们的私人测试成绩比第二名的成绩高出近2%。由于标签噪音和其他因素(如数据损坏),人类的表现大致估计在65%至68%之间。

我们的提交包括使用一个简单的卷积神经网络,在顶部使用线性onevsallone-vs-allone−vs−all的SVMSVMSVM。具有动量的随机梯度下降用于训练,并且几个模型被平均以略微改善泛化能力。数据预处理包括首先减去每个图像的平均值,然后将图像范数设置为100。再然后通过去除其平均值,并将其值除以该像素的标准偏差来标准化所有训练图像的每个像素。
【CS231n】Deep Learning using Linear Support Vector Machines全文翻译
Figure 1. 训练数据。每列由相同表达式的面组成:从最左边的列开始:愤怒,厌恶,恐惧,快乐,悲伤,惊喜,中立。

我们的实现是在C++C ++C++和CUDACUDACUDA中,使用MEXMEXMEX文件到MatlabMatlabMatlab的端口。我们的卷积例程使用了AlexKrizhevskyAlex KrizhevskyAlexKrizhevsky编写的快速CUDACUDACUDA内核。确切的模型参数和代码由作者在https://code.google.com/p/deeplearning-faces上提供。

3.1.1 Softmax vs. DLSVM

我们使用L2SVM(DLSVM)L2-SVM(DLSVM)L2−SVM(DLSVM)比较了使用深度学习的softmaxsoftmaxsoftmax的性能。两种模型都使用8分割/折叠交叉验证进行测试,具有图像镜像层,相似性变换层,两个卷积滤波+池化阶段,接着是具有3072个隐藏倒数第二个隐藏单元的全连接层。隐藏层都是整流线性类型。使用交叉验证选择其他超参数,例如权重衰减。

我们还可以看看SoftmaxSoftmaxSoftmax与L2SVML2-SVML2−SVM的验证曲线是图2中权重更新的函数。随着学习速率在训练的后半段降低,DLSVMDLSVMDLSVM保持了小但是明显的性能增益。

我们还绘制了两个模型的第一层卷积滤波器:

虽然通过查看这些滤波器可以获得的收益不多,但SVMSVMSVM训练的convconvconv网络似乎有更多的纹理滤波器。
【CS231n】Deep Learning using Linear Support Vector Machines全文翻译
Table 1. 根据%准确度对模型进行比较。训练c.v. 是8次分裂的平均交叉验证准确度。公共排行榜是通过KaggleKaggleKaggle的公共排行榜获得的持久验证集。私人排行榜是用于确定比赛获胜者的最终私人排行榜得分。
【CS231n】Deep Learning using Linear Support Vector Machines全文翻译
Figure 2. 两个模型的交叉验证性能。结果平均超过8倍。

3.2 MNIST

MNISTMNISTMNIST是一种标准的手写数字分类数据集,已被广泛用作深度学习的基准数据集。这是一个10分类问题,有60000个训练样例和10000个测试用例。

我们使用简单的全连接模型,首先执行从784维到70维的PCAPCAPCA。两个512个单元的隐藏层之后是softmaxsoftmaxsoftmax或L2SVML2-SVML2−SVM。然后将数据分成300个小批量,每个200个样本。我们使用随机梯度下降训练这些300个小批量的动量超过400 epochsepochsepochs,共计120K权重更新。学习率的线性衰减从0.1到0.0。softmaxsoftmaxsoftmax层上的L2L2L2权重成本设置为0.001。为了防止过度拟合并且对于获得良好结果至关重要,在输入中添加了许多高斯噪声。标准偏差噪声为1.0(线性衰减为0)。增加高斯噪声的想法来自这些论文(Raiko等,2012; Rifai等,2011b)。
【CS231n】Deep Learning using Linear Support Vector Machines全文翻译
Figure 3. 使用softmaxsoftmaxsoftmax的卷积网过滤器。
【CS231n】Deep Learning using Linear Support Vector Machines全文翻译
Figure 4. 使用L2SVML2-SVML2−SVM的卷积网过滤器。

我们的学习算法是置换不变的,没有任何无监督的预训练,并获得这些结果:Softmax0.99DLSVM0.87Softmax:0.99%,DLSVM:0.87%Softmax:0.99%,DLSVM:0.87%

对于上述学习设置,MNISTMNISTMNIST的错误率为0.87%(此时)可能是最先进的。softmaxsoftmaxsoftmax和DLSVMDLSVMDLSVM之间的唯一区别是最后一层。本实验主要是为了证明最后一个线性SVMSVMSVM层与softmaxsoftmaxsoftmax的有效性,我们还没有详尽地探讨其他常用的技巧,如DropoutDropoutDropout,权重约束,隐藏单元稀疏性,添加更多隐藏层和增加层大小。

3.3 CIFAR-10

加拿大高等研究院10数据集是一个10类对象数据集,其中50000个图像用于训练,10000个用于测试。彩色图像的分辨率为32×32。我们训练了一个具有两个交替池化和过滤层的卷积神经网络。在使用128个数据案例的小批量更新权重之前,水平反射和抖动被随机应用于数据。

两个模型的卷积网络部分都相当标准,第一个CCC层有32个5×5过滤器和ReluReluRelu隐藏单元,第二个CCC层有64个5×5过滤器。两个池化层都使用最大池化和两倍下采样。

倒数第二层有3072个隐藏节点,使用ReluReluRelu激活, dropoutdropoutdropout率为0.2。Convnet+SoftmaxConvnet + SoftmaxConvnet+Softmax和ConvNetConvNetConvNet与L2SVML2-SVML2−SVM之间的区别主要在于SVMSVMSVM的CCC常数,SoftmaxSoftmaxSoftmax的权重衰减常数和学习速率。我们使用验证集分别为每个模型选择了这些超参数的值。
【CS231n】Deep Learning using Linear Support Vector Machines全文翻译
Table 2.在测试集上的%误差方面的模型比较。

在文献中,最先进的(在撰写本文时)结果约为9.5%(Snoeck等人,2012)。然而,该模型是不同的,因为它包括对比度标准化层以及使用贝叶斯优化来调整其超参数。

3.4 Regularization or Optimization

为了了解DLSVMDLSVMDLSVM的增益是由于目标函数的优越性还是由于更好地优化能力,我们研究了两个最终模型在其自身目标函数和其他目标下的损失。结果见Table 3.
【CS231n】Deep Learning using Linear Support Vector Machines全文翻译
Table 3. 训练目标,包括权重成本。

有趣的是,这里注意到较低的交叉熵实际上导致了中间行的较高误差。此外,我们还初始化了一个ConvNet+SoftmaxConvNet + SoftmaxConvNet+Softmax模型,其DLSVMDLSVMDLSVM的权重为11.9%误差率。随着进一步的训练,网络的误差率逐渐增加到14%。

这提供了有限的证据,表明DLSVMDLSVMDLSVM的增益很大程度上是由于更好的目标函数。

4 Conclusions

总之,我们已经证明DLSVMDLSVMDLSVM在2个标准数据集和最近的数据集上比softmaxsoftmaxsoftmax更好。从softmaxsoftmaxsoftmax切换到SVMSVMSVM非常简单,而且似乎对分类任务很有用。需要进一步研究以探索其他多类SVMSVMSVM配方,并更好地了解获得增益的位置和数量。

上一篇:CS231N笔记之损失函数和优化


下一篇:全球名校课程作业分享系列(8)--斯坦福计算机视觉与深度学习CS231n之tensorflow实践