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


引自:https://blog.csdn.net/u013289254/article/details/99690730

一. 本文的內容包括:

    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.集萬千寵愛於一身,但訓練復雜


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM