AlexNet imagenet classification with deep convolutional neural networks 阅读笔记

NIPS-2012-imagenet-classification-with-deep-convolutional-neural-networks-Paper

该网络有60,000,000个参数、650,000个神经元,包含5个卷积层(有一些后面跟着最大池化层),三个全连接层和一个1000-way的softmax。为了训练的更快,我们使用了非饱和神经元并对卷积操作进行了非常有效的GPU实现。为了减少全连接层的过拟合,我们采用了一个最近开发的名为dropout的正则化方法,结果证明是非常有效的。

1 Introduction

为了从百万张图片中学习到上千个对象,我们需要一个具有大学习容量的模型。但是,像目标识别这种很复杂的任务,即便有像ImageNet这样的数据集,也不会被具体化,所以我们的模型需要有很多的先验知识来弥补我们所不拥有的数据。

贡献主要有以下几点:

  • 在ImageNet数据集的子集上训练了最大的卷积神经网络
  • 写了对于2D卷积的高度优化GPU的实现和其他训练卷积神经网络的固有操作
  • 有大量的新和不寻常的特征,提升了性能并减少了训练时间
  • 网络的尺寸导致过拟合是一个大问题,我们在Section 4中提出了几个有效的防止过拟合技巧
  • 网络包含了5个卷积层和3个全连接层,每一个层都很重要,因为移除任意一个层都会导致性能下降

**最后,网络尺寸主要受限于目前GPU的内存容量和我们能忍受的训练时间。**我们的网络在两个GTX 580 3GB GPU上训练五六天。我们的所有实验表明我们的结果可以简单地通过等待更快的GPU和更大的可用数据集来提高。

2 The Dataset

ImageNet有不同分辨率的图像,而我们的系统需要一个固定的输入维度。因此我们将图片降采样到256×256的固定分辨率。如果是长方形图片,那我们先将图片缩放到短边长度为256,然后从中心裁剪出一个256×256块的图像。除了在训练集上对像素减去平均活跃度外,我们不对图像做任何其它的预处理。因此我们在原始的RGB像素值(中心的)上训练我们的网络。

3 The Architecture

网络的架构如图2所示,共含有8个学习层——5个卷积层和3个全连接层。下面介绍的东西是以重要程度来估计先后顺序的,也就是说第一节(Section 3.1)的内容最重要。
在这里插入图片描述

3.1 ReLU Nonlinearity

一个神经元输出的标准方式是 f ( x ) = t a n h ( x ) ; f ( x ) = ( 1 + e − x ) − 1 f(x)=tanh(x);f(x)=(1+e^{-x})^{-1} f(x)=tanh(x);f(x)=(1+ex)1。就梯度下降的训练时间而言,饱和非线性要比非饱和线性( f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x))慢很多。根据Nair和Hinton[20]的说法,我们将这种非线性神经元称为修正线性单元(ReLU)。采用ReLU的深度卷积神经网络训练时间比等价的tanh单元要快几倍。如图1所示。这个图表明,如果我们使用传统的饱和神经元模型,那我们就无法用这么大的网络来完成这个工作。
在这里插入图片描述

3.2 Training on Multiple GPUs

GPU和GPU之间可以直接进行读写,而不用通过宿主机内存,故其有非常好的并行机制。我们利用此机制将一半的核(或神经元)放在一个GPU上,还有一个技巧:GPU只在特定层上进行通信。例如,第3层的核会将第2层的所有核映射作为输入。然而,第4层的核只将位于相同GPU上的第3层的核映射作为输入。连接模式的选择是一个交叉验证问题,但这可以让我们准确地调整通信数量,直到它的计算量在可接受的范围内。

与每个卷积层一半的核在单GPU上训练的网络相比,这个方案降分别低了我们的top-1 1.7%top-5 1.2%的错误率。双GPU网络比单GPU网络稍微减少了训练时间。

3.3 Local Response Normalization

ReLU不需要输入标准化来防止饱和。如果训练样本为ReLU产生正值,就会有相应的神经云进行学习。但是我们发现下面的局部标准化机制仍有利于泛化。 a x , y i a_{x,y}^i ax,yi是在位置(x,y)上应用核 i i i的神经元激活值,然后应用ReLU非线性计算,响应-标准化后的 激活值 b x , y i b_{x,y}^i bx,yi为:
在这里插入图片描述

是在同一个空间位置的n个“adjacent”近邻的核映射进行相加和的,N是在这层的所有核数量。核映射顺序是任意的,并在训练开始之前就确定了。响应-标准化的顺序实现了一种侧抑制形式,灵感来自于真实神经元中发现的类型,为使用不同核进行神经元输出计算的较大活动创造了竞争。(这一句话不太懂This sort of response normalization implements a form of lateral inhibition inspired by the type found in real neurons, creating competition for big activities amongst neuron outputs computed using different kernels.)常量k,n,α,β是超参数,它们的值通过验证集确定;我们设k=2,n=5,α=0.0001,β=0.75。我们在特定的层使用的ReLU非线性之后应用了这种归一化(请看3.5小节)。

