AlexNet总结
关于AlexNet
AlexNet 简要介绍
AlexNet由Alex Krizhevsky于2012年提出,夺得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