Batch Normalization详解和momentum参数理解

论文:https://arxiv.org/pdf/1502.03167.pdf

以下博客对batch Normalization的原理,优点和代码解析做了非常清晰的讲解: http://blog.csdn.net/hjimce/article/details/50866313

batch Normalization公式

注意:上式中的γβ是两个可以学习的参数(μ是求出的均值,σ是求出的标准差,ε是人为设置的防止分母为0),实际上当γ取标准差、β取均值的时候,γβ对x标准化的操作提供了逆向的重构。加这个逆向操作的原因是,标准化操作可能会影响该层的表征,所以batch normalization应该有能表示identity transform的能力,所以使用了这两个可以学习的参数来重构让BN层有identity表达的能力

batch Normalization对梯度的影响证明

batch Normalization之所以有用,是对于梯度的影响, 解决了梯度消失,梯度爆炸问题,以至于dropout,L1 L2正则甚至都可以被舍弃.以下来自知乎答主.

加上BN之前的梯度传播:

1.首先,对某层的前向传播过程有:

[公式]

2.针对该层的反向传播过程为(由于我们关心的是梯度的连续反向传播过程,故不关注权重的梯度):

[公式]

3.进一步推导可得,连续多层的梯度反向传播过程为:

[公式]

由此我们可以初步看出,在梯度的连续反向传播过程中,是通过权重 [公式] 的连乘进行的。因此,如果权重 [公式] 的值总是较小的(广义上与1相比),则在反向过程中,梯度呈指数级衰减,就出现了梯度消失的问题;反之,如果如果权重 [公式] 总是较大,则相应的就会出现梯度爆炸的问题。结论就是,在反向传播过程中,权值 [公式] 的大小会极大的影响梯度的有效传播,而在训练过程中,权重并不总是受人为控制的。因此,我们有必要在一定程度上限制甚至消除权值 [公式] 对梯度反向传播的不良影响,于是乎,BN就登场了。

在加上BN之后梯度传播如下:

1.带有BN的前向传播过程如下所示(其中 [公式] 为列向量, [公式][公式] ):

[公式]

2.则其反向传播有:

[公式]

3.相应的,连续多层的梯度反向传播过程为:

[公式]

可以看出,与不使用BN相比,每层的反向传播过程的,增加了一个基于标准差的矩阵 [公式] 对权重 [公式] 进行缩放。所用,重点来了,这样的缩放能够产生什么效果?方法让我们分析一下,如果权重 [公式] 较小,那必然 [公式] 较小,从而使得其标准差 [公式] 较小,相对的 [公式] 较大,所以 [公式] 相对于原本的 [公式] 就放大了,避免了梯度的衰减;同样的,如果权重 [公式] 较大,可以很容易得到 [公式] 相对于原本的 [公式] 缩小了,避免了梯度的膨胀。于是,加入了BN的反向传播过程中,就不易出现梯度消失或梯度爆炸,梯度将始终保持在一个合理的范围内。而这样带来的好处就是,基于梯度的训练过程可以更加有效的进行,即加快收敛速度,减轻梯度消失或爆炸导致的无法训练的问题。

4.进一步的,我们可以证明,加入BN后的反向传播过程与权重 [公式] 的尺度无关,证明如下( [公式] 为标量,表示任意尺度):

[公式]


作者:我不坏
链接:https://www.zhihu.com/question/38102762/answer/391649040
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Batch Normalization的均值和方差对谁求?

  1. 对feature map的channel方向求均值和方差, 假设batch size=n, feature map的shape= (w, h, c), 其中c是channel个数, 则会对c个n*w*h的特征分别求出c个均值和方差
  2. 同样的,为了减少参数量, 一个channel(相当于一种卷积核提取的同一种特征)只对应一组可学习的参数γ、β, 所以对于一层BN层, 可学习的参数为2*c个.

补充:

  • Keras 现在的Batch Normalization里有一个momentum参数, 该参数作用于mean和variance的计算上, 这里保留了历史batch里的mean和variance值,即 moving_mean和moving_variance, 借鉴优化算法里的momentum算法将历史batch里的mean和variance的作用延续到当前batch. 一般momentum的值为0.9 , 0.99等. 多个batch后, 即多个0.9连乘后,最早的batch的影响会变弱.
  • 24
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值