AlexNet论文解读——ImageNet Classification with Deep Convolutional


ImgNet是业界用于视觉目标识别研究的一个免费的大型数据库,已手动标注了1500多万张图片,自2010年起,ImageNet每年举办一次大规模视觉识别的挑战赛,简称ILSVRC,后来成为业界刷分的主要榜单,本文的三作,也是大老板的Hinton教授,这篇文章后来的代号AlexNet是后人起的。

摘要

image-20220924183409731

​  他说我们训练了一个大型的深度卷积神经网络,将ImageNet竞赛中120万张高分辨率图像分类为1000多个不同的类别在测试数据集上实现了37.5%和17%的top-1和top-5的错误率,比以前的新技术好了很多,这里提到了两个专有的词,一个是top-1,一个是top-5的错误率,top-5错误率是对一张图像预测5个类别,只要有一个和人工标注类别相同就算对,否则就算错,同理top-1是对一张图像只预测一个类别。
​  那这个神经网络有6000万个参数和65万个神经元,分别有5个卷积层,还有3个全连接层和1个最终的1000路的softmax层,为了使训练更快,使用了非饱和的神经元,以及基于卷积操作的GPU,为了减少全连接层中的过度拟合采用了Hinton他们自家开发的称为dropout的正则化方法,这个方法被证明是非常有效的,此外,在这个竞赛中,还输入了该模型的变体,获得了15.3%的这个top-5的错误测试率,比第二名好了不少,第二名的错误测试率为26.2%。
​  这一段的关键词是卷积层、最大池化层、全连接层、softmax层、dropout正则化,这些概念就是深度卷积网络的核心。

1. 介绍

image-20220924183436338

​  当前的目标识别方法主要是机器学习,为了提高他们的性能,可以收集更大的数据集,学习更大的模型,并使用更好的技术来防止过拟合,这就是深度学习的三板斧——data、model、training。为什么要够大呢,最主要因为现实环境中的物体表现出来相当大的可变性,多大算大呢,几十万起步,百万以上,最好是千万,数据大了模型自然也得大。
​  目标有了各种新的问题就出现了,解决之道,就是最好能够嵌入大量的先验知识来弥补我们没有的所有数据,具体怎么实现,这就是卷积神经网络横空出世了,和标准的前馈神经网络相比,CNN的连接和参数都要少得多,因此更容易训练。

image-20220924183501798

​  理想很美好,可是现实很骨感,尽管CNN具有吸引人的品质,尽管他们的局部架构相对有效,可是在大规模应用于高分辨率图象时,仍然过于昂贵,幸运的是当前的GPU与高度优化的二维卷积相结合,足以促进大型的CNN的训练得到改观。
​  训练了一个非常大的卷积神经网络取得了很不错的成果,应用了GPU以及不少新的和不同寻常的特征,着重解决了过拟合的问题,最终网络包含了5个卷积层和3个全连接层,这个深度非常重要,网络的大小主要是受到了当前GPU和愿意容忍的训练时间的限制,更快的GPU和更大的数据集都会使得这种模型有非常多的改进空间。

2. 数据集

image-20220924183526671

​  主要是第三段,将图像下采样到256*256的固定分辨率,给定一个矩形图像,首先重新缩放,使得短边长度为256,然后从结果的图像(result image)里裁剪出一个256*256的一个补丁图片(patch image),除了在训练集上对像素减去平均活跃度(mean activity)没有进行任何其他方式的预处理,简化了传统方法的预处理操作。这个时候要注意,算均值时通常有两种计算方法,一种是image mean:是对RGB三个通道都求均值,再从各个通道减去该均值。第二种是pixel mean:直接全图剪去全部像素的均值,本文应该是取第一种。

3. 模型架构

image-20220924183546522

3.1 AlexNet架构图

总图如图二所示,一共包含了8个学习层,其中5个是卷积层,3个是全连接层。
第一段解释说明,行文的顺序是3.1到3.4的顺序是按照模型的重要性即,主要特征的重要性安排,但是我们先看网络结构图二。

image-20220924182220590

​  发表这篇文章时GPU的运算能力整体上比较低因此AlexNet通过两个GPU来进行协同训练,总体上看这张图的结构稍微有些复杂。后人对这张图进行了优化,AlexNet架构可视化图,这张图能够很大程度上能够直观的理解模型的结构和数据的流动。
​  从图中可以看出,网络一共包含了8个权重层,其中5个是卷积层,3个全连接层,1、2卷积层后面连有LRN层,所谓的局部响应归一化层( Local Response Normalization)

image-20220924185052767

​  它提出的目的是为了提升准确度,这样的一种方法一般是用在激活和池化层之后进行的,具体来说就是借鉴了神经生物学的概念——侧抑制,指的是被激活的神经元抑制相邻的神经元,归一化的目的就是抑制,后来的网络证明,这个LRN层并非是必须的,甚至有些网络加入后效果反而降低。
​  每个LRN层及最后的卷积层后面跟有最大池化层,并且每个权重层均连有了Relu激活函数,全连接层后面使用了dropout的这一生神器来解决过拟合,这就是整个CNN架构。

