References:
- ImageNet Classification with Deep Convolutional Neural Networks
- 手撕 CNN 经典网络之 AlexNet(理论篇)
- 卷积神经网络之Alexnet
- LeNet5 and AlexNet
- 深度学习饱受争议的局部响应归一化(LRN)详解
- 经典CNN结构简析:AlexNet、VGG、NIN、GoogLeNet、ResNet etc.
- 一文读懂LeNet、AlexNet、VGG、GoogleNet、ResNet到底是什么?
【概述】
2012 年,Alex Krizhevsky、Ilya Sutskever 设计出了一个深层的卷积神经网络 AlexNet,夺得了2012年 ImageNet LSVRC 的冠军,且准确率远超第二名(top5 错误率为 $15.3\%$,第二名为 $26.2\%$),引起了很大的轰动,可以说是具有历史意义的一个网络结构
AlexNet 取得成功的原因是其使网络的宽度和深度达到了前所未有的高度,而整个网络的可学参数达到了 $58,322,314$ 个,为了学习该网络,AlexNet 并行使用了两块 GTX 580,大幅提升了训练速度
【贡献】
相较于 LeNet,AlexNet 除加大网络的宽度和深度外,还做了如下创新:
- 数据增强(Data Augmentation):采用镜像反射和随机剪裁、改变样本 RGB 通道的强度值两种数据增强方法
- ReLU 激活函数:使用 ReLU 激活函数来代替 LeNet-5 中的 Sigmoid 和 Tanh 激活函数,有效缓解梯度消失问题,同时优化网络的性能,一定程度上缓解过拟合
- 局部响应归一化(Local Response Normalization,LRN):首次引入的归一化方法,模拟了动物神经中的横向抑制效应,在批量归一化出现后,该方法已不再使用
- 随机失活(Dropout):在 AlexNet 的全连接层 FC6、FC7,使用 Dropout 来减轻容量高的模型容易发生过拟合的现象
- 最大池化(Max Pooling):在之前的 CNN 普遍使用平均池化,而 AlexNet 全部使用最大池化,避免了平均池化层的模糊化效果
- 重叠池化(Overlap Pooling):在进行最大池化时,令步长小于池化窗口,使得相邻的池化窗口存在覆盖的单元,提高特征多样性,一定程度上减缓了过拟合
- 多 GPU 训练:AlexNet 将网络分成两个部分,使用两块 GPU 多卡训练
- 端到端训练:使用端到端训练,除将每个像素中减去训练集的像素均值之外,没有以任何其他方式对图像进行预处理,直接使用像素的 RGB 值训练网络
【网络结构】
AlexNet 的网络结构如下图,其由 $5$ 个卷积层与 $3$ 个全连接层构成
参数形状如下表:
【实现】
1 | import torch.nn as nn |