经典论文解读|AlexNet经典论文解读


ImageNet Classification with Deep Convolutional Neural Networks

  • 论文链接:
    • Abstract
    • 1. Introduction
    • 2. The Dataset
    • 3. The Architecture
      • 3.1 ReLU Nonlinearity
      • 3.2 Training on Multiple GPUs
      • 3.3 Local Response Normalization
      • 3.4 Overlapping Pooling
      • 3.5 Overall Architecture
    • 4. Reducing Overfitting
      • 4.1 Data Augmentation
      • 4.2 Dropout
    • 5. Details of learning
    • 6. Results
      • 6.1 Qualitative Evaluations
    • 7. Discussion

论文链接: https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf
Abstract 我们训练了一个大型的深度卷积神经网络,将ImageNet LSVRC-2010竞赛中的120万幅高分辨率图像分类为1000个不同的类别。在测试数据上,我们获得了top-1和top-5的错误率分别为37.5%和17.0%,这比之前的技术水平有了很大的提高。该神经网络有6000万个参数和65万个神经元,由五个卷积层组成,其中一些层后面是max-pooling层,以及三个完全连接的层,最终有1000路softmax。为了使训练速度更快,我们使用了非饱和神经元和一个非常有效的GPU实现卷积运算。为了减少全连接层中的过拟合,我们采用了一种最近开发的名为“dropout”的正则化方法,该方法被证明是非常有效的。我们也在这个模型加入了变体在ILSVRC-2012竞赛中,以15.3%的测试错误率获胜,而排名第二的参赛作品错误率为26.2%
1. Introduction 目前的物体识别方法主要利用了机器学习方法。为了提高它们的性能,我们可以收集更大的数据集,学习更强大的模型,并使用赌注技术来防止过拟合。直到最近,标记图像的数据集还相对较小——在数万张图像的量级上。简单的识别任务可以用这种大小的数据集很好地解决,特别是如果它们用保留标签的转换来增强。例如,MNIST数字识别任务的当前最佳错误率(<0.3%)接近人类性能。但现实环境中的物体具有相当大的可变性,因此要学习识别它们,有必要使用更大的训练集。事实上,小图像数据集的缺点已经被广泛认识到(如[21]),但直到最近才有可能收集数百万张图像的标记数据集。新的更大的数据集包括LabelMe和ImageNet,前者包含数十万张完全分割的图像,后者包含超过1500万张标注了高分辨率的图像,涵盖超过22,000个类别。
为了从数百万张图像中了解数千个物体,我们需要一个具有巨大学习能力的模型。然而,物体识别任务的巨大复杂性意味着即使是像ImageNet这样大的数据集也无法确定这个问题,所以我们的模型也应该有大量的先验知识来补偿我们没有的所有数据。卷积神经网络(cnn)就是这样一类模型。它们的性能可以通过改变它们的深度和宽度来控制,而且它们还对图像的本质(即统计的平稳性和像素依赖性的局域性)做出强有力且大部分是正确的假设。因此,与具有相似层次的标准前馈神经网络相比,cnn拥有更少的连接和参数,因此更容易训练,而其理论上最好的性能可能只是稍微差一些。
尽管cnn具有吸引人的特性,尽管其本地架构相对高效,但要将其大规模应用于高分辨率图像,其成本仍高得令人望而却步。幸运的是,当前的GPU配上高度优化的2D卷积实现,已经足够强大来训练有趣的大型CNN,最近的数据集如ImageNet包含足够多的标记示例来训练这样的模型,而不需要严重的过拟合。
本文的具体贡献如下:我们在ILSVRC-2010和ILSVRC-2012比赛中使用的ImageNet子集上训练了迄今为止最大的卷积神经网络之一,并在这些数据集上获得了迄今为止报道的最佳结果。我们编写了一个高度优化的2D卷积的GPU实现,以及训练卷积神经网络的所有其他固有操作,我们将会将其公布。我们的网络包含了许多新的和不寻常的特性,这些特性提高了它的性能并减少了它的训练时间,详细信息将在第3节中介绍。我们的网络的规模使得过度拟合成为一个重要的问题,即使有120万个标记的训练示例,因此我们使用了一些有效的技术来防止过度拟合,这些技术将在第4节中描述。我们最终的网络包含5个卷积层和3个完全连接的层,这个深度似乎很重要:我们发现删除任何卷积层(每个层包含不超过模型参数的1%)都会导致性能较差。
最后,网络的大小主要受到当前GPU上可用内存的数量和训练时间的限制。我们的网络在两个GTX 580 3GB GPU上需要5到6天的培训时间。我们所有的实验都表明,只要等待更快的GPU和更大的数据集可用,我们的结果就可以得到改善。
2. The Dataset ImageNet是一个超过1500万张标签高分辨率图像的数据集,属于大约22000个类别。这些图片是从网上收集的,并由人类标签人员使用Ama- zon的外包工具进行标记。从2010年开始,作为Pascal视觉对象的一部分,ImageNet大型视觉识别挑战赛是一项年度竞赛(ILSVRC)举行。ILSVRC使用ImageNet的一个子集,在1000个图像中有1000类别。总共大约有120万张训练图像,5万张验证图像,还有15万测试图像。
ILSVRC-2010是ILSVRC中测试集标签可用的唯一版本,因此我们在这个版本上执行了大部分的实验。由于我们也在ILSVRC-2012竞赛中加入了我们的模型,在第6节中,我们也报告了这个版本数据集的结果,测试集标签是不可用的。在ImageNet上,通常报告两种错误率:top-1和top-5,其中top-5错误率是正确标签不在模型认为最可能的五个标签中的测试图像的比例。
ImageNet由可变分辨率的图像组成,而我们的系统要求恒定的输入维度。因此,我们将图像向下采样到256 × 256的固定分辨率。给定一个矩形图像,我们首先重新调整图像,使较短的边长度为256,然后从生成的图像中裁剪出中心的256×256补丁。我们没有以任何其他方式预处理图像,除了从每个像素减去训练集上的平均活动。所以我们根据像素的原始RGB值(居中)训练我们的网络。
3. The Architecture 3.1 ReLU Nonlinearity
将神经元的输出f模型化为其输入x的函数的标准方法是f(x) = tanh(x)或 f ( x ) = ( 1 + e ? x ) ? 1 f(x) = (1 + e^{-x})^{-1} f(x)=(1+e?x)?1。在梯度下降训练时间方面,这些饱和非线性比非饱和非线性f(x) = max(0,x)慢得多。之后,我们将具有这种非线性的神经元称为矫正神经元线性单元(ReLUs)。深度卷积神经网络-用ReLUs训练比用tanh单位训练快好几倍。这在图1显示了对于特定的四层卷积网络,CIFAR-10数据集达到25%训练误差所需的迭代次数。这张图表明,如果我们使用传统的饱和神经元模型,我们将无法在如此大的神经网络上进行实验。
经典论文解读|AlexNet经典论文解读
文章图片

