Batch Normalization是一种被广泛采用的技术,使训练更加快速和稳定,已成为最有影响力的方法之一。然而,尽管它具有多种功能,但仍有一些地方阻碍了该方法的发展,正如我们将在本文中讨论的那样,这表明做归一化的方法仍有改进的余地。
为什么要用BN?
什么是Batch Normalization
在训练过程中,当我们更新之前的权值时,每个中间激活层的输出分布会在每次迭代时发生变化。这种现象称为内部协变量移位,所以很自然的一件事,如果我想防止这种情况,就是修正所有的分布。简单来说,如果我的分布变化了,我会限制这个分布,不会让他移动,以帮助梯度优化和防止梯度消失,这就帮助我的神经网络训练的更快,因此减少这种内部协变量位移是推动BN发展的关键原则。
它如何工作
BN通过在batch上减去经验平均值除以经验标注差来对前一个输出层的输出进行归一化,这种数使数据看起来更像高斯分布。
优点
我将列举使用BN的一些好处
- 更快的收敛
- 降低初始权重的重要性
- 鲁棒的超参数
- 需要较少的数据进行泛化
缺点
在使用小batch的时候不稳定
如上所述,BN必须计算平均值和方差,以便在batch中对之前的输出进行归一化,如果batch大小比较大的话,这种统计是比较准的,而随着batch大小的减少,估计的准确性持续减少。