[nlp] Batch Normalization(BN) 批量標準化

參考:https://www.cnblogs.com/guoyaohua/p/8724433.html

相關論文:《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》 (通過減少 內部協變量移位 來加速深度網絡訓練)

機器學習領域有個很重要的假設:IID獨立同分布假設,就是假設訓練數據和測試數據是滿足相同分佈的,這是通過訓練數據獲得的模型能夠在測試集獲得好的效果的一個基本保障。
BatchNorm: 通過批標準化,在深度神經網絡訓練過程中使得每一層神經網絡的輸入保持相同分布的。
DL問題:神經網絡深度加深,訓練困難,收斂更慢: ReLU激活函數,Residual Network(BN)本質上也是解釋並從某個不同的角度來解決這個問題的。

一、“Internal Covariate Shift(內部協變量移位)”問題

Mini-Batch SGD : 相對於One Example SGD的兩個優勢:梯度更新方向更準確;並行計算速度快 。BatchNorm是基於Mini-Batch SGD的 , BN就能解決很多SGD的缺點比如調參麻煩。

**covariate shift:**在訓練過程中,因爲各層參數不停在變化,所以每個隱層都會面臨covariate shift的問題,也就是在訓練過程中,隱層的輸入分佈老是變來變去,這就是所謂的“Internal Covariate Shift”,Internal指的是深層網絡的隱層,是發生在網絡內部的事情,而不是covariate shift問題只發生在輸入層。

BatchNorm的基本思想: 讓每個隱層節點的激活輸入分佈固定,這樣就避免了“Internal Covariate Shift”問題了。
在這裏插入圖片描述
二、批量標準化公式
通過批量標準化,得到均值爲0,方差爲1的正態分佈:
在這裏插入圖片描述
這裏t層某個神經元的x(k):不是指原始輸入,就是說不是t-1層每個神經元的輸出,而是t層這個神經元的線性激活x=WU+B,是激活後的輸入

但是這樣會導致網絡表達能力下降,爲了防止這一點,每個神經元增加兩個調節參數(scale和shift),這兩個參數是通過訓練來學習到的,用來對變換後的激活反變換,使得網絡表達能力增強,即對變換後的激活進行如下的scale和shift操作,這其實是變換的反操作:
在這裏插入圖片描述
BN流程:
在這裏插入圖片描述
三、Batch Norm好處
BatchNorm爲什麼NB呢,關鍵還是效果好。①不僅僅極大提升了訓練速度,收斂過程大大加快;②還能增加分類效果,一種解釋是這是類似於Dropout的一種防止過擬合的正則化表達方式,所以不用Dropout也能達到相當的效果;③另外調參過程也簡單多了,對於初始化要求沒那麼高,而且可以使用大的學習率等。總而言之,經過這麼簡單的變換,帶來的好處多得很,這也是爲何現在BN這麼快流行起來的原因。

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