Group Normalization算法筆記

論文:Group Normalization
論文鏈接:https://arxiv.org/abs/1803.08494

Group Normalization(GN)是針對Batch Normalization(BN)在batch size較小時錯誤率較高而提出的改進算法,因爲BN層的計算結果依賴當前batch的數據,當batch size較小時(比如2、4這樣),該batch數據的均值和方差的代表性較差,因此對最後的結果影響也較大。如圖Figure1所示,隨着batch size越來越小,BN層所計算的統計信息的可靠性越來越差,這樣就容易導致最後錯誤率的上升;而在batch size較大時則沒有明顯的差別。雖然在分類算法中一般的GPU顯存都能cover住較大的batch設置,但是在目標檢測、分割以及視頻相關的算法中,由於輸入圖像較大、維度多樣以及算法本身原因等,batch size一般都設置比較小,所以GN對於這種類型算法的改進應該比較明顯。
這裏寫圖片描述

因此Group Normalization(GN)的思想並不複雜,簡單講就是要使歸一化操作的計算不依賴batch size的大小,原文的這段話概括得非常好:GN divides the channels into groups and computes within each group the mean and variance for normalization. GN’s computation is independent of batch sizes, and its accuracy is stable in a wide range of batch sizes.

Figure2是幾種歸一化方式的對比(Bartch Norm、Layer Norm、Instance Norm和Group Norm),可以一併回顧下BN算法。Figure2中的立方體是三維,其中兩維C和N分別表示channel和batch size,第三維表示H,W,可以理解爲該維度大小是H*W,也就是拉長成一維,這樣總體就可以用三維圖形來表示。可以看出BN的計算和batch size相關(藍色區域爲計算均值和方差的單元),而LN、BN和GN的計算和batch size無關。同時LN和IN都可以看作是GN的特殊情況(LN是group=1時候的GN,IN是group=C時候的GN)
這裏寫圖片描述

接下來看看Figure2中提到的四種歸一化方式的公式計算。首先常見的特徵歸一化算法(BN,LN,IN,GN)基本上都如公式1+公式6所示。公式1是減均值併除以標準差的操作,公式6是一個線性變換。
這裏寫圖片描述
這裏寫圖片描述

xi中i的含義如下,其實就是四個維度的座標,這樣xi就是feautre map中指定位置的一個點。
這裏寫圖片描述

公式1中的均值和標準差的計算公式如公式2所示:
這裏寫圖片描述

到目前爲止的公式都是常規的歸一化操作公式,而BN、LN、IN和GN的差別就在於公式2中集合Si的範圍。比如BN中Si如公式3所示。iC和kC都表示channel,Si表示計算均值和標準差的點集合,k表示在kC=iC情況下的四維點座標。舉個例子,假設要計算公式1的點的iC是3,那麼從公式3來看,只有kC=3的點(xk)構成的集合Si才參與計算均值和方差,換句話說就是相同通道的點才參與計算當前點的均值和標準差
這裏寫圖片描述

同理,LN中Si如公式4所示,換句話說就是相同feature map(N這個維度)的點才參與計算當前點的均值和標準差,這樣計算均值和方差就和batch size無關,參看Figure2。
這裏寫圖片描述

IN的Si如公式5所示,換句話說就是相同通道且相同feature map(N這個維度)的點才參與計算當前點的均值和標準差,同樣計算均值和方差和batch size無關,參看Figure2。
這裏寫圖片描述

GN的Si如公式7所示,首先kN=iN使得計算都是在一張圖的feature map上進行,G表示將C分成G個group,因此G是一個超參數,默認設置爲32。
這裏寫圖片描述
而公式7中的如下等式表示在同一個group中的點。
這裏寫圖片描述
因此GN的思想就是在相同feature map的相同group中進行歸一化操作,而group只是在channel維度上進行劃分,因此歸一化操作就和batch size無關。

TensorFlow框架下GroupNorm的Python實現代碼如截圖函數所示。先將維度C reshape成兩個維度(G和C//G),然後計算mean和var的時候基於維度C//G、H和W,最後將維度reshape回原來的4維並返回線性變換後的結果。
這裏寫圖片描述

實驗結果
Figure4是對比幾種不同歸一化算法在ImageNet數據集上batch size設置爲32時的訓練和驗證誤差。可以看出在訓練時候GN的表現要優於BN,但是在驗證時卻要比BN差一些。
這裏寫圖片描述

Figure5是驗證batch size大小分別對BN和GN的影響。可以看出GN基本上不受batch size的影響。
這裏寫圖片描述

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