深度卷积神经网络之AlexNet

Paper原文地址:2012年PDF下载

摘要:我们训练了一个大型的深度卷积神经网络,将ImageNet LSVRC-2010比赛中的120万张高分辨率图像分成1000个不同的类别。在测试数据上,我们实现了第1位和第5位错误率分别为37.5%和17.0%,大大优于之前的先进水平。这个神经网络有6000万个参数和65万个神经元,由5个卷积层、若干个max-pooling层、3个带有1000路softmax的完全连接层。为了使训练更快,我们使用了不饱和神经元和一个非常有效的GPU实现卷积运算。为了减少全连通层的过拟合,我们采用了一种最近发展起来的正则化方法“drop - out”,该方法被证明是非常有效的。我们还在ILSVRC-2012比赛中加入了该模型的一个变体,获得了15.3%的前5名测试错误率,而第二名的测试错误率为26.2%。

1.引言:

目前的目标识别方法主要是利用机器学习的方法。为了证明它们的性能,我们可以收集更大的数据集,学习更强大的模型,并使用更好的技术来防止过拟合。……新的更大的数据集包括LabelMe和ImageNet,前者由数十万张完全分割的图像组成,后者由超过22,000个类别的超过1,500万张标记的高分辨率图像组成。

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

尽管CNNs具有吸引人的质量,尽管其本地架构相对高效,但大规模应用于高分辨率图像的成本仍然高得令人望而却步。幸运的是,目前的gpu加上高度优化的2D卷积实现,已经足够强大来帮助训练有趣的大型CNNs,而最近的数据集,如ImageNet,包含了足够多的标记示例来训练这类模型,而不会出现严重的过拟合。

本文的具体贡献如下:我们对ILSVRC-2010和ILSVRC-2012比赛中使用的ImageNet子集进行了迄今为止最大的卷积神经网络之一的训练,获得了迄今为止在这些数据集上报道的最好的结果。我们编写了一个高度优化的GPU实现2D卷积和所有其他卷积神经网络训练中固有的操作。我们的网络包含了许多新的和不寻常的特性,这些特性提高了网络的性能并减少了网络的训练时间。我们的网络规模使得过拟合成为一个严重的问题,即使有120万个标记的训练例子,所以我们使用了一些有效的技术来防止过拟合。我们最终的网络包含5个卷积层和3个完全连接的层,这个深度似乎很重要:我们发现删除任何卷积层(每个层包含的参数不超过模型参数的1%)都会导致较差的性能。

最后,网络的大小主要受限于当前gpu上可用的内存和我们愿意接受的训练时间。我们的网络需要5到6天的时间在两个GTX 580 3GB gpu上进行培训。我们所有的实验都表明,只要等待更快的gpu和更大的可用数据集,我们的结果就能得到改善。

2.数据集

ImageNet是一个包含超过1500万张高分辨率图像的数据集,属于大约2.2万个类别。这些图片是从网上收集的,并由人类标签员使用亚马逊土耳其机器人众包工具进行标记。从2010年开始,作为Pascal视觉对象挑战赛的一部分,一年一度的ImageNet大规模视觉识别挑战赛(ILSVRC)已经举行。ILSVRC使用ImageNet的一个子集,在1000个类别中的每个类别中包含大约1000个图像。总共大约有120万张训练图像、5万张验证图像和15万张测试图像。

ImageNet由可变分辨率的图像组成,而我们的系统需要一个恒定的输入维度。因此,我们将图像降采样到256 256的固定分辨率。

给定一个矩形图像,我们首先对图像进行缩放,使较短的边长度为256,然后从得到的图像中裁剪出中央256*256的小块。我们没有以任何其他方式对图像进行预处理,只是从每个像素中减去训练集上的平均活动。因此,我们将网络训练在像素的原始RGB值上。

3.架构

我们的网络架构如图所示。它包含8个学习层——5个卷积层和3个完全连接的层。下面,我们将描述网络架构的一些新颖或不寻常的特性。第3.1-3.4节是根据我们对其重要性的估计进行排序的,其中最重要的是第一个。
在这里插入图片描述

3.1 ReLU 非线性

