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的无偏估计得到。