<深度学习基础> Batch Normalization
Batch Normalization批归一化
BN优点
- 减少了人为选择参数。在某些情况下可以取消dropout和L2正则项参数,或者采取更小的L2正则项约束参数;
- 减少了对学习率的要求。现在我们可以使用初始很大的学习率或者选择了较小的学习率,算法也能够快速训练收敛;
- 破坏原来的数据分布,一定程度上缓解过拟合;
- 减少梯度消失,加快收敛速度,提高训练精度。
步骤
下面给出BN 算法在训练时的过程
输入:上一层输出结果
X
=
x
1
,
x
2
,
.
.
.
,
x
m
X={x_1,x_2,...,x_m}
X=x1,x2,...,xm,学习参数
γ
,
β
gamma,beta
γ,β;
算法流程:
(1)计算上一层输出数据的均值
μ
β
=
1
m
∑
i
=
1
m
x
i
mu_{beta}=frac{1}{m} sum_{i=1}^m x_i
μβ=m1i=1∑mxi
其中,
m
m
m 是此次训练样本batch的大小。
(2)计算上一层输出数据的标准差
σ
β
2
=
1
m
∑
i
=
1
m
(
x
i
−
μ
β
)
2
sigma_{beta}^2=frac{1}{m} sum_{i=1}^m (x_i-mu_{beta})^2
σβ2=m1i=1∑m(xi−μβ)2
(3)归一化处理,得到
x
ˆ
i
=
x
i
+
μ
β
σ
β
2
+
ϵ
^x_i=frac{x_i+mu_{beta}}{sqrt{sigma_{beta}^2}+epsilon}
xˆi=σβ2+ϵxi+μβ
其中
ϵ
epsilon
ϵ是为了避免分母为0 而加进去的接近于0 的很小值;
(4)重构,对经过上面归一化处理得到的数据进行重构,得到
y
i
=
γ
x
ˆ
i
+
β
y_i=gamma ^x_i + beta
yi=γxˆi+β
其中,
γ
,
β
gamma,beta
γ,β为可学习参数。
注:上述是BN训练时的过程,但是当在推理时,往往只是输入一个样本,没有所谓的均值 μ β mu_{beta} μβ和标准差 σ β 2 sigma_{beta}^2 σβ2。此时,均值 μ β mu_{beta} μβ是计算所有batch的 μ β mu_{beta} μβ值的平均值得到,标准差 σ β 2 sigma_{beta}^2 σβ2采用每个batch的 σ β 2 sigma_{beta}^2 σβ2的无偏估计得到。