1、背景介绍
在2012年的ImageNet竞赛中,AlexNet获得了top-5测试的15.3%error rate, 获得第二名的方法error rate 是 26.2%
AlexNet有60 million个参数和65000个 神经元,五层卷积,三层全连接网络,最终的输出层是1000通道的softmax。
训练这种规模的网络要大量的计算能力,AlexNet利用了GPU提供的大量并行能力,利用两块GPU分配网络训练的工作,大大提高了运算效率。
近60年的发展趋势:
2、与LeNet相较
更深更大的LeNet,主要改进:
- 丢弃法(在隐藏全连接层后加入丢弃层)
- 由Sigmoid——>ReLu,可减缓梯度消失
- 由平均池化——>MaxPooling
- 数据增强(随机截取、亮度调节、色温…)
计算机视觉方法的改进:
右侧为AlexNet
3、AlexNet网络结构
AlexNet网络包含8个网络层,5个卷积层,3个全连接层,采用两个GPU进行训练,激活函数ReLu,池化方法为MaxPooling,数据参数大概为240MB。
网络结构示意图如下:
- 在第2个C2卷积层和第3个C3卷积层,以及最后一个卷积层C5和全连接f6层之间,GPU能全部连接;
- 其他层中,每一个神经元只能接受同一个GPU从上一层传来的数据。
输入图像:227x227x3,远大于MNIST和CIFAR的数据样本,一般越大的输入信息完整性越高。
Conv1卷积层
- 使用11x11的卷积核
- stride=4,输出96个通道。
- 输出特征图55x55x96:55=(227-11)/4+1。
LRN层norm1
- local_size=5
- 输出:27x27x96
pool1池化层
- 3x3的池化核
- stride=2
- 输出特征图27x27x96:27=(55-3)/2+1
Conv2卷积层
- 使用5x5的卷积核
- stride=1,pad=2,group=2,输出256个通道,pad=2保证输入输出尺寸一样。
- 输出特征图27x27x256:27=(27-5 + 2*2)/1+1。
LRN层norm2
- local_size=5
- 输出:13x13x256
pool2池化层
- 3x3的池化核
- stride=2
- 输出特征图13x13x256:13=(27-3)/2+1
Conv3卷积层
- C2卷积层和C3卷积层,GPU能全部连接
- 使用3x3的卷积核
- stride=1,pad=1,输出384个通道。
- 输出特征图13x13x384:13=(13-3 + 2*1)/1+1。
Conv4卷积层
- 使用3x3的卷积核
- stride=1,pad=1,输出384个通道。
- 输出特征图13x13x384:13=(13-3 + 2*1)/1+1。
Conv5卷积层
- 使用3x3的卷积核
- stride=1,pad=1,输出256个通道。
- 输出特征图13x13x256:13=(13-3 + 2*1)/1+1。
pool3池化层
- 3x3的池化核
- stride=2
- 输出特征图6x6x256:6=(13-3)/2+1
f6全连接层
- 卷积层C5和全连接f6层之间,GPU能全部连接
- 全连接:(6x6x256)x4096
- 输出:1x1x4096
dropout层dropout6
- 输出:1x1x4096
f7全连接层
- 输入:1x1x4096
- 总参数量:4096x4096
- 输出:1x1x4096
dropout层dropout7
- 输出:1x1x4096
f8全连接层
- 输入:1x1x4096
- 总参数量:4096x1000
- 输出:1000
4、LRN局部响应归一化
使用LNR:可以使得同一位置不需要太多的高激活函数,对局部神经元的活动创造竞争机制,抑制反馈较小的神经元,放大反应大的神经元,起到侧向抑制的作用,提高了泛化能力。
比如将4个channel落在一起,每一个channel表示卷积核提取出的特征,进行归一化:
将某一个方块作为分子,将周围三个方块的平方和作为分母:
对第二个feature map的3进行LNR(Local Response Normalized)——>0.14=3/(3X3+3X3+2X2)
对第三个feature map的2进行LNR(Local Response Normalized)——>0.12=2/(3X3+2X2+2X2)
5、防止过拟合,数据增强
- 进行平移(随机裁剪)、水平翻转,数据扩充2048倍,对于256x256的正方形图用224x224的正方形进行裁剪,水平和竖直方向都可裁32次,水平翻转再扩充2倍,所以2048=32x32x2
- 对rgb三通道的颜色和光照的变换,使用PCA主成分分析的方法
6、防止过拟合,Dropout
Dropout示意图
在训练每一步时,随机掐死一部分神经元,使得训练时,隐藏层的每个神经元都有一半的概率被掐死(让它的输出为0,阻断其的前向传播和反向传播)
Dropout能防止过拟合的原因
- 模型集成,p=0.5,意味着2的(共享权重潜在网络的次方),比如一个隐藏层有10个神经元,那么就是2的10次方
- 记忆随机抹去
- 减少神经元之间的联合依赖性
- 有性繁殖:每个神经元都要随机与另一个神经元协同工作