本文主題是「Batch Normalization」,Ian Goodfellow 大大在《Deep Learning》一書中是這麼描述 Batch Normalization 的:
Batch normalization (Ioffe and Szegedy, 2015) is one of the most exciting recent innovations in optimizing deep neural networks, and it is actually not an opti-mization algorithm at all. Instead, it is a method of adaptive reparametrization,motivated by the difficulty of training very deep models.
這也是在 「Optimization:優化深度學習模型的技巧」最後一篇中想跟大家介紹的原因。
首先先來講 Normalization 的好處:在具有統一規格的資料下,Machine Learning 能更容易學到資料中的規律,以下是資料應用 L2 normalization 的例子:
圖片來源:《Feature Engineering for Machine Learning》一書
它的提出是為了克服深度神經網絡難以訓練的問題,使用 Batch Normalization 優點在於:
Batch Normalization 在進行學習時以 mini-batch 為單位,依照各個 mini-batch 來進行正規化。為了增加神經網絡的穩定性,它透過減去 batch 的均值並除以 batch 的標準差(standard deviation)來正規化前面激活層(activation)的輸出。
圖片來源:論文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
Batch Normalization 為每一層增加了兩個訓練參數,standard deviation 參數(γ
)、mean 參數(β
)。 換句話說,它讓 SGD 對每次激活僅更改這兩個權重來執行 denormalization,而不是透過更改所有權重卻失去網絡的穩定性。
最後總結,各位見習魔法使可將 Batch Normalization 視為對神經網絡中的每一層進行預處理的過程。它的最大好處就是讓每一層的值在有效的範圍內傳遞下去。
另外補充教學影片參考資源,有了畫面解說想必會更加了解。