【 深度學習李宏毅 】?Batch Normalization (中文)

純理論講解Batch Normalization
首先介紹Feature Scaling:
為了使模型中每個參數得到充分的學習,需要將輸入數據的各個維度的數值大小控制在相近的范圍內,防止數值過大的維度對應的參數對學習結果的影響過大。

例如,輸入了R個data,對每個dimension上求均值和標準差,對同一緯度上的數據作統(tǒng)一處理

在DL領域,每個訓練層的輸出都相當于下一層的輸入,所以每一層都需要進行Feature Scaling

Internal Covariate Shift:在網絡底層參數發(fā)生變化時,會引起后續(xù)參數的連鎖變化。進而使得每一層輸出數據的平均值和標準差一直在變,導致訓練收斂困難。
解決辦法:Batch Normalization
Batch知識點回顧:



可引入參數γ與β,對輸出數據的特征作進一步處理(γ與β可被訓練)

在testing環(huán)節(jié),由于測試集參數不參與訓練,網絡無法得知測試集數據的平均值和標準差,BN將會失效(回顧前面,BN的前提是知道整個數據集中某個維度的平均值和標準差)
但當數據集十分龐大或者只能一個個地輸入時,計算整個數據集的平均值和標準差將會十分困難。
所以實際上會取輸入數據的動態(tài)平均值,同時由于越接近訓練后期求出的數據平均值和標準差越精確,所以往往會在訓練后期使用更大的參數w。



標簽: