您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 基于卷积神经网络的ImageNet分类器
基于卷积神经网络的ImageNet分类器引言1数据集2构架3减少过度拟合4训练细节5目录Contents实验结果6引言1Part本文中,作者训练了一个大型的深度卷积神经网络。作者将2010年ILSVRC挑战杯包含的120万高分辨率图像分类100种不同的类别。在测试数据方面,作者取得了远超过去最佳水平的效果,分别为17%和37.5%的top-5和top-1错误率。有着6000万参数和65万神经元的神经网络由5个部分连接Max池化层的卷积层和3个全连接层连带着1000路softmax组成。为了加快训练速度,作者采用非饱和神经元和一个高效的卷积操作的GPU执行器。为了降低全连接层的过拟合,作者采用了一项近期发展的已被证明有效的名为dropout的正则化方法。数据集2PartImageNet是一个属于大约有22000类别的超过1500万标记的高分辨率图像的数据集。图片是从网上收集的并且被人工添加标识。ILSVRC-2010是ILSVRC的唯一可用的有标识的测试集版本也是作者使用的版本,而它的测试集标签无法获取的。在ImageNet上,习惯上报告两种错误率:top-1和top-5,其中top-5错误率是正确标签不在被模型认为最可能的五个标签之中的测试图像的分数。ImageNet由可变分辨率的图像组成,而我们的系统需要恒定的输入维度。因此,作者将图像欠采样到256*256的固定分辨率。给定一个矩形图像,首先重新缩放图像,使得短边的长度为256,然后从结果图像中裁剪出中心256*256的部分。除了从每个像素中减去训练集上的平均激活值之外,作者没有以任何其他方式预处理图像。所以作者在像素的(中心化的)原始的RGB值上训练了作者的网络。构架3Part88构架ReLU的非线性在多GPU上训练局部响应归一化重叠池化cnn总体构架如图2所示,这个网络包含八个带权重的层;前五个是卷积层,其余三个全连接层。最后全连接层的输出被馈送到1000路softmax,其产生1000个类别标签上的分布。我们的网络最大化多项逻辑回归函数,这相当于在预测分布下最大化正确标签的对数概率的训练案例的平均值。图2:总体架构图,明确显示两个GPU之间职责的划分。一个GPU运行图形顶部部分,另一个运行图形底部部分。GPU仅在特定层通信。网络的输入是150,528维,网络剩余层中的神经元数为253,440-186,624-64,896-64,896-43,264-4096-4096-1000。第二,第四和第五卷积层的内核仅与位于同一GPU上的前一层中的那些内核映射相连。第三卷积层的内核连接到第二层中的所有内核映射。全连接层中的神经元连接到前一层中的所有神经元。响应标准化层连在第一和第二卷积层。3.4节中描述的最大池化层连在响应规范化层以及第五卷积层。将ReLU非线性应用于每个卷积和完全连接层的输出。第一卷积层用96个大小为11*11*3的过滤器以4个像素的步幅卷积224*224*3输入图像。第二卷积层将第一卷积层的(响应归一化和池化)输出作为输入,并用大小为256×5×48的过滤器对其进行卷积。第三,第四和第五卷积层彼此连接而没有任何池化层或标准化层。第三卷积层具有连接到第二卷积层的(响应归一化和池化)输出的大小为3*3*256的384个过滤器。第四卷积层具有384个大小为3*3*192的过滤器,并且第五卷积层具有大小为3*3*192的256个过滤器。全连接层各有4096个神经元。1.去建模一个神经元的输出——作为以x为输入的函数f的标准方式是f(x)=tanh(x)或f(x)=sigmoid(x)。就梯度下降训练时间而言,这些饱和非线性即f(x)=max(0;x)比非饱和非线性慢得多。遵循Nair和Hinton,我们将具有这种非线性的神经元称为整流线性单位(ReLUs)。使用ReLU的深度卷积神经网络的训练速度比使用tanh同等规模的神经网络快上几倍。图1展示了这一点,图中显示了特定四层卷积网络在CIFAR-10数据集上达到25%训练误差所需的迭代次数。图1:具有ReLUs(实线)的四层卷积神经网络在CIFAR-10上的训练错误率达到25%,比具有tanh神经元(虚线)的网络快6倍。每个网络的学习率都是独立选择的以尽可能快地训练。没有采用任何形式的正规化。这里展示的效应的大小随网络架构而变化,但具有ReLU的网络一直学习速度比饱和神经元快几倍。结果:与一个GPU上训练的每个卷积层内核数量减少一半的网络相比,这个方案分别将我们的top-1和top-5的错误率分别降低了1.7%和1.2%。双GPU网络的训练时间比单GPU网络的训练时间稍少。作者所采用的并行化方案基本上在每个GPU上放置了一半的内核(或神经元),还有一个额外的技巧:GPU仅在某些层次上进行通信。这意味着,例如,第3层的内核从第2层的所有内核映射中获取输入。但是,第4层中的内核只能从驻留在同一GPU上的第3层中的那些内核映射接收输入。选择连通性模式是交叉验证的一个问题,但这使我们能够精确调整通信量,直到它达到计算量的可接受部分。2:在多GPU上训练单个GTX580GPU只有3GB内存,这限制了可以在其上训练的网络的最大尺寸。事实证明,120万个训练样例足以训练那些尺寸太大而不适合一个GPU的网络。因此,我们将网络分布在两个GPU上。目前的GPU特别适合于跨GPU并行化,因为它们能够直接读写对方的内存,而无需通过主机内存。结果:3:局部响应归一化作者发现以下的局部标准化方案有助于泛化。式中,ax,yi表示内核i在位置(x,y)上计算的激活值,然后通过ReLU非线性变化得到响应的标准化激活值bx,yi:总和运行在n个映射在相同空间位置上的“相邻的”内核,N是该层中核的总数。内核映射的排序当然是任意的,并且在训练开始之前确定。这种响应归一化实现了一种受真实神经元中发现的类型所激发的横向抑制形式,造成神经元输出的大数值的激活值的竞争使用不同的内核。常量k、n、α和β是超参数,其值是使用验证集确定的;我们取k=2,n=5,α=10-4和β=0.75。我们在应用某些层的ReLU非线性后应用了这种规范化作者的方案被更准确地称为“亮度标准化”,因为我们不会减去平均激活值。响应规范化将我们的top-1和top-5的错误率分别降低1.4%和1.2%。我们还验证了这种方案在CIFAR-10数据集上的有效性:没有标准化的四层CNN实现了13%的测试错误率,而有标准化的为11%。结果:4.重叠池化CNN中的池化层概括了相同内核映射中相邻神经元组的输出。一般地,被邻接的池化单元总结的邻居节点是没有重复的。更准确地说,池化层可以被认为是由间隔s个像素的池化单元的网格组成,每个总结值以集中单元的位置为中心的大小为z*z的邻域。如果我们设置s=z,我们就可以获得CNN中常用的传统局部池。如果我们设置sz,我们获得重叠池。这是我们在整个网络中使用的,s=2和z=3。结果:与产生等效尺寸的输出的非重叠方案s=2和z=2相比,该方案分别将top-1和top-5的错误率分别降低了0.4%和0.3%。我们通常在训练期间观察到重叠池的模型发现稍微难以过拟合。减少过度拟合4Part16161:数据增强最简单最常用的减少过拟合的方法就是利用标签保存变形技术人工放大数据集。作者采取了两种不同形式的数据放大,它们都允许在仅对原图做少量计算的情况下产生变形的新图,所以变形后的新图无需存储在硬盘中。在我们的实现中,变形的新图由Python在CPU上计算产生,与此同时,GPU仍在计算其他的之前批次的图片。所以这种放大数据集的方式是很高效很节省计算资源的。第一种形式的数据增强包括生成图像平移和水平反射。我们通过从256*256个图像中提取随机224*224块(及其水平反射)并在这些提取的块4上训练我们的网络来实现这一点。这使得我们的训练集的规模增加了2048倍,尽管由此产生的训练样例当然是高度相互依赖的。如果没有这个方案,我们的网络会遭受大量的过度训练,这将迫使我们使用更小的网络。在测试时间,网络通过提取五个224*224方块(四个角方块和中心方块)以及它们的水平反射(因此共有十个方块),并对网络的softmax层对十个方块进行的预测进行平均。第二种形式的数据增强包括改变训练图像中RGB通道的强度。具体来说,我们在整个ImageNet训练集的RGB像素值集上执行PCA。对于每个训练图像,我们添加多个找到的主成分,大小与相应的特征值成比例,乘以从均值为零和标准差为0.1的高斯绘制的随机变量。因此,对于每个RGB像素Ixy=[IxyR,IxyG,IxyB]T我们加入的值如下:其中,pi和λi分别是第i个特征向量和第i个3x3RGB协方差矩阵的本征值。而αi是前面所述的随机变量。对于一张特定的训练图片的所有像素,每个αi仅被抽取一次,直到这张图像再次被用于训练才会再次提取随机变量。这一方案能够近似地捕捉原始图像的一些重要特征,即那些不随光线强度与颜色变化的物体特质。这一方法把top-1错误降低了1%。17172:Dropout降低测试错误的一种有效方法是联立多种不同模型的预测结果,但这种方法对于大型神经网络来说似乎太昂贵了,需要好几天去训练。然而,有一种非常高效的模型联立方法,只需要在训练过程中消耗一到两个因子。这种新近研究出来的技术叫做“DROPOUT”,它会以50%的概率将每个隐藏层神经元置零。以这种方法被置零的神经元不再参与前馈和BP过程。所以每次一个输入进来之后,这个神经网都会被置于不同的结构,但所有这些结构共享同一套参数。这种技术降低了神经元间相互适应的复杂性,因为每个神经元都不可能依赖其他特定某个神经元的表现。因此,模型被迫学习更加健壮的特征,使之能够被许多不同的随机神经元子集使用。在测试中,我们使用所有的神经元,但是把它们的输出乘以0.5,这是一种对大量dropout网络产生的预测分布的几何均值的合理近似。作者在图2中的前两个全连接层使用dropout。否则,我们的网络会表现出严重的过拟合。dropout大概会让达到收敛所需要的迭代次数翻倍。训练细节5Part1919作者每个训练批次有128个样本,在其上采用随机梯度下降进行训练。设置增量为0.9,权值衰退因子为0.0005。作者发现小的权重衰退因子对于模型学习很重要,换句话说,权重衰退因子在这里不光是个正则化因子,它还可以减少模型错误。权值w的更新规则是:其中,i是迭代次数,v是增量,ε是学习速率。我们将每一层的权值利用均值为0方差为0.01的高斯分布随机初始化,我们用常数1初始化第2、4、5卷积层和全连接隐藏层的偏置神经元(常数单元)。这种初始化通过向ReLUs提供正输入,加速了学习的早期过程。我们将其它层的偏置神经元初始化为0。在整个学习过程中,作者在所有层都使用人工调整的相等的学习速率。作者采用的启发式方法是当验证误差不在降低时,就把当前的学习速率除以10。学习速率初始化为0.01,并在结束前减小3次。(做三次除以10)作者大概用120万张图片把我们的网络训练了约90轮,在两个NVIDIAGTX5803GBGPU上这大概要5到6天。实验结果6Part2121我们在ILSVRC-2010数据集上的实验结果归纳在表1里。我们的网络top-1和top-5测试误差分别是37.5%和17.0%。在此之前ILSVRC-2010数据集上的最好的比赛纪录是对在不同特征上训练的留个稀疏自编码器取平均,top-1和top-5测试误差分别是47.1%和28.2%。之后,已出版的最佳结果是一种对两个在不同取样密度的费舍向量上训练的分类器取平均的方法,结果是45.7%和25.7%。表1:ILSVRC-2010测试集的结果比较。斜体字是其他人取得的最好结果。作者在表2中展示了我们的结果。在这一段的余下部分,我们使用验证误差代替测试误差,因为根据作者的经验,它们的差距不会大于0.1%(见表2)。本文描述的CNN实现了18.2%的top-5错误率。五个相似CNN的预测值的平均值的误差率为16.4%。培训一个CNN,在最后一个池层
本文标题:基于卷积神经网络的ImageNet分类器
链接地址:https://www.777doc.com/doc-3946233 .html