2012年,Hinton的学生 Alex Krizhevsky在《 深度卷积神经网络的ImageNet分类》一文中提出了深度卷积神经网络模型 AlexNet,是LeNet的一种更深更宽的版本。这是第一次将深度卷积神经网络 (CNN)、GPU 和巨大的互联网来源数据集(ImageNet)结合在一起。 AlexNet首次在CNN中成功应用了ReLU、Dropout和LRN等Trick。AlexNet包含了6亿3000万个连接,6000万个参数和65万个神经元,拥有5个卷积层,其中3个卷积层后面连接了最大池化层,最后还有3个全连接层。它以显著的优势赢得了 当年ILSVRC 2012奖,top-5的错误率(指给定一张图像,其标签不在模型认为最有可能的5个结果中的几率)降低至15.4%。AlexNet是神经网络在第二次低谷期后的第一次呐喊, 确立了深度学习(深度卷积神经网络)在计算机视觉的统治地位,也推动了深度学习在语音识别、自然语言处理、强化学习等领域的拓展。
![](https://i-blog.csdnimg.cn/blog_migrate/ac7e30d2f89ca4aa77774de712187a7d.png)
AlexNet主要使用到的新技术点如下:
成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,解决了Sigmoid在网络较深时的梯度弥散问题。
训练时使用Dropout随机失活(忽略)一部分神经元,以避免模型过拟合。
![](https://i-blog.csdnimg.cn/blog_migrate/1ccc2ed353693cbfd9d001e5a4892c40.png)
在CNN中使用重叠的最大池化。AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。
提出了LRN(局部响应归一化)层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。
使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算。
数据增强,随机地从256´256的原始图像中截取224´224大小的区域(以及水平翻转的镜像),相当于增加了(256-224)2´2=2048倍的数据量。
AlexNet网络结构:
整个AlexNet有8个需要训练参数的层(不包括池化层和LRN层),前5层为卷积层,后3层为全连接层,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/245722e63b74cb9a94c770f7400ffa97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/06059828d4d991ed4d1d2e24bc393e02.png)
输入:input_size = [224, 224, 3]
卷积层:
kernels = 48 * 2 = 96个卷积核
kernel_size = 11 * 11
padding = [1, 2] (左上围加半圈0,右下围加2倍的半圈0)
stride = 4
输出:output_size = [55, 55, 96]
经 Conv1 卷积后的输出特征图像尺寸为:
![](https://i-blog.csdnimg.cn/blog_migrate/454adbf5bbfc6de007d0f34681b28ef5.png)
池化层只改变图片矩阵大小,不改变其深度。即经MaxPool1后的输出特征图像尺寸为:
![](https://i-blog.csdnimg.cn/blog_migrate/8c57535e08af69784cabe0bc6204cf92.png)
历经AlexNet网络的5层卷积层训练,在MaxPool3后的最终输出特征图像尺寸为[6, 6, 256]:
![](https://i-blog.csdnimg.cn/blog_migrate/194671b013760db8a318bc34f26922b8.png)
AlexNet网络的全连接层:FC1、FC2、FC3
![](https://i-blog.csdnimg.cn/blog_migrate/5f0f0e2c24115b8482430ac93e2f878a.png)
最后一层是有1000类输出的Softmax层用作分类。
![](https://i-blog.csdnimg.cn/blog_migrate/319f8e183adaec0460c56367a83c29c6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/02f62d7d53206b00e642ba5968f0f754.png)
分析可见,除了Conv1外,AlexNet网络的其余卷积层都是在改变特征矩阵的深度(逐步加深),而池化层则只改变(缩小)其尺寸。
![](https://i-blog.csdnimg.cn/blog_migrate/20d56c8bf756b854f24d35340df91dcd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/02b2d11a26b6312edd8b6dcc9b9ce30c.png)
AlexNet最后一层是有1000类输出的Softmax层用作分类。 LRN层出现在第1个及第2个卷积层后,而最大池化层出现在两个LRN层及最后一个卷积层后。ReLU激活函数则应用在这8层每一层的后面。
因为AlexNet训练时使用了两块GPU,因此这个结构图中不少组件都被拆为了两部分。现在我们GPU的显存可以放下全部模型参数,因此只考虑一块GPU的情况即可。