AlexNet-文献阅读笔记

论文介绍ImageNet Classification with Deep Convolutional Neural Networks- Alex Krizhevsky, Ilya Sutskever, and Geoffrey E. Hinton该论文是 ImageNet Large-Scale Visual Recognition Challenge (ILSVRC)-2012 competitions的 参赛模型 , top 5测试错误率达到15.3%,远低于第二好的26.2%的错误率 。模型使用两块GPU进行训练,有6000万参数和65万个神经元,包含5个卷积层,其中几个卷积层后连接着max-pooling层,以及三个全连接层,输出为1000路softmax 。模型使用了ReLU非饱和神经元 , 以及dropout等方法来避免过拟合 。Alex Krizhevsky的SuperVison网络在ImageNet数据集上的改进,证明了大规模数据是神经网络成功应用的基础之一,也证明了卷积神经网络模型的深度与模型的表现具有一定的相关性 。
序言受到Yann LeCun发布的关于神经网络的启发,Alex等发现卷积神经网络能够很好二维图像的特征 。尽管多层神经网络和反向传播算法早在1980s就已经被发现能够很好地从训练数据中进行特征检测,但是直到海量标注数据和计算力到来他们才开始展现作用 。
介绍小型数据集(NORB、Caltech-101/256、CIFAR-10/100等)的出现,使得机器学习方法在简单的对象识别任务方面有成效 。但是新的超大型图像数据集,如LabelMe(包含数十万分割图像)和李飞飞博士发起的ImageNet(包含1500万张已标注高清图片 , 这些图片超过22000个类别)才使得基于卷积神经网络的复杂图像识别有可能成功 。并且,基于先验知识和模型设计 , 卷积神经网络可以弥补机器学习方法在图像复杂度方面的缺陷 。卷积神经网络与前馈神经网络相比(feedback neural networks)在模型网络结构和层数类似的情况下,网络中的连接数和参数都要少得多,更加容易训练,并且在最终的模型效果来说相差无几 。尽管卷积神经网络非常优秀和高效,但是应用在大规模高分辨率图像上成本仍然很高 。GPU训练与优化的2D卷积结合,在有足够多标注的图像数据集的训练下,可以避免严重的过拟合 。该论文的主要工作为训练了一个大型卷积神经网络 , 并在ILSVRC-2012取得了非常好的成绩 。并贡献了一种在GPU上实现的优化算法 , 提升卷积神经网络中的2D卷积操作和其他卷积神经网络训练中的原子操作 。该GPU优化算法,即cuda-convnet算法已开源 。模型中也包含了其他用以改进算法表现和减少训练时间的操作,整个模型在2个3GB内存的GPU上并行进行训练 。为了避免过拟合 , 模型也提出了ReLu激活函数和Dropout等方法 。最终的网络包含5个卷积层和三个全连接层,经过实验这种网络结构表现最优,去掉任何一层后模型性能都会下降 。
数据集ILSVRC的数据集包含了120万训练图像、5万验证图像和15万测试图像 。该比赛主要由两个错误率指标,top-1 error rate 和 top-5 error rate,在比赛中指的是:对于一张测试图像 , 模型给出五个可能性递减的分类 , 第一个分类标签错误率和前五个标签错误率 。通常来说top-5错误率会远低于top-1错误率 。
网络结构网络模型包含5个卷积层,3个全连接层 。分别在2个GPU上进行训练,并且只在必要的步骤才进行GPU间的数据交换,例如第2个卷积层的输出连接到两个GPU上的网络上,所有的全连接层也是在2个GPU之间进行数据交换 。这种双GPU的训练模式,允许训练更大的模型和参数,经过卷积和池化后,参数和连接的大小可以在一台计算机上进行计算,并且能够降低些许错误率 。
ReLu模型使用了ReLu(Rectified Linear Unit)非线性单元,最先由Nari和Hinto提出该方法 。在卷积神经网络模型中效果要比tanh 或 $(1+e{-x}){-1}$等线性激活函数要好,可以降低梯度下降所用的训练时间 。
Response normalization该模型使用了局部响应归一化来帮助泛化 。$bi_{x,y}=ai_{x,y}/\left(k+\alpha \sum_{j=max(0,i-n/2)}{min(N-1,i+N/2}(aj_{x,y})2\right)\beta,$其中,参数k,n,α,β是模型超参,在训练前就已经设置好 。所有的ReLu非线性之后都会应用局部归一化 。这种归一化可以帮助减少top1和top5错误率至少1.4%和1.2% 。
Overlapping Pool池化层在卷积神经网络中汇集同一卷积核映射中的向量神经元的输出 。一般相邻的神经元汇总的池化层并不重合 。池化层可以看作是相邻s个像素的池化单元网格组成,每个网格汇总了以池化单元位置为中心的z*z的领域 。如果s=z , 那么该池化操作就是卷积网络中的局部池化层 。如果 s<z ,那么该池化层就是重叠池化 。重叠池化能够减少模型错误率并且一定程度上防止过拟合 。
模型架构网络在第一层和第二层卷积层之后添加了响应归一化(Response normalization),最大池化层(max pooling)在每一个Response normalization后记第四层卷积层后添加,ReLu非线性激活函数在每一层卷积层和全连接层的输出上应用 。最后一层全连接层的输出通过1000-way softmax处理后产生一个1000类标签的分布 。第一个卷积层的输入是224

推荐阅读