李宏毅:Batch Normalization

1、feature scaling

(1)经过feature scaling,会让你的training容易的多。

李宏毅:Batch Normalization

(2)对每一维的i计算均值和标准差,利用公式得到scaling后的feature,这样会让你的training收敛地更快。

李宏毅:Batch Normalization

2、对每一个layer前的input进行feature scaling,但此时会出现一个问题:第一个layer前的feature 是不会变的,但是其它layer的input会随着training而改变。于是就想出了一个:Batch normalization

李宏毅:Batch Normalization

3、Batch Normalization

(1)batch

下图所示:x1,x2,x3是一个batch,它们是并行运算的。

李宏毅:Batch Normalization

(2)batch normalization

下图所示的是先做batch normalization,再做activation function。μ是z的mean,再算σ(标准差),需要注意的是:你的batch不能很小,不然你得到的μ和σ不能代表整个data。

李宏毅:Batch Normalization

每一个layer都会做batch normalization。在进入activation function之前都会去做normalization。

李宏毅:Batch Normalization

你在train batch normalization的时候它是会考虑data的,在做backpropogation的时候,它也是会影响μ和σ的

李宏毅:Batch Normalization

有时候你不想要用mean和标准差,你可以改动Zi,再加上γ和β(γ,β就当做是参数),把现在的distribution做一下改动,再放入activation function。

李宏毅:Batch Normalization

在testing的时候,我们没有batch,无法得到μ和σ,其中一个方法是:在training的时候计算每一个batch的μ和σ,给靠近training结束时的μ一个大的weight,离得远的给一个小的weight,再取平均。

李宏毅:Batch Normalization

(3)batch normalization benifit

它对training的benifit>testing

1)对参数的影响比较小

2)可以设置大一些的learning rate,更快收敛

3)较少出现梯度消失或梯度爆炸

4)能够一定程度上抑制overfitting

李宏毅:Batch Normalization