李宏毅:Batch Normalization

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章