-
使用BN的原因是网络训练中每一层不断改变的参数会导致后续每一层不断的分布式变化,而学习的过程又要使每一层去适应输入的分布,因此不得不降低网络的学习率,并且要小心使用初始化(internal covariant shift)
-
如果仅通过归一化方法使得数据具有零均值和单位方差,则会降低层的表达能力(如果使用Sigmoid函数,只使用线性区域)
-
BN的具体过程(注意第三个公式中分母要加上epsilon)
-
注意点:在测试过程中使用的均值和方差已经不是某一个batch的了,而是针对整个数据集而言。因此,在训练过程中除了正常的前向传播和反向求导之外,我们还要记录每一个Batch的均值和方差,以便训练完成之后按照下式计算整体的均值和方差。
-
另一个注意点,在aixiv的preprint论文中,有一篇叫做“How Does Batch Normalization Help Optimizetion?”的文章,里面提到的BN起作用的真正原因和改变输入的分布从而产生稳定性几乎没有什么关系,真正的原因使BN使对应优化问题的landscape变得更加平稳,这就保证了更加perdictive的梯度以及可以使用更大的学习率从而使网络更快收敛,从而不止BN可以产生这种影响,许多正则化技巧都有这种类似影响。
Batch Normalization简单理解
最新推荐文章于 2022-11-02 14:33:08 发布