英语原文共 9 页,剩余内容已隐藏,支付完成后下载完整资料
基于深度卷积神经网络的ImageNet分类
摘要
我们训练了一个大型深度卷积神经网络来,将ImageNet LSVRC-2010 数据集中的 120 万张高清图片分到1000 个不同的类别中。在测试数据中,我们将 Top-1 错误率(分配的第一个类错误率)和Top-5 错误率(分配的前五个类错误率)分别降到了37.5%和 17.0%,这比之前的技术水平要好得多。这个神经网络拥有6千万的参数和65万个神经元,共有五个卷积层,其中一些卷积层下面还有最大池化层,还有利用 softmax函数进行1000类分类的最后三个全连接层。为了让训练速度更快,我们使用不饱和神经元,并利用高效的GPU实现卷积操作。为了减少全连接层的过拟合,我们采用了一种最近研发出来的正则化方法——“DROPOUT”,它被证明十分有效。我们也在比赛中加入了这一模型的一个变体,与第二名的26.2%相比,我们通过将TOP-5错误率降到了15.3%而获胜。
1 引言
目前的物体识别方法主要利用机器学习方法,为了改善他们的性能,我们可以收集更大的数据集,学习训练更强大的模型,并用更好的技术来避免过拟合。直到最近,有标签的数据集都是相对较小的,一般只有万张的数量级(比如【 16, 8, 9, 12】)。使用这个数量级的数据集可以很好地解决简单的识别任务, 特别是如果使用保留标签的转换来增强它的话。比如,现在在 MNIST 数据集上最低的数字识别错误率已经接近了人类的认知水平( lt;0.3%)【 4】。但是模型识别现实背景中物体的能力就表现得不太稳定了,所以为了训练识别这些物体,提供大量的数据集是很有必要的。实际上,使用小数据集的缺陷已经被普遍认同了,但直到最近,收集百万个有标签图片的数据集才成为可能。这些新的大型数据集包括 LabelMe【 23】(包含大量被完全分割的图片),还有 ImageNet【 6】(由 1500 万张被标记的高清图片组成,覆盖了 2.2 万个类别)。
为了从百万张图片中了解到数千个物体,我们需要一个有强大学习能力的模型。然而,物体识别任务极高的复杂度意味着,即使拥有 ImageNet 这么大的数据集,这个问题也很难被具体化。所以我们的模型也需要大量先验知识去补全所有缺失数据。卷积神经网络( CNNs)就是一种这样的模型[16, 11, 13, 18, 15, 22, 26]。它们的学习能力可以通过控制网络的深度和宽度来调整,它们也可以对图片的本质(高层属性)做出强大而且基本准确的假设(统计上的稳定性,以及像素依赖的局部性特征)。因此,与同样大小的标准前馈神经网相比, CNNs 有更少的连接和参数,所以更易于训练,而且 CNNs 的理论最佳表现仅比前馈神经网络稍差。
虽然CNNs具有吸引人的特性,局部结构非常高效,但其应用于大量的高清图片的成本还是昂贵到可怕的。幸运的是,最近GPU 可以被应用于高度优化的 2D 卷积的实现,它们性能足够强大,能够加速大型 CNNs 的训练过程。而且最近的数据集,比如 ImageNet 包含了足量的有标签样本,可以用来训练这些模型,而没有太严重的过拟合。
本文的主要贡献包括:我们在 ImageNet 的 2010和 2012 数据集集上训练了最大的 CNNs 之一,并且达到了迄今为止最好的结果。我们编写了一个高度优化的 2D 卷积的 GPU 实现,以及其他所有训练 CNNs 的固有操作,并将其公之于众。我们的网络包含一系列新的不同凡响的特性,这提高了它的表现性能,减少了它的训练时间,具体情况在第三章介绍。即使我们拥有 120 万的标签样例, 我们的网络的巨大体积也使得过拟合成了一个严重的问题,所以我们需要一系列技术去克服过拟合,这将在第四章中描述。我们的网络最终包含 5 个卷积层和 3 个全连接层,这个深度也许是很重要的:我们发现去掉任意一个卷积层都会导致更差的表现,即使每个卷积层仅包含不到 1%的模型参数。
最后,网络的大小主要被 GPU 中可用内存,以及我们可忍受训练时间所限制。我们的网络需要在两台GTX580 3GB GPUs 训练五至六天。我们所有的实验都表明,只要等到更快的GPU 和更大的数据集出现,其结果能够被进一步改善。
2 数据集
ImageNet 是一个拥有超过 1500 万张带标签的高清图片的数据集,这些图片大约属于 2.2 万个类别。这些图片收集自网络并由亚马逊的 Turk 群智工具进行人工标记。从 2010 年开始,作为帕斯卡物体可视化挑战的一部分,一项被称为 ILSVRC 的比赛每年都会进行。ILSVRC 使用ImageNet 的一个子集,这个子集包含大约 1000 个类别,每个类别大概包涵1000张图。总共大概有 120 万张训练图片,5万张验证图片和15万张测试图片。
2010 年的 ILSVRC 数据集是唯一一个测试集标签可得的版本,所以我们用它进行我们的大部分实验。因为我们也把我们的模型加入了 2012 年的ILSVRC 比赛,所以我们在第六章也讨论了这个数据集上的实验结果,但其测试集标签不可得,在ImageNet 上,通常检验两类错误率: TOP-1 和TOP-5, TOP-5 错误表示测试图片的标签不在模型所认为的可能性最大的五个标签中。
ImageNet 包含各种清晰度的图片,而我们的系统要求输入维度恒定,因此,我们对图片进行采样,获得固定大小的 256X256 的分辨率,对于每张长方形的图,我们将短边按比例调整为 256,然后取中心区域的 256X256 像素。 我们并未使用其他方法对图片进行预处理,除了把每个像素减去整个训练集的平均值,所以我们的模型是在原始的 RGB 像素值上训练出来的。
3 模型体系结构
网络的体系结构如图2.它包含8个学习层:五个卷积层3个全连接层。接下来,我们讨论一些我们的网络中创新的,或者不常见的结构。3.1~3.4节按照我们心目中对它们重要性的评估进行排序,越重要越靠前。
3.1ReLU非线性
对神经元输出的f的标准建模方法是将输入x函数变换为:
从梯度下降的训练时间而言,这种饱和的非线性比使用非饱和的非线性f(x) = max(0,x)要慢得多。根据Nair和Hinton说法【20】,我们让神经元使用这种非线性——修正线性单元(ReLUs)。使用ReLU的深度卷积神经网络比使用tanh的网络训练速度快几倍。
图一:具有ReLUs(实线)的四层卷积神经网络在CIFAR-10上达到25%的训练错误率,比具有双曲神经元(虚线)的等效网络快六倍。 每个网络的学习率都是独立选择的,以尽可能快地进行培训。 没有采用任何形式的正规化。 这里展示的效应的大小随网络架构而变化,但具有ReLU的网络一直学习比饱和神经元快几倍。
图一展示了一个特定的四层CNN在CIFAR-10数据集上达到25%训练错误所需要的迭代次数。这张图显示,如果我们采用传统的饱和神经元,我们将不可能为这项工作训练如此庞大的神经网络。
我们并不是最早考虑替换传统CNN神经元模型的人。比如,J【11】等人宣称利用f (x) = |tanh(x)|非线性在Caltech-101数据集上做对比度归一化(Contrast Normalization,CN)和局部平均值池化表现得很好。 然而,关于这个数据集的主要问题是要防止过拟合,所以他们观察到的效果,与我们报告的使用ReLUs时对训练集的适应(fit)累积能力不同。更快的学习对于在大型数据集上训练大型模型的表现有重大影响。
3.2多GPU并行训练
单个的GTX580GPU只有3G的存储空间,这会限制能够在其上训练的网络大小。充分训练网络需要120万张训练样本图,这对于一个GPU而言量太大了,所以我们将网络分布在两个GPU上。 现在的GPU非常适合做跨GPU并行运算,因为它们可以直接向彼此的存储中做读写操作,而无需通过宿主机存储。 我们采用的这种并行模式主要是将各一半的网络内核(或神经元)放在每个GPU上,然后再采用一个小技巧:将GPU通信限制在某些特定的层上。 这意味着,比如,第三层的内核从所有的第二层内核映射(kernel map)中获得输入,但是,第四层的内核只从和自己在同一个GPU上的第三层内核中获得输入。 选择一种连接模式对于交互验证是个问题,但这允许我们精确调整连接的数量,直到计算量落入一个可接受的范围内。
由此产生的结构会和所谓的“柱状(columnar)”CNN有些类似(由Ciresan等人【5】开发),只是我们的“柱子”不是独立的(见图2)。与用一个GPU训练每个卷积层只有一半的内核的网络相比,这种结构将我们的TOP-1错误和TOP-5错误分别降低了1.7%和1.2%。双GPU结构网络比单GPU网络所需的训练时间要稍微少一些。
3.3 局部反应归一化
ReLUs有一个很赞的属性,它们无需对输入数据进行归一化来避免其饱和。如果至少有一些训练样例为ReLU产生了正输入,那么这个神经元就会进行学习。 然而,我们还是发现下面这种归一化的模式能够更好地泛化。 设由第i个内核计算(x, y)位置的ReLU非线性的活动为,反应归一化活动如下公式所示:
其中,累加公式中的n表示同一空间上邻接于该位置的所有内核映射的数量,N表示这一层的所有内核数。内核映射的顺序当然是任意的,并且是在训练之前就定好了的。 这种反应归一化实现了一种模仿生物神经元的横向抑制,让神经元在利用不同内核进行计算的大规模活动中产生竞争。常数k,n,alpha;和beta;是超系数,它们的值由验证集决定。我们取k = 2, n = 5, alpha;= 10-4, and beta; = 0.75.我们在特定层使用ReLU非线性之后应用这种归一化(见3.5)。
这种模式与J【11】提出的局部对比度归一化有点类似,但我们的方法更准确的描述应该是亮度归一化,因为我们并不减去均值。 反应归一化将我们的TOP-1和TOP-5错误分别降低了1.4%和1.2%。我们还在CIFAR-10数据集上验证了该模式的效果:四层CNN不用归一化错误率为13%,用了之后降到了11%。
3.4重叠池化
CNN中的池化层负责对同一内核映射中相邻的神经元组的输出求和。一般地,被邻接的池化单元求和的邻居节点是没有重复的【17,11,4】。 为了更加精确,一个池化层可以看做由相隔s个像素占据的池化单元组成的网格所构成,每个单元负责对相邻的z*z范围的中心区域求和。若设s=z,我们就能够获得用于大多数CNN的传统的局部池化方法。若设slt;z,我们就得到了有重叠的池化。 这就是我们在自己的网络中使用的方法,s=2,z=3.与无重叠的s=z=2相比,这一模式在产生相同维度的输出时分别将TOP1和TOP5降低了0.4%和0.3%。 我们还观察到,采用有重叠的池化能稍稍让模型更难过拟合。
3.5整体结构
现在我们可以描述我们的CNN的整体结构了。如图2,这个网络包含8个加权的层:前五个是卷积层,后三个是全连接层。 最后一个全连接层输出一个1000维的softmax来表达对于1000个类别的预测。 我们的网络采取取最大值的多标量罗吉斯回归,这相当于在预测分布下最大化正确标签对数概率的训练案例的平均值。
第2、4、5个卷积层的内核只与前一层与自己同在一个GPU上的内核映射相连接。 第三层的内核与全部的第二层内核映射相连接。全连接层的神经元与上层神经元全都有连接。 反应归一化层跟在第二个卷积层后面。最大值池化层(如3.4所讨论的)跟在反应归一化层后面和第五个卷积层后面。ReLU非线性被应用在每个卷积层和全连接层。
第一个卷积层的输入是224 times; 224 times; 3【注:3是RGB】的图像,然后用96个11 times; 11 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个神经元。
图2:一个关于我们的CNN的结构的描述,明确地勾勒出两个GPU之间的对应关系。一个GPU运行某一个层画在这幅图上部的那部分的同时,另一个GPU会运行同一层画在这幅图下部的那部分。两个GPU只在特定的层通讯。网络的输入是150,528维的,而除输入层外,余下五个卷积层和三个全连接层分别有253440,186624,64896,64896,43264,4096,4096,1000个神经元。
4减少过拟合
我们的神经网络拥有6000万的参数,虽然ILSVRC的1000个类别将从图片到标签的映射限制在10个bits,这依然不足以训练这么多的参数而不造成过拟合。下面,我们将介绍两种对付过拟合的基本方法。
4.1数据集放大
最简单最常用的减少过拟合的方法就是利用标签保存变形技术人工放大数据集【如文献25,4,5】。我们采取了两种不同形式的数据放大,它们都允许在仅对原图做少量计算的情况下产生变形的新图,所以变形后的新图无需存储在硬盘中。 在我们的实现中,变形的新图由Python在CPU上计算产生,与此同时,GPU仍在计算其他的之前批次的图片。所以这种放大数据集的方式是很高效很节省计算资源的。
第一种放大数据集(产生新图)的方式由图片翻译和水平镜像组成,我们通过从256X256的图片中随机抽取224X224的区块(及其水平镜像)来实现这种方法,并在这
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[467187],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。