经典分类模型(一):Alexnet(2012)

ImageNet Classification with Deep Convolutional Neural Networks-----AlexNet_2012

深度卷积神经网络的ImageNet分类

Abstract

我们训练了一个大型深度卷积神经网络,将ImageNet LSVRC-2010比赛中的120万个高分辨率图像分类为1000个不同的类别。在测试数据上,我们实现了前三和前五的错误率分别为37.5%和17.0%,这比之前的最新技术水平要好得多。具有6000万个参数和650,000个神经元的神经网络由五个卷积层组成,其中一些随后是最大池层,三个完全连接的层具有最终的1000路softmax。为了使训练更快,我们使用了非饱和神经元和卷积运算的非常有效的GPU实现。为了减少全连接层中的过度拟合,我们采用了最近开发的称为“压差”的正则化方法,该方法被证明是非常有效的。我们还在ILSVRC-2012竞赛中输入了该模型的变体,并获得了15.3%的前5个测试错误率,而第二好的参赛者则达到了26.2%。

1 Introduction

目前的对象识别方法是机器学习方法的必要用途。**为了提高性能,我们可以收集更大的数据集,学习更强大的模型,并使用更好的技术来防止过度拟合。**直到最近,标记图像的数据集相对较小 - 大约数万个图像(例如,NORB [16],Caltech-101/256 [8,9]和CIFAR-10/100 [12])。使用此大小的数据集可以很好地解决简单的识别任务,特别是如果它们使用标签保留变换进行扩充。例如,MNIST数字识别任务中的当前错误率(<0.3%)接近人类表现[4]。但是在实际设置中的对象表现出相当大的可变性,因此为了学会识别它们,有必要使用更大的训练集 。事实上,小图像数据集的缺点已被广泛认可(例如,Pinto等人[21]),但最近才有可能收集具有数百万图像的标记数据集。新的更大的数据集包括LabelMe [23]和ImageNet [6],后者由数十万个完全分割的图像组成,ImageNet [6]包含超过22,000个标记的高分辨率图像,超过22,000个类别。

要了解数百万图像中的数千个对象,我们需要一个具有大量学习能力的模型。 然而,对象识别任务的巨大复杂性意味着即使是像ImageNet这样大的数据集也无法指定这个问题,因此我们的模型也应该有许多先验知识来补偿我们没有的所有数据。 卷积神经网络(CNN)构成了一类这样的模型[16,11,13,18,15,22,26]。 它们的容量可以通过改变它们的深度和宽度来控制,并且它们也对图像的性质(即统计的平稳性和像素依赖性的位置)做出强有力且大多数正确的假设。因此,与具有类似性的标准前馈神经网络相比, CNN具有更少的连接和参数,因此它们更容易训练,而它们的理论上最佳性能可能仅稍微差一些。

尽管CNN具有吸引人的特性,并且尽管它们的本地架构相对有效,但是它们在大规模应用于高分辨率图像方面仍然过于昂贵。 幸运的是,当前的GPU与高度优化的2D卷积实现相结合,足以促进有趣的大型CNN的训练,而最新的数据集如ImageNet包含足够的标记示例来训练此类模型而不会出现严重的过度拟合。

本文的具体贡献如下:我们迄今为止在ILSVRC-2010和ILSVRC-2012竞赛中使用的ImageNet子集中训练了最大的卷积神经网络之一[2]并取得了迄今为止报道的最佳结果。我们编写了一个高度优化的2D卷积GPU实现和训练卷积神经网络中固有的所有其他操作,我们公开提供1。我们的网络包含许多新的和不寻常的功能,可以改善其性能并减少其培训时间,详见第3节。**我们的网络规模过大,即使有120万个标记的培训示例,我们也使用了几个第4节中描述了防止过度拟合的有效技术。**我们的最终网络包含五个卷积层和三个完全连接层,这个深度似乎很重要:我们发现去除任何卷积层(每个卷层不超过1个)模型参数的百分比)导致性能较差。

