Batch Normalization (BN)簡潔介紹

提出BN的文獻: Ioffe, S., & Szegedy, C. (2015). Batch normalization: Accelerating deep network training by reducing internal covariate shift. 32nd International Conference on Machine Learning, ICML 2015, 1, 448–456.

Batch Normalization(歸一化)

結論

BN就是通過一定的規範化手段,默認情況下把每層神經網絡任意神經元這個輸入值的分佈是拉回到均值爲0方差爲1標準正態分佈使得非線性變換函數的輸入值落入對輸入比較敏感的區域,以此避免梯度消失問題,並且能夠加快訓練的收斂速度,同時增強神經網絡的泛化能力。

 

展開介紹:

在邏輯迴歸中,使用歸一化輸入特徵可以加快學習過程。歸一化是指先從訓練集中減去平均值,然後除以方差。

這樣的方法同樣適用於神經網絡的輸入層,這樣可以得到一個均值爲0方差爲1的輸入。但是這不適用於神經網絡的隱藏層,因爲隱藏層有不同的分佈會更有意義,所以對於隱藏層的歸一化:,這裏是你神經網絡學習到的參數,也可以用Adam的方式更新。

BN操作使隱藏單元值的均值和方差標準化,即有固定的均值和方差,均值和方差可以是0和1,也可以是其它值,它是由兩參數控制的

在TensorFlow中,tf.nn.batch_normalization可以一行代碼實現Batch歸一化(BN)。

因爲在Batch歸一化的過程中,你要計算的均值,再減去平均值,所以加上的常數b都將會被均值減去所抵消,這個參數變得沒有意義,所以參數實際是變爲了成,然後再計算歸一化的這就爲什麼最後會用參數作爲控制參數,影響轉移或偏置條件。

BN用於調節計算的是在整個mini-batch上進行計算,但是在測試的時候,如果只有一個樣本,一個樣本的均值和方差沒有意義。所以爲了將神經網絡運用於測試,就需要單獨估計在實際操作中,我們通常運用指數加權平均來追蹤在訓練過程中你看到的的值。還可以用指數加權平均來粗略估算,然後在測試中使用的值來進行你所需要的隱藏單元值的調整。如果你使用的是某種深度學習框架,通常會有默認的估算的方式,一樣會起到比較好的效果

 

爲什麼能增加神經網絡的泛化能力?

如果是用左圖的訓練集訓練的網絡,是很難在右圖的測試集上有好的表現的,因爲右圖的貓比左圖的貓多了顏色。Batch歸一化可以減少輸入值改變的問題,因爲進行了標準化,固定了隱藏單元輸出的均值和方差,使得左圖訓練出的網絡在右圖有相對較好的表現。

還有一點是因爲Batch歸一化通常和mini-batch同時使用,所以均值和方差是在小批次的數據集上計算的,而不是整個數據集,所以會引入噪聲,因爲給隱藏單元添加了噪聲,迫使後面的隱藏單元不過分依賴前面的任何一個隱藏單元,從而起到了正則化的效果。(所以應用較大的mini-batch可以減少正則化效果)

 

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