四、GoogleNet V2
论文导读
- 论文主题:
批标准化:缓解内部协变量偏移加快深度神经网络训练
- 研究背景:
GoogLeNet-V2在V1的基础上加入BN层,同时借鉴VGG的小卷积核思想,将5x5卷积替换成2个3x3卷积核;
- 相关概念
1、ICS(内部协变量偏移)
ICS现象:输入数据分布变化,导致的模型训练困难,对深度神经网络影响大;
解决方法:提出BN层,加快模型收敛,比GooLeNet-V1快10倍,获得更优结果;
- 研究意义
1、加快了深度学习的发展;
2、开启神经网络设计新时代,标准化层已经成为神经网络的标配;
(在Batch Normalization基础上拓展出了一系列标准化网络层,如Layer Normalization(LN)、Instance Normalization(IN)、Group Normalization(GN))
论文概要
- BN层优点
1、可以用更大的学习率,加速模型收敛;
(针对类似Sigmoid的饱和激活函数,加上BN层后,可以采用较大学习率)
实验比较:加入BN层后快了一倍,学习率增大5倍后快了14倍,学习率增大30倍比增大5倍慢,但精度提升
2、可以不用精心设计权值初始化;
3、充当正则,可以不用dropout或较小的dropout;
(加入BN层后,将当前样本和之前的样本通过统计信息联系起来,相当于某种约束,实验表明可以减轻Dropout的使用)
4、可以不用L2或较小的weight decay;
- Batch Normalization(批标准化)
批:一批数据,通常为mini-batch
标准化:使得分布为mean=0,std=1,就是每个值减去平均值再除以标准差;
存在问题1:使神经元输出值在sigmoid线性区,削弱网络的表达能力;
解决办法:采用可学习参数γ和β,增加线性变换,提升网络表达能力;
存在问题2:mini-batch的统计信息充当整体是不准确的;
解决办法:采用指数滑动平均(at:当前值、mvt:指数滑动平均值)
注意事项:
1、BN前一层不需要添加偏置(bias),该偏置可以被BN层中的Shift(Beta)给抵消;
2、卷积网络时,是针对特征图为单位进行BN层,即使2D的BN操作;
论文总结
- 启发点
1、0均值,1标准差的数据分布可以加速网络训练;(即使不相关联)
2、推理时,BN层相当于做了一个线性变换,即缩放加平移,进一步可将BN层融合到卷积层中;
3、bias作用被抵消,因此不需要bias,并且线性变换中的beta可以充当bias;
4、卷积层的BN中,不仅考虑batch维度,还考虑空间维度,以feature map维度进行求取均值、方差;
5、一个样本的计算受到其他样本的约束,可认为是一种正则约束;
6、GoogLe-V1采用ReLU和Sigmoid,获得的精度几乎一样,即ReLU在V1中并没有提升精度;
论文代码
- 初始化对BN层影响:
采用100层全连接网络,观察BN层和初始化对于数据的影响
1、无初始化和BN层:1e-40
2、加入BN层:0.57(加入初始化不变)
3、初始化为Normal,无BN层:网络在36层出现nan
4、使用kaiming初始化,无BN层:0.6
结论:加入了BN后,无需考虑初始化的方法
- BN层工作流程
训练阶段:均值和标注差通过指数滑动平均系统得来,γ和β根据梯度反向传播不断更新;
测试阶段:均值和标准差是固定的,γ和β也是固定的;
,无BN层:0.6
结论:加入了BN后,无需考虑初始化的方法