3.7 测试时的 Batch Norm(Batch Norm at test time)

训练过程中Batch Norm的主要过程:

μ=1miz(i)\mu=\frac1m\sum_iz^{(i)}
σ2=1mi(z(i)μ)2\sigma^2=\frac1m\sum_i(z^{(i)}-\mu)^2
znorm(i)=z(i)μσ2+εz_{norm}^{(i)}=\frac{z^{(i)}-\mu}{\sqrt{\sigma^2+\varepsilon}}
z~(i)=γznorm(i)+β\tilde z^{(i)}=\gamma\cdot z^{(i)}_{norm}+\beta

μ\muσ2\sigma^2是对单个mini-batch中所有m个样本求得的。在测试过程中,如果只有一个样本,求其均值和方差是没有意义的,就需要对μ\muσ2\sigma^2进行估计。实际应用是使用指数加权平均(exponentially weighted average)的方法来预测测试过程单个样本的μ\muσ2\sigma^2

对于第ll层隐藏层,在训练的过程中, ,对于训练集的Mini-batch,考虑所有mini-batch在该隐藏层下的μ[l]\mu^{[l]}σ2[l]{\sigma^{2}}^{[l]},使用指数加权平均,当训练结束的时候,得到指数加权平均后当前单个样本的μ[l]\mu^{[l]}σ2[l]{\sigma^{2}}^{[l]},这些值直接用于Batch Norm公式的计算,用以对测试样本进行预测,再利用训练过程得到的γ\gammaβ\beta计算出各层的z~(i)\tilde z^{(i)}

Last updated