我们并不是第一个考虑CNN中传统神经元模型的替代品的人。例如,非线性f(x) = |tanh(x)|特别适合于他们类型的对比或化,然后是局部平均池化Caltech-101数据集。然而,在这个数据集上,主要关注的是防止过拟合,所以他们观察到的效果与我们在重新测试时报告的拟合训练集的加速能力不同。快速的学习对在大数据上训练的大模型的性能有很大的影响。
3.2 Training on Multiple GPUs
单个GTX 580 GPU只有3GB内存,这限制了可以在其上训练的最大网络大小。120万个训练示例足够训练一个GPU无法容纳的网络。因此,我们将网络分散到两个GPU上。当前的GPU特别适合于跨GPU并行化,因为它们能够直接读写彼此的内存,而不需要通过主机内存。我们采用的并行方案基本上是将一半的内核(或神经元)放在每个GPU上,还有一个额外的技巧:GPU只在特定的层进行通信。这意味着,例如,第3层的内核从第2层的所有内核映射中获取输入。然而,第4层的内核只从位于同一GPU的第3层的内核映射中获取输入。选择连接模式是交叉验证的一个问题,但这允许我们精确地调优通信量,直到它是计算量的一个可接受的部分。
合成体系结构有点类似的“柱状”CNN采用的是参看文献5,除了我们的列不独立(参见图2)。该方案减少了top-1 和top-2错误率1.7%和1.2%,分别比净一半的内核在每个卷积层对准一个GPU。双GPU的网络训练时间比单GPU的NET略短。
3.3 Local Response Normalization
ReLUs有一个理想的特性,即它们不需要输入归一化来防止饱和。如果至少有一些训练例子对一个ReLU产生了积极的输入,学习就会在那个神经元中发生。然而,我们仍然发现下面的局部归一化方案有助于泛化。设a x , y i a^i_{x,y} ax,yi?表示第 i 个内核计算 ( x , y ) (x,y) (x,y)位置的ReLU非线性单元的输出,而响应归一化(Local Response Normalization)的输出值定义为 b x , y i b^i_{x,y} bx,yi?:
b x , y i = a x , y i / ( k + α ? ∑ j = m a x ( 0 , i ? n / 2 ) m i n ( N ? 1 , i + n / 2 ) ( a x , y i ) 2 ) β b^i_{x,y}= a^i_{x,y}/( k+\alpha\cdot\sum^{min(N-1,i+n/2)}_{j=max(0,i-n/2)}(a^i_{x,y})^2 )^\beta bx,yi?=ax,yi?/(k+α?j=max(0,i?n/2)∑min(N?1,i+n/2)?(ax,yi?)2)β
其中,求和部分公式中的 n表示同一个位置下与该位置相邻的内核映射的数量,而N表示这一层所有的内核数(即通道数)。内核映射的顺序当然是任意的,并且在训练之前就已经定好了。这种响应归一化实现了一种模仿真实神经元的横向抑制,从而在使用不同内核计算的神经元输出之间产生较大的竞争。常数k 、 n 、 α 和 β k、n、α和β k、n、α和β 是超参数,其值由验证集确定; 我们使用k = 2 , n = 5 , α = 1 0 ? 4 , 和 β = 0.75 k = 2, n = 5, α = 10^{-4},和β = 0.75 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%,归一化的CNN测试错误率为11%
3.4 Overlapping Pooling
在CNNs中汇集层汇总了同一核映射中相邻神经元组的输出。传统上,由相邻的共用单元所总结的社区不会重叠。更精确地说,池化层可以被认为是由池化单元组成的网格,每个池化单元以s个像素为间隔,每个池化单元在池化单元的中心位置汇总大小为z × z的相邻。如果我们设s = z,我们得到传统的局部池,这是CNN中常用的。如果我们设置s < z,我们得到重叠池化。这是我们在整个网络中使用的,s = 2, z = 3。该方案将top-1和top-5错误率降低0.4%和0.3%,与非重叠方案s = 2,z = 2相比,产生等价维数的输出。在训练过程中,我们通常会发现重叠池模型的过拟合稍微困难一些。
3.5 Overall Architecture
现在我们准备描述我们CNN的总体架构。如图2所示,网络包含8层权重; 前五个是卷积的,其余三个是完全连接的。最后一个完全连接的层的输出被馈送到1000路softmax,它产生超过1000个类标签的分布。我们的网络最大化了多项逻辑回归目标,这相当于最大化了在预测分布下正确标签的对数概率在训练案例中的平均值。
第二层、第四层和第五层的内核只与位于同一GPU上的前一层内核映射相连(见图2)。第三层的内核与第二层的所有内核映射相连。在完全连接的层中的神经元与前一层的所有神经元相连。响应归一化层紧接着第一个和第二个卷积层。 在3.4节中介绍的最大池化层,后面连接响应归一化层以及第五个卷积层。将ReLU应用于每个卷积层和全连接层的输出。
经典论文解读|AlexNet经典论文解读
文章图片

