AlexNet
AlexNet是2012年的 ImageNet ILSVRC中获得冠军,识别率远远超过第二名(top 5 错误了16%,第二名为26%)。
链接:http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
1. 网络架构图
AlexNet的网络结构如下图所示:
如上图所示,可以看到AlexNet由5个卷积层+3个全连接层组成,并且由于当时GPU显存的限制,使用来块GPU进行训练,故上图绘制了两个流程。细节图如下:
2. AlexNet的创新点
- AlexNet使用Relu替代了Sigmoid函数,能够更快的收敛,同时解决了Sigmoid在网络较深时出现的梯度小时问题。
- 在第一个和第二个卷积层添加局部响应归一化(Local Response Normalization,LNR),对局部神经元创建了竞争的机制,使得其中响应较大的值变得更大,并抑制反馈较小的。(强者更强,弱者更弱)
- 采用最大池化,而非平均池化,避免了平均池化的模糊的问题;并且采用步长比池化核的尺寸小的有重叠池化,提升了特征额丰富性
- 避免过拟合的方式
- 数据增强
- 第一种数据增益的方法:通过平移和水平方向的映像
- 第二种数据增益的方法:在图像中每个像素的R、G、B值上分别加上一个数,用到方法为PCA。对于图像每个像素,增加以下量 :
,其中
分别代表特征向量和特征值,
是高斯分布
中采样得到的随机值随机数。
- Dropout
- 数据增强
3. AlexNet的学习过程
- 参数初始化:
- 用一个均值为0、标准差为0.01的高斯分布初始化了每一层的权重
- 用常数1初始化了第二、第四和第五个卷积层以及全连接隐层的神经元偏差;在其余层用常数0初始化神经元偏差。
- 优化方法采用:Momentum随机梯度下降法
- SGD参数设置:batch_size = 128,momentum = 0.9,weight_decay = 0.0005
- 参数更新过程:
其中,v代表动量,代表学习率,
代表在第
个batch
上目标函数关于
的偏导数的平均值。
对于所有层都使用了相等的学习率,这是在整个训练过程中手动调整的。遵循的启发式学习过程,当验证误差率在当前学习率下不再提高时,就将学习率除以10。学习率初始化为0.01,在终止前降低三次。