早期曾粗略的读过AlexNet的相关文献,但是在后续的学习中发现很多有意思的idea来自Alex大神的《ImageNet Classification with Deep Convolutional Neural Networks》,故在此快速回顾Alexnet论文的精华。
AlexNet主要包含6个方面:ReLU,GPU并行运算,LPN,Overlapping Pooling,总体架构,过拟合。
1. ReLU Nonlinearity
文章提出一种non-saturating nonlinearity非饱和非线性激活函数:ReLU,相比于一般神经元的激活函数sigmoid函数或者tanh函数收敛速度快,效果好,在目前深度学习中占据主导地位。自此后,各种激活函数的改进的idea源源不断。
2. 双GPU并行运算
这是初读论文中最容易被忽视的一部分,当时GPU显存受限,而现在很多人往往忽略作者的这一细节。在轻量级神经网络中,为了减少模型参数或移动嵌入式的计算量,很多学者借鉴了AlexNet的群卷积运算,如ResNeXt、shuffleNet等。
在本文中,为提高运行速度和提高网络运行规模,作者采用双GPU的设计模式。并且规定GPU只能在特定的层进行通信交流。其实就是每一个GPU负责一半的运算处理。
3. LRN局部响应归一化
ReLU本来是不需要对输入进行标准化,但本文发现进行局部标准化能提高性能。但是大家对LRN层的评价不高,此处忽略。此后在激活函数前通常用batch normalization取代。
4. Overlapping Pooling
pooling块间有重叠,作者使用的池化窗口是大小为3×3,相邻窗口步幅为2的窗口。在输出尺寸相同的情况下,与使用大小为2×2,相邻窗口步幅为2的非重叠池化窗口相比,重叠池化窗口能够分别将TOP-1的错误率降低0.4%,TOP-5的错误率降低0.3%。在提取特征的时候,其输入会受到相邻pooling单元的输入影响。在训练阶段有避免过拟合的作用。
5. framework
整个网络有8个需要训练的层,前5个为卷积层,最后3层为全连接层.
其中第三层卷积与所有全连接处两组(个)GPU进行信息交互。其余层均与组内数据相连。
其余细节如下:
- RPN层第1,2个卷积层后;
- Max pooling层在RPN层以及第5个卷积层后。
- ReLU在每个卷积层以及全连接层后。
- 卷积核大小数量:tensorflow表示形式
conv1:11*11*3*96
conv2:5*5*48*256
conv3:3*3*256*384
conv4: 3*3*192*384
conv5: 3*3*192*256
6. 过拟合
数据增益(水平映射)+dropout
至此,AlexNet回顾完毕,因能力一般水平有限,欢迎指正。