第一个卷积层的输入为224×224×3的图像,对其使用96个大小为11×11×3、步长为4(步长表示内核映射中相邻神经元感受野中心之间的距离)的内核来处理输入图像。第二个卷积层将第一个卷积层的输出(响应归一化以及池化)作为输入,并使用256个内核处理图像,每个内核大小为5×5×48。第三个、第四个和第五个卷积层彼此连接而中间没有任何池化或归一化层。第三个卷积层有384个内核,每个的大小为3×3×256,其输入为第二个卷积层的输出。第四个卷积层有384个内核,每个内核大小为3×3×192。第五个卷积层有256个内核,每个内核大小为3×3×192。全连接层各有4096个神经元。
4. Reducing Overfitting 我们的神经网络结构有6000万个参数。尽管ILSVRC的1000个类使得每个训练示例对从图像到标签的映射施加了10位的约束,但这对于学习这么多参数而不进行大量的过拟合是不够的。下面,我们将描述对抗过拟合的两种主要方法。
4.1 Data Augmentation
减少图像数据过拟合的最简单和最常见的方法是使用保留标签的变换人工扩大数据集。我们采用了两种不同的数据增强形式,这两种形式都允许用很少的计算从原始图像生成转换后的图像,因此转换后的图像不需要存储在磁盘上。在我们的实现中,转换后的图像是在CPU上用Python代码生成的GPU正在对前一批图像进行训练。所以这些数据增强方案实际上是不需要计算的。
第一种形式的数据增强包括生成图像转换和水平映射。我们通过提取随机224×224图像块(和它们的水平反射)从256×256图像和训练我们的网络在这些提取的图像块。这使我们的训练集的大小增加了2048倍,当然,得到的训练示例是高度相互依赖的。如果没有这个方案,我们的网络会遭受大量的过度拟合,这将迫使我们使用更小的网络。测试时,网络通过提取5个224 × 224的patch(4个角点和中心点)及其水平反射(共10个patch)进行预测,并将网络的softmax层对这10个patch的预测结果平均。
第二种形式的数据增强包括改变训练图像中RGB通道的灰度。具体而言,我们在整个ImageNet训练集的图像的RGB像素值上使用PCA。对于每个训练图像,我们添加多个通过PCA找到的主成分,大小与相应的特征值成比例,乘以一个随机值,该随机值属于均值为0、标准差为0.1的高斯分布。因此,对于每个图像的RGB像素有: I x y = [ I x y R , I x y G , I x y B ] I_{xy}=[I^R_{xy},I^G_{xy},I^B_{xy}] Ixy?=[IxyR?,IxyG?,IxyB?],加入如下值以后:
[ P 1 , P 2 , P 3 ] [ I x y R , I x y G , I x y B ] T [P_1,P_2,P_3][I^R_{xy},I^G_{xy},I^B_{xy}]^T [P1?,P2?,P3?][IxyR?,IxyG?,IxyB?]T
其中,p i 和 λ i p_i和\lambda_i pi?和λi?分别是3x3的RGB协方差矩阵的第i i i个特征向量和第 i i i个的特征值,而α i \alpha_i αi?是前面所说的随机值。对于一张特定图像中的所有像素,每个α i \alpha_i αi?只会被抽取一次,知道这张图片再次用于训练时,才会重新提取随机变量。这个方案近似地捕捉原始图像的一些重要属性,对象的身份不受光照的强度和颜色变化影响。这个方案将top-1错误率降低了1%以上。
4.2 Dropout
结合许多不同模型的预测结果是减少测试错误率的一种非常成功的方法,但对于已经花费数天时间训练的大型神经网络来说,它似乎成本太高了。然而,有一种非常有效的模型组合方法,在训练期间,只需要消耗1/2的参数。这个新发现的技术叫做“Dropout”,它会以50%的概率将隐含层的神经元输出置为0。以这种方法被置0的神经元不参与网络的前馈和反向传播。因此,每次给网络提供了输入后,神经网络都会采用一个不同的结构,但是这些结构都共享权重。这种技术减少了神经元的复杂适应性,因为神经元无法依赖于其他特定的神经元而存在。因此,它被迫学习更强大更鲁棒的功能,使得这些神经元可以与其他神经元的许多不同的随机子集结合使用。在测试时,我们试着使用了所有的神经元,并将它们的输出乘以0.5。这与采用大量dropout的网络产生的预测结果分布的几何均值近似。
我们在图2中的前两个全连接层上使用了dropout。没有dropout,我们的网络会出现严重的过拟合。Dropout大概会使达到收敛的迭代次数翻倍。
5. Details of learning 我们使用随机梯度下降训练我们的模型,batch size为128个例子,动量(momentum)为0.9,重量衰减(weight decay)为0.0005。我们发现这一小部分的重量衰减对于模型的学习是很重要的。换句话说,重量衰减在这里不仅仅是一个正规化:减少了模型的训练误差。权重w的更新规则为:
v i + 1 : = 0.9 ? v i ? 0.005 ? ? ? w i ? ? < ? L ? w ∣ w i > ? D i v_{i+1}:= 0.9\cdot v_i - 0.005\cdot\epsilon\cdot w_i -\epsilon<\left.\frac{\partial L}{\partial w}\right|_{w_i}>\cdot D_i vi+1?:=0.9?vi??0.005???wi????Di?
w i + 1 : = w i + v i + 1 w_{i+1}:= w_i + v_{i+1} wi+1?:=wi?+vi+1?
其中,i i i表示当前的迭代次数, v v v表示动量(momentum), ε表示学习率, ? L ? w ∣ w i \left.\frac{\partial L}{\partial w}\right|_{w_i} ?w?L?∣∣?wi??是第i i i批次的目标函数关于 w w w的导数(w i w_i wi?的偏导数)D i D_i Di?的平均值。
我们从标准偏差为0.01、均值为0的高斯分布初始化每一层的权值。我们用常数1初始化第2、4、5个卷积层以及完全连接的隐藏层中的神经元偏差。这个初始化通过向ReLUs提供积极的输入来加速学习的早期阶段。我们用常数0初始化其余层的神经元偏差。
我们对所有层次都使用相同的学习率,并在整个培训过程中手动调整。我们遵循的启发式方法是,当验证错误率停止随着当前学习率的提高而提高时,将学习率除以10。我们的学习率初始时设为0.01,并且在终止前减少3次。我们使用120万张图像的训练集对网络进行了大约90次迭代的训练,这在两块NVIDIA GTX 580 3GB GPU上花费了大约5到6天的时间。
6. Results 【经典论文解读|AlexNet经典论文解读】我们对ILSVRC-2010的研究结果总结在表1中。我们的网络达到top-1和top-5测试集错误率分别为37.5%和17.0% 。在ILSVRC-期间取得的最佳性能是47.1%和28.2%,其方法是对六种不同的稀疏编码模型所产生的预测结果求平均。此后公布的最佳结果为45.7%、25.7%,其方法是对两种经过密集采样的特征计算出来的Fisher向量(FV)训练的两个分类器取平均值。
经典论文解读|AlexNet经典论文解读
文章图片

