深度学习之AlexNet解读

  • 为什么提出
    • 提出的背景
  • 基本思想及其过程
  • 优缺点及其发展


为什么提出?


提出的背景

 目前的目标识别任务基本上全是利用的传统机器学习的方法,为了提升他们的性能。
 由于现实中有成千上万的可变的图片,现在带标签的数据集相对来说还是太小了,因此简单的识别任务由于这些数据集的尺寸有限,还是获得了不错的效果。
 因此为了识别现实生活中的大量可变的图片,使用一个非常大的训练集显得尤为重要,包括LabelMe(包含成千上万全分割图片)和ImageNet(包含1500万带标签的高分辨率的2万2类图片,由于现实生活共有差不多3万多类)。
 为了学习这成百万上千万的图片,需要一个有非常大的学习容量的模型。
 卷积神经网络CNN(convolutional neural networks)由此提出,其容量可由改变他们的宽度和深度来加以控制,并且她们也对图片的性质(即统计性质的稳定性和局部像素间的依赖性)做出了正确的假设。
 相比于之前其他提出过的前馈神经网络,CNN拥有更少的连接和参数,因此也就更容易训练。
 但这远远不够,因为相对于尺寸较大的高分辨率图片,运用CNN仍然需要及其昂贵的代价。
 但是!由于下面两个原因,目前CNN得以运用:
   1. GPU:对2维卷积操作的高度优化。
   2. ImageNet:提供了足够多的标签数据样本训练,以致于没有造成严重的过拟合。


基本思想及其过程

ReLU(Rectified Linear Uints,修正线性单元),即f(x)=max(0,x),是一种非饱和非线性激活函数。相较于f(x)=tanh(x)和sigmoid函数:f(x)=(1+e^-x)^-1,这两种饱和非线性激活函数而言,梯度下降的时间更快。

深度学习之AlexNet解读_第1张图片

深度学习之AlexNet解读_第2张图片

 上述图可以看出,当x越来越大时,传统的饱和激活函数的梯度变化的越来越慢,几乎趋近于0,甚至于梯度消失,但是ReLU则没有这种问题,并且经过Hinton等人的实验表明ReLU相对于传统的激活函数而言,能够更快的学习到一个比较好的性能,这在大模型(深度,宽度上)和非常大的数据集上的应用无疑是非常有意义的。
局部响应归一化 aix,y 代表a神经元由第i个核在(x,y)上被计算然后经过ReLu激活函数加入非线性特性。则相应归一化 bix,y 由下列表达式得到:

bix,y=aix,y(k+αmin(N1,i+n/2)j=max(0,in/2)(ajx,y)2)β

 其中n代表同一空间位置的n个相邻的特征图,N代表一层的特征图总数,k,n, /alpha , /beta 都是都一个验证集来决定的超参数,在AlexNet中,Hinton等人设置为k=2,n=5, α=104 β =0.75,通常在应用ReLu非线性激活函数之后应用这个归一化。

重叠池化:传统的池化操作针都是针对相邻单元不重叠的操作,但在CNN中是在同一个特征图中对神经元的邻域内进行重叠的池化操作,在CNN中使用池化网格大小为3x3,步长为2,因此有重叠区域,Hinton等人用实验证明这个效果不仅优于非重叠的池化操作,而且还稍微有点减少过拟合。
 两种减少过拟合的方法:
增加数据:最容易而且通用的在图像数据上减少过拟合的方法就是使用保存标签变换来人工的扩大数据集。下面有两种不同的增加数据的方法,但相同的是,因为是在原始图像上做一些变换,而且是在先前图像仍在在GPU上做训练的时候,变换是在CPU上进行编程运算得到的结果,并且计算量很小,因此这样就避免了占用GPU计算资源。
 (1) 从256x256的图像中随机提取224x224以及他们的水平翻转图像用来训练。在测试时,网络通过提取5个224x224图像(4个角落以及中心)和他们的水平翻转图像(因此总共10个)来做测试,最后对这10个经过softmax之后取平均得到最终的预测结果。

[p1,p2,p3][α1λ1,α2λ2,α3λ3]T

这里 pi λi 分别是RGB像素值的3x3的协方差矩阵的第i个特征向量和特征值, αi 是上述的一个来自高斯分布的随机变量。
dropout:对每个隐藏神经元的输出以0.5的概率设置为0,即这些神经元不参与前向传播和反向传播。这样做,每次输入的时候,网络采样于不同的网络结构,但是所有的这些网络结构都共享权值。因此这个理论减少了复杂的互适应的神经元,也就是一个神经元不能依赖于某个特定的神经元而存在。这强迫一个神经元与大量不同其他神经元的随机子集来协同合作,从而学到更多鲁棒性特征。在测试的时候,使用所有的神经元,但是对他们的输出都乘上0.5。但是也双倍增加了要求收敛的迭代次数。
过程

  由上图可知,AlexNet共有8个权值层,前5个都是卷积层,剩下的3个是全连接层。
  输入:224x224x3图片。
  输出:1000类标签分类。
  由上图看到,分为两路的原因就是在两个GPU上并行计算,只有第三层是利用了第二层中的所有特征图,有点类似于人脑视觉信号在人脑中的传输中有个交叉回路的设计。在整个网络中,响应归一化层连接在第一二层卷积层之后。最大池化层连接在所有的相应归一化层和第五层卷积层之后。ReLU非线性激活应用在每个卷积层和全连接层之后。
深度学习之AlexNet解读_第3张图片

  在整个网络中使用了0.0005的权值衰减,这个非常小的权值衰减对学习的模型非常重要,它减少了模型的训练误差。
  权值更新规则为:

vi+1:=0.9vi0.0005ϵwiϵ(Lw|wi)Di

wi+1:=wi+vi+1

  i代表迭代次数,v是动量变量, ϵ 是学习率, (Lw|wi)Di 是由 wi 估计的,关于w的目标的导数在第i个块 Di 上的平均值,也就是求随机梯度,也就是更新取决于权值,权值衰减项(带学习率),以及随机梯度(带学习率)。
  对每层进行权值初始化都用高斯分布为N(0,0.0001)来随机取值。对第2,4,5层卷积层和全连接隐藏层的偏置项都初始化为1,剩余层的偏置项初始化为0。这样做的目的在于为初始阶段的ReLU提供正输入。手动调整学习率的值为0.01,启发式的以10的倍数调整学习率,且所有层的学习率置同一个值。

深度学习之AlexNet解读_第4张图片

  上图为第一层卷积层上的结果,上面48个为在GPU1上用48个卷积核产生的效果图,下面48个为在GPU2上用48个卷积核产生的效果图。


优缺点及其发展


  如果移除一个卷积层,那么整个AlexNet网络都会退化。所以Hinton提出网络深度对于有一个好的结果是非常重要的。
  Hinton还提出将会在视频序列中使用非常大和深的卷积神经网络,因为时间结构将会提供在静态图片中缺失或几乎不可见的有帮助的信息。

你可能感兴趣的:(深度学习)