深度学习 AlextNet翻译

使用深度卷积神经网络进行数据集分类

 

摘要

         我们训练了一个大型的深度卷积神经网络,将数据集 LSVRC-2010里的1百20万高清图片分成1000分类。在测试数据集中,我们top-1和top-5的的错误率为37.5%和17.0%比之前的state-of-the-art好很多。这个神经网络,使用了6千万个参数和65万个神经元,包括5个卷积层,和一些池化层,和3个使用1000分类的softmax分类器的全连接层。为了使得训练快一些,我们使用non-saturation 神经元和一个非常高效的GPU来进行卷积操作。为了减少过拟合,在全连接层中我们使用了最近被研究出来正则化方法“dropout”,它的效果非常好。我们在ILSVRC-2012比赛中也加入了这个方法的不同形式,取得了top-5测试集错误率15.3%的成绩,第二名为26.2%。

 

1.介绍

         目前处理物体识别的方法是使用机器学习的方法。为了改善它的性能,我们收集了大量的数据集,训练了更有效的模型,使用更好的技术防止过拟合。直到最近,标签图片的数据集仍然很少——大概只有万张左右(例如NORB [16], Caltech-101/256 [8, 9], and

CIFAR-10/100 [12])。简单的识别任务可以使用这些小量的数据集来达到很好的效果,特别是它们使用labed-preserving 变换来增加数据集。例如,目前错误率最低的MNIST数字识别任务(<0.3%)已接近人类的识别水平。但是物体在实际的展示中要考虑到其可变性,所以要使用大量的训练来使得模型能识别它们。确实,这些缺点是这些小数据集被广泛公认的,但是它使得收集到百万张数据集成为了可能。新的大型数据集包括LabelMe[23](它包含千万张被完全分割的图片)和ImgeNet[6](它包含超过1500万张被标记的高清图片,覆盖22000个分类)。

         要从要从百万张图片中学习1000多种事务,我们需要一个具有巨大学习能力的模型。然而,极度复杂的物体识别任务很难被具体化,即使它的数据集有NmageNet一样大,所以我们的模型需要有prior knowlegde来补充我们缺失的数据。卷积神经网络(CNNs)就构成了这类模型 [16, 11, 13, 18, 15, 22, 26]。它的学习能力可以通过改变网络的深度和宽度来控制,通过图片的本质可以做出强大而准确的假设(换句话说,统计数据的平稳性和像素位置的依赖关系)。因此,与具有相同的网络层数的标准feedforward神经网络相比,CNNs具有更少的连接和参数,所以使得它更容易被训练,虽然它理论上最好,但在性能上稍微比feedforward稍微差些。

         尽管CNNs有这些吸引人的品质,有相对有效的局部结构,但它仍需过分应用大量的高清图片。幸运的是现在有GPU,配合高度优化的2D卷积,充分的促进了interestingly-large CNNs的训练,而且目前的数据集例如ImageNet包含了足够的标签样本来训练模型,不会出现严重的过拟合情况。

         本文的主要贡献如下:基于ImgaeNet的子集(ILSVRC-2010和ILSVRC-2012)我们训练了一个最大的卷积神经网络,并取得了目前最好的结果。我们写了一个高度优化的2D卷积GPU实现,以及训练卷积神经网络的操作步骤,我们将会将其公之于众。我们的卷积神经网络包含一线新的和与众不同的特点用于提高的成绩和减少训练的时间,细节在第3章中。这样庞大的网络会出现过拟合问题,即使拥有120万个标签样本,所以我们使用了几个有效的技术来防止过拟合的发生,细节在第4章中。我们的网络最终包括4个卷积层和3个权连接层,这个深度看起来很重要:我们发现如果移除任何一个卷积层(每个卷基层拥有的模型参数不超过整体的1%)都会导致性能下降。

         最后,这个网络的大小受制于目前GPU的存储能力以及我们能忍受的训练时间。我们使用两块GTX580 3GB GPUs训练了5到6天。如果有更快的GPU和更大的数据集,我们的所有实验结果都可以被改进。

2.数据集

ImageNet是一个超过150万个标注的高清图片数据集,它属于大约22000所大学。这些图片从网上收集而来,使用Amazon’s Mechanical Turk crowd-sourcing工具进行人为的标注。从2010年开始,帕斯卡视觉识别挑战的一部分,一个叫做ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)的比赛每年都会举行。ILSVRC使用了ImgeNet的子集,它具有1000多个分类,每个分类有大概1000张图片。总计,ImgaeNet大概有12万张训练图片,50000张验证图片和150000张测试图片。

