神经网络一 | ImageNet Classification with Deep Convolutional Neural Networks

一 大量数据集与大规模网络训练

1.1 个人简单理解

该文章设计目的是能够学习大规模,高分辨率的图像数据集且具备足够学习能力的网络。

如此一来就免不了对网络的宽度和深度有较高的要求,与此同时网络参数的数量和计算量也是庞大的。

作者首先确定使用CNNs的架构,这样做减少了神经层之间的连接以及参数量,便于训练,且性能相比标准的具有相似尺寸大小的网络层的前馈神经网络只是轻微的下降。之后作者在框架中引入了几个设计,如ReLU的使用,数据集的扩增等等,提高了CNN网络的性能,还有就是GPU的使用硬性保证了大规模网络能够train起来。

二 框架学习

先展示神经网络框架:五个卷积层和三个全连接层

【网络分析】

        输入为224×224×3的图像

        卷积层1的卷积核为11×11×3,strde=4,每个GPU内(2.2讲解)输出55×55×48,响应规范化(2.3节内容),池化(2.4节内容)

        卷积层2:256个卷积核,大小为5×5×48;响应规范化,池化

        卷积层3,4:384个卷积核,大小为3×3×256;无池化

        卷积层5:256个卷积核,大小为3×3×192

        全连接层6,7:每个GPU内有2048个神经元,共4096

        全连接层8:输出与1000个softmax相连

        输出:关于1000个类的分布

具体网络各详细参数的分析可以参考另一篇博文,讲的很详细:

https://blog.csdn.net/zziahgf/article/details/79619059

本文主要讲了设计的框架的四个新颖的特点,并按重要性顺序展开讲述

2.1 激活函数 —— 使用ReLU

        作者用非饱和非线性函数(non-saturating nonlinearity):

                f(x) = max(0,x)

替代了饱和非线性函数(saturating nonlinearities),f(x) = tanh(x),f(x) = (1+e^{-x})^{-1},在网络中作为激活函数的作用。

作者用实验来证明:在达到相同训练误差的情况下,使用前者的速度要比后者快了六倍

2.2 用多块GPU训练

         作者从单块GPU的内存太小,而网络较大无法放下的角度出发,提出用两块GPU来训练

【优点】

        允许大规模的神经网络的设计

【训练模式】

        大部分训练阶段,每个GPU都计算自己对应的那一部分网络里的数据,即网络的下一层输入是上一层的输出,都存储在同一个CPU内。

        只有在卷积层的第三层需要输出的交互(即第三层的输入是两个GPU内第二卷积层输出在第三维度上的堆叠),以及全连接层。

2.3 局部响应规范Local Response Normalization

        当神经元是ReLUs时,只要神经元的输入是正的,那么就会有输出,也就能继续学习(神经元输入为负时,输出为0,相当于这个神经元‘失活’了,无法参与网络的训练)。

        下面提出的方法有助于泛化(generalization)

b_{x,y}^i = a_{x,y}^i/\left ( k+\alpha \sum\limits_{max(0,i-n/2)} ^{min(N-1, i + n/2)}{(a_{x,y}^j)}^2\right )^\beta

        假设在某一个卷积层有N个卷积核,在同一空间位置(x,y)下,令a_{x,y}^i表示该位置使用第i个卷积核,并通过ReLU计算后的结果,称为activity of a neuron,n是邻接的卷积核的数量,这种响应规范是受生物上神经元侧抑制的启发,增加神经元输出之间的竞争。b_{x,y}^i称为response-normalized activity。

【参数k = 2, n =5,\alpha = 10^{-4}, \beta = 0.75

         由一组验证集确定得到的

2.4 重叠池化

        传统池化的方法中,被池化的区域都是不相交的,设被池化区域为z\times z ,池化层是由以s个像素为间隔的网格,其满足s=z

        当s<z时,池化就产生了重叠,池化的像素可能是由多个区域拼成的。

【效果】

        实验结论是可以降低0.4%的top-1 error和0.3%的top-5 error

3 对抗过拟合

3.1 数据扩增Data Augmentation

3.1.1 enlarge the dataset using label-preserving transformations

【方法优点】

(1)转换后的图像可以在原图上用小的计算量生成,无需占用额外的存储

(2)转换后的图像在CPU上生成,网络在GPU上训练,故不占用计算

【扩增方法】

        从256×256的图像上随机生成224×224patches,并生成其水平方向的翻转图,用于网络的训练。这样的方法以2048倍扩大训练集(这个倍数存疑)。

【实验数据集】

        提取了四个角,以及中心的patch,共五个patches,再生成其对应的水平方向的反射,共10个patches用于网络训练。

3.1.2 改变RGB通道强度 altering the intensities of the RGB channels

在RGB像素值集合上使用PCA,给每个主成分的幅度值添加一个乘数:对应特征值×从均值为0,标准差为0.1的高斯分布中随机生成的数。

【转换公式】

        对RGB图像中的像素I_{xy} = [I_{xy}^R,I_{xy}^G,I_{xy}^B]

        增加项:

