AlexNet是一个卷积神经网络的名字,最初是与CUDA一起使用GPU支持运行的,AlexNet是2012年ImageNet竞赛冠军获得者Alex Krizhevsky设计的。该网络的错误率与前一届冠军相比减小了10%以上,比亚军高出10.8个百分点。AlexNet是由多伦多大学SuperVision组设计的,由Alex Krizhevsky, Geoffrey Hinton和Ilya Sutskever组成。
Alexnet只有8层,前5层是卷积层,其次是全连通层。
AlexNet模型共有5个卷积层,3个全连接层,前两个卷积层和第五个卷积层有pool池化层,其他两个卷积层没有池化。
第一卷积层:
由AlexNet架构图,第一卷积层的卷积核有96个(两个GPU各用48个),卷积核的尺度为11*11*3(3为RGB通道数),步长stride为4。生成的卷积特征图单元数为55*55*48*2,每个特征图尺度为55*55,由此可知输入图像尺度为227*227(55(单向尺度)*4(步长) + (11(卷积核尺度)-4(步长)) = 227)。因此输入图像单元数为227*227*3*1。
第一池化层:
输入单个特征图尺度为55*55,池化尺度3*3,步长为2,输出池化特征图尺度为27*27((55(单向尺度)-3(池化尺度))/2(步长)+1 = 27)。特征图单元数为27*27*48*2.
第二卷积层:
由AlexNet架构图,卷积核有256个(两个GPU各128个,同时各作用于各GPU内的第一池化层的输出),卷积核尺度5*5*3,步长为1,生成卷积特征图单元数为27*27*128*2,每个特征图尺度为27*27,由此计算输入特征图尺度为31*31(27(单向尺度)*1(步长)+(5(卷积核尺度)-1(步长))= 31)。因此输入特征图单元数为31*31*96。
第二池化层:
输入单个特征图尺度为27*27,池化尺度3*3,步长为2,输出池化特征图尺度为13*13((27(单向尺度)-3(池化尺度))/2(步长)+ 1 = 13)。特征图单元数为13*13*128*2.
第三卷积层:
由AlexNet架构图,卷积核有384个(两个GPU各192个,同时需要共享各自GPU第二池化层的输出),卷积核尺度为3*3*3,步长为1,生成卷积特征图单元数为13*13*192*2,每个特征图尺度为13*13,由此计算输入特征图尺度为15*15(13(单向尺度)*1(步长)+(3(卷积核尺度)-1(步长))=15)。因此输入特征图单元数为15*15*256。
第四卷积层:
由AlexNet架构图,卷积核有384个(两个GPU各192个,同时不共享各自GPU内的第三卷积层输出),卷积核尺度为3*3*3,步长为1,生成卷积特征图单元数为13*13*192*2,每个特征图尺度为13*13,由此计算输入特征图尺度为15*15(13(单向尺度)*1(步长)+(3(卷积核尺度)-1(步长))=15)。因此输入特征图单元数为15*15*384。
第五卷积层:
由AlexNet架构图,卷积核有256个(两个GPU各128个,同时不共享各自GPU内的第四卷积层输出),卷积核尺度为3*3*3,步长为1,生成卷积特征图单元数为13*13*128*2,每个特征图尺度为13*13,由此计算输入特征图尺度为15*15(13(单向尺度)*1(步长)+(3(卷积核尺度)-1(步长))=15)。因此输入特征图单元数为15*15*384。
第五池化层:
输入单个特征图尺度13*13,池化尺度3*3,步长为2,输出池化特征图尺度为6*6((13(单向尺度)-3(池化尺度))/2(步长)+1 = 6)。特征图单元数为6*6*256.
第一全连接层:
输入特征图单元数为6*6*256,输出特征图单元数为4096,全连接参数个数为6*6*256*4096.
第二全连接层:
输入特征图单元数4096,输出特征图单元数为4096,全连接参数个数为4096*4096.
第三全连接层:
即输出层,输入特征图单元数为4096,输出特征图单元数为1000,全连接参数个数为4096*1000.
从LeNET到AlexNET:
ReLU激活函数
在一些之前传统的机器学习过程中我们一般采用Sigmoid和tanh函数来作为激活函数,但是这两个函数在做梯度下降的过程中(减小训练误差),由于梯度衰减问题,收敛速度比较慢,也同时限制了训练更深层网络的可能性。所以一般会在网络中采用ReLu函数,使学习周期大大缩短,提高速度和效率.ReLU函数的数学公式很简单ReLU(x)=max(x,0),但其对DNN的贡献是巨大的。
AlexNet使用ReLU代替了传统的激活函数,而现在ReLU已经广泛地使用在了各种CNN结构中。但是LSTM中还是在用tanh函数来作为激活函数。
Multiple GPU
单个GTX 580 GPU只有3GB内存,这限制了在其上训练的网络的最大规模。因此他们将网络分布在两个GPU上。目前的GPU特别适合跨GPU并行化,因为它们能够直接从另一个GPU的内存中读出和写入,不需要通过主机内存。
Overlap Pooling
一般的Pooling是不重叠的,而AlexNet使用的Pooling是可重叠的,也就是说,在池化的时候,每次移动的步长小于池化的边长。AlexNet池化的大小为3*3的正方形,每次池化移动步长为2,这样就会出现重叠。
减小过拟合
AlexNet有6000万个参数,需要考虑过拟合的问题。
1.数据增强
对图片进行一些变换可以增大数据集。第一种方法是:原始图片大小为256*256,在图片上随机选取224*224的小块进行训练,还可以这些小块进行水平翻转进一步增加数据量。另一种方法是使用PCA改变训练图像RGB通道的像素值。
2.Dropout
这个方法现在也是大量使用。Dropout将隐层输出以一定的概率置0,这个神经元就不参与前向和后向传播,就如同在网络中删除了一样。Dropout也可以看成是一种模型组合,每个样本都是不一样的网络结构。Dropout减少了神经元之间的共适应关系(co-adaptation),一个神经元不再依赖另一个神经元,强迫网络学习到更加鲁棒的特征表示。
【描述来源:wikipedia, URL:http://blog.csdn.net/aitazhixin/article/details/72914562】
发展历史
第一个CNN模型诞生于1989年,发明人LeCun。需要指出的是,从诞生的第一天起,CNN自带deep属性。 1998年,LeCun提出LeNet,并成功应用于美国手写数字识别。
但很快,CNN的锋芒被SVM和手工设计的局部特征盖过。 历史的转折在2012年到来,AlexNet, 在当年的ImageNet图像分类竞赛中,top-5错误率比上一年的冠军下降了十个百分点。AlexNet的成功既得益研究者的自我奋斗:Relu和Dropout的提出, 也是大历史进程的结果:大数据训练和GPU并行计算。2012年之后,CNN朝着不同方向演化。
第一条演化路径:网络变深。
2014年的VGG网络将网络慢慢加深。
第二条演化路径,增强卷积模块的功能。
13年底,颜水成组提出了NIN结构,并于2014年取得了ILSVRC物体检测竞赛的冠军。 在NIN的基础上,Google于2014年提出了GoogLeNet(Inception V1),并随后改进出Inception V3和V4。
第三条演化路径:从物体识别到物体检测。
如R-CNN, 但是R-CNN的缺点是速度慢,Fast R-CNN是R-CNN和SPP Pooling的融合,这样每张图像只需要通过卷积网络一次同时支持端到端训练而不需要保存中间结果。
Faster R-CNN支持多类物体的同时检测而只需要一个网络,目前基于Faster R-CNN的行人与车辆检测技术是汽车高级辅助驾驶系统的关键技术之一。
第四条演化路径:增加新的功能模块。
历史事件
年份 | 事件 | 相关论文 |
1998 | LeCun等人提出LeNet | LeCun, Y., Bottou, L., Bengio, Y., & Haffner, P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11), 2278-2324. |
2012 | ALEX等人提出ALEXNET | Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. In Advances in neural information processing systems (pp. 1097-1105). |
2014 | Simonyan提出VGG神经网络 | Simonyan, K., & Zisserman, A. (2014). Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556. |
2015 | Girshick提出Fast-RCNN | Girshick, R. (2015). Fast r-cnn. arXiv preprint arXiv:1504.08083. |
2015 | Russakovsky大量的视觉检测的挑战进行总结 | Russakovsky, O., Deng, J., Su, H., Krause, J., Satheesh, S., Ma, S., ... & Berg, A. C. (2015). Imagenet large scale visual recognition challenge. International Journal of Computer Vision, 115(3), 211-252. |
发展分析
瓶颈
- 在 GEMM(GEneral Matrix to Matrix Multiplication)之后,还需要再次修改。这里GEMM是指将两个矩阵相乘后获得新的一个矩阵后,
- 时间和计算量上依旧消耗很大
- 超参数过多,之后的Googlenet将ALexNet 60M的超参数减小到4M.
- AlexNet的错误率依旧有百分15左右,错误率依旧需要提高。
未来发展方向
未来的发展趋势主要分为五类:第一条演化路径:网络变深。第二条演化路径,增强卷积模块的功能。第二条演化路径,增强卷积模块的功能。第四条演化路径:增加新的功能模块, 最后一条就是轻量化的模块设计。
Contributor: Ruiying Cai