深层神经网络中,中间某一层的输入是其之前的神经层的输出。因此,其之前的神经层的参数变化会导致其输入的分布发生较大的差异。利用随机梯度下降更新参数时,每次参数更新都会导致网络中间每一层的输入的分布发生改变。越深的层,其输入分布会改变的越明显。
内部协变量偏移(Internal Covariate Shift):每一层的参数在更新过程中,会改变下一层输入的分布,神经网络层数越多,表现得越明显,(就比如高层大厦底部发生了微小偏移,楼层越高,偏移越严重。)
为了解决内部协变量偏移问题,就要使得每一个神经层的输入的分布在训练过程要保持一致。
批量归一化(Batch Normalization,BN)
令第
层的净输入 为
,神经元的输出为
为了减少内部协变量偏移问题,就要使得净输入
的分布一致,比如都归一化到标准正态分布。但是逐层归一化需要在中间层进行操作,要求效率比较高,因此复杂度比较高的白化方法就不太合适。为了提高归一化效率,一般使用标准归一化,将净输入
的每一维都归一到标准正态分布:
和
指当前参数下,
的每一维在整个训练集上的期望和方差。因为目前主要的训练方法是基于小批量的随机梯度下降方法,因此
的期望和方差通常用当前小批量样本集的均值和方差近似估计。
给定一个包含
个样本的小批量样本集合,第
层神经元的净输入