[p_1,p_2,p_3][\alpha_1\lambda_1,\alpha_2\lambda_2,\alpha_3\lambda_3]^T

        p_i,\lambda_i分别是单个像素3×3RGB协方差矩阵的第i个特征值和特征向量,\alpha是前面提到的服从高斯分布的随机采样值,对于每个训练图像只采样一次,所有像素公用。

【解释】

        对自然图像来说,目标种类对于照明的色彩和强度的改变是不变的

【效果】

        减少了1%的top-1 error

3.2 Dropout

        避免神经元之间的依赖,增强网络的鲁棒性

【实验设置】

        使用所有的神经元但是输出都乘以0.5

        在前两层全连接层使用dropout

【效果】

        没有dropout时本文的网络出现大量的过拟合,

4 网络学习的一些细节

4.1 训练方法

【学习方法】

        随机梯度下降法,batchsize 128,momentum = 0.9,权重衰减0.0005,

v_{i+1} : = 0.9 \cdot v_i - 0.0005 \cdot \epsilon \cdot w_i - \epsilon \cdot {\left \langle \frac{\partial L}{\partial w}|w_i \right \rangle}_{D_i}

w_{i+1} := w_i + v_{i+1}

【参数说明】

        i是迭代次数,v是动量,\epsilon 是学习率

        {\left \langle \frac{\partial L}{\partial w}|w_i \right \rangle}D_i :batchD_i的关于ww_i导数的平均值

4.2 网络初始化

【weight】每层的权重由均值为0,方差为0.01的高斯分布中取得

【bias】第二,三,四层卷积层,全连接的hidden layers的bias为1,其他层bias为0。

4.3 一些补充细节

【学习率】

        当validation error rate停止下降时将当前学习率除以10,初始化为0.01

【实验】

        训练了120万图像,90epoch,在NVIDIA GTX 580 3GB GPUs上训练了五到六天

5 模型评估

5.1 数据集与实验数据

5.1.1 数据集相关知识

【ImageNet】 有1500万有标签,高分辨率图像,约有22000个类别。图像的分辨率不统一。

【ILSVRC】

        全名:ImageNet Large-Scale Visual Recognition Challenge,一类视觉目标竞赛,它又有ILSVRC-2010,有公开测试集标签数据,ILSVRC-2012,无可用测试集标签。

【评估指标】ImageNet通常用两个指标来代表错误率:top-1和top-5。top-5表示正确标签不在网络模型认为的最有可能的五个标签内的比例。

5.1.2 实验数据

【Table1解读】在ILSVRC-2010的数据结果,第三行是本文的模型

前两行是之前表现最优的实验结果,用的应该都是传统方法。 

【Table2】在IRSVRC-2012的数据结果 

作者做了很多组相似网络的实验 ,因为测试集不公开,但测试集与验证集数据接近,所以1 CNNs和 1CNN*用验证集的数据来表示 。

1 CNN是本文描述的网络

5 CNNs是五个相似CNN的预测平均值

1 CNNs是在1CNN基础上,在最后一个池化层后接了一个新的卷积层(第六层卷积层),用整个ImageNet Fall 2011 release训练(15M images 22K categories)然后在ILSVRC-2012上进行"fine-tuning"的结果

7 CNNs* 两个在Fall 2011上与训练的模型和5CNNs的预测平均值。

5.2 Figure 3,4的解读

5.2.1 Figure3

展示了第一层卷积层的96个卷积核的可视化图,可以看到每个核都学到了不同的内容,上面48个是CPU1内的核,学习的侧重可能是方向,纹理类的;下面48个是在GPU2内的核,侧重点可以看出是颜色,方向 。

 5.2.2 Figure4

  左图

【数据来源】

        ILSVRC-2010中的8张测试集中的图片和其对应的五个标签(网络生成的概率最大的五个标签),紫色是模型认为的概率分布,红色是正确的标签。

【模型评估结论】

        网络可以对目标不处于中心位置的图片正确的识别,大多数图片对应的标签都是合理的。比如豹子(leopard)被误认为可能是一种猫科动物(Egyptian cat)。

右图

【数据来源】 

        第一列是ILSVRC-2010中的测试集中的五个图像,剩下的六列是由训练集图像经网络训练后在the last hidden layer的特征向量,且与对应的测试集图像的欧氏距离最小。

【模型评估结论】

        右图是从另一个角度来分析模型的效果,左图是从最终的分类结果(softmax输出每一类的判别概率)来观察的;右图则是将网络中最后一个4096维的hidden layer的输出向量用图片形式可视化。

        在输出向量的层面,训练集经过网络产生的特征激活向量(feature activation vector)与测试集图像的特征激活向量在欧式距离上的差距很小。

        另外一点是,来源于训练集和测试集的两类图像在并不是在像素层级上的L2范数的接近,可以从图4右侧中看出,例如狗和大象,它们在图像中的有呈对称角度的。

猜你喜欢

转载自blog.csdn.net/weixin_45581089/article/details/120085626