只有ILSVRC-2010这个版本的测试集设置了可用的标注,所以在我们的实验中使用了该版本。由于我们的模型参加了ILSVRC-2012比赛,在第6章中报告了我们的在这个数据集上的结果,但这个测试集的标注不可用。在ImageNet上按照惯例会报告两个错误率:top-1和top-5,top-5错误率是指具有正确标签的测试图片不在被模型认为是最接近的5个分类之中。

ImageNet包含多种分辨率的图片,我们的系统需要一个固定不变的输入纬度。所以,我们降低图片的分辨率为256x256。拿到一张图片,我们要做的第一件事就是将图片的最短的边长缩放为256,然后从刚刚缩放后的图片中心截取256x256的大小的图片。除了减均值操作外,我们不用其他方式进行图片预处理。所以我们训练的网络是在RGB像素标准化后进行的。

 

3.构架

      3.1 ReLU Nonlinearity

神经元的输出的一般方式一般是这样的,输出函数f表示,输入为x它们的关系式为f(x)=tanh(x)或

在训练时间和梯度下降的关系中,饱和的非线性函数(f(x)=tanh(x)))比非饱和的非线性函数(f(x)=max(0,x))要梯度下降的慢。根据Nair和Hinton[20]的说法,我们涉及到的神经元使用非线性函数做为修正线性单元(ReLUs)。使用ReLUs的深度卷积神经网络的效率要比使用同等数量tanh单元的卷积神经网络快几倍。如图1所示,

图1:一个四层的卷积神经网络使用ReLUs(实线)在CIFAR-10数据上的训练错误率到达25%的时间要比使用相同网络使用tanh神经元(虚线)的效率快6倍。为了使得训练网络的速度尽量快,每个网络的学习率都是单独选择的。没有使用任何类型的正则化。事实证明不同数量的网络结构会产生不同的影响,但是使用ReLUs的卷积神经网络的学习率要比使用饱和神经元的网络快几倍的情况是相同的。

这幅图显示了四层卷积网络使用CIFAR-10数据集进行训练错误率降低到25%时所需的迭代次数。这张图表名,如果我们使用传统的饱和神经元即使我们使用了如此大的神经网络,我们还没有成功的完成实验。

我们不是第一个考虑要替换CNNs中传统神经元的人。例如,Jarrettet al.[11]称使用非线性函数f(x)=|tanh(x)|和类型对比标准化后进行局部均值池化在Caltech-101数据集上运行效果非常好。然而,在这个数据集上主要考虑的是防止过拟合,所以他们关注的效果和我们要使用ReLUs加快拟合速度能力的关注点是不同的。更快的学习在具有大数据集的大模型训练上会产生很大的影响。

 

      3.2使用多GPU训练

一个3GB显存的GPU GTX580,这限制了在它上面训练的网络的最大尺寸。事实证明120万张图片用于训练网络是足够的,但是对于单GPU来说这个数量太大了。所以我们通过两个GPU将网络铺开。目前的GPU非常适合进行GPU并行操作,它们可以直接对另一块GPU进行读写数据操作,不需要通过主机内存。我们采用的并行方案本质上市将核(或神经元)平分在每个GPU上,另外使用了一个技巧:只在特定的层上进行GPU通信。例如,layer3的核的输入是从layer2所有的核映射而来的。然而,layer4的核的输入是用layer3映射而来的,它们处于用一个GPU上。选择合适的连接方式是个交叉验证时需要考虑的问题,但这允许我们精确的调整通信单元的数量,直到它的计算量到达一个可接受的范围。

最后的结构与Ciresan等人的“columnar”CNN有些相似,与他们不同的是我们的column不是独立的(见图2)。与将每个卷积层的核平分在GPU上 训练的方案相比,这个方案将top-1和top-5的错误率降低了1.7%和1.2%。这个双GPU网络的方案比单GPU网络(注2)的方案稍微减少了训练时间。

注2:单GPU网络实际上与双GPU网络在最后的卷积层上拥有同样数量的核。这是因为大多数网络的第一个全连接层上的参数,是最后一层全连接层的输出。所以为了使得两个网络拥有同样数量的参数,我们没有平分最后一层卷积层(也没有平分后面跟着的全连接层)。所以这个比较是有偏向于单GPU的,因为它比双GPU一半的网络要大。

 

      3.3 Local Response Normalization

