赞
踩
AlexNet网络可以被称为卷积神经网络的“开山之作”,精度和参数量相对后面的模型不是很优秀,但是卷积神经网络之所以可以迅速崛起,AlexNet起着至关重要的作用。
卷积层,卷积过程:
池化层,下采样过程:
减少feature map大小,减少计算量
1998年,LeCun提出的LeNet-5,可以实现数字的分类
ReLU函数的优点:
使用两个GPU进行模型训练,卷积层全部使用两路GPU其中两个支路是分开的,每一路之间是串行的。到了最后全连接层全部连接起来。
注:原文input大小是224x224不符合整个计算过程,应该是227x227
两个GPU训练出来的卷积核特征不同:
各层参数
各层参数量和每秒运算次数
将每一层的每个神经元与周围的N个神经元进行归一化
这样做可以让同一位置不需太多高激活神经元,模仿人类的神经元激活,一个神经元激活会抑制他周围的神经元激活
计算归一化用到的式子
AlexNet通过计算得到一组相对好的参数
注:该操作没有意义,后续论文将该机制推翻
AlexNet认为重叠的池化可以防止过拟合
注:事实证明,该机制没有用
通过水平翻转和随机裁剪可以将数据扩充32x32x2 = 2048倍,还可以通过颜色调整、光照变换扩充数据集
数据增强的步骤是在cpu上进行,模型训练上一批数据时,下一次的数据通过cpu生成
随机掐死部分神经元
作用1
降低神经元之间的依赖性
作用2
模型集成作用(具体看下面论文正文)
我们训练了一个大型的深度卷积神经网络,将ImageNet LSVRC-2010竞赛中的120万张高分辨率图像分为1000个不同的类别。在测试数据上,我们实现了前1名和前5名的错误率分别为37.5%和17.0%,这比之前的最先进水平要好得多。该神经网络有6000万个参数和65万个神经元,由五个卷积层组成,其中一些层后面是最大池层,三个完全连接的层最后是1000路softmax。为了加快训练速度,我们使用了非饱和神经元和非常高效的卷积运算的GPU实现。为了减少完全连接层中的过度拟合,我们采用了一种最近开发的正则化方法,称为“dropout”,该方法被证明非常有效。我们还在ILSVRC-2012比赛中输入了该模型的一个变体,并获得了15.3%的前五名测试错误率,而第二名的错误率为26.2%。
目前的物体识别方法基本上都是使用机器学习方法。为了提高性能,我们可以收集更大的数据集,学习更强大的模型,并使用更好的技术来防止过度拟合。直到最近,标记图像的数据集还相对较小,大约有数万张图像(例如,NORB[16]、Caltech-101/256[8,9]和CIFAR-10/100[12])。使用这种大小的数据集可以很好地解决简单的识别任务,特别是如果它们通过保留标签的转换进行了扩充。例如,MNIST数字识别任务的当前最佳错误率(<0.3%)接近人类绩效[4]。但现实环境中的物体表现出相当大的可变性,所以要学会识别它们,就必须使用更大的训练集。(小数据集上刷分能到很高,但是真实世界很复杂)事实上,小型图像数据集的缺点已得到广泛认可(例如Pinto等人[21]),但直到最近才有可能收集具有数百万图像的标记数据集。新的更大的数据集包括LabelMe[23],它由数十万个完全分割的图像组成,以及ImageNet[6],它由超过22000个类别中超过1500万个标记的高分辨率图像组成。
要从数百万张图像中了解数千个对象,我们需要一个具有较大学习能力的模型。然而,对象识别任务的巨大复杂性意味着,即使像ImageNet这样大的数据集也无法指定该问题,因此我们的模型还应该具有大量的先验知识,以补偿我们没有的所有数据。卷积神经网络(CNN)构成了这样一类模型[16,11,13,18,15,22,26]。它们的容量可以通过改变深度和广度来控制,还可以对图像的性质(即统计数据的平稳性和像素依赖的局部性)做出强有力且基本正确的假设。因此,与具有相似大小层的标准前馈神经网络相比,CNN具有更少的连接和参数,因此更易于训练,而其理论上最好的性能可能只会稍差。 (卷积神经网络CNN具备很多优点,可以用于大规模图像识别)
(硬件算力和数据基础)尽管CNN具有诱人的品质,尽管其本地架构相对高效,但在大规模应用于高分辨率图像时,其成本仍然高得令人望而却步。幸运的是,当前的GPU,再加上高度优化的2D卷积实现,功能强大到足以促进有趣的大型CNN的训练,而最近的数据集(如ImageNet)包含足够多的标记示例,可以在不严重过度拟合的情况下训练此类模型。
本文的具体贡献如下:我们在ILSVRC-2010和ILSVRC-2012竞赛[2]中使用的ImageNet子集上训练了迄今为止最大的卷积神经网络之一,并取得了迄今为止在这些数据集上报告的最佳结果。我们编写了一个高度优化的二维卷积GPU实现,以及训练卷积神经网络所固有的所有其他操作,我们将其公开1。我们的网络包含许多新的和不寻常的功能,这些功能可以提高其性能并缩短其训练时间,详见第3节。我们网络的规模使得过度拟合成为一个重大问题,即使有120万个标记的训练示例,因此我们使用了几种有效的技术来防止过度拟合,如第4节所述。我们的最终网络包含五个卷积层和三个完全连接的层,网络的深度似乎很重要:我们发现移除任何卷积层(每个卷积层包含的参数不超过模型参数的1%)会导致性能降低 。(数据集及模型性能,双GPU模型并行实现,提升性能/加快训练训练的技巧,防止过拟合的技巧,网络层数的重要)
最后,网络的大小主要受到当前GPU上可用内存量和我们愿意容忍的训练时间的限制。我们的网络需要五到六天的时间在两个GTX 580 3GB GPU上进行训练。我们所有的实验都表明,只要等待更快的GPU和更大的数据集可用,我们的结果就可以得到改善。
ImageNet是一个包含超过1500万张高分辨率图像的数据集,这些图像属于大约22000个类别。这些图像是从网络上收集的,并由人类贴标员使用亚马逊的Mechanical Turk众包工具进行标记。从2010年开始,作为Pascal视觉物体挑战赛的一部分,每年都会举办一场名为ImageNet大规模视觉识别挑战赛(ILSVRC)的比赛。ILSVRC使用ImageNet的一个子集,1000个类别中的每一个都有大约1000个图像。总共大约有120万张培训图像、50000张验证图像和150000张测试图像。(Pascal VOC竞赛,ILSVRC竞赛)
ILSVRC-2010是ILSVRC的唯一一个测试集标签可用的版本,因此我们在这个版本上进行了大部分实验。由于我们也在ILSVRC-2012竞赛中输入了我们的模型,因此在第6节中,我们也报告了我们在这个版本的数据集上的结果,对于这个版本的数据集,测试集标签是不可用的。在ImageNet上,通常会报告两种错误率:top-1和top-5,其中top-5错误率是测试图像中正确标签不在模型认为最可能出现的五个标签中的部分。 (网络对一张图片给出五个预测类别结果概率从高到低)
ImageNet由可变分辨率的图像组成,而我们的系统需要恒定的输入维度。因此,我们将图像采样到256的固定分辨率256x256.给定一个矩形图像,我们首先重新缩放图像,使较短的一侧长度为256,然后裁剪出中间的256x256从生成的图像中删除256个补丁。除了从每个像素中减去训练集的平均值外,我们没有以任何其他方式预处理图像。因此,我们根据像素的(居中)原始RGB值来训练我们的网络。
(数据预处理,先resize在进行裁剪256x256,之后再将图片减去训练集中每个像素的均值)
我们的网络架构如图2所示。它包含八个学习层——五个卷积层和三个完全连接层。下面,我们将介绍我们网络架构的一些新颖或不同寻常的功能。第3.1-3.4节根据我们对其重要性的估计进行排序,最重要的部分排在第一位。
双路数据在各自GPU上训练
将神经元的输出f建模为其输入x的函数的标准方法是
就梯度下降的训练时间而言,这些饱和非线性比非饱和非线性f(x)=max(0,x)慢得多。继Nair和Hinton[20]之后,我们将具有这种非线性的神经元称为校正线性单元(ReLUs)。使用ReLUs的深度卷积神经网络的训练速度比使用tanh单元的深度卷积神经网络快数倍。图1显示了在特定四层卷积网络的CIFAR-10数据集上达到25%训练误差所需的迭代次数。这幅图表明,如果我们使用传统的饱和神经元模型,我们就无法用如此大的神经网络进行实验。(时间短,避免梯度消失)
我们不是第一个考虑替代传统神经元模型在CNNs。例如,Jarrett等人[11]声称,非线性f(x)=| tanh(x)|在Caltech-101数据集上的对比度标准化和局部平均池后尤其有效。然而,在这个数据集上,主要关注的是防止过度拟合,因此他们观察到的效果不同于我们在使用ReLUs时报告的加速拟合训练集的能力。快速学习对在大型数据集上训练的大型模型的性能有很大影响。(Caltech-101数据集比较小核心问题是解决过拟合,ImagesNet数据集规模大,核心问题是加速训练)
单个GTX 580 GPU只有3GB内存,这限制(由反向传播原理,显存中不进存储模型参数,还需存储正向传播时每一层整个batch的中间结果,bath size越大,占显存越大)了可以在其上训练的网络的最大大小。事实证明,120万个训练示例足以训练太大而无法安装在一个GPU上的网络。因此,我们将网络分布在两个GPU上。当前的GPU特别适合跨GPU并行化,因为它们能够直接读取和写入彼此的内存,而不需要经过主机内存。我们采用的并行化方案基本上将一半的内核(或神经元)放在每个GPU上,还有一个额外的技巧:GPU只在特定的层中通信。这意味着,例如,第3层的内核从第2层的所有内核映射中获取输入。然而,第4层中的内核只从第3层中驻留在同一GPU上的内核映射获取输入。选择连接模式是交叉验证的一个问题,但这允许我们精确调整通信量,直到它是计算量的可接受部分。(两个GPU只在某些层交流信息,layer3与layer2全部连接,layer4只与layer3各自一半的输出连接)
由此产生的架构与Cire¸san等人[5]采用的“专栏式”CNN有些相似,只是我们的专栏不是独立的(见图2)。与在一个GPU上训练的每个卷积层中有一半内核的网络相比,该方案将我们的top-1和top-5错误率分别降低1.7%和1.2%。两个GPU网络的训练时间比一个GPU网络的训练时间略短。(双gpu(全参数)的训练时间比单GPU(半参数)更短)
注:单GPU模型中最后一个卷积层和全连接参数数量与双GPU模型相同,因此“半参数”并非真的只有一半的参数。
RELU的理想特性是,它们不需要输入规范化来防止饱和。如果至少有一些训练例子对ReLU产生了积极的输入,学习就会在该神经元中发生。然而,我们仍然发现以下局部归一化方案有助于推广。通过a表示神经元的活动,通过在位置(x,y)处应用核i,然后应用ReLU非线性来计算,响应标准化活动,由表达式给出
其中,总和在相同的空间位置运行于n个“相邻”内核映射上,n是层中内核的总数。当然,内核映射的顺序是任意的,在训练开始之前就已经确定了。这种反应标准化实现了一种受真实神经元中发现的类型启发的侧向抑制,在使用不同内核计算的神经元输出之间产生了大型活动的竞争。常数k,n,α, 和β 是使用验证集确定其值的超参数(交叉验证);我们用k=2,n=5,α= 10^4.和β = 0.75. 在某些层中应用ReLU非线性后,我们应用了这种归一化(见第3.5节)。(类似于生物的“顶芽效应”,圣经中的马太效应:强者越强,弱者越弱)
该方案与Jarrett等人[11]的局部对比度归一化方案有一些相似之处,但我们的方案更准确地称为“亮度归一化”,因为我们不减去平均活度。响应标准化将我们的前1名和前5名错误率分别降低1.4%和1.2%。我们还在CIFAR-10数据集上验证了该方案的有效性:四层CNN在没有标准化的情况下实现了13%的测试错误率,在标准化3的情况下实现了11%的测试错误率。
注:现在该操作已经被摒弃
重叠的池化,池化步长小于池化窗口
注:该操作已经摒弃
现在我们准备好描述CNN的整体架构。如图2所示,该网包含八层重量;前五个是卷积的,其余三个是完全连接的。最后一个完全连接的层的输出被馈送到1000路softmax,该softmax在1000个类别标签上产生分布。我们的网络最大化了多项式logistic回归目标,这相当于最大化预测分布下正确标签的对数概率在训练案例中的平均值。
第二、第四和第五卷积层的内核仅连接到前一层中驻留在同一GPU上的内核映射(见图2)。第三层卷积的核与第二层的所有核映射相连。完整连接层中的神经元与前一层中的所有神经元相连。响应规范化层跟随第一和第二卷积层。第3.4节中描述的最大池层遵循响应规范化层和第五卷积层。ReLU非线性应用于每个卷积和全连接层的输出。
第一卷积层对224进行滤波227x227x3(原文是224x224x3)个输入图像,96个大小为11的内核11x11x3,步长为4像素(步长表示相邻感受野中心的距离)
第二个卷积层将第一个卷积层的(响应归一化和合并)输出作为输入,并使用大小为5的256个内核对其进行过滤5x5x 48.第三、第四和第五卷积层彼此连接,没有任何中间的池或规范化层。第三个卷积层有384个大小为3的内核3x3x256个连接到第二个卷积层的(标准化、池化)输出。第四个卷积层有384个大小为3的内核3x3x192,第五个卷积层有256个大小为3的内核3x3x192.完全连接的层各有4096个神经元。
我们的神经网络结构有6000万个参数。虽然ILSVRC的1000个类使每个训练示例对从图像到标签的映射施加10位约束,但事实证明,这不足以在不进行大量过度拟合的情况下学习这么多参数。下面,我们将介绍两种主要的方法来对抗过度拟合。
减少图像数据过度拟合的最简单也是最常见的方法是使用保留标签的变换(例如[25,4,5])人为地放大数据集。我们采用了两种不同的数据增强形式,这两种形式都允许从原始图像生成转换图像,而计算量非常小,因此转换后的图像不需要存储在磁盘上。在我们的实现中,转换后的图像是在CPU上用Python代码生成的,而GPU正在对前一批图像进行训练。因此,这些数据扩充方案实际上是无需计算的。
第一种形式的数据增强包括生成图像平移和水平反射。我们通过提取随机样本224x224从256x256的区域中(及其水平反射),并在这些提取的补丁上训练我们的网络4。这将使我们的培训集的规模增加了2048倍,尽管由此产生的培训示例当然是高度相互依赖的。如果没有这个方案,我们的网络将遭受严重的过度装修,这将迫使我们使用更小的网络。在测试时,网络通过提取五个224x224个小图(四个角面片和中心面片)以及它们的水平反射(因此总共10个小图),并将网络的softmax层对这10个面片所做的预测取平均值。
第二种形式的数据增强包括改变训练图像中RGB通道的强度。具体来说,我们在整个ImageNet训练集中对RGB像素值集执行PCA(主成分分析)。在每个训练图像中,我们添加找到的主成分的倍数, 其大小与相应的特征值乘以一个随机变量成正比,该随机变量来自一个平均值为零、标准偏差为0.1的高斯分布。因此,对于每个RGB图像像素Ixy=[IRxy,IGxy,IBxy]T,我们添加以下数量:
pi和我是第i个特征向量和3的特征值3x3 RGB像素值的协方差矩阵,以及↵i是前面提到的随机变量。每个↵对于特定训练图像的所有像素,我只绘制一次,直到该图像再次用于训练,在该点重新绘制。该方案近似地捕捉了自然图像的一个重要特性,即对象身份对照明强度和颜色的变化是不变的。该方案将top-1错误率降低了1%以上。
结合许多不同模型的预测是减少测试误差的一种非常成功的方法[1,3],但对于已经需要几天时间训练的大型神经网络来说,这似乎太昂贵了。然而,有一种非常有效的模型组合,在培训期间只需花费大约两倍的成本。最近引入的技术称为“Dropout”[10],它包括将每个隐藏神经元的输出设置为零,概率为0.5。以这种方式“退出”的神经元不参与正向传递,也不参与反向传播。因此,每次输入时,神经网络都会对不同的结构进行采样,但所有这些结构都共享权重。这种技术减少了神经元的复杂协同适应(联合依赖适应性),因为神经元不能依赖于特定的其他神经元的存在。因此,它被迫学习更健壮的特征,这些特征与其他神经元的许多不同随机子集一起使用。在测试时,我们使用所有神经元,但将它们的输出乘以0.5,这是一个合理的近似值,以获取由指数多个辍学网络产生的预测分布的几何平均值。
(多个模型集成可有效防止过拟合,但对于大型神经网络来说不经济。训练阶段每个batch随机掐死一半的神经元(将神经元输出设为0),阻断该神经元的前向-反向传播,预测阶段,保留所有神经元,预测结果乘0.5)
为什么Dropout可以避免过拟合?
我们在图2的前两个完全连接的层中使用dropout。在没有Dropout的情况下,我们的网络表现出严重的过度拟合。Dropout大约是收敛所需迭代次数的两倍。
我们使用随机梯度下降法训练我们的模型,批量大小为128个示例,动量为0.9,重量衰减为0.0005(pytorch中的Adam优化器默认weight decay是0.0005)。我们发现,这种少量的重量衰减对模型的学习很重要。换句话说,这里的权重衰减不仅仅是一个正则化器:它减少了模型的训练误差。权重w的更新规则为
我们根据标准偏差为0.01的零均值高斯分布初始化每层中的权重。我们用常数1初始化了第二、第四和第五卷积层以及完全连接的隐藏层中的神经元偏置。这种初始化通过向RELU提供积极的输入来加速早期学习阶段。我们用常数0初始化剩余层中的神经元偏差。
我们在所有层次上使用相同的学习率,在整个培训过程中手动调整。我们遵循的启发式方法是,当验证错误率不再随着当前学习率的提高而提高时,将学习率除以10。学习率初始化为0.01和 终止前减少三倍。我们通过120万张图像的训练集对网络进行了大约90个周期的训练,这在两个NVIDIA GTX 580 3GB GPU上需要5到6天的时间。
表1总结了我们在ILSVRC-2010上的结果。我们的网络实现了前1名和前5名测试集错误率分别为37.5%和17.0%5。在ILSVRC2010竞赛期间获得的最佳性能分别为47.1%和28.2%,采用的方法是对六个稀疏编码模型根据不同特征训练得出的预测进行平均[2],从那时起,最好的公布结果是45.7%和25.7%,采用一种方法,对两个分类器的预测进行平均,这两个分类器训练在Fisher向量(FV)上,由两种密集采样的特征计算得出[24]。
我们还在ILSVRC-2012竞赛中输入了我们的模型,并在表2中报告了我们的结果。由于ILSVRC-2012测试集标签不公开,我们无法报告我们尝试的所有模型的测试错误率。在本段剩余部分中,我们交替使用验证和测试错误率,因为根据我们的经验,它们的差异不超过0.1%(见表2)。本文描述的CNN实现了18.2%的前五名错误率。对五个类似CNN的预测进行平均,得出的错误率为16.4%。训练一个CNN,在最后一个池层上增加第六个卷积层,对整个ImageNet Fall 2011版本进行分类(15幅图像,22K个类别),然后在ILSVRC-2012上对其进行“微调”,错误率为16.6%。用上述五个CNN对2011年秋季发布的两个CNN的预测进行平均,误差率为15.3%。第二个最佳竞赛项目的错误率为26.2%,其方法是对根据不同类型的密集采样特征计算的FV训练的多个分类器的预测进行平均[7]。
最后,我们还报告了2009年秋季版本的ImageNet的错误率,该版本包含10184个类别和890万张图像。在这个数据集上,我们遵循文献中的惯例,使用一半的图像进行训练,另一半用于测试。由于没有确定的测试集,我们的拆分必然不同于之前作者使用的拆分,但这不会明显影响结果。我们在该数据集上的前1名和前5名错误率分别为67.4%和40.9%,通过上述网络实现,但在最后一个池层上增加了第六个卷积层。该数据集的最佳公布结果分别为78.1%和60.9%[19]。
图3显示了由网络的两个数据连接层学习的卷积核。该网络已经学习了各种频率和方向选择内核,以及各种彩色斑点。请注意,由于第3.5节中描述的连接受限,两个GPU表现出了专门化。GPU 1上的内核基本上是颜色不可知的,而GPU 2上的内核基本上是颜色特定的。这种专门化发生在每次运行期间,与任何特定的随机权重初始化无关(以GPU的重新编号为模)。
在图4的左面板中,我们通过计算八张测试图像上的前五名预测,定性地评估了网络所学到的知识。请注意,即使是偏离中心的对象,例如左上角的螨,也可以被网络识别。前五名的大多数标签看起来都很合理。例如,只有其他类型的猫被认为是豹子的合理标签。在某些情况下(格栅、樱桃色),照片的预期焦距存在真正的模糊性。
另一种探测网络视觉知识的方法是考虑在最后4096维隐藏层中由图像引起的特征激活。如果两个图像产生具有小欧几里德分离(欧氏距离)的特征激活向量,那么我们可以说神经网络的较高水平认为它们是相似的。图4显示了来自测试集的五幅图像和来自训练集的六幅图像,根据该度量,它们与每幅图像最为相似。请注意,在像素级,检索到的训练图像在L2中通常与第一列中的查询图像不接近。例如,取回的狗和大象以各种姿势出现。我们在补充材料中展示了更多测试图像的结果。(高层网络提取语义特征)
使用两个4096维实值向量之间的欧几里德距离计算相似度效率低下,但可以通过训练自动编码器将这些向量压缩为短二进制码来提高效率。这将产生一种比对原始像素应用自动编码器要好得多的图像检索方法[14],该方法不使用图像标签,因此有检索具有相似边缘模式的图像的倾向,无论它们在语义上是否相似。 (传统的无监督自动编码器没有使用标签。只提取原始像素空间特征,不提取语义特征)
我们的研究结果表明,一个大型的深度卷积神经网络能够在一个具有高度挑战性的数据集上使用纯监督学习获得破记录结果。值得注意的是,如果去掉一个卷积层,我们的网络性能会下降。例如,删除任何中间层都会导致网络的顶级性能损失约2%。因此,深度对于实现我们的成果非常重要。(ZFNet论文中有更详细的去掉中间层性能比较实验)
为了简化我们的实验,我们没有使用任何无监督的预训练,尽管我们希望它会有所帮助,尤其是如果我们获得足够的计算能力,显著增加网络的大小,而没有相应增加标记数据的数量。到目前为止,我们的结果已经有所改善,因为我们已经扩大了我们的网络,并对其进行了更长的训练,但为了匹配人类视觉系统的大脑下颞叶皮层,我们还有许多数量级的工作要做。最终,我们希望在视频序列上使用非常大和深的卷积网络,其中时间结构提供了非常有用的信息,这些信息在静态图像中缺失或不太明显。 (没有使用无监督预训练)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。