最后,网络的大小主要受当前GPU可用内存量以及我们愿意容忍的培训时间限制。 我们的网络需要五到六天才能在两台GTX 580 3GB GPU上进行训练。 我们所有的实验都表明,只需等待更快的GPU和更大的数据集可用,我们的结果就可以得到改善。

2 The Dataset

ImageNet是超过1500万个标记的高分辨率图像的数据集,属于大约22,000个类别。 这些图像是从网上收集的,并由人类贴标机使用亚马逊的Mechanical Turk众包工具进行标记。 从2010年开始,作为Pascal视觉对象挑战赛的一部分,举办了名为ImageNet大规模视觉识别挑战赛(ILSVRC)的年度比赛。 ILSVRC使用ImageNet的一个子集,在1000个类别中分别拥有大约1000个图像。 总之,大约有120万个训练图像,50,000个验证图像和150,000个测试图像。

ILSVRC-2010是唯一可以获得测试集标签的ILSVRC版本,因此这是我们执行大部分实验的版本。 由于我们也在ILSVRC-2012竞赛中输入了我们的模型,因此我们在第6节中报告了此版本数据集的结果,其中测试集标签不可用。 在ImageNet上,习惯上报告两个错误率:top-1和top-5,其中前5个错误率是测试图像的分数,正确的标签不属于模型认为最可能的五个标签之中。

ImageNet由可变分辨率图像组成,而我们的系统需要恒定的输入维度。 因此,我们将图像下采样到256×256的固定分辨率。给定矩形图像,我们首先重新缩放图像,使得较短边长度为256,然后从结果图像中裁剪出中256×256图片。 我们没有以任何其他方式预处理图像,除了从每个像素减去训练集上的平均活动。 因此,我们在像素的(居中)原始RGB值上训练我们的网络。

3 The Architecture

我们网络的体系结构如图2所示。它包含8个学习层 - 五个卷积和三个完全连接。 下面,我们将介绍我们网络架构的一些新颖或不寻常的功能。 第3.1-3.4节根据我们对其重要性的估计进行排序,其中最重要的是第一部分。

3.1 ReLU Nonlinearity

将神经元输出f建模为输入x的函数的标准方式是用f(x) = tanh(x)或f(x) = (1 + e^−x)−1。考虑到梯度下降的训练时间,这些饱和的非线性比非饱和非线性f(x) = max(0,x)更慢。根据Nair和Hinton[20]的说法,我们将这种非线性神经元称为修正线性单元(ReLU)。采用ReLU的深度卷积神经网络训练时间比等价的tanh单元要快几倍。在图1中,对于一个特定的四层卷积网络,在CIFAR-10数据集上达到25%的训练误差所需要的迭代次数可以证实这一点。这幅图表明,如果我们采用传统的饱和神经元模型,我们将不能在如此大的神经网络上实验该工作。
在这里插入图片描述
图1 使用ReLUs(实线)的四层卷积神经网络在CIFAR-10数据集上达到25%训练错误率比同等条件下使用tanh神经元(虚线)快6倍。为了尽可能使得训练速度快,每一个网络的学习速率都是独立选择的。任何一种都没有经过正则化。这里展示的效果的量级随着网络的结构而变化,但是利用ReLUs的网络始终比同等情况下使用饱和神经元的学习速度快很多倍

我们并不是最早考虑替换传统CNN神经元模型的人。比如,J【11】等人宣称利用f (x) = |tanh(x)|非线性在Caltech-101数据集上做对比度归一化(Contrast Normalization,CN)和局部平均值池化表现得很好。然而,关于这个数据集的主要问题是要防止过拟合,所以他们观察到的效果,与我们报告的使用ReLUs时对训练集的适应(fit)累积能力不同。更快的学习对于在大型数据集上训练大型模型的表现有重大影响。

3.2 Training on Multiple GPUs

单个GTX 580 GPU只有3GB内存,这限制了可以在其上训练的网络的最大尺寸。事实证明,120万个训练样例足以训练太大而无法放在一个GPU上的网络。因此,我们将网络分布在两个GPU上。**当前的GPU特别适合跨GPU并行化,因为它们能够直接读取和写入彼此的内存,而无需通过主机内存。**我们采用的并行化方案基本上将一半内核(或神经元)放在每个GPU上,还有一个额外的技巧:GPU仅在某些层中进行通信。这意味着,例如,第3层的内核从第2层中的所有内核映射获取输入。但是,第4层中的内核仅从位于同一GPU上的第3层中的那些内核映射获取输入。选择连通模式是交叉验证的一个问题,但这使我们能够精确调整通信量,直到它是计算量的可接受部分。

由此产生的结构有点类似于Cire¸san等人使用的“柱状”CNN [5],除了我们的列不是独立的(见图2)。 这种方案分别将我们的前1和前5错误率分别降低了1.7%和1.2%,因为在一个GPU上训练的每个卷积层中,内核数量减少一半。 与双GPU网络相比,双GPU网络训练时间略短。

3.3 Local Response Normalization局部反应归一化

ReLU具有理想的属性,即它们不需要输入规范化即可防止饱和。 如果至少一些训练示例对ReLU产生了积极的投入,那么该神经元就会进行学习。 但是,我们仍然发现以下局部归一化方案有助于泛化。 用在这里插入图片描述表示通过在位置(x,y)处应用核i然后再应用ReLU非线性计算的神经元活动,响应标准化的活动在这里插入图片描述由以下表达式给出
在这里插入图片描述
其中,求和部分公式中的n表示同一个位置下与该位置相邻的内核映射的数量,而N表示这一层所有的内核数(即通道数)。内核映射的顺序当然是任意的,并且在训练之前就已经定好了。这种响应归一化实现了一种模仿真实神经元的横向抑制,从而在使用不同内核计算的神经元输出之间产生较大的竞争。常数kk、nn、αα和ββ都是超参数(hyper-parameters),它们的值都由验证集决定。我们取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 Overlapping Pooling重叠池化

在CNN中汇集层总结了相同内核映射中相邻神经元组的输出。 传统上,由相邻汇集单元汇总的邻域不重叠(例如,[17,11,4])。 更确切地说,池化层可以被认为是由间隔s个像素的合并单元的网格组成,每个合并单元总结了以合并单元的位置为中心的大小为z×z的邻域。 如果我们设置s = z,我们获得CNN中常用的传统本地池。 如果我们设置s <z,我们获得重叠池。 这是我们在整个网络中使用的,s = 2和z = 3.与非重叠方案s =相比,该方案将top-1和top-5错误率分别降低了0.4%和0.3% ,产生等效尺寸的输出。 我们通常在训练期间观察到具有重叠池的模型发现过度拟合稍微困难一些。

3.5 Overall Architecture整体结构

现在,我们准备描述CNN的整体架构。 如图2所示,该网络包含8个带权重的层。 前五个是卷积的,其余三个是完全连接的。 最后一个完全连接层的输出被馈送到1000-way 的softmax,后者在1000类标签上产生分布。 我们的网络将多项式逻辑回归目标最大化,这等效于在预测分布下最大化正确标签的对数概率训练案例的平均值。

第二,第四和第五卷积层的内核仅连接到位于同一GPU上的上一层中的那些内核映射(请参见图2)。 第三卷积层的内核连接到第二层中的所有内核映射。 完全连接层中的神经元连接到上一层中的所有神经元。 响应归一化层跟随第一和第二卷积层。 在第3.4节中描述的最大池化层位于响应归一化层以及第五个卷积层之后。 ReLU非线性应用于每个卷积和全连接层的输出。