ReLUs函数有个非常好的特性,那就是它不需要输入数据进行归一化来防止它们饱和。如果一些样本对ReLU产生了正输入,那么将会在这个神经元上进行学习。然而,我们仍然发现接下来的局部响应归一化有助于泛化。表示核i对应在(x,y)上的激活函数,然后应用ReLU非线性计算,响应归一化激活函数由以下式子表示:

 

求和运算在n个“毗邻的”核映射的同一位置上执行,N是本层的卷积核数目。核映射的顺序当然是任意的,必须在训练前确定。响应归一化执行是侧抑制的一种形式,这是由在真正的神经元中发现的类型产生的启示,为使用不同核进行神经元输出计算的较大活动创造了竞争。常数k,n,α和β是超参数,它们的值通过验证集确定;我们使用k=2,n=5,α=1E-4和β=0.75.我们在特定层中使用ReLU非线性化后使用标准化(见3.5节)。

这个方案与Jarrett等人的局部对比标准化方案有些相似,但是我们的方案将会更正确的称为“亮度标准化”,由于我们没有减去均值。响应标准化分别降低了top-1 1.4%的错误率和top-5 1.2%的错误率。我们同样证实了这个方案中CIFAR-10这个数据集中同样有效:4层CNN不用标准化时13%错误率,使用标准化时有11%的错误率。

 

         3.4重叠池化

CNNs中的池化层概括了相同核映射下相邻的神经元的输出。通常,相邻池化单元归纳的区域(summarizing a neighborhood)是不重叠的(例如[17, 11, 4])。确切的说,一个池化层可以包含一组相隔s像素的池化单元,每个大小为zxz的归纳区域以局部池化单元为中心。如果我们设置s=z,我们会得到传统的局部池化,就像通常在CNNs中使用的。如果我们设置s<z,我们将得到一个重叠池化。这就是我们在我们的网络中使用s=2,z=3的原因。这个方案与产生相同规模输出的没有进行重叠池化s=2,z=2的方案相比将分别减小top-1 0.4%的错误率,top-5 %3的错误率。我们发现使用重叠池化后再训练模型的过程中不容易发生过拟合。

 

         3.5整体构架

         现在准备开始介绍我们的CNN整体构架。就像图2描述的那样,这个网络包含八个具有权重参数的层;前5个是卷积层,剩下的三为全连接层。最后一个全连接层的输出是1000-维softmax分类器的输入,softmax分类器产生了1000类标签的分布。在我们的神经网络中最大化多项的逻辑回归的目标,这等价于最大化预测分布下训练样本正确标签的对数概率的均值。

       第二,第四,第五卷积层的核是被唯一的核映射连接的,这些核映射存在于在同一块GPU的前一层中(见图2)。第三层的核与第2层的所有核映射相连。全连接层的神经元被连接到所有上一层的神经元上。第一、第二个卷积层后面是响应归一化层。最大池化层,在3.4章中有描述,跟着响应归一化层,并跟着第5个卷积层。ReLU非线性函数应用于每个卷基层和全连接层的输出上。

图2:我们的CNN构架说明,明确的描述了分别在两个GPU上的职责。上面一部分是在一块GPU上运行的,下面一部分是这另一块GPU上运行的。两个GPU只在特定的层上进行通信。网络的输入是150,528维,网络剩下层的神经元数目分别是253,440–186,624–64,896–64,896–43,264–4096–4096–10008层)。

 

         第一个卷基层的作用是将224x224x3的输入图片用96个尺寸为11x11x3的核进行卷积操作,步长为4像素(核映射中相邻神经元感受野中心之间的距离)。第二个卷积层的输入是第一个卷基层的输出(经过响应标准化和池化后),将用256个大小为5x5x48的核进行对其卷积。第三、第四、第五卷积层之间的连接不使用任何中介层,池化层或标准化层。第三卷积层的输入是第二卷积层的输出(标准化,池化),将用384个大小为3x3x256的核对其进行卷积。第四卷积层有384个3x3x192的核,第五卷积层有256个3x3x192的核。每个全连接层有4096个神经元。