​  回到原文中两个GPU训练的架构图,首先综合上下两个GPU的结果,第一卷积层使用了96个核对223*224*3的输入图像进行了滤波,核的大小是11*11*3,步长是4个像素,核映射中相邻的神经元感受野中心之间的距离是4个像素,这里有个小细节需要注意,(224-11)/4并不能整除,也就是说kernel在水平移动时最后一个感受野并非是11*11,这一点在netscope中这点已经被修改了,里面的输入被resize到227*227*3
​ 第二卷积层的输出作为输入,并使用256个核进行滤波,核的大小是5*5*48,第3、4、5卷积层互相连接,中间没有接入池化层或者归一化层。
​  第三卷积层有有384个核,核的大小是3*3*256,与第二卷积层的输出在归一化之后相连。
​  第四层有384个核,核的大小是3*3*192,第五卷积层有256个核,核的大小是3*3*192。每个全连接层有4096个神经元,最后一层全连接层的输出是1000维的softmax输入,softmax会产生1000类的标签的具体分布。

3.2 激活函数Relu

image-20220924191916714

​  激活函数的重要性在3.1中强调了,非线性是整个神经网络的精髓所在,深度网络本质上其实是在非欧空间进行了一系列的非线性映射,而这个通常是由激活函数来具体实现的这也是为什么作者按照重要性把激活函数放在了第一位来讲。
​  当年流行的激活函数是tanh激活函数,但是考虑到执行的速度本文用的是Relu激活函数,图一通过实验验证了同等条件下relu函数要比tanh函数快6倍。
​  这个relu函数简单到难以置信,f(x)=max(0,x),也就是说放弃了小于0的那一部分导数,同时正数部分导数为1,BP式即反向传播自然会快,很多时候,简单的就是最美的。
​  这一节的最后提到了,更快的学习 对于大型数据集上,大型模型的性能是有非常大的影响的。

3.3 多GPU训练问题

image-20220924192926489

​  网络太大不能在单GPU上进行训练,因此,作者把整个模型分布在两个GPU上,采用的并行方案是在每个GPU中放置一半的核或者是神经元,还有一个额外的技巧,GPU之间的通讯只在某些层进行,而不是在所有的层都进行。

3.4 LRN层

image-20220924193311650

​  文中提到这部操作有助于网络的泛化,一句话概括,本质上这个层其实也是为了防止激活函数的饱和的,这一部分是可有可无的,在功能上跟relu激活函数是重复的,但是放在当年思路还是非常新奇的。
​  给出了超参数的经验,估计是试了很多次,成功开启了深度学习调参之路。

3.5 重叠池化

image-20220924193358726

​  这部分讲了重叠池化(Overlapping Pooling),也是创新点之一,在此之前的文章,池化是没有重叠的,那重叠池化的意思就是:池化步伐小于kernel size,这样池化后的feature map的感受野其实是有一部分重叠的。

4. 减少过拟合

image-20220924193611649

​ 文章说神经网络架构有6000万个参数,很容易出现过拟合。本文主要是通过两种方法来解决。

4.1 数据增强

image-20220924211457608

image-20220924211518626

​  图像数据上最简单的用来减少过拟合的方法就是使用标签保留变换来人工增大数据集。
​  第一种数据增强的方式,包括图像变换和水平翻转,具体说是从256*256的图像上通过随即提取224*224的图像块,实现了这种方法,然后在这些提取的图像上来去进行训练。
​  第二种数据增强的方式,包括改变训练图像的RGB通道的强度,具体的来说,在整个ImageNet训练集上对RGB项执行了PCA操作。

4.2 Dropout层

image-20220924211634570

​  这一节讲到卷积神经网络的计算量其实主要集中在全连接层,因为这些层的参数太多了,也是最容易发生过拟合的地方,那dropout通过训练时随机使得一部分节点失效,不贡献连接的权重而减少过拟合的风险,同时强迫这些神经元去学习互补的一些特征,现在这已经是主流的做法了。训练时全连接层50%的节点不工作,测试时工作就好了。

5. 训练的细节

image-20220924211727764

image-20220924211738322

​  第五部分介绍了训练的一些细节,首先AlexNet使用的是随机梯度下降算法batch的大小是128,动量衰减参数设置为0.9,权重衰减参数设置为0.0005,另外,在AlexNet中所有层的权重初始化为服从零均值标准差为0.001的高斯分布,第2、4、5卷积层以及全连接层的偏执量初始化是1,这样做的好处就是通过给relu函数一个正激励,从而加速早期学习的速度,其它层的偏执量都初始化为0。

6. 实验结果

6.1 定性评估

image-20220924212608235

image-20220924212616760

image-20220924212738274

图三显示了网络的两个连接层学习到的卷积核,包括频率核、方向选择以及各种颜色点等等。

image-20220924212804471

图四从不同方面继续给出了一些定性的分析和有趣的发现

7. 总结讨论

image-20220924212102546

​  总结讨论,作者再次强调了深度的重要性,移除中间任何层都会引起网络损失大约为2%的top-1性能,因此深度对于卷积网络非常非常的重要,另外在future research方面,作者预测了在视频序列上使用大的卷积神经网络的可能性。
​  总的来说AlexNet和以前的网络相比,之所以能够出圈,很大程度上来源于三个主要特点,一是网络增大,使用了5个卷积层、3个全连接层和1个softmax层。二是着重解决了过拟合的问题提出了一些新的思路dropout、数据增强、LRN等等。第三是充分利用了多GPU加速计算。
​  温故而知新,从神经网络认知模型1998年的LeNet,到2012年的AlexNet,每一次成功其实都不是偶然的,而是在某种程度上反映了神经网络进化、发展的思路,正如遗传和差异是进化论的永恒思想一样,总结起来大致有4个方面,一是网络结构加深加宽,二是卷积等功能的加强,三是与其它结构的重组,比如后来有演化出与RNN、LSTM等网络结构的重组,四是未来的一个发展趋势从分类到检测有更多应用,这里面或多或少都渗透着一些生物演化的思想,我们能看出学科的交叉往往能迸发出思维的火花。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

要什么自行车儿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值