AlexNet总结

关于AlexNet

AlexNet 简要介绍

AlexNet由Alex Krizhevsky2012年提出,夺得2012年ILSVRC比赛的冠军,top5预测的错误率为16.4%,远超第一名。AlexNet采用8层的神经网络,5个卷积层3个全连接层(3个卷积层后面加了最大池化层),包含6亿3000万个链接,6000万个 参数和65万个神经元。

AlexNet模型结构

论文中的模型图: 这里论文模型图有一个错误,就是AlexNet的输入层实际上是227*227的,但是图片里面是224*224的。我们看下面一张图,会更加清晰一点: 卷积层参数量(池化层参数为0): 全连接层参数量:

AlexNet相比传统CNN(如LeNet)的创新点

1. Data Augmentation(数据增强)

常见的数据增强方法有:

  • 水平翻转:
  • 随机裁剪、平移变换
  • 颜色、光照变换

2. 使用ReLu非线性激活函数

ReLu 函数公式:f(x) = max(0, x) ReLu 函数图形:

用ReLU函数代替了传统的Tanh或者Sigmoid函数。好处有:

  • 计算速度快。ReLu前向计算非常简单,无需指数类的操作;ReLu的反向传播计算(偏导)也很简单。
  • 不容易发生梯度消失(梯度弥散)问题。Tanh和Sigmoid激活函数在两端的时候导数接近于0,多级连乘后梯度趋近于0,会导致梯度消失,而ReLu防止了这个问题,因此可以训练更深的网络。
  • 稀疏性。ReLu函数在输入小于0的时候是处于不激活状态的,从而使一部分隐藏层的输出为0,于是网络变得更加稀疏,起到了类似于L1正则化的作用,在一定程度上防止了过拟合。

3. Dropout(只在最后几个全连接层做)

为什么Dropout有效?

Dropout背后理念和集成模型很相似。在Drpout层,不同的神经元组合被关闭,这代表了一种不同的结构,所有这些不同的结构使用一个的子数据集并行地带权重训练,而权重总和为1。如果Dropout层有n个神经元,那么会形成 2^{n} 个不同的子结构。在预测时,相当于集成这些模型并取均值。这种结构化的模型正则化技术有利于避免过拟合。Dropout有效的另外一个视点是:由于神经元是随机选择的,所以可以减少神经元之间的相互依赖,从而确保提取出相互独立的重要特征。

4. Overlapping Pooling(重叠池化)

根据模型图可以看到,在第一、二、五个卷积层后都有一个Overlapping的MaxPool层。 Overlapping指重叠,即Pooling的步长比Pooling Kernel的对应边要小(比如这里池化层的size为3,而步长为2)。 这个策略贡献了0.3%的Top-5错误率。

5. 多GPU并行

原论文中将输入分为两部分在两个GPU上并行

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

(在2015年 Very Deep Convolutional Networks for Large-Scale Image Recognition.提到LRN基本没什么用)

参考文章: ImageNet Classification with Deep Convolutional Neural Networks Alexnet总结/论文笔记 [原创]#Deep Learning回顾#之LeNet、AlexNet、GoogLeNet、VGG、ResNet