Batch Norm/Layer Norm/Instance Norm /Group Norm/Switchable Norm

 

BatchNorm存在的問題

侷限1:如果Batch Size太小,則BN效果明顯下降。

BN是嚴重依賴Mini-Batch中的訓練實例的,如果Batch Size比較小則任務效果有明顯的下降。那麼多小算是太小呢?圖10給出了在ImageNet數據集下做分類任務時,使用ResNet的時候模型性能隨着BatchSize變化時的性能變化情況,可以看出當BatchSize小於8的時候開始對分類效果有明顯負面影響。之所以會這樣,是因爲在小的BatchSize意味着數據樣本少,因而得不到有效統計量,也就是說噪音太大。這個很好理解,這就類似於我們國家統計局在做年均收入調查的時候,正好把你和馬雲放到一個Batch裏算平均收入,那麼當你爲下個月房租發愁之際,突然聽到你所在組平均年薪1億美金時,你是什麼心情,那小Mini-Batch裏其它訓練實例就是啥心情。

圖10. BN的Batch Size大小對ImageNet分類任務效果的影響(From GN論文)

BN的Batch Size大小設置是由調參師自己定的,調參師只要把Batch Size大小設置大些就可以避免上述問題。但是有些任務比較特殊,要求batch size必須不能太大,在這種情形下,普通的BN就無能爲力了。比如BN無法應用在Online Learning中,因爲在線模型是單實例更新模型參數的,難以組織起Mini-Batch結構。

侷限2:對於有些像素級圖片生成任務來說,BN效果不佳

對於圖片分類等任務,只要能夠找出關鍵特徵,就能正確分類,這算是一種粗粒度的任務,在這種情形下通常BN是有積極效果的。但是對於有些輸入輸出都是圖片的像素級別圖片生成任務,比如圖片風格轉換等應用場景,使用BN會帶來負面效果,這很可能是因爲在Mini-Batch內多張無關的圖片之間計算統計量,弱化了單張圖片本身特有的一些細節信息。

侷限3:RNN等動態網絡使用BN效果不佳且使用起來不方便

對於RNN來說,儘管其結構看上去是個靜態網絡,但在實際運行展開時是個動態網絡結構,因爲輸入的Sequence序列是不定長的,這源自同一個Mini-Batch中的訓練實例有長有短。對於類似RNN這種動態網絡結構,BN使用起來不方便,因爲要應用BN,那麼RNN的每個時間步需要維護各自的統計量,而Mini-Batch中的訓練實例長短不一,這意味着RNN不同時間步的隱層會看到不同數量的輸入數據,而這會給BN的正確使用帶來問題。假設Mini-Batch中只有個別特別長的例子,那麼對較深時間步深度的RNN網絡隱層來說,其統計量不方便統計而且其統計有效性也非常值得懷疑。另外,如果在推理階段遇到長度特別長的例子,也許根本在訓練階段都無法獲得深層網絡的統計量。綜上,在RNN這種動態網絡中使用BN很不方便,而且很多改進版本的BN應用在RNN效果也一般。

可以參考知乎這個問題:https://www.zhihu.com/question/308310065/answer/569167072

侷限4:訓練時和推理時統計量不一致

對於BN來說,採用Mini-Batch內實例來計算統計量,這在訓練時沒有問題,但是在模型訓練好之後,在線推理的時候會有麻煩。因爲在線推理或預測的時候,是單實例的,不存在Mini-Batch,所以就無法獲得BN計算所需的均值和方差,一般解決方法是採用訓練時刻記錄的各個Mini-Batch的統計量的數學期望,以此來推算全局的均值和方差,在線推理時採用這樣推導出的統計量。雖說實際使用並沒大問題,但是確實存在訓練和推理時刻統計量計算方法不一致的問題。

LN與BN的區別 https://zhuanlan.zhihu.com/p/74516930

 

References

BatchNormalization、LayerNormalization、InstanceNorm、GroupNorm、SwitchableNorm總結

深度學習加速器Layer Normalization-LN

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