ImageNet Classification with Deep Convolutional Neural Networks(AlexNet)


                   题目:使用深度卷积神经网络进行ImageNet分类


                                                    作者:Alex Krizhevsky,     Ilya Sutskever    Geoffrey E.Hinton

Abstract(摘要)

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

1. Introduction(介绍)

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

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

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

本文的具体贡献如下:我们迄今为止在ILSVRC-2010和ILSVRC-2012竞赛中使用的ImageNet子集训练了要给最大的卷积神经网络并在这个数据集过去报道的结果中是最好的结果。我们编写了一个高度优化的2D卷积GPU实现和训练卷积神经网络中固有的其他操作,我们公开提供(http://code.google.com/p/cuda-convnet/)。我们的网络包含许多新的和不寻常的功能,可以改善其性能并缩短训练时间,详见第三节。我们的网络过大产生过拟合是一个很严重的问题,即使有120万个标记的训练样本也是如此,因此,我们使用集中有效的技术来防止过度拟合,如第4节所述。我们最终网络包含5个卷积层和3个全连接层,这个深度似乎很重要:我们发现删除任何卷积层(每个卷积层不超过模型参数的1%)导致性能下降。

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

2. The Dataset(数据集)

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

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

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

3. The Architecture(结构)

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

3.1 ReLU Nonlinearity(ReLU 非线性)

将神经元的输出f建模为输入x的函数的标准方法是f(x)=tanh(x)f(x)=(1+e^{-x})^{-1}。就使用梯度下降的训练时间而言,这些饱和非线性函数比非饱和非线性函数f(x)=max(0,x)要慢得多。继Nair和Hinton之后,我们将具有这种非线性的神经元称为整流线行单元(ReLUs)。具有ReLU的深度卷积神经网络比具有tanh单元相同的网络快几倍。图1展示了这一点,图1显示了特定四层卷积神经网络在CIFAR-10数据集上达到25%训练误差所需的迭代次数。该图表明,如果我们使用传统的饱和神经元模型,我们就无法用这种大型神经网络进行实验。

ImageNet Classification with Deep Convolutional Neural Networks(AlexNet)_第1张图片

图1:具有ReLU(实现)的四层卷积神经网络在CIFAR-10上达到25%的训练错误率,比具有tanh神经元的等效网络(虚线)快六倍。每个网络工作的学习率都是独立选择的,以便尽快进行训练。没有采用任何形式的正则化。此处演示的效果的大小因网络架构而异,但具有ReLU的网络始终比具有饱和神经元的等效网络快几倍。

我们不是第一个考虑CNN中传统神经元模型替代品的人。例如,Jarrett等人声称非线性f(x)=\left | tanh(x) \right |使用对比归一化类型随后跟着平均池化在Caltech-10数据集上工作相当好的。但是,在此数据集上,主要关注的是防止过度拟合,因此它们观察到的效果与我们在使用ReLU时报告的训练集的加速能力不同。更快的学习对在大型数据集上训练的大型模型的性能有很大影响。

3.2 Training on Multiple GPUs(在多个GPU上训练)

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

由此产生的结构有点类似于Cire,san等人采用的"柱状"CNN,除了我们的列不是独立的(见图2)。与在一个GPU上训练的每个卷积层中具有一半内核的网络相比,该方案将我们的top-1和top-5错误率分别降低了1.7%和1.2%。与单GPU网络相比,双GPU网络的训练时间略短。

(在最终的卷积层中,单GPU网络实际上具有与双GPU网络相同数量的内核。这是因为大多数网络参数都在第一个完全连接的层中,他将最后一个卷积层作为输入。因此,为了使两个网具有大致相同数量的参数,我们没有将最终卷积层的大小减半(也不是随后的全连接层)。因此,这种比较偏向于单GPU网络,因为它大于双GPU网络的”一半大小“。)

3.3 Local Response Normalization(局部响应归一化)

ReLU具有理想的属性,它们不需要输入归一化来防止它们饱和。如果至少一些训练样本对ReLU产生积极的输入,那么将在该神经元中进行学习。但是,我们仍然发现以下局部归一化方案有助于推广。a^{i}_{x,y}表示一个神经元应用在位置(x,y)的第i个内核并且应用ReLU非线性计算的激活值,响应的归一化激活b^{i}_{x,y}表达式为:

                                                    b^{i}_{x,y}=a^{i}_{x,y}/(k+\alpha \sum_{j=max(0,i-n/2)}^{min(N-1,i+n/2)}(a^{j}_{x,y})^{2})^{\beta }

其中总和在相同空间位置的n个”相邻“内核映射上运行,N是层中内核的总数。内核映射的顺序当然是任意的,并且在训练开始之前确定。这种响应归一化实现了一种横向抑制形式,其受到真实神经元的启发。从而在使用不同内核计算的神经元输出之间产生大的活跃的竞争。常数k,n,\alpha,\beta是超参数,它们的值使用验证集决定;我们使用k=2,n=5,\alpha =10^{-4},\beta =0.75。我们在某些层中应用这个归一化在应用ReLU非线性激活之后。

该方案与Jarrett等人的局部对比度归一化方案有一些相似之处,但我们更正确地称为”亮度归一化“,因为我们不减去平均激活值。响应归一化将我们的top-1和top-5错误率分别降低了1.4%和1.2%。我们还验证了该方案对CIFAR-10数据集的有效性:四层CNN在没有归一化的情况下实现了13%的测试错误率,在归一化方面实现了11%。(由于空间限制,我们无法详细描述此网络,但它有此处提供的代码和参数文件精确指定:http://code.google.com/p/cuda-convnet/)

3.4 Overlapping Pooling(搭建池化层)

在CNN中池化层总结了相同内核映射中相邻神经元组的输出。传统上,由相邻池化单元汇总的邻域不重叠。更确切的说,池化层可以被认为是由间隔s个像素的合并单元的网格组成,每个合并单元总结了以合并单元的位置为中心的大小为z\times z的邻域。如果我们设置s=z,我们获得CNN中常用的传统局部池化。如果我们设置s

3.5 Overall Architecture(全部结构)

现在我们准备描述CNN的整体架构。如图2所示,网络包含具有权重的八层,前五层是卷积层,剩下的三层是全连接层。最后一个全连接层的输出被送到1000路的softmax中,产生1000个类别标签上的分布。我们的网络最大化多项逻辑回归目标,这相当于在预测分布下最大化训练案例中正确标签的对数概率的平均值。

ImageNet Classification with Deep Convolutional Neural Networks(AlexNet)_第2张图片

图2:我们的CNN架构的例证,明确显示两个GPU之间的任务划分。一个GPU在图的顶部运行图层部分,而另一个GPU在底部运行图层部分。GPU仅在某些层进行通信。网络的输入是150,528维,网络剩余层中的神经元数量由253,440-186,624-64,896-64,896-43,264-4096-4096-1000.

第二,第四和第五卷积层的内核仅连接到位于同一GPU上的前一层中的那些内核映射上(参见图2)。第三卷积层的内核连接到第二层中的所有内核映射。全连接层中的神经元连接到前一层的所有的神经元。响应归一化层跟着第一和第二卷积层。3.4节中描述的最大池化层跟在响应归一化层和第五卷积层。ReLU非线性激活应用于每个卷积和全连接层的输出。第一个卷积层用96个大小为11\times 11\times 3的内核过滤224\times 224\times 3输入图像,步长为4个像素(这是内核图中相邻神经元的感受野中心之间的距离)。第二个卷积层将第一个卷积层的(响应归一化和池化)输出作为输入,并用256个大小为5\times 5\times 48的内核对其进行过滤。第三,第四和第五卷积层彼此连接而没有任何中间池化层或归一化层。第三卷积层具有384个大小为3\times 3\times 256的内核,其连接到第二卷积层(归一化,池化)输出。第四卷积层具有384个大小为3\times 3\times 192的内核,第五卷积层具有256个大小为3\times 3\times 192的内核。全连接层各有4096个神经元。

4. Reducing Overfitting(减少过拟合)

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

4.1 Data Augmentation(数据增强)

减少图像数据过度拟合的最简单和最常用的方法是使用标签保留变换人工放大数据集。我们采用两种不同形式的数据增强,这两种形式都允许以非常小的计算从原始图像生成变换图像,因此转换后的图像不需要存储在磁盘上。在我们的实现中,转换的图像实在CPU上的Python代码中生成的,而GPU正在训练前一匹图像。

第一种形式的数据增强包括生成图像平移和水平反射。我们通过从256\times 256图像中提取随机224\times 224补丁(及其水平反射)并在这些提取的补丁上训练我们的图像来实现这一点(这是为什么输入图像的大小是224\times 224\times 3维的原因)。这使我们的训练集的大小增加了2048倍,尽管由此产生的训练样本当然是高度相互依赖的。如果没有这种方案,我们的网络就会遭受严重的过度拟合,这将迫使我们使用更小的网络。在测试时,网络通过通过提取五个224\times 224补丁(四个角的补丁和中心补丁)以及它们的水平反射(因此总共十个补丁)进行预测,并在十个补丁上对网络的softmax层进行预测求平均值。

第二种形式的数据增强包括改变训练图像中RGB通道的强度。具体来说,我们在整个ImageNet训练集中对RGB像素值执行PCA。对于每个训练图像,我们添加多个找到的主成分,其幅度与响应的特征值成正比乘以从高斯绘制的随机变量,其中平均值为零,标准差为0.1。因此对于每个TRGB图像像素I_{xy}=\left [ I^{R}_{xy},I^{G}_{xy},I^{B}_{xy} \right ]^{T}我们添加以下数量\left [ P_{1},P_{2},P_{3} \right ]\left [ \alpha _{1}\lambda _{1},\alpha _{2}\lambda _{2},\alpha _{3}\lambda _{3} \right ]^{T}。其中,P_{i}\lambda _{i}分别是RGB像素值的3\times 3协方差矩阵的第i个特征向量和特征值,\alpha _{i}是上述的随机变量。对于特定训练图像的所有像素,每个\alpha _{i}仅被绘制一次,直到该图像再次被用于训练,此时它被重新绘制。该方案近似的捕获自然图像的重要特性,即对象身份对于照明的强度和颜色的变化是不变的。该方案将top-1错误率降低了1%以上。

4.2 Dropout(随机失活)

结合许多不同模型的预测是减少测试误差的一种非常成功的方法,但对于已经需要训练数天的大型神经网络来着这种方法的代价太大了。然而,有一种非常有效的模型组合版本,在训练期间仅花费大约两倍的时间。最近引入的技术称为“dropout”,包括将每个隐藏神经元的输出设置为零,概率为0.5.以这种方式“删除”的神经元对前向传播没有贡献,并且不参加反向传播。因此,每次输入时,神经网络都会采样不同的架构,但所有这些架构都会共享权重。该技术减少了神经元的复杂共同适应,因为神经元不能依赖于特定其他神经元的存在。因此,它被迫学习更强大的特征,这些特征与其他神经元的许多不同随机子集一起使用时很有用的。在测试时,我们使用所有神经元但是将它们的输出乘以0.5,这是采用多指数dropout网络产生的预测分布的几何平均值的合理近似值。

我们在图2中的前两个全连接层中使用了“dropout”。没有“dropout”,我们的网络出现了严重的过拟合现象。“dropout”使收敛所需的迭代次数加倍。

5. Details of learning(学习的细节)

我们使用随机梯度下降训练我们的模型,批量大小为128个样本,动量为0.9,权重衰减为0.0005.我们发现,这种少量的重量衰减对于模型学习很重要。换句话说,这里的权重衰减不仅仅是一个正则化器:它减少了模型的训练错误。权重w的更新规则是

                                          v_{i+1}:=0.9\cdot v_{i}-0.0005\cdot \epsilon \cdot w_{i}-\epsilon \cdot \left \langle \frac{\partial L}{\partial w}\mid _{w_{i}} \right \rangle_{D_{i}}

                                                               w_{i+1}:=w_{i}+v_{i+1}

其中i是迭代索引,v是动量变量,\epsilon是学习率,并且\left \langle \frac{\partial L}{\partial w}\mid _{w_{i}} \right \rangle_{D_{i}}w的目标导数的第i批次的D_{i}的平均值,评估w_{i}

我们使用零均值高斯分布初始化每层中的权重,标准偏差为0.01。我们初始化了第二,第四和第五卷积层以及完全连接的隐藏层中的神经元偏差,其常数为1。该初始化通过向ReLU提供正输入来加速学习的早期阶段。我们用常数0初始化剩余层中的神经元偏差。

我们对所有层使用了相同的学习率,我们在整个训练过程中手动调整。我们遵循的启发是当验证错误率随着当前学习率停止改善时将学习率除以10。学习率初始化为0.01,并在终止前减少三次。我们通过120万张图像的训练集训练网络大约90个周期,在两个NVIDIA GTX 580 3GB GPU上花费了五到六天。

6. Results(结果)

我们在ILSVRC-2010上的结果总结在表1中。我们的网络实现了top-1和top-5的测试集错误率分别为37.5%和17.0%。在ILSVRC-2010竞赛期间取得的最佳表现为47.1%和28.2%。其中一种方法对从不同特征训练的六种稀疏编码模型产生的预测进行平均分析,此后最佳公布结果为45.7%,25.7%,这种方式平均了两种分类器的预测,这两种分类器是根据两种密集采样特征计算的Fisher矢量(FV)训练的。

ImageNet Classification with Deep Convolutional Neural Networks(AlexNet)_第3张图片

表1:ILSVRC-2010测试集的结果比较,斜体使其他人获得的最佳结果。

我们也在ILSVRC-2012竞赛中输入了我们的模型,并在表2中报告了我们的结果。由于ILSVRC-2012测试集标签不公开,我们无法报告我们尝试的所有模型的测试错误率。在本段的其余部分中,我们可以互换地使用验证和测试错误率,因为根据我们的经验,它们的差异不超过0.1%(参见表2)。本文描述的CNN实现了top-5错误率为18.2%。平均5个相似CNN的预测给出了16.4%的错误率。训练一个CNN,在最后一个池化层上增加第六个卷积层,对整个ImageNet 2011秋季版本(15M图像,22K类别)进行分类,然后在ILSVRC-2012上对其进行“微调”,错误率为16.6%。对上述5个CNN在整个2011年秋季发布预训练的两个CNN的预测进行平均后,误差率为15.3%。第二好的比赛条目实现了26.2%的错误率,其方法是对从不同类型的密集采样特征计算的FV训练的好几个分类器的预测进行平均。

ImageNet Classification with Deep Convolutional Neural Networks(AlexNet)_第4张图片

表2:ILSVRC-2012验证和测试机的错误结果比较。斜体使其他人获得的最佳结果。带有星号*的型号经过“预训练”,可对整个ImageNet 2011秋季版本进行分类。详情请参阅第6节。

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

6.1 Qualitative Evaluations(定性评估)

图3显示了网络的两个数据连接层学习的卷积内核。该网络已经学习了各种频率和方向选择性内核,以及各种彩色斑点。请注意两个GPU所展示的特殊化,这是第3.5节中描述的受限连接的结果。GPU1上的内核在很大程度上与颜色无关,GPU2上的内核在很大程度上和颜色有关的。这种特殊化在每次运行期间发生,并且独立于任何特定的随机权重初始化(以GPU的重新编号为模)。

ImageNet Classification with Deep Convolutional Neural Networks(AlexNet)_第5张图片

图3:在224\times 224\times 3输入图像上由第一个卷积层学习的96个大小为11\times 11\times 3的卷积核。在GPU1上学习了前48个内核,而在GPU2上学习了最后48个内核。详细信息请参见第6.1节。

在图4的左侧面板中,我们通过计算八个测试图像的top-5预测来定性评估网络学到了什么。请注意,即使偏离中心的对象(例如左上角的螨虫)也可以通过网络识别。大多数top-5标签看似合理。例如,只有其他类型的猫被认为是豹子的合理标签。在某些情况下(格栅,樱桃),对于照片的预期焦点存在真正的模糊性。

ImageNet Classification with Deep Convolutional Neural Networks(AlexNet)_第6张图片

图4:(左)8个ILSVRC-2010测试图像和我们模型认为最可能的5个标签。在每个图像下面写入正确的标签,并且还显示分配给正确标签的概率,用红色条(如果碰巧在top-5)。(右)第一栏中的五个ILSVRC-2010测试图像。其余列显示了六个测试图像,这六个测试图像在最后一个隐藏层中产生特征向量,其中距离测试图像的特征向量的欧几里得距离最小。

探测网络视觉知识的另一种方法是考虑最有一个4096维隐藏层的图像引起的特征激活。如果两个图像产生具有小欧几里德分离的特征激活矢量,我们可以说神经网络的较高级别认为它们是相似的。图4显示了来自测试集的五个图像和来自训练集的六个图像,根据该度量,每个图像与它们中的每一个最相似。请注意,在像素级别,检索到的训练图像通常不会在L2中与第一列中的查询图像接近,例如,被收回的狗和大象以各种姿势出现。我们在补充材料中展示了更多测试图像的结果。

7. Discussion(讨论)

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

为了简化我们的实验,我们没有使用任何无监督的预训练,即使我们期望它会有所帮助,特别是如果我们获得足够的计算能力来显著增加网络的大小而不会获得相应的标记数据量的增加。到目前为止,我们的结果已经有所改善,因为我们已经使我们的网络变得更大并且训练更长,但是为了匹配人类视觉系统的下-时间路径,我们仍然有许多数量级。最终,我们希望在视频序列上使用非常大且深度的卷积网络,其中时间结构提供了非常有用的信息,这些信息在静态图像中缺失或不那么明显。

说明:为了了解AlexNet网络结构,就读了这篇论文,但是在翻译的过程中,发现是真不好理解。个人的英语水平有限。这篇文章也是作为我学习的一次笔记。无其他目的。

你可能感兴趣的:(论文,AlexNet,论文,深度学习)