1、什么是Internal covariate shift(ICS)
最早是由Batch Normalization的作者提出的,引用他论文中的定义就是:
在训练过程中,神经网络中的每一层的输入分布都会因为前面layers的参数改变而改变。
训练过程中,每个layer接受的输入分布是不断变化的,这个layer就需要不断适应新的分布,这样就不如让layers的输入分布固定在某个范围,从而促进网络的训练。所以作者就提出Batch Normalization来减轻ICS现象。
(这里的输入分布,可以考虑一个小例子,比如输入x有两个维度,第一个维度的数据范围是1-5,第二个维度的数据范围是1000-5000,那么第二个维度就会贡献更大,从而主导训练进程,所以就需要normalization)
BatchNormalization:
优点:
- 减弱ICS现象
- 可以减少梯度对模型初始参数的依赖,允许我们用更大的学习率,加快训练
- 降低对Dropout的需要,也可以防止过拟合
- BN防止网络陷入饱和模式(saturated modes),使得使用饱和非线性成为可能
缺点:
- 受batch size的影响,太小的话,mini-batch不容易代表总体
- Inference阶段使用的统计量是在training过程中存储的