部分资料来源于网络,仅做个人学习之用
原因
内部协变量偏移:深度神经网络的训练在训练时,先前的层的权值参数改变会导致层间输入值的分布情况也随之改变,这就使神经网络的训练变得困难。也使我们只能使用较小的学习率、更谨慎的参数初始化,且训练非线性模型变得非常困难。
训练过程中,层间的权重会不断改变和调整,而前面层权重参数的改变会影响后面层的输入,当网络的深度很大时,层间的关联性变得很高,前面层的一点改变积累到后面会是很大的影响。也就是经过前面层参数的改变,一层层积累下来,到某一层时的输入值与上一次训练(此次参数更新前)的输入值的分布情况可能会有很大的差距。
而一般的深度神经网络都要求输入变量在训练数据和测试数据上的分布是相似的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。当输入的分布在参数更新前后有较大改变时,网络要去不断的适应新的数据分布,进而使得训练变得异常困难,我们只能使用一个很小的学习速率和精调的初始化参数来解决这个问题。而且这个中间层的深度越大时,这种现象就越明显。由于是对层间数据的分析,也即是内部(internal),因此这种现象叫做内部协变量偏移(internal Covariate Shift)。
解决方案
将层间输入值进行归一化。而“批量”则是因为归一化操作是对训练的小批量数据进行的。
批量归一化这一操作极大地提高了训练的学习率,也使初始化的参数可以不那么谨慎,是加速训练的好方法。