[譯改]BN/LN/IN/GN 詳解

本文主體內容是由牆外翻譯修改而來,對關鍵結論寫下了自己的理解。

Batch normalization

Batch norm (Ioffe & Szegedy, 2015)是提出的用於訓練深度神經網絡的歸一化的方法,在經驗上是非常成功的。它還引入了“內部協變位移(internal covariate shift)”這一術語,定義爲訓練過程中網絡參數的變化導致網絡活動分佈的變化。批處理範數的目標是通過使用小批處理的平均值和方差對每個小批處理的數據進行歸一化,從而減少內部協變量的移位。講白了,就是在每一個channel的維度(C=1),在樣本N的這一批進行norm,此時,被norm的是 [N,H,W]這個數據塊。比如有16個channel,那麼就要norm 16個 [N,H,W]的數據塊。

Layer normalization

Layer normalization(Ba,Kiros,&Hinton,2016)試圖解決批處理規範的一些缺點:

  1. 尚不清楚如何在RNN中應用批處理規範
  2. 批處理規範需要大的batchsize才能準確估算統計信息

Layer normalization不是對整個batch的示例進行標準化,而是對每個示例中的要素進行標準化。講白了就是N=1,在feature maps維度上的這一批進行norm,此時,被norm的是 [C,H,W]這個數據塊。

Instance normalization

Instance normalization(Ulyanov,Vedaldi和Lempitsky,2016年)在Layer normalization之後僅六天就掛到了arXiv,這非常相似。理解了Layer normalization,就比較好理解 Instance normalization了。instance normalization就是對於一個[H,W] 的數據塊都進行歸一化。那麼如果有16個channel,batchsize=16,就有256個數據塊需要歸一化。

Group normalization

理解了Instance normalization和Layer normalization,Group normalization就又很好理解了,哈哈哈。下面是Group normalization中的一副圖,可以幫助大家理解。GN就是對於某幾個(C//G,C是channel 總數,G是超參)channel的數據塊[C//G,H,W]進行norm。比如16//5=3。那麼GN的特殊情況就是Instance normalization和Layer normalization了~~

在這裏插入圖片描述

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