从别处看到说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可以自己给定,这样就可变得可控了