当前位置: 代码迷 >> 综合 >> AlexNet 论文阅读总结
  详细解决方案

AlexNet 论文阅读总结

热度:104   发布时间:2023-11-22 03:58:14.0

        神经网络在历史上经过几起几落,自上世纪90年代以来,由于传统机器学习方法(SVM等)的崛起,神经网络方法由于过大的计算量一直被人们忽视,直到2010年前后,随着计算机硬件资源性能的提高和数据量的增加,神经网络迎来了又一次兴起。而促使全世界科研人员开始重点关注以神经网络为基础的深度学习方法的,正是在2012年ILSVRC竞赛中 AlexNet 的惊人表现。本文主要总结一下该基础网络的结构,以及其中的一些细节信息和技巧。

论文名称:《ImageNet Classifcation with Deep Convolutional Neural Networks》

                     By Alex Krizhevsky, Ilya Sutskever, and Geoffrey E. Hinton

一、数据集情况

采用 ImageNet 数据集,其中包含120万张训练图片、5万张验证图片、15万测试图片。

输入图像尺寸固定为256X256。通过将原始图像较短的边采样变换到256的长度,然后进行裁剪(裁剪图像中心的正方形)得到256X256大小的输入图像。

之后作者进行了数据预处理操作,让所有图片减去在训练集上计算得到的像素均值(pixel mean)。主要作用是减去数据对应维度的统计平均值,来消除公共的部分,以凸显个体之间的特征和差异。一般来说,有两种去均值的方法,详请参见:https://blog.csdn.net/weixin_37251044/article/details/81157344

image mean: 
简单的说,读入一张彩色图像,假设是(N*N*3),这时候,求出image mean的话,就也是N*N*3,相当于把所有训练集在同一个空间位置上的像素的对应通道求了均值。

pixel mean: 
而pixel mean的话,其实是把训练集里面所有图片的所有R通道像素,求了均值,G,B通道类似,也就是不考虑空间位置了。所以求出来就是三个数值(R_mean,G_mean,B_mean),所以其实就是把image mean再求了一次均值。

为什么在整幅图像上求的均值叫 pixel mean?     个人认为这个名字是根据在进行去均值操作时是整幅图像相减还是逐像素相减决定的。当然只是一个名字,知道具体的实现操作即可。

二、ReLU激活函数

在此之前,激活函数使用的都是 sigmoid 函数和 tanh 函数,但是这些饱和非线性单元在使用梯度下降法进行训练时,速度相较于非饱和的非线性单元要慢的多,因此在这篇文章中使用了ReLU激活函数。

饱和、非饱和的含义是,在 x 趋于无穷时,激活函数值是否存在一个极限。

可以发现sigmoid、tanh函数存在饱和区,即在输入取较大或者较小值时,输出值饱和。这样的激活函数存在一个问题:在饱和区域,gradient较小,尤其是在深度网络中,会有gradient vanishing的问题,导致训练收敛速度降低。

ReLU函数的特性决定了在大部分情况下,其gradient为常数,有利于BP的误差传递。

同时还有一个特性(个人见解):ReLU函数当输入小于等于零,输出也为零,这和dropout技术有点相似,可以提高模型的鲁棒性。

当然,这里不是说ReLU就一定比sigmoid或tanh好,ReLU的不是全程可导(优势:ReLU的导数计算比sigmoid或tanh简单的多);   ReLU的输出范围区间不可控。

以上解释参考这篇博文:https://blog.csdn.net/qq_33144323/article/details/81412923

三、在多GPU上进行训练

作者使用两个GPU来提高运算速度和增大内存,但是两个GPU之间只在特定的层之间进行通信,以此来减少计算量。

四、局部相应正则化

某些层ReLU之后,再加上局部相应正则化操作,提高模型的泛化能力。        就是将局部相应比较大的再进一步放大,而局部相应比较小的进一步抑制。类似于放大局部显著特征。  

作者说在该网络中提高了精确度。

五、重叠最大池化操作

就是在池化操作时,卷积核的大小比每一次的移动步长大,就会产生重叠。

这个操作可以增强模型的特征提取能力,而且文中说可以有效地防止过拟合。

六、模型整体架构

请参见这篇文章,介绍的非常详细。

https://blog.csdn.net/qq_33144323/article/details/81412923

七、减少过拟合

1、数据增强
通过随机截取输入图像(256X256)中固定大小的一部分图片(224X224),并做水平翻转,扩大数据集,减少过拟合情况 
数据集可扩大到原来的2048倍,     (256-224)^2 * 2 = 2048 
在做预测时,取出测试图片的十张patch (四角+中间,再翻转) 作为输入,十张patch在softmax层输出相加取平均值作为最后的输出结果 。

2、改变训练图片的RGB通道值 
对原训练集做PCA(主成分分析),对每一张训练图片,加上多倍的主成分
(个人理解:这样操作类似于信号处理中的去均值,消除直流分量的影响)
经过做PCA分析的处理,减少了模型的过拟合现象。可以得到一个自然图像的性质,改变图像的光照的颜色和强度,目标的特性是不变的,并且这样的处理有利于减少过拟合。

3、使用dropout减少过拟合现象: 
dropout技术即让hidden层的神经元以50%的概率参与前向传播和反向传播. 
dropout技术减少了神经元之间的耦合,在每一次传播的过程中,hidden层的参与传播的神经元不同,整个模型的网络就不相同了,这样就会强迫网络学习更robust的特征,从而提高了模型的鲁棒性
对采用dropout技术的层,在输出时候要乘以0.5,这是一个合理的预测分布下的几何平均数的近似。                                  dropout使收敛所需的迭代次数加倍。

八、训练细节

采用随机梯度下降法(SGD)进行学习,batch_size为128,动量为0.9,权重衰减设为0.0005.
使用小幅度的权值衰减,很利于模型的训练学习 
对于第二、第四、第五卷积层还有全连接层,我们将bias初始化为1,有利于给ReLU提供一个正输入,加快训练速度 ;剩下的层bias初始化为0
学习率我们初始化为0.01,当模型在验证集错误率不下降时,我们将学习率降低10倍,整个训练过程降低了三次                            总共在120万张图片上训练了90轮左右

 

注:

这篇博客主要参考这篇文章: https://blog.csdn.net/qq_33144323/article/details/81412923

这篇博客里面还有具体的代码实现,而且论文分析写的非常好,读完受益匪浅!

  相关解决方案