论文翻译合集之(Alexnet)ImageNet Classification with Deep Convolutional Neural Networks论文翻译以及笔记(持续更新)

(Alexnet)ImageNet Classification with Deep Convolutional Neural Networks

摘要:

训练了一个大型的深度卷积神经网络,将ImageNet LSVRC-2010竞赛中的120万张高分辨率图像分为1000个不同的类别。该神经网络有6000万个参数和65万个神经元,由五个卷积层组成,其中一些卷积层后面是最大池化层,三个完全连接的层最后是1000路softmax。为了加快训练速度,我们使用了非饱和神经元和非常高效的卷积运算的GPU实现。为了减少完全连接层中的过度拟合,我们采用了最近开发的称为“dropout”的正则化方法,该方法被证明非常有效。

1.Introduction

小数据集只适合于MNIST数字识别的简单问题,而现实环境中的对象表现出相当大的可变性,因此要学会识别它们,必须使用更大的训练集。新的更大的数据集包括LabelMe[23],它由数十万个完全分割的图像组成,以及ImageNet[6],它由22000多个类别中超过1500万个标记的高分辨率图像组成。

要从数百万张图像中了解数千个对象,我们需要一个具有较大学习能力的模型。然而,对象识别任务的巨大复杂性意味着,即使像ImageNet这样大的数据集也无法指定此问题,因此我们的模型还应该具有大量的先验知识,以补偿我们没有的所有数据。卷积神经网络(CNN)构成了这样一类模型[16,11,13,18,15,22,26]。它们的容量可以通过改变深度和广度来控制,并且它们还对图像的性质(即统计数据的平稳性和像素相关性的局部性)做出强有力且基本正确的假设。因此,与具有相似大小层的标准前馈神经网络相比,CNN具有更少的连接和参数,因此更易于训练。

我们的最终网络包含五个卷积层和三个全连接的层这个深度似乎很重要:我们发现移除任何卷积层(每个卷积层包含的参数不超过模型参数的1%)会导致性能下降。

2.数据集和预处理

ImageNet是一个包含超过1500万张高分辨率图像的数据集,这些图像属于大约22000个类别。从2010年开始,作为Pascal视觉对象挑战赛的一部分,每年都会举办一场名为ImageNet大规模视觉识别挑战赛(ILSVRC)的比赛。ILSVRC使用ImageNet的一个子集,1000个类别中的每一个都有大约1000个图像。总共大约有120万张培训图像、50000张验证图像和150000张测试图像。ImageNet由可变分辨率图像组成,而我们的系统需要恒定的输入维度。因此,我们将图像采样到256×256的固定分辨率。给定一个矩形图像,我们首先重新缩放图像,使短边长度为256,然后从结果图像中裁剪出中心256×256面片。我们没有以任何其他方式对图像进行预处理。(对于之后研究发展的贡献在于没有提取图片特征,而是直接把原始图片剪裁后直接输入网络,端到端的思维

3.网络结构

网络结构如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hzrcDUAo-1643098378737)(C:\Users\w10\AppData\Roaming\Typora\typora-user-images\image-20220121180053486.png)]

它包含8个学习层——5个卷积层和3个全连接层

3.1ReLU非线性函数

ReLU 函数(y = max(0, x))开始真正用于CNN是从这篇论文开始的,之前的CNN用的像sigmoid、tanh 这类的激活函数。之所以用ReLU就在于它是non-saturating(不饱和的),这一点在深度学习中很重要,像其他的simoid、tanh 这样的函数就容易饱和,一旦它们的定义域的取值的绝对值过的,梯度就趋于零。所以用ReLU的激活函数能够有效的避免梯度消失这类问题

我们不是第一个考虑替代传统神经元模型在CNNs。例如,Jarrett等人[11]声称,非线性f(x)=| tanh(x)|在加州理工学院101数据集上的对比度标准化后,再加上局部平均池,效果特别好。然而,在这个数据集上,主要关注的是防止过度拟合,因此他们观察到的效果不同于我们在使用ReLUs时报告的训练集的加速能力。快速学习对在大型数据集上训练的大型模型的性能有很大影响

