论文题目是: Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift(批标准化:缓解内部协变量偏移加快深度神经网络训练
)
作者: Sergey Ioffe & Christian Szegedy(GoogLeNet-v1 一作)
单位: Google Inc.
发表时间: 2015年
本篇论文的主要trick:Batch Normalization
相关研究:GoogLeNet –V1 采用多尺度卷积核,11卷积操作,辅助损失函数,实现更深的22层卷积神经网络,夺得ILSVRC-2014 分类和检测冠军,定位亚军。
本文在GoogLeNet-V1 基础上加入BN层,同时借鉴VGG的小卷积核思想,将55卷积替换为2个3*3卷积
ICS (Internal Covariate Shift):内部协变量偏移。
ICS现象:输入数据分布变化,导致的模型训练困难,对深度神经网络影响极大。如下图所示输入数据做不同的标准化,方差,均值不一样的分布。
白化(Whitening) 去除输入数据的冗余信息,使得数据特征之间相关性较低,所有特征具有相同方差,即将数据变为0均值,1标准差的形式,实现白化。
依据 是概率论公式:N(x)=x −mean/std,, 使X变为0均值,1标准差。mean-mean=0, std * 1/std = 1
区别: 白化是对数据做预处理,即在数据输入模型之前做处理,而BN层是在模型中对数据做处理。
成果:
研究意义:
1、加速了深度学习发展
2、开启神经网络设计新时代,标准化层已经成为深度神经网络标配
在Batch Normalization基础上拓展出了一系例标准化网络层,如
Layer Normalization(LN),
Instance Normalization(IN),
Group Normalization(GN)
不同标准层之间的相同点与差别:
相同点:公式相同
不同点:均值和方差求取方式
摘要核心:
Batch Normalization:批标准化
批:一批数据,通常为mini-batch
标准化:使得分布为 mean=0, std=1
如 1, 2 ;mean=1.5, std=0.5, 变换得到-1, 1
一定有正有负,并且拉到0附近了
存在问题:
使神经元输出值在sigmoid线性区,削弱了网络的表达能力
解决办法:
采用可学习参数 γ 和 β,增加线性变换,提升网络表达能力
同时提供恒等映射的可能,当 和 时,BN层变为恒等映射,不改变神经元输出值
BN层操作流程:
加减乘除实现BN:减均值除以标准差乘γ 加 β
step1. 在mini-batch上计算均值
step2. 在mini-batch上计算标准差
step3. 减均值除以标准差(ϵ=1e^−5, 避免分母为0)
step4. 线性变换,乘γ 加 β,实现缩放与平移
注意
训练阶段:均值和标准差通过指数滑动平均统计得来,gamma和beta通过梯度反向传播不断更新
测试阶段:均值和标准差是固定的,gamma和beta也是固定的
存在问题: mini-batch的统计信息充当总体是不准确的
解决办法: 采用指数滑动平均(Exponential Moving Average)
a_t :当前值
mv_t : 指数滑动平均值
指数滑动平均计算公式 (pytorch里decay=1-momentum)
当decay = 0.9
1、可采用较大学习率
针对类似Sigmoid的饱和激活函数,加上BN层后,可采用较大学习率
2、充当正则,顶替Dropout
加入BN层后,将当前样本与以前样本通过统计信息联系起来,相当于某种约束,经实验表明可减轻Dropout的使用
1、BN层前一层不需要加偏置(bias),该偏置可被BN层中的Shift(Beta)给抵消
2、卷积网络时,是针对特征图为单位进行BN层,即使2D的BN操作
1、激活函数前加入BN
2、5x5卷积替换为2个3*3卷积。感受野相同,参数量减少,增加了非线性变换,提升了特征提取的能力。
3、第一个Inception模块增加一个Inception结构,即3c
4、增多“5*5”卷积核
5、尺寸变化(下采样方式)采用stride=2的卷积
6、增加9层(10-1层)到 31层(10表示inception数量)
GoogLeNet-V21结构图
GoogLeNet-V2 结构图
在MNIST上实验,更快更稳定
MNIST上进行BN实验
1、观察收敛速度
(a)图,横坐标是训练的步长,纵坐标是分类精度。 更快
2、观察MLP网络最后一层输出值分布
(b)©图对比得到更稳定
结果:
加入BN层之后,收敛速度更快
加入BN层之后,输出值更稳定,缓解ICS问题
ILSVRC上,BN与GoogLeNet-v1速度对比
ILSVRC上,BN与GoogLeNet-v1精度对比
在ILSVRC上,训练速度更快,精度更高
横坐标是iteration有31x10的6次方,纵坐标是分类精度
参数设置:初始学习率=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高很多
ILSVRC上,GoogLeNet-V2 与 其它模型对比
结论在模型集成方面,超越人类精度
方法:六个BN-x30集成,六个BN-x30不同之处:
1、增大权重初始化的值,即分布的标准差变大
2、dropout设为5%或10%,GoogLeNet-V1是40%
提出BN层,缓解ICS带来的训练困难,可实现
借鉴VGG,全面将55卷积替换为两个33卷积堆叠
两个模型组合优点,放在一句话。加速14倍是BN-x5,获得显著提升的是BN-x30
we can match its performance using only 7% of the training steps, and can further exceed its accuracy by a substantial margin. (1 Introduction p6)
0均值,1标准差的数据分布可加速网络训练
It has been long known (LeCun et al., 1998b; Wiesler & Ney, 2011) that the network training converges faster if its in- puts are whitened – i.e., linearly transformed to have zero means and unit variances, and decorrelated. (2 towards Reducing Internal Covariate Shift p1)
即使不去相关,0均值,1方差的数据分布也可加快网络训练
As shown in (LeCun et al., 1998b), such normalization speeds up convergence, even when the fea- tures are not decorrelated.(3 Normalization via Mini-Batch Statistics p1)
推理时,BN相当于线性变换,即缩放加平移,进一步的,可将BN层融合到卷积层中
Since the means and variances are fixed during inference, the normalization is simply a linear transform applied to each activation. (3.1 p1)
bias作用被抵消,因此不需要bias,并且线性变换中的beta可充当bias
Note that, since we normalize W u+b, the bias b can be ignored since its effect will be canceled by the subsequent mean subtraction (3.2 p2)
卷积层的BN中,不仅考虑batch维度,还考虑空间维度,以feature map维度进行求取均值,方差
we let B be the set of all values in a feature map across both the elements of a mini-batch and spatial locations – so for a mini-batch of size m and feature maps of size p × q, we use the effec- tive mini-batch of size m′ = |B| = m · pq. We learn a pair of parameters γ(k) and β(k) per feature map, rather than per activation.(3.2 p2)
一个样本的计算受到其它样本的约束,可认为是一种正则约束
a training example is seen in conjunction with other examples in the mini-batch, and the training network no longer producing deterministic values for a given training example. (3.4 p1)
堆叠使用2个33卷积,全面替换55卷积,并且给予更多卷积核
The main difference to the net- work described in (Szegedy et al., 2014) is that the 5 × 5 convolutional layers are replaced by two consecutive lay- ers of 3 × 3 convolutions with up to 128 filters. (4.2 p1)
加速BN的7个改变(4.2)
1、Increase learning rate: BN特性
2、 Remove Dropout:BN可充当正则
3、 Reduce the L2 weight regularization by a factor of 5.
因为BN允许权重大一些,所以对于权重大小的限制可以减轻一些
4、 Accelerate the learning rate decay
5、 Remove Local Response Normalization
6、Shuffle training examples more throughly
7、 Reduce the photometric distortions(减少图像光照的扰动)
GoogLeNet-V1 采用ReLU和Sigmoid,获得的精度几乎是一样的,即ReLU在V1中并没有提升精度
We also tempted to train the original Inception with sigmoid, but the model remained at the accuracy equivalent to chance.
GoogLeNet-V1 训练到收敛,用了大约826个epochs,这一个数据在V1论文中从未给出
Inception reached the accuracy of 72.2% after 31 · 10^6 training steps.
下一步工作:研究RNN中BN的效用,以及BN在域适应领域的应用