3.6 Batch Norm 为什么奏效?(Why does Batch Norm work?)

Batch Norm 可以加速神经网络训练的原因:

  • 和输入层的输入特征进行归一化,从而改变Cost function的形状,使得每一次梯度下降都可以更快的接近函数的最小值点,从而加速模型训练过程的原理有相同的道理,只是Batch Norm是将各个隐藏层的激活函数的激活值进行的归一化,并调整到另外的分布

  • Batch Norm 可以使权重比网络更滞后或者更深层

判别是否是猫的分类问题:

假设第一训练样本的集合中的猫均是黑猫,而第二个训练样本集合中的猫是各种颜色的猫。如果将第二个训练样本直接输入到用第一个训练样本集合训练出的模型进行分类判别,在很大程度上无法保证能够得到很好的判别结果

因为训练样本不具有一般性(即不是所有的猫都是黑猫),第一个训练集合中均是黑猫,而第二个训练集合中各色猫均有,虽然都是猫,但是很大程度上样本的分布情况是不同的,无法保证模型可以仅仅通过黑色猫的样本就可以完美的找到完整的决策边界

这种训练样本(黑猫)和测试样本(猫)分布的变化称之为covariate shift。如下图所示:

使用深层神经网络,使用Batch Norm,该模型对花猫的识别能力应该也是不错

Batch Norm 解决Covariate shift的问题

Batch Norm 削弱了前层参数与后层参数之间的联系,使得网络的每层都可以自己进行学习,相对其他层有一定的独立性,有助于加速整个网络的学习

Batch Norm 正则化效果

  • 和Dropout相似,其在每个隐藏层的激活值上加入了一些噪声,(Dropout以一定的概率给神经元乘上0或者1)。Batch Norm 也有轻微的正则化效果

  • 如果使用Batch Norm ,使用大的Mini-batch如256,相比使用小的Mini-batch如64,会引入更少的噪声,会减少正则化的效果

  • Batch Norm的正则化效果比较微弱,正则化不是Batch Norm的主要功能

Last updated