3.2多GPU并行训练(可以先忽略)

3.3局部响应归一化

ReLU具有让人满意的特性,它们无需对输入数据进行归一化(归一化的作用是来防止它们饱和)。如果至少一些训练样本对ReLU产生了正输入,那么学习将发生在那个神经元上。然而,我们仍然发现接下来的局部响应归一化有助于泛化。用aix;y来表示在点(x; y)处通过先应用核i计算,然后再应用ReLU非线性计算出来

3.4重叠池化

CNN中的池化层总结了同一核映射上相邻神经元的输出。(卷积得到的特征很多,不一定所有都是非常重要的,目的压缩特征)一般来说,相邻池化单元总结的邻近关系是不重叠的(例如[17,11,4])。更确切的说,池化层可看作由池化单元网格组成,网格间距为s个像素,每个网格归纳池化单元中心位置z × z大小的邻居。如果设置s = z,我们会得到通常在CNN中采用的传统局部池化。如果设置s < z,我们会得到重叠池化。这就是我们网络中使用的方法,我们设置s = 2,z = 3。这个方案分别降
低了top-1 0.4%和top-5 0.3%的误差率,与非重叠方案s = 2,z = 2相比,输出的维度是相等的。我们通常观察到在训练过程中有重叠池化的更加难以过拟合一些。

3.5总体结构

该网络包括了8个带权层;前5层是卷积层,剩下3层是全连接层。最后1个全连接层的输出被送到一个1000维的softmax层。softmax会产生一个覆盖1000类标签的分布。我们的网络使得多分类的Logistic回归目标最大化,这相当于最大化了预测分布下训练样本中正确标签的对数概率平均值。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h4GuIvwC-1643098378738)(C:\Users\w10\AppData\Roaming\Typora\typora-user-images\image-20220123231754006.png)]

第2,4,5卷积层的核只与位于同一GPU上的前一层的核映射相连接(看图2)。第3卷积层的核与第2层的所有核映射相连。全连接层的神经元与前一层的所有神经元相连。第1,2卷积层之后是响应归一化层。3.4节中描述的重叠max pooling层,跟在响应归一化层以及第五个卷积层之后。ReLU非线性激活函数应用于每个卷积层及全连接层的输出。

第1卷积层使用96个大小为11 × 11 × 3,步长为4个像素(这是同一核映射中邻近神经元的感受野中心之间的距离)的核,来对大小为224 × 224 × 3的输入图像进行滤波。第2层卷积层使用第1层卷积层的输出(响应归一化和池化过的)作为输入,并使用了256个大小为5 × 5 × 48的核进行滤波。第3,4,5层卷积层互相连接,中间没有接入池化层或者归一化层。第3层有384个大小为3 × 3 × 256核与第2层卷积层的输出(响应归一化和池化过的)相连。第4层卷积层有384个大小为3 × 3 × 192的核,第5层有256个大小为3 × 3 × 192的核。全连接层每个都有4096个神经元。

整个训练卷积过程可以看做是图像像素空间大小(224——>13)的压缩,但是语义空间(3个通道——>192个通道)的扩充,中间过程使用两个GPU各训练一半,中间在第三层之前两个GPU通讯一次,最后一起传至softmax层输出为4096的向量。

整个过程通俗理解本质来讲:是一个知识的压缩过程,把人可以直接看懂听懂的原始像素图片语音通过中间深度学习模型压缩成一个可以概括一张图片语义信息的,计算机可以理解识别的长为4096的向量

4.减少过拟合

我们的神经网络结构有6000万参数。尽管ILSVRC的1000类使每个训练样本从图像到标签的映射上强加了10比特的约束,这依然不足以训练这么多的参数而不造成过拟合。接下来,我们会描述减少过拟合的两种主要方式

