当前位置: 代码迷 >> 综合 >> [论文笔记] [2012] [NIPS] ImageNet Classification with Deep Convolutional Neural Networks
  详细解决方案

[论文笔记] [2012] [NIPS] ImageNet Classification with Deep Convolutional Neural Networks

热度:51   发布时间:2023-11-18 04:30:16.0

这篇就是AlexNet的原论文。那年AlexNet在ILSVRC-2012上以超过第二名10.9个百分点夺冠,拉开了卷积神经网络统治计算机视觉的序幕,加速了计算机视觉应用落地。它的创新点在于:

  • 采用ReLU加速大型神经网络训练;
  • 采用LRN(Local Response Normalization)提升网络的泛化能力;
  • 采用 Overlapping Pooling 提升指标;
  • 采用随机裁剪翻转及色彩扰动增加数据多样性;
  • 采用Dropout缓解过拟合。

其中的一些方法和技巧在现在的工作中还是很常见的,比如 ReLU、Dropout,还有一些数据增强(Data Augmentation)的方法。

The Architecture

AlexNet模型由5层卷积层和3层全连接层组成,论文中称为是 “deep convolutional neural network”,在当初看来8层已经是算是深层网络了(主要受GPU的能力限制),Alex也在论文中提到“All of our experiments suggest that our results can be improved simply by waiting for faster GPUs and bigger datasets to become available.”。模型的结构如下图:

在这里插入图片描述
论文中的模型是跑在多GPU上的,且原图并不直观,这里重新绘制了AlexNet模型。模型的输入是224×224×3,经过96个11×11的卷积核,stride为4,padding为2,输出55×55×96的feature maps;再经过一个3×3的overlapping maxpool,stride为2,输出27×27×96的feature maps;再经过256个5×5的卷积核,stride为2,padding为2,输出27×27×256的feature maps;再经过3×3的overlapping maxpool,stride为2,输出13×13×256的feature maps;再经过两次384个3×3的卷积核,stride为1,padding为1,输出为13×13×384的feature maps;再经过256个3×3的卷积核,stride为1,padding为1,得到13×13×256的feature maps;再经过一个3×3的overlapping maxpool,以及后面接两层全连接层和softmax层,得到输出。这样的模型,有6千万个参数和650000个神经元。

ReLU Nonlinearity

AlexNet是最早将ReLU用于CNN模型中的。在12年以前的一些工作就验证了 ReLU 的有效性。像带tanh和sigmoid这类饱和非线性函数(saturating nonlinearity)的神经网络在训练时比带ReLU的网络要慢得多。如下图,达到同样的0.25 error rate,带tanh的神经网络需要迭代的次数是带ReLU的好几倍。

在这里插入图片描述
AlexNet采用ReLU的目的主要是看中它能加速网络的训练,而ReLU还有缓解梯度消失使网络具有稀疏性的优点。

Local Response Normalization

ReLU还有一个很好的特性就是不需要输入做normalization。但作者发现局部的normalization能起到提升模型泛化能力的作用。作者提出了一种normalization 为 Local Response Normalization(LRN),它主要受真实神经元中侧抑制(lateral inhibition)的启发。侧抑制简单说来就是兴奋的神经元抑制周围神经元的活性,而侧抑制在DL中的应用,主要是为了局部对比度的增强,以便强的特征能在下一层中表达。LRN 作用在 channel维度的局部 normalization,其计算公式如下:
bx,yi=ax,yi/(k+α∑j=max?(0,i?n/2)min?(N?1,i+n/2)(ax,yj)2)βb_{x,y}^i = a_{x,y}^i / \left( k + \alpha \sum_{j = \max(0,i-n/2)}^{\min(N-1,i+n/2)}{(a_{x,y}^j)^2}\right)^\beta bx,yi?=ax,yi?/???k+αj=max(0,i?n/2)min(N?1,i+n/2)?(ax,yj?)2???β
其中ax,yia_{x,y}^iax,yi? 是(x,y)位置上第 iii 个kernel上的神经元的活性值。抑制作用主要体现在分母中的求和,它是以 i 为中心,半径为 n/2n/2n/2 内的神经元活性的求和。如果邻域内存在较强的神经元活性值,那么当前的神经元活性值会得到抑制(除非自身就是那个big activity),变相地就突出了当前位置的特征值。

作者在采用了 LRN,其模型在 top-1 和top-5指标上分别降低了1.4%和1.2%,这个效果还是不错的。

Overlapping Pooling

作者还对常规的 pooling 做了一些改动。通常我们的 pooling 都是kernel size 和 stride相等的,而作者做出了改动是kernel size 大于 stride,这样就形成了一个重叠的 pooling(overlapping pooling)。在 pooling 改成 overlapping pooling后,其模型在 top-1 和 top-5 指标上分别降低了0.4%和0.3%。另外,作者还观察到使用了 overlapping pooling 的模型不容易过拟合。

Reducing Overfitting

上面提到AlexNet有6千万个参数,尽管ILSVRC的数据集相对来说已经比较大了,但还是容易出现过拟合的问题,作者分别从模型数据两个角度出发来缓解过拟合的问题。

从数据角度,缓解过拟合问题,最常见和最简单的方式就是通过保留标签的变换方式来增加数据集的样本,也就是做数据增强(data augmentation)。一种比较简单的方式,就是对原图像做裁剪并水平翻转,具体做法就是从256×256的图像中随机裁剪出224×224的图像,加上水平翻转,这样一张图片能得到2048张新的图片((256?224)2×2=2048(256-224)^2 \times 2=2048(256?224)2×2=2048)。虽然这些新的图片其实与原图片是存在相关的,但这种方式依旧能一定程度的缓解过拟合问题。另外,在测试阶段,从256×256图像的四个角和中心裁剪出5张新的图片,加上水平翻转的,得到10张新的图片。最后对这10张图片的预测值求平均即为原图片的预测值。另外一种方式,则是采用色彩扰动的方式来产生新的样本。上面的两种方式减少了1%的 top-1 error rate。

从模型角度,作者采用的便是现在很常见的 dropout。

Results

作者在 ILSVRC-2012 的比赛中,不单单只是靠着AlexNet上分的。可以看到下表,第一行是当时排名第二的成绩,第二行就是 AlexNet,可以看到单独的AlexNet在验证集上的error rate 是18.2%,还不是表现最好的。在第三行,作者训练了5个AlexNet做ensemble,在验证集上error rate降低了1.8个百分点,在测试集上的表现为 16.4%。在第四行,作者是用整个ImageNet数据集做了预训练,然后在比赛的数据集上做微调,在验针集上的表现为16.6%。最后一行,即是作者最后提交的成绩,5个AlexNet和2个做过预训练的模型一起做ensemble,得到了15.3%的成绩,低于第二名10.8%,拿到了冠军。

在这里插入图片描述

总结

AlexNet的创新点就不提了。整篇论文结构更像是他们比赛上分之旅,根据重要性(提分效果)来介绍工作,ReLU(模型训练提速)-> training on multiple GPUs(再提速) -> LRU(提升1.2个百分点) -> overlapping Pooling(提升0.3个百分点),另外两个缓解过拟合的trick,data augmentation 和 dropout,这个在数据比赛中很重要,因为很容易出现的一种情况是在训练集上和验证集上表现很好,扔上去测试的时候效果却很差。最后就是模型的集成,来做最后的提分。