响应标准化分别减少了top-1 1.4%top-5 1.2%的错误率。

3.4 Overlapping Pooling

池化层归纳了使用同一核映射的相邻组神经元的输出。习惯上,相邻池化单元归纳的区域是不重叠的。更确切的说,池化层可看作由池化单元网格组成,网格间距为s个像素,每个网格归纳池化单元中心位置z×z大小的邻居。如果设置s=z,我们会得到通常在CNN中采用的传统局部池化。如果设置s<z,我们会得到重叠池化。这就是我们网络中使用的方法,设置s=2,z=3。这个方案分别降低了top-1 0.4%top-5 0.3%的错误率。但我们观察到这种方案会有点更难过拟合(意思应该是这样更不易于过拟合吧)。

3.5 Overall Architecture

之前介绍过。我们的网络最大化多项逻辑回归的目标,这等价于最大化预测分布下训练样本正确标签的对数概率的均值。

第2,4,5卷积层的核只与位于同一GPU上的前一层的核映射相连接(看图2)。第3卷积层的核与第2层的所有核映射相连。全连接层的神经元与前一层的所有神经元相连。第1,2卷积层之后是响应归一化层。3.4节描述的这种最大池化层在响应归一化层和第5卷积层之后。ReLU非线性应用在每个卷积层和全连接层的输出上。

第1卷积层使用96个核对224 × 224 × 3的输入图像进行滤波,核大小为11 × 11 × 3,步长是4个像素(核映射中相邻神经元感受野中心之间的距离)。第2卷积层使用用第1卷积层的输出(响应归一化和池化)作为输入,并使用256个核进行滤波,核大小为5 × 5 × 48。第3,4,5卷积层互相连接,中间没有接入池化层或归一化层。第3卷积层有384个核,核大小为3 × 3 × 256,与第2卷积层的输出(归一化的,池化的)相连。第4卷积层有384个核,核大小为3 × 3 × 192,第5卷积层有256个核,核大小为3 × 3 × 192。每个全连接层有4096个神经元。 (核数量由小变大再变略小,看不出啥规律。。倒是核大小一直在变小或者保持不变)

4 Reducing Overfitting

6000万的参数太多了,很容易过拟合。

4.1 Data Augmentation

图像数据上最简单常用的用来减少过拟合的方法是使用标签保留变换来人工增大数据集。我们使用了两种独特的数据增强方式,两种方式都是从原始图像上使用很少的计算量来产生变换的图像,所以变换的图像不用存储在硬盘上。在GPU在训练时,变换的图像是由CPU来进行计算的,所以这种数据增强是不占用计算资源的。

第一种数据增强方式包括产生图像变换和水平翻转。我们从256×256图像上通过随机提取224 × 224的图像块实现了这种方式,然后在这些提取的图像块上进行训练。这通过一个2048因子增大了我们的训练集,尽管最终的训练样本是高度相关的。没有这个方案,我们的网络会有大量的过拟合,这会迫使我们使用更小的网络。在测试时,网络会提取5个224 × 224的图像块(四个角上的图像块和中心的图像块)和它们的水平翻转(因此总共10个图像块)进行预测,然后对10个图像块上的softmax层预测进行平均。

第二种数据增强方式是改变训练图片的RGB通道强度。在整个ImageNet训练集的RGB像素值执行PCA,对于每个训练图像,我们加上找到的主成分的乘积,(相乘的)幅度与对应特征值乘上一个随机变量(该变量服从0均值核0.1标准差的高斯分布)成正比。因此对于每一个RGB图像像素 I x y = [ I x y R , I x y G , I x y B ] T I_{xy}=[I_{xy}^R,I_{xy}^G,I_{xy}^B]^T Ixy=[IxyR,IxyG,IxyB]T,我们加上下面数量(的主成分):

[ p 1 , p 2 , p 3 ] [ α 1 λ 1 , α 2 λ 2 , α 3 λ 3 ] T [p_1,p_2,p_3][\alpha_1\lambda_1,\alpha_2\lambda_2,\alpha_3\lambda_3]^T [p1,p2,p3][α1λ1,α2λ2,α3λ3]T

p i p_i pi λ i λ_i λi分别是RGB像素值3 × 3协方差矩阵的第 i i i个特征向量和特征值, α i α_i αi是前面提到的随机变量。每个 α i α_i αi会用于这张训练图像所有的像素并不会改变,直到下次再训练到这张图像时才会改变 α i α_i αi的值。这个方案近似抓住了自然图像的一个重要特性,即光照的颜色和强度发生变化时,目标身份是不变的。这个方案减少了top 1错误率1%以上。