标准方法模型神经元的输出与输入的关系:f(x)=tanh(x)或f(x)=((1+e^(-x))-1。在梯度下降训练时间方面,这些饱和非线性要比非饱和非线性慢得多f(x) = max(0,x)。我们将这种非线性的神经元称为校正的线性单元(ReLUs)。深度卷积神经网络——使用ReLUs训练比使用tanh训练要快几倍。这在图1显示了一个特定的四层卷积网络在CIFAR-10数据集上为达到25%的训练误差而需要的迭代次数。这张图显示,如果我们使用传统的饱和神经元模型,我们就无法用这么大的神经网络来进行实验。

在这里插入图片描述

3.2 多个GPU上训练

单个GTX 580 GPU只有3GB内存,这限制了可以在其上训练的网络的最大规模·。事实证明,120万个训练样本足以训练一个GPU无法容纳的网络。因此,我们将网络扩展到两个gpu上。当前的gpu特别适合跨gpu并行化,因为它们可以直接读写彼此的内存,而不需要通过主机内存。我们使用的并行化方案实际上是将一半的内核(或神经元)放在每个GPU上,还有一个额外的技巧:GPU只在特定的层中通信。这意味着,例如,第3层的内核从第2层的所有内核映射中获取输入。但是,第4层中的内核只从驻留在相同GPU上的第3层中的内核映射中获取输入。选择连接模式对于交叉验证来说是一个问题,但是这允许我们精确地调整通信量,直到它是计算量的一个可接受的部分。

合成体系结构有点类似的“柱状”CNN,除了我们的列不是独立的(参见图2)。这个方案将我们的top-1和top-5错误率分别降低了1.7%和1.2%,相比之下,在一个GPU上训练每个卷积层的内核数量是net的一半。与单gpu net 2相比,双gpu net花费的时间稍微少一些。
在这里插入图片描述

3.3 本地响应规范化 (在VGG中没有使用)

3.4 重叠池

CNN中的池化层将相邻神经元组的输出汇总到相同的内核映射中。一般的,相邻池化层单元汇总的邻域不重叠。更准确的说,一个池化层可以认为是由间距为s像素组成的网格单元,每个概括了以集合单元的位置为中心的大小为z×z的邻域,**如果我们设置s = z,我们得到CNNs中常用的传统局部池。如果我们设置s < z,就会得到重叠池。**这是我们在整个网络中使用的,s = 2 z = 3。该方案将前1位和前5位错误率降低0.4%和0.3%,与不重叠方案s = 2、z = 2相比,其输出的维数相等。我们通常在培训过程中观察到,具有重叠池的模型不容易过度拟合。

3.5 总体架构

现在我们已经准备好描述CNN的整体架构了。如图2所示,这个网络包含了八层权重;前五个是卷积层,其余三个为全连接层。最后的全连接层的输出被送到1000维的softmax函数,其产生1000个类的预测。我们的网络最大化多项逻辑回归目标,这相当于在预测的分布下最大化训练样本中正确标签对数概率的平均值。
第二,第四和第五个卷积层的内核仅与上一层存放在同一GPU上的内核映射相连(见图2)。第三个卷积层的内核连接到第二层中的所有内核映射。全连接层中的神经元连接到前一层中的所有神经元。响应归一化层紧接着第一个和第二个卷积层。 在3.4节中介绍的最大池化层,后面连接响应归一化层以及第五个卷积层。将ReLU应用于每个卷积层和全连接层的输出。
在这里插入图片描述

第一个卷积层的输入为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.减少过拟合

4.1 数据增广

在图像数据中减少过拟合最简单、最常用的方法是使用标签保留转换的人为增大数据集。我们采用了两种不同的数据扩充形式,这两种形式都允许从原始图像中生成转换后的图像,而只需很少的计算,因此转换后的图像不需要存储在磁盘上。在我们的实现中,转换后的图像是在CPU上的Python代码中生成的GPU正在对前一批图像进行训练。因此,这些数据扩充方案实际上是不需要计算的。

数据增强的第一种形式包括生成图像平移和水平反射。我们通过在256256图像中随机抽取224224的小块(和他们的水平反射),在提取的小块中训练我们的网络。这将我们的训练集的大小增加了2048倍,尽管最终的训练示例当然是高度相互依赖的。如果没有这个方案,我们的网络将遭受严重的过拟合,这将迫使我们使用更小的网络。

第二种形式的数据增强包括改变训练图像中RGB通道的强度。
该方案近似地捕获了自然图像的一个重要特性,即物体的特征不随光照强度和颜色的变化而变化。该方案将top-1错误率降低了1%以上。

4.2 Dropout

结合许多不同模型的预测是减少测试错误的一个非常成功的方法
,但对于已经花了好几天时间来训练的大型神经网络来说,这似乎代价太大了。然而,有一个非常有效的模型组合版本,在培训期间只需要花费大约2倍的成本。最近引入的技术叫做“dropout,它将每个隐藏神经元的输出设置为0,概率为0.5。这些神经元
以这种方式“退出”,既不贡献前传,也不参与后传。所以每次输入出现时,神经网络都会对不同的架构进行采样,但是所有这些架构都共享权重。这种技术减少了神经元复杂的共适应,因为神经元不能依赖于特定的其他神经元的存在。因此,它被迫学习与其他神经元的许多不同随机子集一起使用的更健壮的特征。在测试时,我们使用所有的神经元,但是将它们的输出乘以0.5,这是一个合理的近似,近似于取指数众多drop - in网络产生的预测分布的几何平均值。

我们在图2的前两个完全连接层中使用dropout。没有dropout情况下,我们的网络会遭到了大量的过拟合。使用dropout大约是收敛所需迭代次数的两倍。

5 学习的细节

6.结果

我们关于ILSVRC-2010的研究结果总结在表1中。
在这里插入图片描述
我们的网络实现了前1和前5的测试集错误率分别为37.5%和17.0%。

6.1 定性评估

7.讨论

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

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

参考:
1.知乎转载
2.博客翻译版本
3. what is top1 and top5
4.知乎专栏top5解释

top1就是你预测的label取最后概率向量里面最大的那一个作为预测结果,你的预测结果中概率最大的那个类必须是正确类别才算预测正确。而top5就是最后概率向量最大的前五名中出现了正确概率即为预测正确。

猜你喜欢

转载自blog.csdn.net/weixin_42610407/article/details/87111587