我们的网络实现了37.5%和17.0%的前1和前5个测试集错误率5。在ILSVRC-2010比赛期间取得的最佳成绩是47.1%和28.2%,其中一种方法是对六种针对不同特征进行训练的稀疏编码模型所产生的预测进行平均,此后最佳公布结果为45.7%, 25.7%,其中一种方法是:对两个在不同取样密度的Fisher向量上训练的分类器取平均。我们的网络实现了37.5%和17.0%的前1和前5个测试集错误率5。在ILSVRC-2010比赛期间取得的最佳成绩是47.1%和28.2%,其中一种方法是对六种针对不同特征进行训练的稀疏编码模型所产生的预测进行平均[2],此后最佳公布结果为45.7%,25.7%,其中一种方法是:对两个在不同取样密度的Fisher向量上训练的分类器取平均。
经典论文解读|AlexNet经典论文解读
文章图片

最后,我们还在ImageNet Fall 2009版本的数据集上提交了错误率,总共有10,184个类别和890万张图像。在这个数据集中,我们遵循文献中的使用一半图像用于训练,一半图像用于测试的惯例。由于没有建立测试集,所以我们的拆分方法有必要与先前作者使用的拆分方法不同,但这并不会对结果产生显著的影响。我们在这个数据集上的top-1和top-5错误率分别是67.4%和40.9%,是通过前面描述的网络获得的,但是在最后的池化层上还有额外的第6个卷积层。该数据集此前公布的最佳结果是78.1%和60.9%。
6.1 Qualitative Evaluations
图3显示了网络的两个数据连接层学习到的卷积内核。这个网络已经学会了多种频率和方向选择的核,以及各种颜色的斑点。请注意这两个GPU所表现出的专一化,这是在3.5节中描述的限制连接的结果。GPU 1上的内核很大程度上是与颜色无关的,而GPU 2上的内核很大程度上是与颜色相关的。这种专门化发生在每次运行期间,并且独立于任何特定的随机权值初始化(取GPU重编号的模)。
经典论文解读|AlexNet经典论文解读
文章图片

