一、圖示兩種方式的不同
LN:Layer Normalization,LN是“橫”着來的,對一個樣本,不同的神經元neuron間做歸一化。
BN:Batch Normalization,BN是“豎”着來的,各個維度做歸一化,所以與batch size有關系。
二者提出的目的都是為了加快模型收斂,減少訓練時間。
二、BN解決網絡中的Convariate Shift問題
批標准化(Bactch Normalization,BN)是為了克服神經網絡加深導致難以訓練而誕生的,隨着神經網絡深度加深,訓練起來就會越來越困難,收斂速度回很慢,常常會導致梯度彌散問題(Vanishing Gradient Problem)。
統計機器學習中有一個經典的假設:Source Domain 和 Target Domain的數據分布是一致的。也就是說,訓練數據和測試數據是滿足相同分布的。這是通過訓練數據獲得的模型能夠在測試集上獲得好的效果的一個基本保障。
Convariate Shift是指訓練集的樣本數據和目標樣本集分布不一致時,訓練得到的模型無法很好的Generalization。它是分布不一致假設之下的一個分支問題,也就是指Sorce Domain和Target Domain的條件概率一致的,但是其邊緣概率不同。的確,對於神經網絡的各層輸出,在經過了層內操作后,各層輸出分布就會與對應的輸入信號分布不同,而且差異會隨着網絡深度增大而加大了,但每一層所指向的Label仍然是不變的。
解決辦法:一般是根據訓練樣本和目標樣本的比例對訓練樣本做一個矯正。所以,通過引入Bactch Normalization來標准化某些層或者所有層的輸入,從而固定每層輸入信息的均值和方差。
方法:Bactch Normalization一般用在非線性映射(激活函數)之前,對x=Wu+b做標准化,是結果(輸出信號各個維度)的均值為0,方差為1。讓每一層的輸入有一個穩定的分布會有利於網絡的訓練。
優點:Bactch Normalization通過標准化讓激活函數分布在線性區間,結果就是加大了梯度,讓模型更大膽的進行梯度下降,具有如下優點:
- 加大搜索的步長,加快收斂的速度;
- 更容易跳出局部最小值;
- 破壞原來的數據分布,一定程度上緩解了過擬合
因此,在遇到神經網絡收斂速度很慢或梯度爆炸(Gradient Explore)等無法訓練的情況系啊,都可以嘗試用Bactch Normalization來解決。
三、BN的缺陷
缺陷如下:
1、BN是在batch size樣本上各個維度做標准化的,所以size越大肯定越能得出合理的μ和σ來做標准化,因此BN比較依賴size的大小。
2、在訓練的時候,是分批量進行填入模型的,但是在預測的時候,如果只有一個樣本或者很少量的樣本來做inference,這個時候用BN顯然偏差很大,例如在線學習場景。
3、RNN是一個動態的網絡,也就是size是變化的,可大可小,造成多樣本維度都沒法對齊,所以不適合用BN。
LN帶來的優勢:
1、Layer Normalization是每個樣本內部做標准化,跟size沒關系,不受其影響。
2、RNN中LN也不受影響,內部自己做標准化,所以LN的應用面更廣。
LN的原論文:https://arxiv.org/pdf/1607.06450.pdf
參考鏈接: