前 言
Face book AI research(FAIR)
吳育昕-凱明聯(lián)合推出重磅新作
Group Normbalization(GN),提出使用
Group Normalization
(https://arxiv.org/abs/1803.08494)
替代深度學(xué)習(xí)里程碑式的工作Batchnormalization,
筆者見獵心喜,希望和各位分享此工作,本文將從以下三個方面為讀者詳細解讀此篇文章:
What's wrong with BN ?
How GN work ?
-
Why GN work ?
注:本文謹代表筆者觀點,文中若有不足指出及疏忽之處,誠請批評指正
1 What is Group Normbalization
一句話概括,GroupNormbalization(GN)是一種新的深度學(xué)習(xí)歸一化方式,可以替代BN。
眾所周知,BN是深度學(xué)習(xí)中常使用的歸一化方法,在提升訓(xùn)練以及收斂速度上發(fā)揮了重大的作用,是深度學(xué)習(xí)上里程碑式的工作,但是其仍然存在一些問題,而新提出的GN解決了BN式歸一化對batch size依賴的影響。詳細的BN介紹可以參考我的另一篇博客(https://blog.csdn.net/qq_25737169/article/details/79048516)。
So, BN到底出了什么問題, GN又厲害在哪里?
2 What's wrong with BN
BN全名是BatchNormalization,見名知意,其是一種歸一化方式,而且是以batch的維度做歸一化,那么問題就來了,此歸一化方式對batch是--dependent的,過小的batch size會導(dǎo)致其性能下降,一般來說每GPU上batch設(shè)為32最合適,但是對于一些其他深度學(xué)習(xí)任務(wù)batch size往往只有1-2,比如目標檢測,圖像分割,視頻分類上,輸入的圖像數(shù)據(jù)很大,較大的batchsize顯存吃不消。那么,對于較小的batchsize,其performance是什么樣的呢?如下圖:
橫軸表示每個GPU上的batch size大小,從左到右一次遞減,縱軸是誤差率,可見,在batch較小的時候,GN較BN有少于10%的誤差率。
另外,BatchNormalization是在batch這個維度上Normalization,但是這個維度并不是固定不變的,比如訓(xùn)練和測試時一般不一樣,一般都是訓(xùn)練的時候在訓(xùn)練集上通過滑動平均預(yù)先計算好平均-mean,和方差-variance參數(shù),在測試的時候,不在計算這些值,而是直接調(diào)用這些預(yù)計算好的來用,但是,當訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)分布有差別是時,訓(xùn)練機上預(yù)計算好的數(shù)據(jù)并不能代表測試數(shù)據(jù),這就導(dǎo)致在訓(xùn)練,驗證,測試這三個階段存在inconsistency。
既然明確了問題,解決起來就簡單了,歸一化的時候避開batch這個維度是不是可行呢,于是就出現(xiàn)了layer normalization和instance normalization等工作,但是仍比不上本篇介紹的工作GN。
3 How GN Work
GN本質(zhì)上仍是歸一化,但是它靈活的避開了BN的問題,同時又不同于Layer
從左到右一次是BN,LN,IN,GN
眾所周知,深度網(wǎng)絡(luò)中的數(shù)據(jù)維度一般是[N, C, H, W]或者[N, H, W,C]格式,N是batch size,H/W是feature的高/寬,C是feature的channel,壓縮H/W至一個維度,其三維的表示如上圖,假設(shè)單個方格的長度是1,
那么其表示的是[6, 6,*, * ]
上圖形象的表示了四種norm的工作方式:
BN在batch的維度上norm,歸一化維度為[N,H,W],對batch中對應(yīng)的channel歸一化;
LN避開了batch維度,歸一化的維度為[C,H,W];
IN 歸一化的維度為[H,W];
而****GN****介于****LN****和****IN****之****間****,其首先將****channel****分****為許****多****組****(****group****),****對****每一****組****做****歸****一化,及先將****feature****的****維****度由****[N, C, H, W]reshape****為****[N, G****,****C//G , H, W]****,****歸****一化的****維****度****為****[C//G , H, W]
事實上,GN的極端情況就是LN和I N,分別對應(yīng)G等于C和G等于1,作者在論文中給出G設(shè)為32較好
由此可以看出,GN和BN是有很多相似之處的,代碼相比較BN改動只有一兩行而已,論文給出的代碼實現(xiàn)如下:
<pre style="margin: auto 0px auto 48px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.544px; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial; font-size: 16px;">
defGroupNorm(x, gamma, beta, G, eps=1e-5): # x: input features with shape [N,C,H,W] # gamma, beta: scale and offset, with shape [1,C,1,1] # G: number of groups for GN N, C, H, W = x.shape x = tf.reshape(x,[N, G, C // G, H, W]) mean,var= tf.nn.moments(x,[2,3,4], keep dims=True) x =(x - mean)/ tf.sqrt(var+ eps) x = tf.reshape(x,[N, C, H, W]) return x * gamma + beta
</pre>
其中beta 和gama參數(shù)是norm中可訓(xùn)練參數(shù),表示平移和縮放因子.
從上述norm的對比來看,不得不佩服作者四兩撥千斤的功力,僅僅是稍微的改動就能擁有舉重若輕的效果。
4 ## Why GN work
上面三節(jié)分別介紹了BN的問題,以及GN的工作方式,本節(jié)將介紹GN work的原因。
傳統(tǒng)角度來講,在深度學(xué)習(xí)沒有火起來之前,提取特征通常是使用SIFT,HOG和GIST特征,這些特征有一個共性,都具有按group表示的特性,每一個group由相同種類直方圖的構(gòu)建而成,這些特征通常是對在每個直方圖(histogram)或每個方向(orientation)上進行組歸一化(group-wise norm)而得到。而更高維的特征比如VLAD和Fisher Vectors(FV)也可以看作是group-wisefeature,此處的group可以被認為是每個聚類(cluster)下的子向量sub-vector。
從深度學(xué)習(xí)上來講,完全可以認為卷積提取的特征是一種非結(jié)構(gòu)化的特征或者向量,拿網(wǎng)絡(luò)的第一層卷積為例,卷積層中的的卷積核filter1和此卷積核的其他經(jīng)過transform過的版本filter2(transform可以是horizontal flipping等),在同一張圖像上學(xué)習(xí)到的特征應(yīng)該是具有相同的分布,那么,具有相同的特征可以被分到同一個group中,按照個人理解,每一層有很多的卷積核,這些核學(xué)習(xí)到的特征并不完全是獨立的,某些特征具有相同的分布,因此可以被group。
導(dǎo)致分組(group)的因素有很多,比如頻率、形狀、亮度和紋理等,HOG特征根據(jù)orientation分組,而對神經(jīng)網(wǎng)絡(luò)來講,其提取特征的機制更加復(fù)雜,也更加難以描述,變得不那么直觀。另在神經(jīng)科學(xué)領(lǐng)域,一種被廣泛接受的計算模型是對cell的響應(yīng)做歸一化,此現(xiàn)象存在于淺層視覺皮層和整個視覺系統(tǒng)。
作者基于此,提出了組歸一化(Group Normalization)的方式,且效果表明,顯著優(yōu)于BN、LN、IN等。
GN的歸一化方式避開了batchsize對模型的影響,特征的group歸一化同樣可以解決的問題,并取得較好的效果。
5 ## Show Time
以resnet50為base model,batchsize設(shè)置為32在imagenet數(shù)據(jù)集上的訓(xùn)練誤差(左)和測試誤差(右)
GN沒有表現(xiàn)出很大的優(yōu)勢,在測試誤差上稍大于使用BN的結(jié)果。
可以很容易的看出,GN對batch size的魯棒性更強
同時,作者以VGG16為例,分析了某一層卷積后的特征分布學(xué)習(xí)情況,分別根據(jù)不使用Norm 和使用BN,GN做了實驗,實驗結(jié)果如下:
統(tǒng)一batch size設(shè)置的是32,最左圖是不使用norm的conv5的特征學(xué)習(xí)情況,中間是使用了BN結(jié)果,最右是使用了GN的學(xué)習(xí)情況,相比較不使用norm,使用norm的學(xué)習(xí)效果顯著,而后兩者學(xué)習(xí)情況相似,不過更改小的batch size后,BN是比不上GN的。
作者同時做了實驗展示了GN在object detector/segmentation 和video classification上的效果,詳情可見原文,此外,作者在paper最后一節(jié)中大致探討了discussion and future work, 實乃業(yè)界良心。
小結(jié)
本文從三個方面分析了BN的drawback,GN的工作機制,GN work的背后原理,希望對讀者有所幫助。