在图4的左边,我们通过计算8张测试图像的top-5预测来定性评估网络的训练结果。请注意,即使是偏离中心的物体,如左上角的螨虫,也可以被网络识别出来。大多数top-5的标签都显得比较合理。例如,只有其他类型的猫才被认为是豹子的可能标签。在某些情况下(栅栏、樱桃),照片的关注点存在模糊性,不知道到底该关注哪个。
另一种探测网络视觉知识的方法是考虑最后一个4096维隐含层的图像所引起的特征激活。如果两幅图像以较小的欧几里得分离产生特征激活向量,我们可以说较高层次的神经网络认为它们是相似的。图4显示了来自测试集的5幅图像和来自训练集的6幅图像,根据该度量,它们与每幅图像都最相似。要注意的是,在像素级别,检索到的训练图像在L2上通常不接近第一列中的查询图像。例如,被回收的狗和大象会摆出各种各样的姿势。我们给出了在补充材料中更多测试图像的结果。
利用两个4096维实数矢量之间的欧氏距离来计算相似度效率不高,但可以通过训练自动编码器将矢量压缩为短二进制码来提高效率。这应该会产生一种比对原始像素应用自动编码器更好的图像检索方法,后者不使用图像标签,因此倾向于检索具有相似边缘模式的图像,无论它们是否语义相似。
7. Discussion 我们的结果表明,使用纯粹的监督学习,一个大型的深度卷积神经网络能够在一个具有高度挑战性的数据集上获得破纪录的结果。值得注意的是,如果去掉一个卷积层,我们的网络的性能就会下降。例如,删除任何中间层都会导致网络性能第一的损失约2%。因此,深度对于我们的成果是非常重要的。
为了简化我们的实验,我们没有使用任何无监督的预训练,尽管我们期望它会有帮助,特别是当我们获得足够的计算能力来显著增加网络的大小,而没有获得相应的标签数据量的增加。到目前为止,随着我们把我们的网络做得更大,训练的时间更长,我们的结果有所改善,但我们仍然有许多数量级的工作要做,以匹配人类视觉系统的下时间通路。最终,我们希望在视频序列上使用非常大的深度卷积网络,其中时间结构提供了非常有用的信息,而这些信息在静态图像中是缺失的或不那么明显的。

    推荐阅读