对Batch Normalization的理解

从别处看到说BN本质上是解决反向传播过程中的梯度decay和blow-up的问题。

为了增加理解和记忆,这里举一个特别简单的例子,希望能够说明白。


就以一维为例,设输入的就是x_i,i =1, 2,...,m

w为权,

这里高bias 为0,

输出为f=wx.

那么显然,f对x的导数为w

如果网络很deep的话,比如说100层, 那么就有可能会出现  1.1^100 or 0.9^100,这种情况。

那么BN为何能用到这里呢?

  • formally 看的话,BN(wx)= \gamma ((wx-\mu)/ (\sigma))   + \beta.
  • 所以再对x求导,是 (\gamma)/(\sigma) w,
  • 再formally看,  \sigma^2 = mean(wx-\mu)^2  \sim w^2
  • 所以w 和 \sigma的量级是一样的,也就是说把w的scale给吃掉了。
  • 给\gamma可以自己给定,这样就可变得可控了

猜你喜欢

转载自blog.csdn.net/qfpkzheng/article/details/79952463