4.减少过拟合

         我们的神经网络结构有6000万个参数。虽然ILSVRC有1000个分类,每个训练样本从图像到标签的映射上强加了10比特的约束,这样会导致无法学习这么多参数而不产生过拟合情况。下面我们介绍两个解决过拟合的方法。

         4.1数据增强

         这是一种最简单而且最通用的减少过拟合的方法,使用标签保留变换人工的扩大图片数据(e.g.,[25,4,5])。我们使用了两种独特的数据增强方式,这两种方式都能通过原始图像经过很小的计算得到转变后的图像,所以转变后的图像无需存放在硬盘上。在我们的实现中,变换图像通过CPU的Python代码生成,而此时GPU正在训练前一批图像。因此这个数据增强方案是非常有效的,而且是不浪费计算资源的。

    第一种数据增强方式由图片的平移和水平翻转组成。我们随机从256x256的图片上取得224x224的图片块(和它们的水平镜像),并用这些提取出来的图片训练我们的网络。这样就通过一个2048的因子增加了我们的训练集,尽管这样使得训练集高度相关的。如果不用这个方案,我们的网络会遇到大量的过拟合情况,这样我们不得不使用更小的网络。在测试阶段,通过提取5个224x224的图片块(4个角落位置的图片块和一个中心位置的图片块)和它们的水平镜像(因此一共有10个图片块)做网络预测,然后把这10个图片块经过softmax层产生的预测结果做平均处理。

         第二种数据增强方式是变更训练图片的RGB通道的强度。明确的说是,我们在整个ImageNet训练集上对RGB像素值集合执行PCA。对于每幅训练图像,我们加上多倍找到的主成分,大小成正比的对应特征值乘以一个随机变量,随机变量通过均值为0,标准差为0.1的高斯分布得到。所以每个RGB图片的像素是我们增加了以下的数量

,其中分别是RGB像素值3x3协方差矩阵的第i个特征向量和特征值,上述的随机值。每个在每张训练中的图片上只会被使用一次,直到这张图片再次被训练这个点将被重新使用。这个数据张强方案抓住了一个自然图片的特性,那就是,改变的是光照的强度和颜色,物体的本质是不会发生改变的。这个方案减少了top-1 1%的错误率。

         4.2Dropout

         结合不同模型的预测结果来减少测试误差是非常有效的方法[1,3],但是对于一个要训练几天的大网络来说它是非常奢侈的。然而,有一个非常有效的模型结合版本,它只花费两倍的训练成本。这是最近引进的技术,叫做“dropout[10], 它会以0.5的概率对每个隐层神经元的输出设为0被“dopped out”的神经元不参与前向传播和方向传播。因此每次的输入是不一样的,神经网络像是一个不同的构架,但是这些构架拥有相同的权重参数。这个技术减小了神经元两虎相互适应的复杂度,由于一个神经元不依赖于其他特殊神经元的存在。所以,每个神经元被迫学习更多的鲁棒特征,这对于结合不同的神经元随机子集是非常有用的。在测试阶段,我们使用所有的神经元输出乘以0.5,对指数级的许多失活网络的预测分布进行几何平均,这是一种合理的近似。

       我们在图2的第一个两个全连接层中使用了dropout。如果没有dropout,我们的网络将会产生大量的过拟合现象。大致上使要求收敛的迭代次数翻了一倍。

5.细节

         我们使用随机梯度下降,batch size 为128, momentum 为0.9,weight decay为0.0005的参数来训练我们的模型。我们发现小数量的权重衰退对于模型的训练师非常重要的。换句话说,权重衰退不仅仅是正则化:它减小了模型的训练误差。跟新w权重参数的规则是

这里i是迭代次数,v是momentum的值,是学习率,是目标函数对w,在上的第i批导数的平均数。

         我们使用均值为0,标准差为0.01的高斯分布对每一层的权重进行初始化。我们用常量1初始化第二、第四、第五卷积层和全连接层隐层的偏置。这个初始化加快了早期的学习阶段(为ReLUs提供正输入的阶段)。其他层的偏置我们用常数0来进行初始化。

       在所有层中我们使用相同的学习率,我们在训练的过程中进行了手动的调整得到的。The heuristic which we followed was to divide the learning rate by 10 when the validation error rate stopped improving with the current learning rate.学习率初始值为0.01,在停止前它将会减小三次。我们在120万图像的训练数据集上训练神经网络大约90个循环,在两个NVIDIA GTX 580 3GB GPU上花费了五到六天。

 

PS:原文还有第6章-结果和第七章-讨论的,个人觉得不怎么重要就没翻译了。感兴趣的同学可以去找原文看看。

原文及本翻译的文档下载路径:https://download.csdn.net/download/cx415462822/10613846

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值