一、问题的提出
在训练深度神经网络时,随着梯度的下降,网络中的参数会不断更新。当前面网络的参数发生微小变化时,随着每一层的前向传播(线性层和激活函数等)而会使该微小的变化随网络的加深而变大,同时参数的改变会使得每一层的数据分布发生变化,这就是 Internal Covariate Shift(内部协变量偏移)。由于内部协变量偏移问题,后面层的网络需要不断调整以适应前面层输入数据分布(参数)的变化,因而在训练网络时需要使用低的学习率并且谨慎选择初始化参数,这使得模型训练的很慢。而且,在深度神经网络中,若使用饱和非线性激活函数(sigmoid,tanh等),可能会导致梯度消失。
举两个例子:例1:如图一,当输入两组数据大小相差很大时(x1>>x2),在x2上梯度下降快,但在x1上无明显变化。其梯度下降图左下方所示,传统做法是对输入数据进行特征缩放,使其梯度下降如图右下方所示。但由于ICS(内部协变量偏移),若对每层做特征缩放,则很难达到所有层同步变化,因而我们必须降低学习率,谨慎选择初始化参数,致使网络训练较慢。


例2:以使用sigmoid激活函数为例,如上图2二所示,当