李宏毅:Batch Normalization

    xiaoxiao2022-07-14  160

    1、feature scaling

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

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

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

    3、Batch Normalization

    (1)batch

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

    (2)batch normalization

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

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

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

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

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

    (3)batch normalization benifit

    它对training的benifit>testing

    1)对参数的影响比较小

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

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

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

     

    最新回复(0)