AlexNet-ImageNet Classification with Deep Convolutional Neural Networks学习笔记

最近开始对深度学习感兴趣,因此开始了研究之路。

2012年

原文:http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

摘要:该论文:主要是在ImageNet LSVRC-2010竞赛中要把120万张高清图像分成100个不同的类别。因此训练了一个大型深度卷积神经网络。该论文,在测试数据方面比之前效果更好,作者做到了了top-1和top-5错误率分别为375.%和17.0%。该论文的神经网络,由6千万的参数和65万的神经元组成5个卷积层,一些卷积层后面跟着最大池化层和3个全连接层,全连接层利用softmax函数实现1000个分类。为了让训练更快,作者使用了不饱和神经元和一个有效的GPU实现卷积操作。为了降低全连接层的过拟合,作者采用了最近研发出来的正则化方法——dropout,取得了不错的效果。作者在竞赛中加入了这个模型的变体,与第二名的top-5错误率26.2%相比,最终以15.3%的错误率获胜。

(以下的我们都指原论文作者)

1.引言

如今,物体识别的方法必选机器学习的方法。为了提高性能,我们收集了更大的数据集,学习更强大的模型并且用更好的技术来避免过拟合。直到现在,打过标签的图像数据集还是相对比较小的(比如,。。)。简单的是识别任务用这些大小的数据集可以完成的相当好,特别是如果他们的标签保存转化被放大的时候。例如,在MINIST数字识别任务中最好的错误率<0.3%,接近了人类的识别[4]。但是物体在现实背景中表现得相对变化,因此为了学习识别出物体,有必要使用更大的训练集。实际上,小型图像数据集的缺点是广为人知的,但知道最近才可能收集百万级别带标签的图像数据集。新的更大的数据集包括LableMe(由成百上千,成千上万的全分割图片组成),ImageNet(由超过1500万带标签的高清图片组成,超过22000个分类)。

为了从百万级别的图片中学习到成千上万的物体,我们需要一个更大的学习能力的模型。然而,物体识别任务的极高复杂性意味着即使数据集和ImageNet一样大,这个问题也很难被具体化,因此,我们的模型应该需要大量的先验知识来补全我们没有的数据,即缺失数据。CNNs就等同于这样一类模型。。。通过改变深度和宽度来控制他们的能力,并且他们也可以对图片的本质做出准确的假设(也就是说,统计的稳定性和像素依赖的局部性特征)。因此,与具有相似层数标准的前馈神经网络相比,CNNs有更少的连接和参数,所以更容易训练,尽管他们的理论最佳表现可能比前馈神经网络稍差。

尽管CNNs有吸引人的质量和局部架构相对有效,但其应用到大规模高清图片是相当昂贵的。幸运的是,如今配有高度优化的2D卷积实现的GPU有足够加快训练大型CNNs的速度,而且最近像ImageNet的数据集包含足够带标签的例子来训练这样的模型,并且没有严重的过拟合。

本文的主要贡献如下:我们在ILSVRC-2010和ILSVRC-2012比赛上使用了ImageNet的子集训练了最大的CNNs之一并且迄今为止取得了最好的结果。我们编写了一个高度优化的2D卷积GPU实现,以及其他所有训练CNNs的固有操作,我们都将它公之于众。我们的网络包含了一些新鲜罕见的特征,这些特征提高了它的性能并且缩短了训练时间,这些会在第三部分提及。即使拥有120万打过标签的训练样例,我们网络的大小造成过拟合问题,因此我们使用了一些有效的技术来避免过拟合,我们会在第4部分提及。最终,我们的网络包含5个卷积层和3个全连接层,这个深度也是重要的:我们发现移除任何一个卷积层(每层包含不到1%的模型参数)将会导致较差的结果。

最后,网络的大小主要受限于在现有GPU中可获得的内存数量和我们能忍受的训练时间。我们的网络任务需要在两台GTX580 3GB的GPU上训练5到6天。我们所有的实验表明,若有更快的GPU和更大的数据集,实验结果将会提高。

2.数据集