第一卷积层用4个像素的步幅(这是内核映射中相邻神经元的感受野中心之间的距离)过滤具有96个11×11×3大小的内核的224×224×3输入图像。 第二个卷积层将第一个卷积层的(响应归一化和池化)输出作为输入,并使用256个大小为5×5×48的内核对其进行过滤。第三,第四和第五个卷积层相互连接而没有任何连接 介入池或规范化层。 第三卷积层具有384个大小为3×3×256的内核,它们与第二卷积层的(规范化,合并)输出连接。 第四卷积层具有384个大小为3×3×192的内核,第五卷积层具有256个大小为3×3×192的内核。完全连接的层各具有4096个神经元。
在这里插入图片描述
图2:我们的CNN架构的图示,明确显示了两个GPU之间的职责划分。 一个GPU在图的顶部运行图层部分,而另一个GPU在图的底部运行图层部分。 GPU仅在某些层进行通信。 网络的输入为150,528维,网络其余层的神经元数量为253,440–186,624–64,896–64,896–43,264–4096–4096-1000。

4 Reducing Overfitting减少过拟合

​ 我们的神经网络架构有6000万个参数。 尽管ILSVRC的1000个类别使得每个训练示例对从图像到标签的映射施加了10位约束,但是这证明不足以学习如此多的参数而没有相当大的过度拟合。 下面,我们描述了我们对抗过度拟合的两种主要方式。

4.1 Data Augmentation数据增强

减少图像数据过度拟合的最简单和最常用的方法是使用标签保留变换人工增强数据集(例如,[25,4,5])。 我们采用了两种不同形式的数据增强,这两种形式都允许使用非常少的计算从原始图像中生成转换后的图像,因此转换后的图像不需要存储在磁盘上。在我们的实现中,转换后的图像是在 GPU上的Python代码,而GPU正在训练上一批图像。 因此,这些数据增强方案实际上在计算上是免费的。

第一种数据增强方式包括产生图像变换和水平翻转。我们从256×256图像上通过随机提取224 × 224的图像块实现了这种方式,然后在这些提取的图像块上进行训练。这通过一个2048因子增大了我们的训练集,尽管最终的训练样本是高度相关的。没有这个方案,我们的网络会有大量的过拟合,这会迫使我们使用更小的网络。在测试时,网络会提取5个224 × 224的图像块(四个角上的图像块和中心的图像块)和它们的水平翻转(因此总共10个图像块)进行预测,然后对网络在10个图像块上的softmax层进行平均。

数据增强的第二种形式包括更改训练图像中RGB通道的强度。 具体来说,我们在整个ImageNet训练集中对RGB像素值集执行PCA。 对于每个训练图像,我们添加找到的主成分的倍数,其大小与相应的特征值乘以从均值为零且标准偏差为0.1的高斯得出的随机变量成比例。 因此,我们为每个RGB图像像素Ixy=在这里插入图片描述添加以下数量:
在这里插入图片描述
其中pi和λi分别是RGB像素值的3×3协方差矩阵的第i个特征向量和特征值,而αi是上述随机变量。 对于特定训练图像的所有像素,每个αi仅绘制一次,直到再次使用该图像进行训练为止,此时将其重新绘制。 该方案近似地捕获了自然图像的重要性质,即,对象身份对于照明强度和颜色的变化是不变的。 此方案将top-1错误率降低了1%以上。

4.2 Dropout

结合许多不同模型的预测是减少测试错误的非常成功的方法[1,3],但是对于已经花了几天时间进行训练的大型神经网络来说,这似乎太昂贵了。但是,有一个非常有效的模型组合版本,在训练过程中仅花费大约两倍的费用。最近引入的技术称为“Dropout” [10],包括将每个隐藏神经元的输出以0.5的概率设置为零。以这种方式“退出”的神经元不会对正向做出贡献,也不会参与向后传播。因此,每次出现输入时,神经网络都会对不同的体系结构进行采样,但是所有这些体系结构都会共享权重。由于神经元不能依赖特定其他神经元的存在,因此该技术减少了神经元的复杂共适应。因此,被迫学习更健壮的功能,这些功能可与其他神经元的许多不同随机子集结合使用。在测试时,我们使用所有神经元,但将它们的输出乘以0.5,这可以合理地近似于采用指数级下降的网络所产生的预测分布的几何平均值。

