Batch Normolization(批歸一化)
阿新 • • 發佈:2019-01-03
Why:
Internal Covariate Shift:網路中間層在訓練過程中,輸入資料分佈的改變。訓練過程中引數會不斷的更新,前面層訓練引數的更新將導致後面層輸入資料分佈的變化。
因此,模型引數要不斷去適應這種隨迭代變化的輸入分佈,這回導致模型引數學習很慢。如果能使每層的輸入分佈固定(如均值為0,方差為1的高斯分佈),那麼模型引數的學習將會更加容易。
What:
將每層輸入的分佈做歸一化的操作,叫做Batch Normolization(批歸一化)。
輸入——>計算mini-batch的均值和方差——>歸一化——>線性變換——>輸出
Results:
- 輸入資料樣本空間中的分佈將更加均勻和固定,模型引數的學習也會變得更加容易,顯著加速模型訓練的收斂速度。
- 限制了在前層的引數的更新,減少了輸入值改變的問題,使輸出值更加穩定,因此有輕微的正則化的效果。
- 給隱藏層增加了噪音,有一定的正則化效果。
How:
卷積神經網路經過卷積後得到的是一系列的特徵圖,如果min-batch sizes為m,那麼網路某一層輸入資料可以表示為四維矩陣(m,f,p,q),m為min-batch sizes,f為特徵圖個數,p、q分別為特徵圖的寬高。在cnn中我們可以把每個特徵圖看成是一個特徵處理(一個神經元)