AlexNet网络结构
论文中的这个图比较晦涩,可以直接看下面的彩色图中的描述。
LeNet几乎奠定了当前深度卷积神经网络的基本搭建形式,AlexNet进一步探讨的是网络加深时,模型会出现什么情况。首先,更难训练。为了解决这个问题,他们使用了两个GPU进行训练。另外,处理计算复杂的提升,梯度下降算在深层神经网络中传递出现梯度弥散,他们提出使用ReLU代替原来使用Sigmoid函数,解决了这个问题。为了降低复杂模型强建模能力导致的过拟合现象,将dropout技术应用到其中。AlexNet每层中的超参数数量:
其输入、输出及每层训练参数计算如下:
层 | 输入尺寸 | 卷积核大小 | 卷积核个数 | 步长 | 输出尺寸 | 超参数数量 |
Conv | 224x224x3 | 11x11x3 | 96 | 4 | (224-11)/4+1 = 54.25 ~ 55, 55x55x48x2,x2表示两部分 | (3*11*11+1)*96=34944~35k |
Local Response Norm | - | - | - | - | - | - |
Max Pool | 55x55x48,两块GPU并行处理,每个处理48个feature maps | 3x3 | - | 2 | (55-3)/2+1=27, 27x27x48 | - |
Conv | 总输入27x27x96,96表示feature maps个数,单个GPU 27x27x48,48个feature maps | 总共5x5x96,单个GPU为 5x5x48 | 总共256,每个GPU128 | 1 | 卷积前经过padding使操作后尺寸不变,每个GPU输出27x27x128 | (48*5*5+1)*128*2=307456~307k |
Local Response Norm | - | - | - | - | - | - |
Max Pool | 27x27x128,两块GPU并行处理,每个处理128个feature maps | 3x3 | - | 2 | (27-3)/2+1=13, 13x13x128 | - |
Conv | 总输入13x13x256,256表示feature maps个数 | 3x3 | 192x2 | 1 | 卷积前经过padding使操作后尺寸不变,13x13x192 | (3*3*256+1)*192*2=885120 |
Conv | 总输入13x13x384,单个GPU 13x13x192 | 3x3 | 192x2 | 1 | 卷积前经过padding使操作后尺寸不变,每个GPU输出13x13x192 | (3*3*192+1)*192*2=663936 |
Conv | 1总输入13x13x384,单个GPU 13x13x192 | 3x3 | 128x2 | 1 | 卷积前经过padding使操作后尺寸不变,每个GPU输出13x13x128 | (3*3*192+1)*128*2=442624 |
Max Pool | 13x13x256 | 3x3 | - | 2 | (13-3)/2+1=6, 6x6x256 | - |
FC | 展平后43264x1 | - | - | - | 4096 | 43264*4096=177209344 |
FC | 4096x1 | - | - | - | 4096 | 16777216 |
AlexNet中的新技术:
(1) 使用了ReLU
解决了深层网络使用Sigmoid出现梯度弥散的问题。
为什么使用Sigmoid和Tanh激活函数活导致梯度消失?
如上图所示,Sigmoid将输入映射到区间(0, 1), 当输入大于一定值时,输出接近1且随着输入继续增大,输出变化很小;当输入很小,小到一定程度时,输出接近0且随着输入继续减小,输出变化很小。我们说在输入很大或者很小时输出变化很小的情况为饱和。关键是其导数为, 当x很大或者很小时,结果都趋向于0,造成梯度消失。
对于Tanh函数,其导数为; 当x很小或者很大时,, 导致 。
我们从两个函数的图像可知,Tanh可以表示为.
ReLU函数的优缺点
从表达式可知,Tanh和Sigmoid计算涉及指数运算,而ReLU只涉及大小比较;
不存在输出饱和性,激活的边界更加宽;
由于小于0的输入被截断,可以理解为具有稀疏表达的能力;然而存在另外一个问题,那就是可能导致神经元"死亡", 梯度无法更新导致训练失败。ReLU的导数为
于是研究人员提出了Leaky ReLU, 使得负梯度部分的信息能够保留下来,然而存在的问题是负梯度部分参数a的选择.还能够将a参数化,让其能够被训练。
参考《百面机器学习》
(2) 使用Dropout减轻过拟合
在两个全连接层中使用了dropout。
几种解析:
- 组合解析:
每次dropout相当于训练一个子网络;
最终结果相当于多个自网络的组合。 - 动机解释:
消除了神经元之间的依赖,增加泛化能力 - 数据解析:
对于dropout后的结果,总能找到与之对应点样本,等价于数据增强
(3) 使用重叠最大池化
池化过程中使用的步长比池化核尺寸小,池化的输出之间会有重叠和覆盖。
(4) 提出LRN(local response norm 局部响应标准化)层
使响应比较大的值变得相对较大,抑制其他反馈小的神经元。但是其他网络很少使用,因为效果不明显,还有一个问题就是导致前馈和反馈的速度大大降低。
(5) 使用了GPU进行加速
(6) 数据增强
对图片进行水平翻转做数据增强;
对256x256尺寸的图片随机采样出多张224x224尺寸的图片用于训练;