《深度学习》 之 AlexNet卷积神经网络 原理 详解

AlexNet卷积神经网络

一.背景介绍

《深度学习》 之 AlexNet卷积神经网络 原理 详解
(图片来自网络)

lexNet 经常被认为是这一波人工智能浪潮的起点,该网络在 ImageNet 挑战赛中的错误率与前一届冠军相比减小了 10% 以上,比亚军高出 10.8 个百分点。AlexNet 是由多伦多大学 SuperVision 组设计的,由 Alex Krizhevsky, Geoffrey Hinton 和 Ilya Sutskever 组成。

AlexNet 是一个 8 层的卷积神经网络,使用 ReLU **函数,总共有 6 千万参数量。AlexNet 的最大贡献在于证明了深度学习的能力。它也是第一个使用并行计算和 GPU 进行加速的网络。

在 ImageNet 上,AlexNet 取得了很好的表现。它将识别错误率从 26.2% 降到了 15.3%。显著的性能提升吸引了业界关注深度学习,使得 AlexNet 成为了现在这一领域引用最多的论文。

二.模型简介

AlexNet中包含了几个比较新的技术点,也首次在CNN中成功应用了ReLU、Dropout和LRN等Trick。同时AlexNet也使用了GPU进行运算加速。
AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。AlexNet主要使用到的新技术点如下:

  1. 成功使用ReLU作为CNN的**函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU**函数在很久之前就被提出了,但是直到AlexNet的出现才将其发扬光大。《深度学习》 之 AlexNet卷积神经网络 原理 详解

  2. 训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout。《深度学习》 之 AlexNet卷积神经网络 原理 详解

  3. 在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。

  4. 提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。《深度学习》 之 AlexNet卷积神经网络 原理 详解

  5. 使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算。AlexNet使用了两块GTX 580 GPU进行训练,单个GTX 580只有3GB显存,这限制了可训练的网络的最大规模。因此作者将AlexNet分布在两个GPU上,在每个GPU的显存中储存一半的神经元的参数。因为GPU之间通信方便,可以互相访问显存,而不需要通过主机内存,所以同时使用多块GPU也是非常高效的。同时,AlexNet的设计让GPU之间的通信只在网络的某些层进行,控制了通信的性能损耗。 《深度学习》 之 AlexNet卷积神经网络 原理 详解
    (图片来自网络)

  6. 数据增强,随机地从256256的原始图像中截取224224大小的区域(以及水平翻转的镜像),相当于增加了2*(256-224)^2=2048倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的CNN会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化能力。进行预测时,则是取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结果求均值。同时,AlexNet论文中提到了会对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的高斯扰动,增加一些噪声,这个Trick可以让错误率再下降1%《深度学习》 之 AlexNet卷积神经网络 原理 详解
    《深度学习》 之 AlexNet卷积神经网络 原理 详解

三.AlexNet特点

3.1使用了Relu**函数

Relu函数:

基于ReLU的深度卷积网络比基于tanh和sigmoid的网络训练快数倍。《深度学习》 之 AlexNet卷积神经网络 原理 详解

3.2标准化

使用ReLU 后,会发现**函数之后的值没有了tanh、sigmoid函数那样有一个值域区间,所以一般在ReLU之后会做一个normalization,LRU就是稳重提出一种方法,在神经科学中有个概念叫“Lateral inhibition”,讲的是活跃的神经元对它周边神经元的影响。

3.3 Dropout

Dropout也是经常说的一个概念,能够比较有效地防止神经网络的过拟合。 相对于一般如线性模型使用正则的方法来防止模型过拟合,而在神经网络中Dropout通过修改神经网络本身结构来实现。对于某一层神经元,通过定义的概率来随机删除一些神经元,同时保持输入层与输出层神经元的个数不变,然后按照神经网络的学习方法进行参数更新,下一次迭代中,重新随机删除一些神经元,直至训练结束。
《深度学习》 之 AlexNet卷积神经网络 原理 详解
(图片来自网络)

参考:
《深度学习》 花书
复旦大学 《深度学习》