4.1数据增强

减少图像数据过拟合最简单最常用的方法,是使用标签-保留转换,人为地扩大数据集(例如,[25,4,5])。我们使用了两种独特的数据增强方式
第一种数据增强的方式包括**图像变换和水平翻转。我们通过从256 × 256的图像上随机提取224 × 224的图像块(及其水平镜像)的方法来实现,**并在这些提取的图像上对我们的神经网络进行了训练。这通过一个2048因子增大了我们的训练集(随机提取一共有2048种不同的提取方法),尽管最终的训练样本是高度相关的。如果没有这个方案,我们的网络会出现严重的过拟合,这会迫使我们使用更小的网络。在测试时,网络会抽取五个224 × 224(的图像块(四个角上的图像块和中心的图像块)以及他们的水平翻转(总共是10个图像块)进行预测,然后将softmax层对这十个图像块做出的预测取平均。

​ 第二种放大数据集的方法是改变训练图像的RGB通道的强度。具体地,我们在整个ImageNet训练集上对RGB像素进行了PCA(主成分分析)。对于每张训练图像,我们通过均值为0,方差为0.1的高斯分布产生一个随机值a,然后通过向图像中加入更大比例的相应的本征值的a倍,把其主成分翻倍。因此,对于每个RGB像素Ixy = Ixy R Ixy G Ixy B T,我们加入的值如下

[P1 P2 P3] [α1λ1 α2λ2 α3λ3]T

其中,Pi和λi分别是RGB像素值3 × 3协方差矩阵的第i个特征向量和特征值,αi是前面提到的随机变
量。对于某个训练图像的所有像素,每个αi只获取一次,直到图像进行下一次训练时才重新获取。这个方案近似抓住了自然图像的一个重要特性,即光照的颜色和强度发生变化时,目标是不变的。这一方法把top-1误差率降低了1%。

4.2Dropout

​ 将许多不同模型的预测结合起来是降低测试误差[1, 3]的一个非常成功的方法,但这种方法对于本来就需要花费几天去训练的大型神经网络来说,代价太过高昂。然而,有一个非常有效的模型结合方法,它只花费两倍于单模型的训练成本。这种最新引入的技术,叫做**“dropout”[10],它以0.5的概率将每个隐层神经元的输出设置为0**。这些“失活的”神经元既不在参与前向传播,也不再参与反向传播。**所以每次输入时,神经网络会采用一个不同的架构,但是这所有的架构共享权重。(当时作者认为每一次能得到一个新的模型,然后等价于变成很多模型做融合,后来发现Dropout其实更大程度上是起到相当于L2正则项的作用)**这种技术降低了神经元之间复杂的互适应关系,因为一个神经元不能再依赖特定的神经元而存在了。因此,神经元被迫学习更具鲁棒性的特征,这些特征在结合其他神经元的一些不同随机子集时有用。在测试时,我们将所有的神经元的输出都乘以0.5,对指数级的许多失活网络的预测分布进行几何平均,这是一种合理的近似方法。我们在图二的前两个全连接层中使用了dropout。如果没有dropout,我们的网络将会严重的过拟合,而使用Dropout使得收敛所需要的迭代次数翻了一倍,花费时间是没使用Dropout的两倍(现在看来中间两个很大4096大小的全连接导致模型特别大, 是 AlexNet的一大瓶颈)

5.学习和训练具体方法

我们使用**随机梯度下降算法(SGD)(里面的噪音对于模型的泛化是很有好处的)**来训练我们的模型,样本的batch size是128,momentum是0.9,权重衰减(weight decay)为0.0005。我们发现这里少量的权重衰减对于模型的学习是很重要的。换句话说,权重衰减在这里不仅仅是一个正则化项:它减少了模型的训练误差。对于权重w的更新规则为

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N2t7GzqQ-1643098378739)(C:\Users\w10\AppData\Roaming\Typora\typora-user-images\image-20220124124911515.png)]

