《ImageNet Classification with Deep Convolutional Neural Networks》
AlexNet 网络模型的名称由来:第一作者的名字 Alex Krizhevsky
目录
一、摘要
我们训练了一个大型的深度卷积神经网络,将ImageNet LSVRC - 2010竞赛中120万幅高分辨率图像分类到1000个不同的类中。在测试数据上,我们分别取得了37.5 %和17.0 %的前1位和前5位错误率,明显优于以往的先进水平。该神经网络包含6000万个参数和65万个神经元,由5个卷积层组成,其中部分卷积层为max-pooling层,3个全连接层为最终的1000-way softmax。为了使训练更快,我们采用了非饱和神经元和一个非常高效的GPU实现的卷积运算。为了减少全连通层中的过拟合,我们采用了一种最近发展起来的正则化方法,称为‘dropout’,这种方法被证明是非常有效的。在ILSVRC-2012比赛中,我们也进入了该模型的一个变体,取得了15.3 %的胜出前5名测试错误率,而次优进入则达到了26.2%。
二、探讨
我们的结果表明,一个庞大而深入的CNN能够在一个高度挑战的数据集上使用纯监督学习取得破纪录的结果。值得注意的是,如果去除单个卷积层,我们的网络性能会下降。例如,删除任何中间层都会导致网络的前1名性能损失约2%。所以深度的确对取得我们的成果很重要。
为了简化我们的实验,我们并没有使用任何无监督的预训练,尽管我们期望它会有所帮助,特别是如果我们获得足够的计算能力来显著增加网络的规模,而没有获得相应增加的标记数据量。迄今为止,我们的结果已经有所改善,因为我们已经扩大了我们的网络,并对其进行了更长的训练,但是为了与人类视觉系统的时间路径相匹配,我们还有许多数量级要走。最终我们希望在视频序列上使用非常大且深度的卷积网络,其中的时态结构提供了非常有用的信息(即在静态图像中缺失或不明显的信息)。
三、结论
计算机视觉界对SuperVision成功的反应令人印象深刻。在接下来的一两年里,他们转向使用深度神经网络,现在这些网络被谷歌、Facebook、微软、百度等许多公司广泛部署。到2015年,硬件的改进、隐含层的增加以及一系列技术的进步使得深度卷积神经网络的误差率进一步降低了三分之一,使其在静态图像上的表现更加接近人类的表现。这场革命的大部分功劳应该归功于多年来发展CNN技术的先驱们,但是《 ImageNet: A large-scale hierarchical image database. 》提供了必要的缺失成分,即费菲等人投入了巨大的精力来制作一个标记数据集,最终能够显示出神经网络真正能够做什么。
四、AlexNet 模型结构
CNN的整体架构如下图所示,该网包含8层权重;前五个是卷积,其余三个是全连接层。最后一个全连接层的输出被送入1000-way softmax,它产生一个分布在1000个类标签上的分布。第二层、第四层和第五层卷积层的内核只与位于同一GPU上的前一层内核映射相连。第三层卷积层的核连接第二层的所有内核映射。
原文描述对各个模块层的使用:(感觉有点奇怪,具体还是看结构图的分析)
- 全连接层的神经元与上一层的所有神经元相连。
- Response-normalization layers遵循前两个卷积层。
- 最大池化层既遵循 Response-normalization layers,也遵循第五层卷积层。
- 将ReLU非线性应用于每个卷积层和全连接层的输出。
注:padding即填充零元素,设置padding后,图像矩阵经过卷积层或池化层不改变尺寸大小。
训练细节:
- 我们使用随机梯度下降训练我们的模型,batch size=128, momentum=0.9, and weight decay= 0.0005.
- 我们从标准差为0.01的零均值高斯分布初始化各层权值。在第二层、第四层和第五层卷积层以及完全连接的隐层中,我们用常数1初始化神经元偏差。这种初始化通过为ReLU提供积极的输入来加速学习的早期阶段。我们用常数0初始化剩余各层的神经元偏差。
- 我们对所有的层次都使用了相同的学习速率,在整个训练过程中我们手动调整。我们遵循的启发式方法是当验证错误率不再随着当前学习率的提高而提高时,将学习率除以10。学习率初始化为0.01,终止前降低3次。
五、过拟合的解决*
参数相对于数据集是较多的,容易产生过拟合。下面,我们描述了我们对抗过拟合的两种主要方式。
(1)数据增强
减少图像数据过拟合的最简单和最常用的方法是使用保留标签的变换,对数据集进行人工放大。我们采用了两种截然不同的数据增强形式,这两种形式都允许从计算量很小的原始图像中产生变换图像,因此变换后的图像不需要存储在磁盘上。在我们的实现中,转换后的图像是在CPU上用Python代码生成的,而GPU是在前一批图像上进行训练的。因此,这些数据增强方案实际上是免费的。
数据增强的第一种形式包括生成图像平移和水平镜像。我们通过从256×256的图像中提取随机的224×224个patch( 以及它们的水平镜像 ),并在这些提取的patch上训练我们的网络做到这一点。这使得我们的训练集的规模增加了2048个因素,尽管由此产生的训练实例当然是高度相互依赖的。如果没有这个方案,我们的网络就会出现严重的过拟合,这将迫使我们不得不使用小得多的网络作品。在测试时刻,网络通过提取5个224 × 224的patch( 四个角块和中心块 )及其水平镜像( 因此共有 10个patch )进行预测,并将网络的softmax层对10个patch的预测结果进行平均。
第二种数据增强形式是改变训练图像中RGB通道的强度。具体而言,我们对整个ImageNet训练集的RGB像素值集合进行PCA。在每幅训练图像中,我们加入多个找到的主成分,其大小与相应的特征值成正比,这个随机变量取自均值为0,标准差为0.1的高斯。
注:PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。主成分分析(PCA)原理详解 - 知乎 (zhihu.com)
在每幅训练图像中,我们加入多个找到的主成分,其大小与相应的特征值成正比,这个随机变量取自均值为0,标准差为0.1的高斯。因此对每个RGB图像像素加入如下数量:
其中 Pi 和 λi 分别是第 i 个RGB像素值的3 × 3协方差矩阵的特征向量和特征值, αi 为上述随机变量。每个 αi 只对训练图像的所有像素点进行一次绘制,直到该图像再次用于训练,此时重新绘制。该方案近似地捕捉到了自然图像的一个重要性质,即物体本身对光照的强度和颜色的变化是不变的。该方案使TOP-1的错误率降低1%以上。
(2)Dropout
结合许多不同模型的预测是减少测试误差的一个非常成功的方法,但对于已经需要几天训练的大型神经网络来说,这似乎太贵了。然而,有一个非常高效的模型组合版本,在训练过程中只需花费大约2个因子。最近引入的称为“Dropout”的技术:以0.5的概率将每个隐藏神经元的输出设置为零。以这种方式“Dropout”的神经元不参与前传,也不参与后传。因此,每次输入被提出时,神经网络都会采样不同的结构,但所有这些结构都共享权值。这种技术减少了神经元复杂的共适应,因为一个神经元不能依赖特定的其他神经元的存在。因此,它被迫学习更稳健的特征,这些特征与其他神经元的许多不同随机子集一起有用。在测试时,我们使用所有的神经元,但它们的输出乘以0.5,这是对 the exponentially-many dropout networks 产生的预测分布取几何平均的合理近似.
我们在前两个全连接层中使用Dropout。在没有使用Dropout的情况下,我们的网络表现出明显的过拟合现象。Dropout大约是收敛所需迭代次数的两倍。
六、ImageNet和ILSVRC
ImageNet是一个包含1500多万张标记的高分辨图像的数据集,大约属于22000个类别。这些图片是从网上收集的,并由人工使用亚马逊工具进行标注。
从2010年开始,作为 the Pascal Visual Object Challenge赛的一部分,每年举办一次名为 the ImageNet Large- Scale Visual Recognition Challenge( ILSVRC )的比赛。
ILSVRC使用 ImageNet 的一个子集,每1000个类别中大约有1000幅图像。总共约有120万张训练图像、5万张验证图像、15万张测试图像。
ILSVRC-2010是ILSVRC唯一一个测试集标签可用的版本,因此这是我们进行了大部分实验的版本。由于我们也在ILSVRC-2012竞赛中输入了我们的模型,下面的表格报告了我们在该版本的数据集上的结果,对于该版本的数据集,测试集标签是不可用的。在ImageNet上,通常报告两种错误率:top - 1和top - 5,其中top - 5错误率是测试图像的分数 for which 正确标签不在模型认为最可能的五个标签中。
我们的网络达到了top - 1和top - 5的测试集错误率分别为37.5 %和17.0 %。
七、激活函数的选取
将神经元的输出 f 建模为其输入x 的函数的标准方法为 f(x)=tanh(x) 或 f(x)=(1+)-1。在梯度下降的训练时间方面,这些饱和非线性远远慢于非饱和非线性 f(x)=max(0, x)。
结合论文 《Rectified linear units improve restricted Boltzmann machines.》,我们把这种非线性的神经元称为修正线性单位(Rectified linear units)( ReLUs )。带有ReLUs的深度CNN的训练速度速度是tanh单元的几倍。如下图所示,图中显示了对于特定的4层卷积网络,在CIFAR-10数据集上达到25%训练误差所需的迭代次数。这个图表明,如果采用传统的饱和神经元模型,我们将无法为这项工作用这么大的神经网络进行实验。
一个具有ReLUs (实线)的4层卷积神经网络在CIFAR-10上达到了25%的训练错误率,比一个具有tanh神经元(虚线)的等价网络快6倍。快速学习对在大数据集上训练的大模型的性能有很大影响.
八、在多个GPU上训练
单个GTX 580 GPU只有3GB的内存,限制了在其上可以训练的网络的最大规模。事实证明,120万个训练实例足以训练太大而不能适合在一个GPU上的网络。因此我们将网络传播到两个GPU上。目前的GPU特别适合于跨GPU并行化,因为它们可以直接从对方的内存中读入和写入,而不需要经过主机内存。我们使用的并行化方案本质上将一半的内核(或神经元)放在每个GPU上,还有一个额外的技巧:GPU只在某些层进行通信。这意味着,例如,第3层的内核从第2层的所有内核映射中获取输入。但是,第4层的内核只从位于同一GPU上的第3层的内核映射中取输入。选择连接模式是交叉验证的问题,但这允许我们精确地调整通信量,直到它是计算量的可接受部分。
我们的多个GOU训练的方法,与在一个GPU上训练的每个卷积层的核数为一半的网络相比,该方案的TOP-1和TOP-5的错误率分别降低了1.7 %和1.2 %。两个GPU网络的训练时间略少于单GPU网络。
九、局部响应归一化(LRN)
在神经生物学有一个概念叫做侧抑制,指的是被激活的神经元抑制相邻神经元。归一化的目的是“抑制”,局部归一化就是借鉴了侧抑制的思想来实现局部抑制。
当使用ReLUs时,这种侧抑制很管用,因为ReLUs的响应结果是无界的,所以需要归一化。使用局部归一化的方案有助于增加泛化能力。
局部响应归一化的核心思想就是利用近邻数据进行归一化,其公式如下所示:
其中:
表示第 i 个卷积核,作用于位置 ,然后进行ReLUs后,得到的神经元输出;
- N表示该层卷积核的总数目;
- 常数k,n,α和β是超参数,其值由验证集确定;
- n表示同一位置上,邻近的卷积核的数目。
We used k = 2, n = 5, α = 10−4, and β = 0.75, 我们在ReLUs层之后使用LRN。局部响应归一化使得TOP-1和TOP-5的误差分别降低1.4%和1.2%。
LRN的直观解释就是,在第i个特征图上的(x, y)处的神经元的值,通过其邻近的n个特征图上,同一位置的值平方和的相关运算,最后得到的值,作为该特征图上对应位置的新值。可想而知,其计算量不小!后面的研究者也发现,LRN并无实际作用,反而增加不少的计算量,因此一般都不再使用。
十、卷积核学习能力可视化以及分类效果展示
下图显示了网络的两个 data-connected layers 学习到的卷积核。网络学习了多种频率和方向选择性核,以及各种颜色的 blobs。GPU 1上的内核在很大程度上是颜色不可知论的,而GPU 2上的内核在很大程度上是颜色特定的。
在大小为224*224*3的输入图像上,由第一卷积层学习得到96个大小为11*11*3的卷积核,如下图所示。前48个核在GPU 1上学习,后48个核在GPU 2上学习。
(左侧图) 8幅ILSVRC - 2010测试图像和5个标签被我们的模型认为最可能的结果。每个图像下都写入正确标签,分配给正确标签的概率也用红条( 如果出现在前 5名 )显示。
(右侧图) 第一列是5幅ILSVRC - 2010测试图像。剩下的列显示了在最后一层隐层中产生特征向量的6幅训练图像,与测试图像的特征向量的欧氏距离最小。
>>>如有疑问,欢迎评论区一起探讨!