1. 程式人生 > >DIFFERENTIABLE LEARNING-TO-NORMALIZE VIA SWITCHABLE NORMALIZATION(SN,切換歸一化)

DIFFERENTIABLE LEARNING-TO-NORMALIZE VIA SWITCHABLE NORMALIZATION(SN,切換歸一化)

這是根據不同作者寫的以及我個人的理解做出的總結,只是方便我個人下次閱讀,如有侵權,請聯絡我刪除。

 

論文參考:https://zhuanlan.zhihu.com/p/39296570

論文參考:http://www.sohu.com/a/241640030_395209

程式碼:https://github.com/switchablenorms/Switchable-Normalization(pytorch)

程式碼:https://github.com/taki0112/Switchable_Normalization-Tensorflow(tensorflow,這份程式碼我個人覺得有問題,他應該是能實現,但是並沒有採用paper中減少計算量的方法)

我之前寫的關於GN的,也有介紹其他三種歸一(規範)化方法:https://blog.csdn.net/qq_33266320/article/details/79719858

目前針對不同任務提出的主要的規範化技術包括批量規範化,層規範化,例項規範化,組規範化。該論文(Switchable Normalization(SN))的目的就是為了讓網路自己通過學習選擇任務所適合的最好的規範化方法。

注:一般的任務所有層都用同一種normalization,SN可以學到不同層用不同的normalization

 

四種Normalization:

BatchNorm是沿著所有樣本的同一個通道計算,它首先應用在影象分類任務中,有助於提高收斂速度和泛化性

Layer Norm是對單個樣本的特徵進行計算,它首先應用在RNN中,使得RNN的優化更容易

Instance Norm是對每個樣本的每個通道計算,首先應用在風格轉換任務上,基於它可以解決任意風格的轉換的問題

Group Norm與Layer Norm、Instance Norm有些相似,我覺得是兩者之間取了個適當的值,也就是把LN比IN多的C分了組,它解決了Batch Norm對於批量大小的依賴問題

https://blog.csdn.net/qq_33266320/article/details/79719858我之前在看GN時候有具體介紹。

SN優點和四種的缺點:

SN相比其他正常化有著獨特的優勢。

相比於BN對批量大小的依賴較大,特別在較小的批量大時,BN效果會顯著下降,SN則對批量大小足夠魯棒,通過動態調節各種歸一化的權值,減小BN的影響,使用IN和LN進行互補;

另外針對不同任務,SN可以自適應不同的任務,通過學習選擇與任務合適的權值,在不同層也可以使用不同的權值,拓展了單個結構使用同一種標準化的方式。

 

SN方法:(來源於https://zhuanlan.zhihu.com/p/39296570

Switchable Normalization(SN)統一了例項歸一化Instance Normalization(IN),層歸一化Layer Normalization(LN),和批歸一化Batch Normalization(BN)的各種操作。假設一個卷積神經網路(CNN)的一個隱含卷積層的輸入資料可表示為具有四個維度的特徵圖, (N, C, H, W) 。這裡每個維度分別代表樣本數目(minibatch size),通道數目(number of channels),通道的高(height),和通道的寬(width)。假設每一個畫素表示為 h_{ncij} ,這裡 n,c,i,j 為上述四個維度的下標。SN對 h_{ncij} 進行歸一化操作,並輸出歸一化後的畫素值 \hat{h}{ncij} 。SN的計算公式如下:


\hat{h}{ncij}=\gamma\frac{h_{ncij}-\Sigma_{k\in\Omega} w_k\mu_k} {\sqrt{\Sigma_{k\in\Omega}w_k^\prime\sigma_k^2+\epsilon}}+\beta.

 

上述定義與BN,IN,和LN的定義相似。他們都學習了縮放係數 \gamma 和偏移係數 \beta 。主要的區別在於SN的統計資訊(即均值 \mu 和方差 \sigma^2 ),不像IN只是在一個通道中計算的,也不像LN只是在一個層中計算,而是在一個集合 \Omega 當中選擇合適的歸一化方法來加權平均的。這個集合定義為 \Omega={\mathrm{bn},\mathrm{in},\mathrm{ln}} 。 w_k 和 w_k^\prime 則為相應統計量對應的權重係數。下圖直觀的展示了SN的基本原理

圖1 自適配歸一化圖形解釋

 

圖1為SN的直觀圖形解釋。SN中每個樣本每個通道( H\times W )的均值和方差,由BN、IN、LN三種不同統計方法計算得到的均值和方差共同決定。

在SN中,均值的加權係數 w_k 的計算方法如下:
w_k=\frac{e^{\lambda_k}}{\Sigma_{z\in{\mathrm{in},\mathrm{ln},\mathrm{bn}}}e^{\lambda_z}},~ ~~k\in{\mathrm{bn},\mathrm{in},\mathrm{ln}},


λ_k 為三個維度統計量對應的引數。為了與網路引數(如卷積核)區分,這些引數稱為控制引數。這些控制引數均初始為1,在反向傳播時進行優化學習。該計算公式即利用softmax函式對優化引數 λ_k 進行歸一化,計算統計量最終的加權係數 w_k 。因此,所有加權係數 w_k 的和為1,每個加權係數 w_k 的值都在0和1之間。類似的, w_k^\prime 可以由另外的三個引數 \lambda_\mathrm{bn}^\prime , \lambda_\mathrm{in}^\prime ,和 \lambda_\mathrm{ln}^\prime計算得出,且 \Sigma_{k\in\Omega}w_k^\prime=1 , \forall w_k^\prime\in[0,1] 。因此,相對於BN,SN只額外增加了 \lambda_\mathrm{bn} , \lambda_\mathrm{in} , \lambda_\mathrm{ln} 和 \lambda_\mathrm{bn}^\prime , \lambda_\mathrm{in}^\prime , \lambda_\mathrm{ln}^\prime 6個控制引數。

注:      \lambda_\mathrm{bn} , \lambda_\mathrm{in} , \lambda_\mathrm{ln} 是關於均值的統計量對應的引數

            \lambda_\mathrm{bn}^\prime , \lambda_\mathrm{in}^\prime , \lambda_\mathrm{ln}^\prime 是關於方差的統計量對應的引數