我们使用均值为0,标准差为0.01的高斯分布对每一层的权重进行初始化。我们用常数1初始化了第二、四、五卷积层和全连接层的神经元的偏置项。这个初始化通过为ReLU提供正输入加速了学习的早期阶段。我们用常数0初始化了其余层神经元的偏置项。
我们对所有层都使用了相同的学习率,这是我们在训练过程中手动调整的。我们遵循的一些原则是:**当验证误差率在当前学习率下不再提高时,就将学习率除以10。学习率初始化为0.01,**在训练停止之前降低了三次。我们训练该网络时大致将这120万张图像的训练集循环了90次,在两个NVIDIA GTX 580 3GBGPU上花了五到六天。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8CtqV2QX-1643098378740)(C:\Users\w10\AppData\Roaming\Typora\typora-user-images\image-20220124213742119.png)]

6.结果

我们将ILSVRC-2010测试集上的结果概括为表1。我们的网络实现了top-1测试集误差率为37.5%,top-5测试集误差率为17.0%。在ILSVRC-2010竞赛中的最佳结果是47.1%与28.2%,它们的方法是用不同特征训练六个sparse-coding模型,对这些模型产生的预测求平均值。从那之后公布的最好结果是45.7%和25.7%,它们的方法是从两类密集采样的特征中计算出费舍尔向量(FV),用费舍尔向量训练两个分类器,再对这两个分类器的预测求平均值[24]。
我们也使用我们的模型参加了ILSVRC-2012竞赛,并在表2中写出了结果。因为ILSVRC-2012的测试
集标签是不对外公开的,我们无法报告我们尝试的所有模型的测试误差率。在这段的剩余部分,我们将验证误差率和测试误差率互换,因为根据我们的经验,它们之间不会相差超过0.1%(见表2)。本文描述的CNN取得了18.2%的top-5误差率。五个类似的CNN预测的平均误差率为16.4%。为了对ImageNet 在2011秋季发布的整个数据集(1500万张图片,22000个类别)进行分类,我们在最后的池化层之后增加了一个额外的第六层卷积层,训练了一个新的CNN,然后对它进行“fine-tuning”,最后在ILSVRC-2012上取得了16.6%的误差率。对在ImageNet 2011秋季发布的整个数据集上预训练的两个CNN和前面提到的五个CNN的预测进行平均得到了15.3%的误差率。第二名的成绩是26.2%的误差率,它的方法是从不同类密集采样的特征中计算FV,用FV训练几个分类器,再对这几个分类器的预测求平均值

最后,我们也报告了我们在ImageNet 2009秋季数据集上的误差率,**ImageNet 完整的数据集有10,184个类,890万图像,效果一般会比120万张图像的数据集要好。**在这个数据集上,按照惯例,我们用一半的图像来训练,一半的图像来测试。由于没有明确的测试集,我们的划分必然不同于以前作者的数据集划分,但这不会明显的影响结果。我们在这个数据集上的的top-1和top-5误差率是67.4%和40.9%,使用的是上面描述的在最后的池化层之后有一个额外的第6卷积层网络。该数据集上公布的最佳结果是78.1%和60.9%[19]

在底层的神经元学到了一些比较局部的信息,比如纹理方向,在比较偏上的神经元更多学到全局宏观的比如一个人,动物,物品


欢迎大家扫码关注本人公众号:编程复盘与思考随笔

(关注后可以免费获得本人在csdn发布的资源源码)

公众号主要记录编程和刷题时的总结复盘笔记和心得!并且分享读书、工作、生活中的一些思考感悟!
在这里插入图片描述

想要组队一起参加阿里天池,kaggle,百度飞浆,科大讯飞等AI相关的比赛的同学可以扫下面的二维码一起讨论学习!

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Al资料站与复盘笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值