ImageNet数据集拥有超过1500万高清图片,大概属于22000个分类。这些图片是从网络上收集的使用亚马逊土耳其机器人群众外包进行人工标注。在2010年初,作为帕斯卡物体可视化挑战的一部分,ILSVRC比赛每年都会举行。ILSVRC使用ImageNet中的一个子集,包括每1000个分类,每个分类包括大约1000张图片。总共大概有120万张训练集图片,5000张验证集图片和15000张测试集图片。

ILSVRC-2010是为一个测试集可获得的版本,因此我们用它进行了大部分实验。因此把我们的模型用到2012年ILSVRC的比赛,在第6部分我们也说明了在这个数据集上的实验结果,但测试集是不可获得的。在ImageNet,通常验证两类错误率:top-1和top-5,top-5错误率是测试图片的 正确标签不在模型预测的五个标签中的分数。

ImageNet包含各种清晰度的图片,而我们的系统需要输入维度稳定的图片。因此,我们对图片进行采样,固定大小256*256.若图片是矩形的,我们将宽调整为256,然后取中心区域为256*256像素的部分。我们只对图片训练集做了每个像素减去平均值的处理。因此,我们的网络是在原始RGB像素值上进行训练的。

3.网络架构

我们网络架构如图2所示,包含8个学习层——5个卷积层和3个全连接层。下面,我们描述我们网络架构中新奇罕见的部分。3.1-3.4按照重要性进行排序,越重要越靠前。

3.1ReLU

关于神经元的输出函数,标准的建模方法一般是:f(x) = tanh(x)或f(x) = (1 + e-x)-1

x是输入。就梯度下降的训练时间而言,饱和的非线性比非饱和的非线性f(x)=max(0,x)下降的要慢。根据Nair和Hinton【20】的说法,我们把使用非线性的神经元称为修正线性单元(ReLUs)。使用ReLUs的深度卷积神经网络训练比同等条件下使用tanh的网络快。如图1所示,对一个特定的四层卷积网络在CIFAR-10的数据集上达到25%训练错误所需要的迭代次数。这张图表明,如果我们使用传统的饱和神经元模型将不可能完成如此庞大的神经网络的实验。



我们并不是最早考虑到替换CNNs传统的神经元模型的。比如,Jarrett等【11】声称非线性f (x) = |tanh(x)|在Caltech-101数据集上做局部平均池化的对比度归一化效果很好。然而,在这个数据集上他们关心的主要问题是防止过拟合,因此,他们观察到的结果和我们我们是不同的,我们使用ReLUs是为了更好地适应训练集。在大型网络上训练大型数据集能更快的学习。

3.2多GPU训练

一个GTX580GPU只有3GB的内存,限制了能够在其上训练的网络的最大数。训练网络需要120万张样本图但对于GPU而言太大了。因此我们用2个GPU训练。如今的GPU非常适合做跨GPU并行运算,能直接从彼此的内存做读写操作,无需通过宿主机器的内存。我们采用这种并行机制将各一半的网络内核(神经元)放在每个GPU上,然后采用一个小技巧:将GPU通信限制在某些特定层。比如,这就意味着第三层的内核从第二层所有的内核映射获得输入。而第四层只从和自己在同一GPU的第三层内核中获取输入。对于交叉验证来说选择这种连接模式是个问题,但这能让我们精确地调整通信数量到一个可接受的范围。

据Ciresan而言,由此产生的架构和由柱状CNN产生的架构有些相似【5】,只不过我们的列不是独立的。与在单个GPU训练每个卷积层只有一半的内核网络相比,我们的模式将top-1和top-5错误率分别降低了1.7%和1.2%。两个GPU网络比单GPU网络所需的训练时间要稍微短一些。

3.3局部反应归一化

ReLUs有一个很赞的属性,那就是无需对输入数据进行归一化来避免饱和。如果一些训练样例为ReLU产生至少一个正输入,那么这个神经元就会进行学习。我们还发现下面这种局部归一化模式能够更好地泛化。设由第i个内核计算位置(x,y)的ReLUs非线性激活神经元为aix,y,那么反应归一化激活bix,y的表示如下:


其中,求和公式是对在相同空间位置的n个相邻内核映射求和,N是这一层的所有内核数。内核映射的顺序当然是任意的,并且是在训练之前就定好的。这种反应归一化实现了一种由真实神经元中发现的类型所激发的横向抑制形式,为使用不同内核计算的神经元输出之间的大激活产生竞争。常数k,n,α和β是超参数,它们的值由验证集决定。我们取k = 2, n = 5, α= 10-4, β = 0.75.我们在特定层使用ReLU非线性之后应用这种归一化(见3.5)。

这种模式与Jarrett等【11】提出的局部对比归一化有点类似,但我们的方法更准确地描述为“亮度归一化”,因为我们没有减去均值。反应归一化将top-1和top-5错误分别降低了1.4%和1.2%。我们还在CIFAR-10数据集验证了该模式的效果:四层CNN不用归一化错误率降低了13%,用了之后降到了11%。

3.4重叠池化

CNN中的池化层负责统计同一内核映射相邻神经元组的输出求和。一般地,被相邻池化单元求和的邻里不重复。为了更加精确,一个池化层可以看做由相隔s个像素占据的池化单元组成的网络所构成,每个单元负责对相邻的z*z范围的中心区域求和。若设s=z,我们就能得到用于大多数CNN传统的局部池化方法;若设s<z,我们就能得到重叠池化;这就是我们在网络中使用的方法,s=2,z=3.若得到相同维度的输出,与无重叠的s=z=2相比,这种模式将top-1和top-5的错误率分别降低了0.4%和0.3%。我们还观察到,在训练期间,采用重叠池化能让模型稍微更难过拟合。

3.5整体架构

接下来我们讲一下我们CNN的整体架构。如图2所示,网络包含8个加权的层;前五个是卷积层,后三个是全连接层。最后一个全连接层输出一个覆盖1000类标签的1000路softmax。我们的网络最大化多项逻辑回归目标,这相当于在预测分布下最大化正确标签log概率的训练案例。


第2,4,5卷积层的内核仅仅与前一层和自己在同一个GPU上的内核映射相连(如图2)。第三个卷积层内核与第二个卷积层所有内核映射相连。全连接层的神经元和前一层上所有的神经元相连。反应归一化层在前两个卷积层后面。最大池化层(如3.4所述),在反应归一化层和第五个卷积层后面。ReLU非线性被用在每个卷积层和全连接层的输出。

第一个卷积层用大小为11×11×3步长为4像素的卷积核过滤输入224×224×3的图片(这是同一核映射相邻神经元距离中心的距离)。第二个卷积层将第一个卷积层的(反应归一并池化后的)输出作为输入并用256个3×3×192的卷积核过滤。后三个卷积层互相连接没有池化层和归一层。第三个卷积层和第二层被归一化和池化的输出相连,有384个大小为3×3×192的卷积核。第四卷积层有384个大小为3×3×192的卷积核,最后一个卷积层有256个大小为3×3×192的卷积核。每个全连接层有4096个神经元。

4.减少过拟合

我们的神经网络架构有6千万个参数。尽管ILSVRC的1000个类别使得每个训练样本对从图像到标签的映射施加10比特的约束,学习如此多的参数而没有过拟合显然是不足的。接下来,我们介绍两种对付过拟合的主要方法。

4.1增加数据集

减少图像数据过拟合最简单最普遍的方法是利用标签保存变形技术人为扩大数据集【25,4,5】。我们采用两种不同的形式扩大数据集,这两种形式都是在原图做少量计算的情况下产生变形的图,因此变形后的新图不必存在硬盘上。当GPU在训练前一批图片时,由python代码在CPU上处理产生转化的新图。所以,这些数据集放大形式实际上是计算上免费的。

第一种数据集增大的方式由生成的图片翻译和水平镜像组成。我们从256×256的图片中随机抽取224×224的区域(及其水平镜像),并且在这些抽取后得到的区块上训练我们的网络。这使我们的训练集增加了2048倍,尽管由此产生的训练样例当然是高度相互依赖的。若不使用这种方法,我们的网络会出现严重过拟合,进而会迫使我们使用更小的网络。在测试过程中,网络会抽取5个224×224区块(四角和中心区快)以及水平镜像(共10个区块)进行预测,然后将softmax层对这10个区块作出的预测进行取平均。

