Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 批标准化:缓解内部协变量偏移加快深度神经网络训练
- Ics (Internal Covariate Shift,内部协变量偏移)
- ICS现象:输入数据分布变化,导致的模型训练困难,对深度神经网络影响极大。
- 白化(Whitening)
白化:去除输入数据的冗余信息,使得数据特征之间相关性较低,所有特征具有相同方差 - 可以将数据变为0均值,1标准差的形式,实现白化
研究成果
- 提出BN层:加快模型收敛,比googlenet-v1快数十倍,获得更优结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GyxQ7Tfu-1621149466900)(C:\Users\User\AppData\Roaming\Typora\typora-user-images\image-20210428212410695.png)]
- BN优点︰
- 1.可以用更大学习率,加速模型收敛
- 2.可以不用精心设计权值初始化
- 3.可以不用dropout或较小的dropout
- 4.可以不用L2或者较小的weight decay
- 5.可以不用LRN(local response normalization)
研究意义
- 研究意义
- 加快了深度学习的发展
- 开启神经网络设计新时代,标准化层已经成为深度神经网络标配
- 在Batch Normalization基础上拓展出了一系例标准化网络层,如Layer Normalization (LN),lnstance Normalization (lN), Group Normalization (GN)
- 所有的标准化都要执行上图,所不同的是对于均值和方差的求取方式
Batch Normalization:批标准化
-
批:一批数据,通常为mini-batch
-
标准化:使得分布为mean=0,std=1
-
存在问题:
使神经元输出值在sigmoid线性区削弱了网络的表达能力 -
解决办法:
采用可学习参数y和β,增加线性变换,提升网络表达能力,同时提供恒等映射的可能,,当
BN层变为恒等映射,不改变神经元输出值
-
step1.在mini-batch上计算均值
-
step2.在mini-batch上计算标准差
-
step3.减均值除以标准差
-
step4.线性变换,乘y加β,实现缩放与平移
-
存在问题: mini-batch的统计信息充当总体是不准确的
-
解决办法:采用指数滑动平均(Exponential Moving Average)
at :当前值
mvt︰指数滑动平均值
BN优点
-
1.可采用较大学习率
针对类似Sigmoid的饱和激活函数,加上BN层后,可采用较大学习率 -
2.充当正则,顶替Dropout
加入BN层后,将当前样本与以前样本通过统计信息联系起来,相当于某种约束,经实验表明可减轻Dropout的使用 -
BN注意事项
- 1.BN层前一层不需要加偏置(bias),该偏置可被BN层中的Shift (Beta)给抵消
- 2.卷积网络时,是针对特征图为单位进行BN层,即使2D的BN操作
GoogLeNetV2结构
- 对V1的改进:
- 1.激活函数前加入BN
- 2.5 * 5卷积替换为2个3 * 3卷积
- 3.第一个Inception模块增加一个Inception结构
- 4.增多原“5 * 5”部分的卷积核个数
- 5.尺寸变化采用stride=2的卷积()
- 6.增加9层网络(10-1层)到31层(10表示inception数量)
实验结果
-
MNIST实验
1.观察收敛速度
2.观察MLP网络最后一层输出值分布 -
结果:
1.加入BN层之后,收敛速度更快
2.加入BN层之后,输出值更稳定,缓解ICS问题
- ILSVRC分类实验一:速度对比
参数设置:初始学习率=0.0015
x5:表示学习率 =0.0015*5 = 0.0075- 1.加BN更快:BN-Baseline比Inception快一倍
- 2可用大学习率:BN-x5 比 Inception 快14倍
- 3.加BN精度更高:BN-x30比x5慢,但精度更高
- 4.Sigmoid时,加BN精度更高:BN-x5-Sigmoid虽精度最低,比Inception-Sigmoind高很多
- lLSVRC分类实验二:模型集成,超越人类
六个BN-x30集成,六个BN-x30不同之处:- 1.增大权重初始化的值,即分布的标准差变大
-
- dropout设为5%或10%,GoogLeNet-V1是40%