Deep Learning-TensorFlow (3) CNN卷积神经网络_AlexNet前瞻

时间:2022-12-14 17:34:50

前言:实习面试的时候,被问到有关深度学习和 AlexNet 的问题,答得并不是很好... 在此记录一些学习内容,相互学习提高。

参考论文:ImageNet Classification with Deep Convolutional Neural Networks, Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton, 2012


1. 简介(Introduction)

Alex Krizhevsky 在2012年的论文 ImageNet Classification with Deep Convolutional Neural Networks 使用了一些改良 CNN 方法去解决普适物体识别难题,效果惊人。在 ILSVRC-2010 大赛中使用过的 ImageNet (由多于22,000个种类中超过1500万张带标签的高分辨率图像组成) 的子集上,训练了当时最大型的卷积神经网络之一,在测试数据得到了 top-1 误差率37.5%,以及 top-5 误差率17.0%的优秀效果;在ILSVRC-2012大赛中,输入了该模型的一个变体,并依靠 top-5 测试误差率15.3%取得了胜利。

Deep Learning-TensorFlow (3) CNN卷积神经网络_AlexNet前瞻

该神经网络有6000万个参数和650,000个神经元,由五个卷积层,以及某些卷积层后的 max-pooling 层,三个全连接层,以及最后的 1000-way 的 softmax 层组成。为了使训练速度更快,使用了非饱和的 ReLu 激活函数和多 GPU 上的高效卷积运算工具 CUDA;同时为了减少全连接层的过拟合,采用了重叠 Poolingdropout 正则化和图像增广 data augmentation

Alex 等人将120万个带标签的训练样本在两块 GTX 580 3GB GPU 上训练五六天,并取得了卓越成果,使得深度学习开始在各个领域大显身手,也使得 NVIDIA 显卡和 CUDA 工具逐渐碾压对手。


2. 数据集(Dataset)

ImageNet 是一个拥有超过1500万张带标签的高分辨率图像的数据集,这些图像分属22,000多个类别。作为 PASCAL 视觉目标挑战赛的一部分,一年一度的 ImageNet 大型视觉识别挑战赛(ILSVRC)从2010年开始举办。ILSVRC 使用 ImageNet 的一个子集,分为1000种类别,每种类别中都有大约1000张图像。总之,大约有120万张训练图像,50,000张验证图像和150,000张测试图像。 

在 ImageNet 上,通常需要报告两个误差率:top-1 和 top-5 ,其中 top-5 误差率是指测试图像上正确标签不属于被模型认为是最有可能的五个标签的百分比。 


3. 架构(Architecture)

3.1 ReLU(Rectified Linear Units)

Deep Learning-TensorFlow (3) CNN卷积神经网络_AlexNet前瞻

使用了 ReLu 的 CNN 在 CIFAR-10数据集 batchsize 为100的训练中,epoch 5(2500次迭代)就把验证集错误率降到了25%,而 Tanh 则要花上35个epoch,速度提升了六倍。

Xavier 在2011年的 Deep Sparse Rectifier Neural Networks 论文中给出了 ReLu 在非监督学习网络中的卓越成效,于是Alex 在2012年的 AlexNet 中,把所有 Tanh Deep Learning-TensorFlow (3) CNN卷积神经网络_AlexNet前瞻和 LogisticDeep Learning-TensorFlow (3) CNN卷积神经网络_AlexNet前瞻全换成了 ReLuDeep Learning-TensorFlow (3) CNN卷积神经网络_AlexNet前瞻ReLu 解决了深层网络中梯度消失的问题,为网络引入了大量的特征稀疏性,加速了复杂特征解离,非饱和的宽广映射空间,加速了特征学习。


3.2 多GPU训练(Training on Multiple GPUs)

训练120万个样本一个GPU显然是不够的,Alex 等人将网络分布在两个GPU上,进行跨 GPU 并行化,网络可以直接从另一个GPU的内存中读出和写入,不需要通过主机内存。他们采用的并行方案是在每个GPU中放置一半核(或神经元),另外 GPU 间的通讯只在某些层间进行。


3.3 局部响应归一化(Local Response Normalization)

Deep Learning-TensorFlow (3) CNN卷积神经网络_AlexNet前瞻

虽然 ReLu 不需要输入归一化来防止它们达到饱和,局部归一化仍有助于模型的一般化(generalization)。a 表示点 (x, y) 处卷积和ReLu非线性后的结果,响应归一化 b 覆盖了 n 个“相邻的”位于相同空间位置的核映射,N 是该层中的映射总数。这种响应模仿了生物神经系统的"侧抑制"机制,对局部神经元的活动创建竞争环境,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。


3.4 重叠池化(Overlapping Pooling)

CNN 中的 Pooling 层总结了同一核映射中邻近神经元组的输出。通常通过邻接 pooling 单元总结的邻近关系不重叠,而不重叠忽视了邻近像素的对特征的影响,会造成网络精度下降。Alex 在 paper 中还提到,重叠 Pooling 一定程度上减轻了过拟合,带来更高的精度和更快的特征学习。


4. 减少过拟合(Reducing Overfitting)

神经网络结构有6000万个参数,虽然 ILSVRC 有1000个类别,要学习如此多的参数还是不够的。AlexNet 减少过拟合的两种主要方法:

4.1 数据增广(Data Augmentation)

最简单最常用的方法,是使用标签-保留转换(label-preserving transformations)。他们使用两种不同形式的数据增强,这两种形式都用很少的计算量从原始图像中产生标签相同的转换图像,且不需要存储空间。 

第一种形式生成图像patch和水平翻转:从256×256的输入图像中随机提取224×224的 patch(和它们的水平翻转),并在这些提取的 patch 上训练网络(因此输入数据是224×224×3)。这样使得训练集规模扩大了2048倍,防止了大量的过拟合。

第二种形式为改变图像中RGB通道的强度:在整个 ImageNet 训练集的 RGB 像素值集合中进行 PCA ,对于每个训练图像,成倍增加已有主成分,比例大小为对应特征值乘以一个从均值为0、标准差为0.1的高斯分布中提取的随机变量。这个方法有效体现了自然图像的一个重要属性,即 label 是不随光照强度与颜色变化的。

4.2 Dropout

dropout 的技术,是以一定概率将每个隐层神经元的输出置为零。以这种方式 “dropped out” 的神经元既不会前向传播,也不参与反向传播。所以每进行一次迭代,神经网络就尝试一个不同的结构,但是所有这些结构之间共享权重。由于神经元不能依赖于其他特定神经元而存在,所以这种技术降低了神经元复杂的互适应关系。正因如此,网络要*学习更为鲁棒的特征。


5. 学习过程

在 AlexNet 中采用了随机梯度下降法(SGD)和一批大小为128、动力为0.9、权重衰减为0.0005的样例来训练网络,更新权重:

Deep Learning-TensorFlow (3) CNN卷积神经网络_AlexNet前瞻

AlexNet 用一个均值为0、标准差为0.01的高斯分布初始化了每一层的权重 w ,用常数1初始化了第二、第四和第五个卷积层以及全连接隐层的神经元偏差 b;对于所有层都使用了相等的学习率。


6. 总结

AlexNet 的成功之处:

  • ReLu 函数的使用;
  • 使用 CUDA 在多 GPU 上并行训练;
  • Dropout 等技术有效防止过拟合;
  • 深层次的卷积神经网络结构。

最后,CNN 非常适用于图像的特征提取。