神经网络中的批量归一化

batch normalization in neural network

我对 ANN 还是很陌生,我刚刚阅读了批量归一化论文 (http://arxiv.org/pdf/1502.03167.pdf),但我不确定我是否了解他们正在做的事情(更重要的是,为什么它有效)

假设我有两层 L1 和 L2,其中 L1 产生输出并将它们发送到 L2 中的神经元。批量归一化只获取 L1 的所有输出(即每个神经元的每个输出,为完全连接的网络获得 |L1| X |L2| 个数字的整体向量),将它们归一化为均值为 0 和 SD 为 1,然后将它们馈送到 L2 中各自的神经元(加上应用他们在论文中讨论的 gamma 和 beta 的线性变换)?

如果确实如此,这对 NN 有何帮助?常数分布有什么特别之处?

在网络的标准 SGD 训练过程中,隐藏层的输入分布会发生变化,因为它之前的隐藏层也在不断变化。这被称为协变量偏移,可能是一个问题;参见,例如,here.

众所周知,如果训练数据是 "whitened",即以每个分量具有高斯分布且独立于其他分量的方式进行变换,则神经网络收敛得更快。请参阅论文中引用的论文 (LeCun et al., 1998b) 和 (Wiesler & Ney, 2011)。

作者的想法是现在不仅将这种白化应用于输入层,而且还应用于每个中间层的输入。对整个输入数据集执行此操作的成本太高,因此他们改为分批执行。他们声称这可以大大加快训练过程,也可以作为一种正则化。