9年后重读深度学习奠基作之一:AlexNet【下】【论文精读】
这两天偶然间在B站看了李沐博士对AlexNet
论文的重新解读,收获满满。AlexNet
是当今深度学习浪潮奠基作之一,发表在2012年。在视频中,李沐博士主要是分享了他的三步法快速读论文
。即当我们看一篇新的论文,可以按照下面这种方法去读:
- 第一遍:
论文标题、摘要、结论
。顺带看看论文中重要的图和表
。花费十几分钟时间判断论文是否和自己的研究方向相同。 - 第二遍:确定论文值得读之后,可以快速的把整个论文
过一遍
,不需要知道所有的细节,但是需要了解重要的图和表,知道每一个部分在干什么,圈出相关文献
。觉得文章太难理解的话,可以先看看论文中引用的其它文献,了解相关背景知识。 - 第三遍:最详细的一遍,
知道每一段和每一句话是什么意思
,在复现论文时再反复研读。
AlexNet
论文链接:https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf
1.第一遍
首先是论文标题
,论文标题中文意思是:使用深度卷积神经网络对ImageNet数据集进行分类。第一次读论文标题时要注意下面几个关键词:
ImageNet
:论文使用的数据集是ImageNet
,ImageNet
数据集具体内容是什么样的?Neural Networks
:神经网络,这篇文章使用了神经网络技术。Deep Convolutional
:卷积神经网络
工作原理是什么? 同时作者为什么要使用深度
的卷积神经网络。
下面是论文的作者,论文一作是Alex
,这也是本篇论文提出的网络被称为AlexNet
的原因。可能对论文前两个作者不是很熟悉,但是论文通信作者是Hinton
,长期研究神经网络和深度学习。
下面是论文摘要
,摘要总共六句话。
- 前2句话介绍了自己做的工作,训练了一个很大很深的卷积神经网络在
LSVRC-2010 contest
取得了很好的结果。 - 第3句话介绍了网络的模型,有6000万个参数和65万个神经元,模型包含5个卷积层,以及最大池化层和3个全连接层。
- 第4句和第5句介绍了如何训练网络,使用了
不饱和的神经元
和GPU实现,为了减少全连接层的过拟合,使用了dropout
技术。 - 最后一句, 介绍在
ILSVRC-2012
比赛取得了第一名,错误率比第二名低了10.9%,可以看到本文设计的网络模型效果很好。
最后是论文结论
部分,不过本篇论文的结论是讨论
,和一般论文稍有不同。论文讨论有两段,第一段说我们在有监督学习
上取得了很好的效果,证明了网络的深度很重要
。第二段说我们没有使用任何的无监督预训练,这直接导致了后面的深度学习研究都集中在有监督学习上;同时作者提出未来会研究视频数据
(当前研究的一个很火方向),因为视频数据会提供时序信息,这是静态图像数据所缺失的。
在第一遍时,可以顺带看看论文中重要的图和表,如网络结构图,可能第一遍不一定能看懂。第一遍读完后,可以决定后面是否再度第二遍论文,如果是研究图片分类
方向的话,则需要再读第二遍。
2.第二遍
首先是Introduction
部分,分为5段。前3段主要是研究内容背景知识介绍,第4段介绍了本文主要贡献。本文训练了一个很大的卷积神经网络在ILSVRC
比赛上取得了最好的结果,同时本文在GPU
实现了2D卷积操作。本文训练的网络包含一些新的和不常见的特征来提高网络性能和减少训练时间
,这部分在论文第3节进行了介绍。第4节介绍了新的技术来防止过拟合
。整个网络包含5个卷积层和3个全连接层,同时发现网络深度是很重要的,即使移除任意一层卷积层,都会导致性能下降。
作者还强调了由于GPU内存的限制,在两块GPU上进行训练时需要5-6天时间,如果能有更快的GPU和更大的数据集,网络性能还能进一步提升。
然后是ImageNet Dataset
部分,分为3段。介绍了整个数据集大约有1500万张图片,共有22000类。ILSVRC
比赛共有1000类,每一类大约有1000张图片。在2010的比赛中,可以得到测试集数据标签,但是在2012年的比赛中则没有测试集标签。
由于ImageNet
数据集图片精度并不相同,因此我们每一张图片下采样到256×256256\times256256×256。当短边尺寸小于256时,我们先上采样到256,然后再从图片中截取 256×256256\times256256×256 的图片作为输入。我们没有对图片进行任何的预处理,整个网络是在每个像素的原始RGB值进行训练(也就是端到端训练
,这也是深度学习的一大优势)。
再然后是Architecture
部分,分为5个小节。
第一个介绍的是ReLU
激活函数,函数形式为 f(x)=max(0,x)f(x)=max(0,x)f(x)=max(0,x),形式比较简单。作者说这是一个非饱和
的非线性函数,比其它激活函数训练要快(具体原因没解释),关于ReLU
函数的具体介绍可以看参考文献[20]。作者做了一个实验,如图1所示,在将错误率降低到25%时,ReLU
比tanh
函数训练时要快6倍。
第2小节-第4小节介绍的是多GPU训练,归一化处理、pooling处理,主要是偏工程实现,这些部分可先跳过,在读第3遍时再看。
第5小节是网络结构介绍,输入是 224×224×3224\times224\times3224×224×3 的图片,然后是5个卷积层,接着是3个全连接层,最后一层是softmax
层,输出为1000个类别标签的预测概率分布。使用了两个GPU进行训练(现在训练网络一般可以不同分割模型),将网络模型切成两半分别在两个GPU中进行训练。第2个、第4个和第5个卷积层的输入为同一GPU上之前一层卷积层的输出,而第3个卷积层的输入为两个GPU上的第2个卷积层输出。每个全连接层的输入都为前一层网络的全部输出。可以看到,随着网络深度的增加,卷积层中图像大小在减少,而深度在不断增加。
接着是Reducing Overfitting
部分,作者首先使用了数据增强
,增加数据的多样性,然后使用了新的降低过拟合技术dropout
。具体原理作者并没有解释,作者使用了50%的概率值来使每一个隐藏层神经元输出为0。这里dropout
技术主要用在前两个全连接层。
下面是实验设置,使用SGD
进行训练,同时使用了权重衰减(0.0005)。初始化时使用了均值为0标准差为0.01的高斯分布,第2、4、5层和全连接层偏差初始值为1,其余层为0。在训练时会手动改变学习率的值,当验证集上误差率不再变化时,将学习率除以10,学习率初始值为0.01。
下面是论文实验结果部分,可以看到在ILSVRC-2010/2012
数据上作者都取得了最低的错误率,同时作者也在2009年版本的ImageNet
全部数据上进行了训练,不过在ImageNet
全部数据集上进行训练的研究比较少。
作者在训练时也发现了一些有意思的现象,就是两个GPU,一个GPU上和卷积核和图像颜色是有关的,一个和图像颜色是无关的,这个还待解释。另一个是图4所示,当最后一个隐藏层(4096)神经元欧几里得空间距离相近是,两张图片基本上是同一类(深度学习的解释性也是一个很重要的研究方向)。
至此,论文解读到此结束,后面如果想复现本篇论文时,就需要再多读几遍。