BatchNorm学习笔记

BatchNorm的作用

BatchNorm的主要作用是加速训练
BatchNorm还有轻微的正则化效果

BatchNorm原理

对于神经网络中其中某一层给定的隐藏单元Z(1)…Z(m)有以下操作:
在这里插入图片描述
第一步,求Z(1)…Z(m)的平均值。
第二步,求其方差
第三步,是在做归一化
前三步做完得到的数据是均值是0,方差是1,满足正态分布,用此时的数据就可以达到加速训练的效果了,但是这样就学不到他们的特征了,因为本来这些数据的分布就是不同的,所以我们不能把他们归一化到均值是0,方差是1。所以有了第四步。
第四步加了两个参数γ和β,分别叫做缩放参数和平移参数,通过选择不同的γ和β可以让隐藏单元有不同的分布。
通过第四步 得到y(i),这个是我们最后要的。
这里面的γ和β可以从你的模型中学习,可以用梯度下降,Adam等算法进行更新。

为什么BatchNorm可以奏效

  1. BatchNorm实现了归一化,自然可以加速训练
  2. 在神经网络中,随着第一层和第二层参数的更新,那么就一定会影响到第三层的隐藏单元值,影响他们的分布,但是BatchNorm可以保证不管你怎么影响第三层的隐藏单元的分布就是一定的均值和一定的方差(这个均值和方差是由γ和β控制的)。也就是说BatchNorm减少了隐藏单元值分布的不稳定这个问题,是后面的层有更加稳定的基础,削弱了前面参数和后面参数之间的耦合,允许每一层独立学习,所以提升了整个网络的速度。
  3. 为什么会有轻微的正则化效果呢?
    这个原理和dropout有些类似,因为BatchNorm的平均值和方差都是在mini-batch上计算的,而不是在整个数据集上计算的,这样呢这个均值和方差相当于包含噪声,也就是在隐藏单元上加上了噪声,使后面的隐藏单元不要过渡依赖前面的隐藏单元。
    注意:不要将BatchNorm当作正则化方法用,因为效果比较小,它的主要作用还是加速训练。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章