第二种增加数据集的方法是改变训练图片的RGB通道频谱密度。特别地,我们在整个ImageNet训练集上对RGB像素进行主成分分析(PCA)。对每张训练图片,我们添加多个找到的主成分,其大小与对应的特征值成比例,乘以从均为0和标准差为0.1的高斯绘制的随机变量。因此,对于每个RGB像素值Ixy =[IxyR , IxyG , Ixy]T我们填入的值如下:


其中,pi 和λi分别是第i个特征向量和第i个3x3RGB协方差矩阵的特征值,而αi是前面所述的随机变量。对于每一张特定的训练图片,每一个αi 仅被抽取一次,直到这张图再次被用于训练才会再次提取随机变量。这种方法能够近似地捕捉原始图片的重要特征,即那些不随光线强度与颜色变化的物体特征。这种方法把top-1错误率降低了1%。

4.2Dropout

结合多种不同的模型的预测是减少错误测试错误的一种非常成功的方法【1,3】,但对于已经花费数天时间训练的大型神经网络来说似乎太昂贵了。然而,有一个非常有效的模型结合版本,在训练期间其成本只有两倍。这种新引进的技术叫做“Dropout”,将每个隐藏的神经元的输出神经元的输出设置为0的概率为0.5。以这种方式“退出”的神经元既不参与前向传播,也不参与反向传播。所以每次提交输入时,神将网路都会在不同的架构里采样,但这些所有的架构共享权重。这种技术降低了神经元之间相互适应的复杂性,因为每个神经元不会依赖其他特定的神经元而存在。因此,能学习更加健壮的特征,使其能被许多不同的随机神经元子集使用。在测试中,我们使用所有的神经元,但将他们的输出乘以0.5,这对于采用指数衰减的网络产生的预测分布的几何平均值是合理的近似。

我们在图2的前两个全连接层使用dropout。若不使用dropout,我们的网络会出现严重的过拟合。dropout大约使收敛所需的迭代次数翻倍。

5.学习过程的细节


我们使用梯度下降训练我们的模型,128个样例块,增量0.9,全职衰退因子为0.0005。我们发现小的权重衰退对于模型的学习来说很重要。换句话说,这里的权重衰退不仅仅是正则化:它减少了模型的训练错误。权重w更新的规则是:

 

这里的i是迭代次数,v是增量,ε  是学习率,<  >里面的东西是在wi  上求偏导,评估对于第i批次Di   的平均值。

我们利用均值为0,标准差为0.01的高斯分布初始化每层的权重。我们用常数1初始化第二、四和最后一个卷积层以及全连接层隐层中的神经元偏差。这种初始化通过向ReLU提供正向输入来加速学习的早期阶段。我们用常数0初始化剩下的神经元偏差。

在所有的层我们使用相同的学习率,在整个训练过程中手动进行调整。我们遵循的启发式当验证错误率停止改进当前学习率时,将学习率除10.学习率初始化为0.01,在终止前减少三次。我们通过120万张图片的训练集对网络进行了大约90个周期的训练,其中,两个NVIDIA GTX 580 3GBGPU需要5到6天的时间。

6.实验结果

我们在ILSVRC-2010上的结果在表1进行了总结。我们的网络分别实现了top-1和top-5错误率测试集错误率。在ILSVRC-2010比赛期间取得的最佳成绩是47.1%和28.2%,使用的是对训练不同特征的六种稀疏编码模型产生的预测结果进行平均【2】,从那时起,最好的公布结果是45.7%和25.7%,这种方法平均了两个分类器的预测值,这两个分类器是根据从两类密集采样特征计算得到的Fisher矢量(FVs)进行训练的。

表1
ModelTop-1Top-5
Sparse coding [2]47.1%28.2%
SIFT+FVs [24]45.7%25.7%
CNN37.5%17.0%

