深度學習中的五種歸一化(BN、LN、IN、GN和SN)方法簡介

一. 本文的內容包括:

    1. Batch Normalization,其論文:https://arxiv.org/pdf/1502.03167.pdf

    2. Layer Normalizaiton,其論文:https://arxiv.org/pdf/1607.06450v1.pdf

    3. Instance Normalization,其論文:https://arxiv.org/pdf/1607.08022.pdf

    4. Group Normalization,其論文:https://arxiv.org/pdf/1803.08494.pdf

    5. Switchable Normalization,其論文:https://arxiv.org/pdf/1806.10779.pdf

 

二. 介紹

    在介紹各個算法之前,我們先引進一個問題:爲什麼要做歸一化處理?

    神經網絡學習過程的本質就是爲了學習數據分佈,如果我們沒有做歸一化處理,那麼每一批次訓練數據的分佈不一樣,從大的方向上看,神經網絡則需要在這多個分佈中找到平衡點,從小的方向上看,由於每層網絡輸入數據分佈在不斷變化,這也會導致每層網絡在找平衡點,顯然,神經網絡就很難收斂了。當然,如果我們只是對輸入的數據進行歸一化處理(比如將輸入的圖像除以255,將其歸到0到1之間),只能保證輸入層數據分佈是一樣的,並不能保證每層網絡輸入數據分佈是一樣的,所以也需要在神經網絡的中間層加入歸一化處理。

    BN、LN、IN和GN這四個歸一化的計算流程幾乎是一樣的,可以分爲四步:

      1.計算出均值

      2.計算出方差

      3.歸一化處理到均值爲0,方差爲1

      4.變化重構,恢復出這一層網絡所要學到的分佈

 

    訓練的時候,是根據輸入的每一批數據來計算均值和方差,那麼測試的時候,平均值和方差是怎麼來的?

    對於均值來說直接計算所有訓練時batch 均值的平均值;然後對於標準偏差採用每個batch 方差的無偏估計

    接下來,我們先用一個示意圖來形象的表現BN、LN、IN和GN的區別(圖片來自於GN這一篇論文),在輸入圖片的維度爲(NCHW)中,HW是被合成一個維度,這個是方便畫出示意圖,C和N各佔一個維度

 Batch Normalization:

   1.BN的計算就是把每個通道的NHW單獨拿出來歸一化處理

   2.針對每個channel我們都有一組γ,β,所以可學習的參數爲2*C

   3.當batch size越小,BN的表現效果也越不好,因爲計算過程中所得到的均值和方差不能代表全局

 

Layer Normalizaiton:

   1.LN的計算就是把每個CHW單獨拿出來歸一化處理,不受batchsize 的影響

   2.常用在RNN網絡,但如果輸入的特徵區別很大,那麼就不建議使用它做歸一化處理

 

Instance Normalization

   1.IN的計算就是把每個HW單獨拿出來歸一化處理,不受通道和batchsize 的影響

   2.常用在風格化遷移,但如果特徵圖可以用到通道之間的相關性,那麼就不建議使用它做歸一化處理

 

Group Normalizatio

    1.GN的計算就是把先把通道C分成G組,然後把每個gHW單獨拿出來歸一化處理,最後把G組歸一化之後的數據合併成CHW

    2.GN介於LN和IN之間,當然可以說LN和IN就是GN的特列,比如G的大小爲1或者爲C

 

Switchable Normalization

    1.將 BN、LN、IN 結合,賦予權重,讓網絡自己去學習歸一化層應該使用什麼方法

    2.集萬千寵愛於一身,但訓練複雜

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