我们在图2的前两个完全连接的层中使用了dropout。如果没有dropout,我们的网络将表现出过大的过拟合。 dropout大约会使收敛所需的迭代次数加倍。
在这里插入图片描述
图3:由224×224×3输入图像上的第一卷积层学习的96个11×11×3大小的卷积核。 前48个内核是在GPU 1上学习的,而后48个内核是在GPU 2上学习的。有关详细信息,请参见6.1节。

5 Details of learning

我们使用随机梯度下降训练了模型,批次大小为128个示例,动量为0.9,重量衰减为0.0005。 我们发现,少量的重量衰减对于模型的学习很重要。 换句话说,这里的权重衰减不仅仅是一个正则化器:它可以减少模型的训练误差。 权重w的更新规则为
在这里插入图片描述
其中,i表示当前的迭代次数,v表示动量(momentum),ε表示学习率, ⟨∂L/∂ω|ωi⟩Di是第i批次的目标函数关于w的导数(wi的偏导数)Di的平均值。

**我们使用标准差为0.01、均值为0的高斯分布来初始化各层的权重。**我们使用常数1来初始化了网络中的第二个、第四个和第五个卷积层以及全连接层中的隐含层中的所有偏置参数。这种初始化权重的方法通过向ReLU提供了正的输入,来加速前期的训练。我们使用常数0来初始化剩余层中的偏置参数。

我们对所有层都使用相同的学习率,在训练过程中又手动进行了调整。我们遵循的启发式方法是:**以当前的学习速率训练,验证集上的错误率停止降低时,将学习速率除以10.学习率初始时设为0.01,并且在终止前减少3次。**我们使用120万张图像的训练集对网络进行了大约90次迭代的训练,这在两块NVIDIA GTX 580 3GB GPU上花费了大约5到6天的时间。

6 Results

我们在ILSVRC-2010上取得的结果如表1所示。我们的网络的top-1和top-5测试集错误率分别为37.5%和17.0%。在ILSVRC-2010比赛期间取得的最佳成绩是47.1%和28.2%,其方法是对六种不同的稀疏编码模型所产生的预测结果求平均[2]。此后公布的最佳结果为45.7%、25.7%,其方法是对两种经过密集采样的特征[24]计算出来的Fisher向量(FV)训练的两个分类器取平均值。

我们的网络实现了37.5%和17.0%的前1和前5个测试集错误率5。在ILSVRC-2010比赛期间取得的最佳成绩是47.1%和28.2%,其中一种方法是对六种针对不同特征进行训练的稀疏编码模型所产生的预测进行平均[2],此后最佳公布结果为45.7%, 25.7%,其中一种方法是:对两个在不同取样密度的Fisher向量上训练的分类器取平均。
在这里插入图片描述
我们还在ILSVRC-2012竞赛中使用了我们的模型,并在表2中给出了我们的结果。由于ILSVRC-2012测试集标签未公开,因此我们无法给出我们测试过的所有模型在测试集上的错误率。在本节的其余部分中,我们将验证集和测试集的错误率互换,因为根据我们的经验,它们之间的差值不超过0.1%(见表2)。本文描述的CNN的top-5错误率达到了18.2%。对五个相似CNN的预测结果计算均值,得到的错误率为16.4%。单独一个CNN,在最后一个池化层之后,额外添加第六个卷积层,对整个ImageNet Fall 2011 release(15M images, 22K categories)进行分类,然后在ILSVRC-2012上“微调”(fine-tuning)网络,得到的错误率为16.6%。对整个ImageNet Fall 2011版本的数据集下预训练的两个CNN,求他们输出的预测值与前面提到的5个不同的CNN输出的预测值的均值,得到的错误率为15.3%。比赛的第二名达到了26.2%的top-5错误率,他们的方法是:对几个在特征取样密度不同的Fisher向量上训练的分类器的预测结果取平均的方法[7]。
在这里插入图片描述
最后,我们还在ImageNet Fall 2009版本的数据集上提交了错误率,总共有10,184个类别和890万张图像。在这个数据集中,我们遵循文献中的使用一半图像用于训练,一半图像用于测试的惯例。由于没有建立测试集,所以我们的拆分方法有必要与先前作者使用的拆分方法不同,但这并不会对结果产生显著的影响。我们在这个数据集上的top-1和top-5错误率分别是67.4%和40.9%,是通过前面描述的网络获得的,但是在最后的池化层上还有额外的第6个卷积层。该数据集此前公布的最佳结果是78.1%和60.9%[19]。

6.1 Qualitative Evaluations定性评估

图3显示了由网络的两个数据连接层学习得到的卷积内核。该网络已经学习到许多频率和方向提取的内核,以及各种色块。请注意两个GPU所展现的不同特性,这也是3.5节中介绍的限制互连的结果。GPU1上的内核在很大程度上与颜色无关,然而GPU2上的内核在很大程度上都于颜色有关。这种特异性在每次迭代期间都会发生,并且独立于任何特定的随机权重初始化过程(以GPU的重新编号为模)。
在这里插入图片描述
在图4的左边,我们通过计算8张测试图像的top-5预测来定性评估网络的训练结果。请注意,即使是偏离中心的物体,如左上角的螨虫,也可以被网络识别出来。大多数top-5的标签都显得比较合理。例如,只有其他类型的猫才被认为是豹子的可能标签。在某些情况下(栅栏、樱桃),照片的关注点存在模糊性,不知道到底该关注哪个。

另一个研究可视化的网络的方法是,考虑由最后一个4096维隐含层中的图像的特征的激活函数输出值。如果两幅图像产生有的欧氏距离,我们可以认为高层次的神经网络认为它们是相似的。图4显示了测试集中的5个图像和来袭训练集的6个图像,这些图像根据这种度量方法来比较它们中的哪一个与其最相似。请注意,在像素层次上,待检测的训练图像通常不会与第一列中的查询图像有较小的L2距离。例如,检索到的狗和大象有各种不同的姿势。我们在补充材料中提供了更多测试图像的结果。

通过使用欧式距离来计算两个4096维实值向量的相似性,效率不高,但是通过训练自编码器可以将这些向量压缩为较短的二进制码,能够使其更高效。与应用自编码器到原始像素[14]相比,这应该是更好的图像检索方法。它不使用图像标签,因此更秦翔宇检索具有相似图案边缘的图像,不管它们的图像语义是否相似。

7、讨论

我们的研究结果表明,一个大的深层卷积神经网络能够在纯粹使用监督学习的情况下,在极具挑战性的数据集上实现破纪录的结果。值得注意的是,如果移除任何一个卷积层,网络的性能就会下降。例如,删除任何中间层的结果会导致网络性能的top-1错误率下降2%。因此网络的深度对于实现我们的结果真的很重要。

**为了简化我们的实验,我们没有使用任何无监督的预训练方法,尽管这样可能会有所帮助,特别是如果我们获得了足够的计算能力来显著地增加网络的大小而不会相应地增加已标记数据的数量。**到目前为止,我们的结果已经获得了足够的进步,因为我们已经使网络更大,并且训练了更长时间。但我们仍然有很大的空间去优化网络,使之能够像人类的视觉系统一样感知。最后,我们希望对视频序列使用非常大的深度卷积神经网路,其中时间结构提供了非常有用的信息,这些信息往往在静态图像中丢失了,或者说不太明显。

发布了47 篇原创文章 · 获赞 21 · 访问量 7234

猜你喜欢

转载自blog.csdn.net/qq_18315295/article/details/103567838