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就是最后概率向量最大的前五名中出现了正确概率即为预测正确。

深度卷积神经网络之AlexNet相关推荐

  1. [pytorch、学习] - 5.6 深度卷积神经网络(AlexNet)

    参考 5.6 深度卷积神经网络(AlexNet) 在LeNet提出后的将近20年里,神经网络一度被其他机器学习方法超越,如支持向量机.虽然LeNet可以在早期的小数据集上取得好的成绩,但是在更大的真实 ...

  2. PyTorch实战福利从入门到精通之八——深度卷积神经网络(AlexNet)

    在LeNet提出后的将近20年里,神经网络一度被其他机器学习方法超越,如支持向量机.虽然LeNet可以在早期的小数据集上取得好的成绩,但是在更大的真实数据集上的表现并不尽如人意.一方面,神经网络计算复 ...

  3. 深度卷积神经网络(AlexNet)与卷积神经网络(LeNet)的区别及其代码实现(可直接复制运行)

    AlexNet出现的背景 LeNet在小批量样本的处理中表现尚可,但当样本过于复杂时处理起来结果不尽如人意. AlexNet出现于2010年后,该模型对较大批量数据(特别是图片较多和所包含信息较多的情 ...

  4. 动手学习深度学习(总结梳理)——13. 深度卷积神经网络(AlexNet)

    目录 1. 模型设计 2. 激活函数 3. 模型 3. 读取数据集 4. 训练AlexNet AlexNet的背景故事和深度学习的发展 AlexNet和LeNet的设计理念非常相似,但也存在显著差异. ...

  5. pytorch学习笔记(二十四):深度卷积神经网络(AlexNet)

    1. AlexNet AlexNet与LeNet的设计理念非常相似,但也有显著的区别. 第一,与相对较小的LeNet相比,AlexNet包含8层变换,其中有5层卷积和2层全连接隐藏层,以及1个全连接输 ...

  6. 深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读

    导言 从1989年LeCun提出第一个真正意义上的卷积神经网络到今天为止,它已经走过了29个年头.自2012年AlexNet网络出现之后,最近6年以来,卷积神经网络得到了急速发展,在很多问题上取得了当 ...

  7. (pytorch-深度学习系列)深度卷积神经网络AlexNet

    深度卷积神经网络AlexNet 文字过多,但是重点已经标出来了 背景 在LeNet提出后的将近20年里,神经网络一度被其他机器学习方法超越,如支持向量机.虽然LeNet可以在早期的小数据集上取得好的成 ...

  8. Pytorch 深度卷积神经网络 AlexNet

    Pytorch 深度卷积神经网络 AlexNet 0. 环境介绍 环境使用 Kaggle 里免费建立的 Notebook 教程使用李沐老师的 动手学深度学习 网站和 视频讲解 小技巧:当遇到函数看不懂 ...

  9. 基于深度卷积神经网络的目标检测研究综述

    基于深度卷积神经网络的目标检测研究综述 人工智能技术与咨询 来自<光学精密工程> ,作者范丽丽等 摘要:作为计算机视觉中的基本视觉识别问题,目标检测在过去的几十年中得到了广泛地研究.目标检 ...

最新文章

  1. ubuntu 16.04 如何获取root权限
  2. 网络营销专员浅析现阶段下的几种网络营销推广方式
  3. wxpython实现鼠标拖动事件
  4. 采购交货期延误的原因分析
  5. 使用docker构建并测试一个基于Sinatra的Web应用程序
  6. 图像处理傅里叶变换的理解及其matlab实现
  7. Bootstrap modal使用及点击外部不消失的解决方法
  8. 3D数学之柏林噪声(Perlin Noise)
  9. jquery中的全局事件
  10. 使用linux服务器实现路由器的功能(实验)
  11. Linux find 命令大全
  12. 转载]“无法打开Internet站点 已终止操作”的解决方法
  13. 如何向中级程序员转变
  14. 2008年买书流水账
  15. Spring中如何操作JDBC
  16. 额外域控与主域控之间的数据同步
  17. 计算机小知识140,电脑小知识140个小技巧(7)
  18. 弹性云服务器的规格系列,弹性云服务器的规格系列
  19. 网易我的世界下的服务器目录在哪个文件夹,网易我的世界手机版存档导出在哪个文件夹 | 手游网游页游攻略大全...
  20. OpenGL(十三) 天空盒 的 shader 实现

热门文章

  1. QQ空间玩吧HTML5游戏引擎使用比例分析
  2. Qt自定义控件的实践——电池电量控件
  3. 普通人创业,不开实体店或者网上店铺,你能干啥?
  4. oracle游标添加数据,Oracle使用游标更新数据
  5. raptor流程图赋值语句_用raptor软件画出以下程序的流程图,将结果的截图复制到答题框中...
  6. ChatGLM-6B 安装试用
  7. 高三计算机教学计划,高三上学期教学教学计划集锦5篇
  8. C#:实现gnome sort 侏儒排序算法(附完整源码)
  9. 紫荆花开之say love to the girl you love
  10. sublime text 打开txt文档乱码问题