Background
Covariance shift
——when the input distribution to a learning system changes, it is said to experience covariance shift.
当这种现象发生在多层神经网络之间时,即前面层参数的改变,使得后面层的输入分布发生改变时,就叫Internal covariance shift。
前面层的参数变化会影响当前层的输入分布,缺点有二:
1.大大减慢当前层的参数学习速度(当前层也是一个learning system,一旦其输入的分布改变,就要调整参数来适应这种分布);
2.若使用sigmoid激活函数,当前层的输入可能会处于sigmoid函数的非线性饱和区域,进而导致梯度消失现象。在BN出现以前,通常采用ReLU(x)=max(0,x)激活函数或使用较小的learning rate来解决这个问题。
因此我们想到,如果前面层的输出activation(即当前层的输入input)的分布是一定的呢?那样就会减少下一层输入陷入sigmoid饱和非线性区域的可能,梯度不再容易消失,从而加快训练速度。
Whitening
对某一层的输出activations进行白化操作(零均值、单位方差、去相关),可以使得这些activations的分布保持恒定,从而减小internal covarian