全面解讀Group Normbalization-(吳育昕-何凱明 重磅之作)

前 言

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是什么樣的呢?如下圖:

image

橫軸表示每個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

image

從左到右一次是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較好

image
          由此可以看出,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

image

以resnet50為base model,batchsize設(shè)置為32在imagenet數(shù)據(jù)集上的訓(xùn)練誤差(左)和測試誤差(右)
GN沒有表現(xiàn)出很大的優(yōu)勢,在測試誤差上稍大于使用BN的結(jié)果。

image

可以很容易的看出,GN對batch size的魯棒性更強

同時,作者以VGG16為例,分析了某一層卷積后的特征分布學(xué)習(xí)情況,分別根據(jù)不使用Norm 和使用BN,GN做了實驗,實驗結(jié)果如下:

image

統(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的背后原理,希望對讀者有所幫助。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文章作者:Tyan博客:noahsnail.com | CSDN | 簡書 聲明:作者翻譯論文僅為學(xué)習(xí),如有侵權(quán)請...
    SnailTyan閱讀 5,487評論 0 8
  • 想從Tensorflow循環(huán)生成對抗網(wǎng)絡(luò)開始。但是發(fā)現(xiàn)從最難的內(nèi)容入手還是?太復(fù)雜了所以搜索了一下他的始祖也就是深...
    Feather輕飛閱讀 5,182評論 1 4
  • dfs backtracking time 3^n space O(Max(length of string, ...
    greatseniorsde閱讀 262評論 0 0
  • #幸福是需要修出來的~每天進步1%~幸福實修13班~17-金芳# 20171203(6/60) 【幸福三朵玫瑰】 ...
    幸福實修金芳閱讀 148評論 0 1
  • 寒夜冰涼,思及遠方。腦海沉如夜空。怎么我是這孤寂的守夜人?現(xiàn)在應(yīng)該是哲人的時點,我如此平庸,奈何讓我在這兒往復(fù)穿越...
    銀蕨之約閱讀 613評論 11 37

友情鏈接更多精彩內(nèi)容