我们也在ILSVRC-2012比赛中加入了我们的模型,在表2列出了我们的结果。由于ILSVRC-2012测试集没有公开,我们无法报告我们训练过所有模型的测试错误率。本段剩下部分,我们使用验证错误率和测试错误率互换,因为根据我们的经验,它们相差不超过0.1%(见表2)。本文所述的CNN Top-5错误率达到了18.2%。对五个相似的CNN预测平均得出错误率为16.4%。训练一个CNN,在最后一个池化层上增加一个额外的第六卷积层,对整个2011秋季发布的ImageNet进行分类(15M图片,22K类别),然后在ILSVRC-2012上对其进行微调得出错误率为16.6%。对整个2011年秋季版本预训练的两个CNN进行平均得出错误率为15.3%。获得比赛第二名的错误率为26.2%,对从不同类型的密集采样特征计算出的FV进行训练的几个分类器的预测进行平均[7]。

表2
ModelTop-1(val)Top-5(var)Top-5(test)
SIFT+FVs [7]————26.2%
1CNN40.7%18.2%——
5CNNs38.1%16.4%16.4%
1CNN*39.0%16.6%——
7CNNs*36.7%15.4%15.3%

最后,我们还在10184个类别和890万张图片的2009秋季版ImageNet上报告了错误率。在这个数据集中,我们遵循文献中的惯例,使用一般图片进行训练一半图片进行测试。由于没有设定测试集,我们使用的划分必然和先前作者使用的划分不同,但这并不会明显地影响结果。在这个数据集中,top-1和top-5错误率分别是67.4%和40.9%,由上述的网络获得,但在最后的池化层上有额外的卷积层。该数据集的最佳公布结果是78.1%和60.9%

6.1定量评估

图3显示了两个数据连接层学习的卷积核。此网络已经学习了各种“频率+方向选择”的内核,还有各种色块。注意由两个GPU所展示的专业化,这是3.5章节中描述的受限连接的结果。GPU1上的内核在很大程度上与颜色无关,而GPU2上的内核很大程度上是颜色明确的。这种专业化出现在每次运行期间,并且独立于任何特定的随机权重初始化(以GPU重新编号为模)。


在图4左侧的面板中,我们通过计算8张图片的top-5预测值来评估网络学到的内容。可看到,即使偏离中心的物体,如左上角的螨虫,仍可以被网络识别。大多数top-5标签似乎很合理。比如,只有其他类型的猫科动物才被判别似乎是豹的标签。在某些情况下(栅栏,樱桃),照片的预期焦点有歧义。

探测网络可视化知识的另一种方法是考虑由最后一个4096维隐藏层中的图像引发的特征激活。如果两张图片的向量的欧式距离很小,那么我们可以认为更高层次的神经网络认为它们是相似的。根据这个测量,图4显示5张测试集的图片与六张训练集的图片最相似。在像素层,检索到的训练图片通常不会与L2第一列的查询图片接近。例如,检索到的狗和大象摆出各种姿势。我们在补充材料中提供了更多测试图片的结果。

通过使用两个4096维实相量之间的欧式距离来计算相似性的效率并不高,但是通过训练自动编码将这些向量压缩为短二进制编码可以有效。与自动编码器用于原始像素相比,这应该产生更好的图像检索方法【14】,它不使用图像标签,因此倾向于检索具有相似边缘图案的图片,不管它们是否在语义上相似。

7.讨论

我们的研究结果表明,一个庞大的深层卷积神经网络能够在一个具有高挑战的数据集上使用纯监督学习破纪录。值得注意的是,如果删除单个卷积层我们的网络性能会下降。比如,删除中间任何一层会导致网络的top-1的性能损失约2%。所以,深度对于实现我们的结果真的很重要。

为了简化我们的实验,我们没有使用任何无监督的预训练,即使我们知道这会有所帮助,特别是我们获得足够的计算能力来显著增加网络的规模而不会相应增加标记数据的数量。至此,我们的结果通过增大网络规模,训练了更长时间而得到优化,但我们仍有很大的空间去优化网络像人类视觉系统的一样感知时序。最终,我们希望在视频序列上使用庞大的深层卷积神经网络,其中时间结构提供了非常有用的信息,这些信息在静态图像中缺失或远没那么明显。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值