4.2 Dropout

结合多种不同的模型可以有效的降低测试错误率,但是对于大型网络来说这个时间是耗费不起的。最近提出的Dropout技术,可以只花大概两倍的训练成本来做到这点。该技术将每个隐神经元的输出以0.5的概率设置为0,这样被"dropped out"的神经元不会参与forward pass 和 backpropagation。所以每次网络训练都是不同的架构,但他们共享参数。这样做也使得神经元之间不会过度依赖,因为可能下次这个神经元就被"dropped out"了,从而增强了网络的鲁棒性。在测试时,我们使用所有的神经元但将它们的输出乘以0.5,对指数级的许多"dropped out"的网络预测分布进行几何平均,这是一种合理的近似。

我们在图2中的前两个全连接层使用dropout。如果没有dropout,我们的网络会表现出大量的过拟合。不过dropout大致上要求收敛的迭代次数翻了一倍。

5 Details of learning

我们使用随机梯度下降来训练我们的模型,样本的batch size为128,动量为0.9,权重衰减为0.0005。我们发现少量的权重衰减对于模型的学习是重要的。换句话说,权重衰减不仅仅是一个正则项:它减少了模型的训练误差。权重w的更新规则是
在这里插入图片描述

i i i是迭代索引, v v v是动量变量, ε ε ε是学习率, ⟨ ∂ L ∂ w ∣ w i ⟩ D i \langle \frac{\partial L} {\partial w} |_{w_i}\rangle _{D_i} wLwiDi是目标相对 w w w的函数,在 w i w_i wi上的第 i i i D i D_i Di的微分平均。

我们使用均值为0,标准差为0.01的高斯分布对每一层的权重进行初始化。我们在第2,4,5卷积层和全连接隐层将神经元偏置初始化为常量1。这个初始化通过为ReLU提供正输入加速了学习的早期阶段。我们在剩下的层将神经元偏置初始化为0。

我们对于所有层都用一样的学习率,在整个训练过程中会进行手动调整。当验证误差在当前学习率下不再改进的时候,我们将学习率除以10。学习率初始化为0.01,并在整个训练过程中降低了三次。我们在120万图像的训练数据集上训练神经网络大约90个循环,在两个NVIDIA GTX 580 3GB GPU上花费了五到六天。

6 Results

在这里插入图片描述

表2:五个类似的CNN预测的平均误差率为16.4%。为了对ImageNet 2011秋季发布的整个数据集(1500万图像,22000个类别)进行分类,我们在最后的池化层之后有一个额外的第6卷积层,训练了一个CNN,然后在它上面进行“fine-tuning”,在ILSVRC-2012取得了16.6%的错误率。对在ImageNet 2011秋季发布的整个数据集上预训练的两个CNN和前面提到的五个CNN的预测进行平均得到了15.3%的错误率。(看来平均模型确实有效!)
在这里插入图片描述

6.1 Qualitative Evaluations

在这里插入图片描述

由图3可知,第一个卷积层学到了各种各样的频率核、方向选择核以及多种颜色核。GPU 1上的核主要是没有颜色的,而GPU 2上的核主要是针对颜色的。这种细化在每次运行时都会发生,并且是与任何特别的随机权重初始化(以GPU的重新编号为模)无关的。
在这里插入图片描述

即使是不在图像中心的目标也能被网络识别,例如左上角的小虫。大多数的top-5标签看起来是合理的。例如,对于美洲豹来说,只有其它类型的猫被认为是看似合理的标签。而在某些案例(格栅,樱桃)中,图像中的焦点是有歧义的。

另一种探测网络可视化知识的方式是,考虑由最后那层4096维的隐藏层得出的特征激活值。如果两个图像产生的特征激活值之间具有较小的Euclidean separation欧氏距离,我们就可以说在网络的高层特征上这两张图像是相似的。如图4。注意,检索的狗和大象有很多姿态,故检索到的训练图像与第一列的查询图像在L2上通常是不接近的。

7 Discussion

类似于摘要。

个人总结:

这是CNN首次在计算机视觉竞赛中大放光芒,从此之后深度学习迎来了春天。

作者因为要面对复杂的识别任务才提出了具有大容量的复杂网络,文中介绍了网络的架构以及一些重要组件和技巧(ReLU、GPU并行训练、局部响应标准化、重叠的池化以及重要的过拟合方法等),后续又说了训练的细节,在结果方面定量定性的将结果展示了出来。

整体来说是一个挺好的文章,就是网络的可解释性有些差,但这也是深度学习的通病。。限于当时的硬件设施,作者只能搞这么大的网络,若有硬件支持,肯定还能搞更大的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值