深度学习中的批归一化Batch Normalization

传统的神经网络,只是在将样本x输入层之前对x进行标准化处理(减均值,除标准差),以降低样本间的差异性。BN是在此基础上,不仅仅只对输入层的输入数据x进行标准化,还对每个隐藏层的输入进行标准化。BN由Google于2015年提出,这是一个深度神经网络训练的技巧,它不仅可以加快了模型的收敛速度,而且更重要的是在一定程度缓解了深层网络中梯度弥散(特征分布较散)的问题,从而使得训练深层网络模型更加容易和稳定。所以目前BN已经成为几乎所有卷积神经网络的标配技巧了。

我们可以在网络中任意一层进行归一化处理,因为我们现在所用的优化方法大多都是min-batch SGD,所以我们的归一化操作就成为Batch Normalization。

BN的原理:

BN可以作为神经网络的一层,放在**函数(如Relu)之前。BN的算法流程如下图:

深度学习中的批归一化Batch Normalization

如何将Batch Norm拟合进神经网络?
深度学习中的批归一化Batch Normalization
需要补充的是,β [1] 和 Monmentum、Adam、RMSprop里的β是不一样的。对于此处β 的参数更新,可以采用梯度下降的办法,当然也可以用Adam、RMSprop或Momentum。

在mini-bath上运用BN:
深度学习中的批归一化Batch Normalization

为何Batch Norm能奏效?

ladder network:https://arxiv.org/pdf/1507.02672v2.pdf ()