此篇文章也是凱明大神的作品,Group Normalization下面簡稱GN,是一種可以用來代替Batch Normalization(BN)的一種正則方法。
一、為什么要提出GN
BN全稱Batch Normalization,它是從batch維度對網(wǎng)絡(luò)提取的特征進(jìn)行歸一化的一種處理。正是因?yàn)樗菑腷atch維度進(jìn)行特征歸一化的,那么這種操作嚴(yán)重依賴于batchsize。當(dāng)batchsize過小時,BN操作對batch維度的統(tǒng)計(jì)信息不準(zhǔn)確,導(dǎo)致最終的網(wǎng)絡(luò)效果變差,如下圖所示。圖中網(wǎng)絡(luò)采用的是resnet-50,藍(lán)線表示采用BN時減小batchsize對于imagenet任務(wù)的error在不斷增加。

所以采用BN最好有個較大的batchsize,但是這樣會受到顯存的限制。
在進(jìn)行推斷時采用BN也會受到影響,因?yàn)锽N是依賴于batch維度的,統(tǒng)計(jì)出來的特征的均值和方差也是根據(jù)batch維度計(jì)算的,當(dāng)進(jìn)行推斷任務(wù)的時候,有時候并不會采用batch的操作。這樣只能使用訓(xùn)練時計(jì)算好的均值和方差來參與推斷階段的計(jì)算,當(dāng)訓(xùn)練的數(shù)據(jù)與測試數(shù)據(jù)分布不一致時,這樣會導(dǎo)致推斷結(jié)果變差。
通過上面分析可以知道,要解決的問題是使得歸一化不從batch維度進(jìn)行。GN就是從通道的維度對特征進(jìn)行歸一化的。
二、什么是GN
在GN提出前還有其他的一些歸一化方法,如Layer Norm(LN)、Instance Norm(IN)。各種歸一化方法的操作維度如下圖所示。

下面來一一解釋一下各種歸一化的方法。
在解釋之前先用一些通用的公式表達(dá)這些計(jì)算方法。
上式中x表示卷積層輸出的特征,i表示索引。對于二維圖像來說,它是一個四維的,其中N表示batch維度,C表示通道維度,H和W分別是特征的高和寬。
上式中的和
計(jì)算如下
上式中是個很小的常數(shù)。
表示用于計(jì)算均值和標(biāo)準(zhǔn)差的像素集,像素集的表示如上圖中的藍(lán)色區(qū)域表示。
Batch Norm
對于Batch Norm操作來說表示如下
表示的是在通道維度上的索引。這表示BN的均值和方差計(jì)算是在(N,H,W)軸上進(jìn)行的,即對每個通道進(jìn)行BN的計(jì)算。
Layer Norm
對于Layer Norm操作來說表示如下
表示LN的均值和方差計(jì)算是在(C,H,W)軸上進(jìn)行的,即對每個樣本層進(jìn)行索引。
Instance Norm
對于Instance Norm操作來說表示如下
表示IN的均值和方差計(jì)算是在(H,W)軸上進(jìn)行的。
Group Norm
對于Group Norm操作來說表示如下
G是個超參數(shù),表示group的大小,默認(rèn)為32。C/G表示group的個數(shù)。表示向下取整操作。說明GN操作是在(H,W)軸上并且屬于同一個C/G通道的特征值進(jìn)行均值和方差的計(jì)算。
另外上面所有的歸一化在最后都會有下式的操作
其中是學(xué)習(xí)得到的參數(shù),對于上面所有的歸一化都是和BN一樣在batch維度進(jìn)行學(xué)習(xí)的,即每個通道都有一對
。
三、為什么想到Group
這里解釋一下,為什么凱明大神會想到對組進(jìn)行卷積的。
通道維度的特征表示并不是完全獨(dú)立的。
在傳統(tǒng)的SIFT,HOG,GIST特征提取方法中就使用過組表示,每一個組通道都由相同種類的直方圖構(gòu)建而成。而更高維的特征比如VLAD和Fisher Vectors(FV)也可以看作是group-wise feature,此處的group可以被認(rèn)為是每個聚類(cluster)下的子向量sub-vector。
相似的,對于卷積來說,卷積提取的特征是非結(jié)構(gòu)化特征。對于一張圖片來說,一個卷積和同一個卷積經(jīng)一些變化(例如水平翻轉(zhuǎn))后得到的結(jié)果分布是相同的。通過相同卷積以及有一些其他的翻轉(zhuǎn)等操作得到的特征可以一起進(jìn)行組歸一化??梢岳斫鉃椋總€卷積輸出的特征有一定的相似性,使用可以進(jìn)行組歸一化。
這樣GN就誕生了。