<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【深度學(xué)習(xí)】重新思考BatchNorm中的 “Batch”

          共 5276字,需瀏覽 11分鐘

           ·

          2021-05-24 16:32

          這篇很有趣且很有用,激動的趕緊把文章看了一遍,不愧是FAIR,實驗看的太爽了。

          之前對于Norm的研究主要在于改變Norm的維度,然后衍生出了BatchNorm、GroupNorm、InstanceNorm和LayerNorm等方法,但是除了BN外的其他Norm含義是確定,而BN的batch卻可以有多種采樣方式,本文就是為了探討B(tài)N的batch使用不同的采樣方式會有什么影響堪稱BatchNorm圣經(jīng),建議全文背誦(ps:GN也是吳育昕的作品)。


          本文總共4大核心實驗,每個核心實驗有多個子結(jié)論。


          01

          Motivation


          BatchNorm現(xiàn)在已經(jīng)廣泛的應(yīng)用于CNN中。但是BN針對不同的場景使用時有許多細微的差異,如果選擇不當會降低模型的性能。BatchNorm相對于其他算子來說,主要的不同在于BN是對batch數(shù)據(jù)進行操作的。BN在batch數(shù)據(jù)中進行統(tǒng)計量計算,而其他算子一般都是獨立處理單個樣本的。因此影響B(tài)N的輸出不僅僅取決于單個樣本的性質(zhì),還取決于batch的采樣方式

          如圖所示,左右各舉例了三種batch采樣方式。其中左圖三種batch采樣方式分別為entire dataset、mini-batches和subset of mini-batches,右圖三種batch采樣方式分別為entire domain、each domain和mixture of each domain。

          本文實驗證明了使用BN時不考慮batch的采樣方式會在許多方面產(chǎn)生負面影響,合理使用batch采樣方式會改善模型性能。


          02

          A Review of BatchNorm


          簡單回顧一下BN的計算形式,這里以CNN中的BN為例。假設(shè)BN的輸入feature維度為  ,逐通道統(tǒng)計量mean和std為  ,那么BN的輸出y為:

            

          假設(shè)batch的大小為N,mini-batch X的維度為  ,那么mini-batch 統(tǒng)計量為  ,定義為:

            

          推理的時候,  用訓(xùn)練集計算得到的統(tǒng)計量,定義為  。


          不同于默認的BN設(shè)置,因為batch采樣方式主要影響的是統(tǒng)計量mean和std,本文將mean和std看成是一個逐通道分開計算的仿射變換(可以等價為一個1x1的depth-wise layer)。


          03

          Whole Population as aBatch


          BN中統(tǒng)計量的計算默認使用EMA方法,但是作者實驗發(fā)現(xiàn)EMA會導(dǎo)致模型性能次優(yōu),然后提出了PreciseBN方法,近似將整個訓(xùn)練集統(tǒng)計量作為一個batch。

          Inaccuracy of EMA

          EMA是指數(shù)滑動平均的縮寫,為了統(tǒng)計  ,EMA在訓(xùn)練過程中對統(tǒng)計量進行更新:

            

          EMA方法導(dǎo)致次優(yōu)解的原因有兩點:

          1.當  太大時,統(tǒng)計量收斂速度變慢。

          2.當  太小時,最近幾個mini-batches影響更大,統(tǒng)計量無法表示整個訓(xùn)練集的統(tǒng)計量。

          Towards Precise Population Statistics

          為了得到整個訓(xùn)練集更加精確的統(tǒng)計量,PreciseBN采用了兩點小技巧:

          1.將相同模型用于多個mini-batches來收集batch統(tǒng)計量

          2.將多個batch收集的統(tǒng)計量聚合成一個population統(tǒng)計量

          比如有N個樣本需要通過數(shù)量為的Bmini-batch進行PreciseBN統(tǒng)計量計算,那么需要計算  次,統(tǒng)計量聚合公式為:

            

            

          相比于EMA,PreciseBN有兩點重要的屬性:

          1.PreciseBN的統(tǒng)計量是通過相同模型計算得到的,而EMA是通過多個歷史模型計算得到的。

          2.PreciseBN的所有樣本的權(quán)重是相同的,而EMA不同樣本的權(quán)重是不同的。

          100 samples of batch mean意思是相同epoch下模型對100個隨機batch統(tǒng)計量的結(jié)果。如圖所示,在訓(xùn)練早期EMA的統(tǒng)計量不精確,會導(dǎo)致最終模型性能次優(yōu)。由于滑動平均的計算方式導(dǎo)致EMA的統(tǒng)計量滯后于PrciseBN。


          4個主要結(jié)論:

          1.推理時使用PreciseBN會更加穩(wěn)定。

          2.大batch訓(xùn)練對EMA影響更大。

          3.PreciseBN只需要10^3~10^4個樣本可以得到近似最優(yōu)。

          4.小batch會產(chǎn)生統(tǒng)計量積累錯誤。



          04

          Batch in Training and Testing


          BN在訓(xùn)練和測試中行為不一致:訓(xùn)練時,BN的統(tǒng)計量來自mini-batch;測試時,BN的統(tǒng)計量來自population。這部分主要探討了BN行為不一致對模型性能的影響,并且提出消除不一致的方法提升模型性能。

          Effect of Normalization Batch Size

          為了避免混淆,將SGD batch size或者total batch size定義為所有GPU上總的batch size大小,將normalization batch   size定義為單個GPU上的batch size大小。

          normalization batch size對training noise和train-test inconsistency有著直接影響:使用更大的batch,mini-batch統(tǒng)計量越接近population統(tǒng)計量,從而降低training noise和train-test inconsistency。


          以下實驗的SGD batch size固定使用1024大小。

          為了便于分析,作者觀察了3種不同評估方法的錯誤率:

          1.在訓(xùn)練集上對mini-batch統(tǒng)計量進行評估

          2.在驗證集上對mini-batch統(tǒng)計量進行評估

          3.在驗證集上對population統(tǒng)計量進行評估

          Training noise:當normalization batch size非常小時,單個樣本會受到同一個min-batch樣本的嚴重影響,導(dǎo)致訓(xùn)練精度較差,優(yōu)化困難。

          Generalization gap:隨著normalization batch size的增加,mini-batch的驗證集和訓(xùn)練集的之間的泛化誤差會增大,這可能是由于training noise和train-test inconsistency沒有正則化。

          Train-test inconsistency:在小batch下,mini-batch統(tǒng)計量和population統(tǒng)計量的不一致是影響性能的主要因素。當normalization batch size增大時,細微的不一致可以提供正則化效果減少驗證誤差。在mini-batch為32~128之間時,正則化達到平衡,模型性能最優(yōu)。


          為了保持train和test的BN統(tǒng)計量一致,作者提出了兩種方法來解決不一致問題,一種是推理的時候使用mini-batch統(tǒng)計量,另一種是訓(xùn)練的時候使用population batch統(tǒng)計量。

          Use Mini-batch in Inference

          作者在Mask R-CNN上進行實驗,mini-batch的結(jié)果超過了population的結(jié)果,證明了在推理中使用mini-batch可以有效的緩解訓(xùn)練測試不一致。(ps:不使用norm效果略差,使用GN效果更好)

          Use Population Batch in Training

          為了在訓(xùn)練階段使用population統(tǒng)計量,作者采用FrozenBN的方法,F(xiàn)rozenBN使用population統(tǒng)計量。具體地,作者先選擇第80個epoch模型,然后將所有BN替換成FrozenBN,然后訓(xùn)練20個epoch。

          FrozenBN可以有效緩解訓(xùn)練測試不一致,即使在小normalization batch size,也能達到比較好的性能。但是隨著normalization batch size增大,作者提出的兩種緩解不一致的方法都不如常規(guī)BN的結(jié)果。


          05

          Batch from Different Domains


          BN的訓(xùn)練過程可以看成是兩個獨立的階段:第一個階段是通過SGD學(xué)習(xí)features,第二個階段是由這些features得到population統(tǒng)計量。兩個階段分別稱為SGD training和population statistics training。

          由于BN多了一個population統(tǒng)計階段,導(dǎo)致訓(xùn)練和測試之間的domain shift。當數(shù)據(jù)來自多個doman時,SGD training、population statistics training和testing三個步驟的domain gap都會對泛化性造成影響。

          實驗主要探究了兩種使用場景:第一種,模型在一個domain上進行訓(xùn)練,然后在其他domain上進行測試;第二種,模型在多個domain上進行訓(xùn)練。

          Domain to Compute Population Statistics

          作者實驗發(fā)現(xiàn),當存在顯著的domain shift時,模型使用評估domain的population統(tǒng)計量會得到更好的結(jié)果,可以緩解訓(xùn)練測試的不一致。

          BatchNorm in Multi-Domain Training

          為了對多個domain的情況進行實驗,作者將RetinaNet head中的BN統(tǒng)計量進行實驗設(shè)計。RetinaNet的head是5個feature層共享的,這意味著會接收來自5個不同分布或者domain的輸入進行訓(xùn)練。

          左圖的訓(xùn)練形式非常簡單,head獨立作用于不同的feature層,都有自己獨立的統(tǒng)計量。右圖將所有輸入特征flatten然后concat在一起,統(tǒng)一進行統(tǒng)計量計算。兩種不同計算統(tǒng)計量的方式稱為domain-specific statistics和shared statistics。

          最終實驗表明,SGD training、population statistics training和testing保持一致是非常重要的,并且全部使用domain-specific能取得最好的效果。(ps:不使用norm效果略差,使用GN效果更好)


          06

          Information Leakage within a Batch


          BN在使用中還存在一種information leakage現(xiàn)象,因為BN是對mini-batch的樣本計算統(tǒng)計量的,導(dǎo)致在樣本進行獨立預(yù)測時,會利用mini-batch內(nèi)其他樣本的統(tǒng)計信息。

          Exploit Patterns in Mini-batches

          作者實驗發(fā)現(xiàn),當使用random采樣的mini-batch統(tǒng)計量時,驗證誤差會增加,當使用population統(tǒng)計量時,驗證誤差會隨著epoch的增加逐漸增大,驗證了BN信息泄露問題的存在。

          為了處理信息泄露問題,之前常見的作法是使用SyncBN,來弱化mini-batch內(nèi)樣本之間的相關(guān)性。另一種解決方法是在進入head之前在GPU之間隨機打亂RoI features,這給每個GPU分配了一個隨機的樣本子集來進行歸一化,同時也削弱了min-batch樣本之間的相關(guān)性,如上圖所示。

          實驗結(jié)果表明,shuffling和SyncBN都能有效地處理信息泄漏,使得head在測試時能夠很好地泛化。在速度方面,我們注意到shuffling需要更少的跨gpu同步,但是shuffling每次傳輸?shù)臄?shù)據(jù)比SyncBN多。因此,shuffling和SyncBN的相對效率跟具體模型架構(gòu)相關(guān)。

          Cheating in Contrastive Learning

          在對比學(xué)習(xí)和度量學(xué)習(xí)時,訓(xùn)練目標通常是在mini-batch下進行比較的,這種情況下BN也會造成信息泄露,導(dǎo)致模型在訓(xùn)練期間作弊,之前的研究提出了很多不同方法來針對性解決對比學(xué)習(xí)和度量學(xué)習(xí)的信息泄露問題。



          07

          總結(jié)


          本文從多個角度探討了BN的batch使用不同的采樣方式會有什么影響,并且做了非常詳盡的對比試驗,堪稱BatchNorm圣經(jīng),建議全文背誦。

          另外,看完后最大的感觸是,BN不會用就別用,GN yyds。

          往期精彩回顧





          本站qq群851320808,加入微信群請掃碼:

          瀏覽 82
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  2019年天天夜夜 | 欧美做爱在线视频 | 8x8x皇冠视频免费观看 | 国产黄色操逼视频 | 玩熟女五十AV一二三区 |