批歸一化Batch Normalization學習筆記

1 Batch Normalization(BN)的作用

1.1 特徵分佈對神經網絡訓練的作用

在神經網絡的訓練過程中,我們一般會將輸入樣本特徵進行歸一化處理,使數據變爲均值爲0,標準差爲1的分佈或者範圍在0~1的分佈。因爲當我們沒有將數據進行歸一化的話,由於樣本特徵分佈較散,可能會導致神經網絡學習速度緩慢甚至難以學習。
用2維特徵的樣本做例子。如下兩個圖
這裏寫圖片描述
上圖中樣本特徵的分佈爲橢圓,當用梯度下降法進行優化學習時,其優化過程將會比較曲折,需要經過好久才能到達最優點。
這裏寫圖片描述
上圖中樣本特徵的分佈爲比較正的圓,當用梯度下降法進行優化學習時,其有過的梯度方向將往比較正確的方向走,訓練比較快就到達最優點。
因此一個比較好的特徵分佈將會使神經網絡訓練速度加快,甚至訓練效果更好

1.2 BN的作用

但是我們以前在神經網絡訓練中,只是對輸入層數據進行歸一化處理,卻沒有在中間層進行歸一化處理。要知道,雖然我們對輸入數據進行了歸一化處理,但是輸入數據經過σ(WX+b) 這樣的矩陣乘法以及非線性運算之後,其數據分佈很可能被改變,而隨着深度網絡的多層運算之後,數據分佈的變化將越來越大。如果我們能在網絡的中間也進行歸一化處理,是否對網絡的訓練起到改進作用呢?答案是肯定的。
這種在神經網絡中間層也進行歸一化處理,使訓練效果更好的方法,就是批歸一化Batch Normalization(BN)。BN在神經網絡訓練中會有以下一些作用:

  1. 加快訓練速度
  2. 可以省去dropout,L1, L2等正則化處理方法
  3. 提高模型訓練精度

2. BN的原理

既然BN這麼厲害,那麼BN究竟是怎麼樣的呢?
BN可以作爲神經網絡的一層,放在激活函數(如Relu)之前。BN的算法流程如下圖:
這裏寫圖片描述
1. 求上一層輸出數據的均值μβ

μβ=1mi=1mxi
其中,m是此次訓練樣本batch的大小。
2. 求上一層輸出數據的標準差σβ2
σβ2=1mi=1m(xiμβ)2

3. 歸一化處理,得到xi^
xi^=xi+μβσβ2+ε
其中ε 是爲了避免分母爲0而加進去的接近於0的很小值
4. 對經過上面歸一化處理得到的數據進行重構,得到yi
yi=γxi^+β
其中,γβ 是可學習參數

上述是BN訓練時的過程,但是當在投入使用時,往往只是輸入一個樣本,沒有所謂的均值μβ 和標準差σβ2 ,那該怎麼辦呢?此時,網絡中使用的均值μβ 是計算所有batchμβ 值的平均值得到,標準差σβ2 採用每個batch σβ2 的無偏估計得到。

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