ImageNet classification with deep convolutional neural networks阅读笔记
ImageNet classification with deep convolutional neural networks阅读笔记
作者:Alex Krizhevsky
所以该论文的模型也叫AlexNet
NIPS顶会文章
Abstract
(1)提出了一个深度卷积网络,在ImageNet LSVRC2010,top1和top5错误分别是37.5%、17.0%,远远好于之前的表现。
(2)神经网络有6000万个参数,650000神经元,5个卷积层(某些卷积层后面有池化层)和三个全连接层,还有排在最后的1000-way的softmax层组成。
(3)为减少全连接层的过拟合,使用了一个dropout的正则化方法。
1 Introduction
在ILSVRC-2010和ILSVRC-2012大赛中使用过的ImageNet的子集上,训练了迄今为止最大型的卷积神经网络之一,并取得了迄今为止在这些数据集上报告过的最好结果。
2 The Dataset
ImageNet是由大概22000个类别超过1500万章带标签的高分辨率图像组成的数据集。
LSVRC使用ImageNet的一个子集,分为1000种类别,每种类别中都有大约1000张图像。
实验所需要一个恒定的输入维度,所以需要对图片采样,获得固定大小的256X256的分辨率。
3 The Architecture
8个带权重的层,前5层是卷积层,剩下3层是全连接层。最后一层是1000维softmax输入
3.1 ReLU非线性
训练速度比之前的sigmod和tanh快,只需要判断输入是否大于0
解决了之前**函数的梯度消失问题(在正区间)
带ReLU的四层卷积神经网络(实线)在CIFAR-10数据集上达到25%训练误差率要比带tanh神经元的同等网络(虚线)快六倍
3.2多GPU并行训练
以GTX 580作为实验工具进行并行化训练,由于训练样本过大,实验将该神经网络分布在两个GPU上,因为它们能够直接从另一个GPU的内存中读出和写入,不需要通过主机内存。实验将各一半的网络核放在每个GPU上,这种结构网络比单GPU网络所需的训练时间要少。
3.3局部反应归一化
ReLU有一个属性,无需对输入数据进行归一化来避免饱和。这种反应归一化通过一种模仿生物神经元的横向抑制,让神经元利用不同核心程序进行计算的产生竞争,从而降低错误率。对于位置(x,y)上实行ReLU训练的具体公式为:
表示点(x,y)处通过应用核计算出的神经元**度; 表示响应归一化活性;N是该层中的核总数;常数k,n,α和β是超参数,它们的值要用验证集来确定,设
响应归一化使实验的top-1与top-5误差率分别减少了1.4%与1.2%
3.3重叠Pooling
CNN中的池化层归纳了同一核映射上相邻组神经元的输出。
设置s=2,z=3。这个方案分别降低了top-1 0.4%,top-5 0.3%的错误率。 (网格间距为s个像素,网格归纳池化单元大小z*z)而且更难过拟合。
3.5 overall architecture(总体结构)
8个带权重的层,前5层是卷积层,剩下3层是全连接层。最后一层是1000维softmax输入
4 reducing ovrtfitting(减少过拟合)
实验的神经网络架构有6000万参数,尽管每个训练样本从图像到标签的映射上强加了10比特的约束,但这不足以学习这么多的参数而没有相当大的过拟合。
方法:
数据增强
dropout
4.1 数据集放大
第一种数据扩充的方法由生成图片平移和水平反射组成,作者通过在 256256 尺寸的图片上随机提取 224224 的小块,然后在这些被提取的小块上训练网络。即使结果训练样例是高度内部依赖的,这个办法将训练集的尺寸增加了 2048 倍。没有这个策略,AlexNet 一定会产生过拟合,这将迫使作者使用更小的网络,从而影响训练效果。
4.2 Dropout
用 “dropout”技术来实现模型合并,即对每一个隐层神经元以 0.5 的概率将其设置为 0,即“被剔除”。这种“被剔除”的神经元不会对前向传播产生作用,也不会参加反向传播。所以,每次输入,神经元网络采样得到的是不同结构,但是所有的结构共享权重。这个技减少了神经元共适应性的复杂性,因为一个神经元不能依赖于特别的一个其他的神经元。因此,这个技术使其学习到更加健壮的特征,使其在与许多不同的其他神经元的随机子集连接时更加有效。在测试阶段,AlexNet 使用了全部神经元,但是将它们的输出乘上了 0.5,这是一个合理的近似去得到由多指数 dropout 网络产生的预测分配性的几何平均值。Dropout 技术将需要覆盖的迭代次数进行了翻倍。
5 details of learning(学习细节)
使用随机梯度下降法(SGD)进行训练,batch size为128,momentum(动量)为0.9,weight decay(衰退)为0.0005(weight decay很重要,不仅仅是正则化,还可以减少模型训练误差)。
权重w的更新公式为:
其中,i是迭代次数,v是momentum变量,ε是学习率
是第i个batch(称为Di)对w的平均偏导数。
每一层的weight初始化方法为:均值为0,标准差为0.01的高斯分布。第2,4,5层的卷积层和3个全连接层的bias初始化都设置为1,其余层的bias初始化为0。这样设置初始化参数可以加速收敛。
对于学习率的设置,每一层的学习率相同,学习率初始化为0.01,后面的时候,当模型在验证集的误差不变时,将当前的学习率除以10,然后再接着训练。我们120万的训练集上训练了90次。
6 results(结果)
实验在ILSVRC-2010上的结果概括为表1。取得了top-1 37.5%,top-5 17.0%的错误率
ILSVRC-2012的测试结果,取得了top-5 18.2%的错误率。