英语原文共 8 页
摘要
我们训练了一个大型深度卷积神经网络来将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 前言
四年前,由Yann LeCun和他的合作者撰写的一篇论文被领先的计算机视觉会议拒绝,理由是它使用了神经网络,但是没有提供如何设计视觉系统。当时,大多数计算机视觉研究人员认为,视觉系统需要仔细地手工设计,利用对细节的详细了解完成任务。他们认为,在自然图像中分类对象的任务将永远不会通过简单地呈现图像的示例和它们包含在目标中的对象的名称来解决。
在视觉研究界,许多人没有意识到的是,需要程序员仔细手工设计的方法,如果理解域,就不会像方法那样扩展。 不能用强大的通用学习程序代替程序员。有了足够的计算量和足够的数据,学习就比编程更适合复杂的任务,这些任务需要集成许多不同的、有噪音的线索。
四年前,当我们在多伦多大学时,我们的深层神经网络叫“超级”视觉几乎使识别自然图像中的物体的错误率减半,并且在计算机视觉中触发了逾期的范式转换。图4显示了监管可以做的一些示例。
监督学习是从20世纪80年代被广泛研究的多层神经网络发展而来的。这些网络使用了多层特征检测器,这些特征检测器都是从训练中学到的。神经学家和心理学家曾假设,这种特征检测器的层次结构将提供一种可靠的方法来识别物体,但他们不知道这种层次结构是如何实现的。20世纪80年代有很大的研究发现,因为有几个不同的研究小组发现,可以使用相对较高的水平有效地训练多层特征检测器。相对的前向算法称为反向传播算法,可用来计算每幅图像的分类性能,整个网络的分类性能取决于每个连接的权重值。反向传播在各种任务中效果很好,但在1980年代,它没有达到其拥护者的很高期望。特别是,它被证明是非常难学习的。从随机初始权值学习深度神经网络太困难了。20年后,我们知道出了什么问题:为了让深层神经网络发展,它们需要更多的标记数据和更多的计算。
2 绪论
最近的物体识别方法都应用了很重要的机器学习方法,为了提高他们的表现,我们可以收集更大的数据集,学习训练更强大的模型,并用更好的技术来避免过拟合。直到最近,有标签的数据集都是相对较小的,一般只有万张的数量级(比如【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中可获得的存储数量,以及可忍受训练时间所限制。我们的网络需要在两台GTX 580 3GB GPUs训练五至六天。我们所有的实验都表明,只要等到更快的GPU和更大的数据集出现,其结果能够被进一步提高。
3 数据集
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.1 ReLU非线性
对神经元输出f的标准建模方法是将输入x函数变换为f(x) = tanh(x)或f(x) = (1 e-x)-1。从梯度下降的训练时间而言,这种饱和的非线性比使用非饱和的非线性f(x) = max(0,x)要慢得多。根据Nair和Hinton说法【20】,我们让神经元使用这种非线性——修正线性单元(ReLUs)。使用ReLU的深度卷积神经网络比使用tanh的网络训练速度快几倍。
图一展示了一个特定的四层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网络所需的训练时间要稍微少一些。
ReLUs有一个很赞的属性,它们无需对输入数据进行归一化来避免其饱和。如果至少有一些训练样例为ReLU产生了正输入,那么这个神经元就会进行学习。然而,我们还是发现下面这种归一化的模式能够更好地泛化。设由第i个内核计算(x, y)位置的ReLU非线性的活动为aix,y,反应归一化(response-normalized)活动bix,y如下公式所示:
其中,累加公式中的n表示同一空间GPU上邻接于该位置的所有内核映射的数量,N表示这一层的所有内核数。内核映射的顺序当然是任意的,并且是在训练之前就定好了的。 这种反应归一化(response normalization)实现了一种模仿生物神经元的横向抑制,让神经元在利用不同内核进行计算的大规模活动中产生竞争。常数k,n,alpha;和beta;是超系数,它们的值由验证集决定。我们取k = 2, n = 5,alpha;= 10-4,beta; = 0.75.我们在特定层使用ReLU非线性之后应用这种归一化。这种模式与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个类别的预测。我们的网络采取取最大值的多标量罗吉斯回归,它与maximizing the average across training cases of the log-probability of the correct label under the prediction distribution等价。第2、4、5个卷积层的内核只与前一层与自己同在一个GPU上的内核映射相连接。 第三层的内核与全部的第二层内核映射相连接。全连接层的神经元与上层神经元全都有连接。 反应归一化层跟在第二个卷积层后面。最大值池化层(如3.4所讨论的)跟在反应归一化层后面和第五个卷积层后面。ReLU非线性被应用在每个卷积层和全连接层。
第一个卷积层的输入是224 times; 224 times; 3的图像,然后用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运行某一个层画在这幅图上部的那部分的同时,另一
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。