CVPR 2022 | 網絡中批處理歸一化估計偏移的深入研究

語言: CN / TW / HK

前言 批歸一化(BN)是深度學習中的一項重要技術。在訓練過程中使用小批量統計量對激活進行規範化,而在推理過程中使用估計的總體統計量進行規範化。
本文主要研究總體統計量的估計問題。作者定義了BN的估計偏移幅度,以量化衡量其估計的種羣統計數據與預期的差異。作者的主要觀察是,由於網絡中BN的疊加,估計偏移可能會累積,這對測試性能有不利影響。
進一步發現,無批處理的歸一化(BFN)可以阻止這種估計漂移的累積。這些觀察結果促使作者設計了XBNBlock,在殘差式網絡的瓶頸區用BFN取代一個BN。
在ImageNet和COCO基準測試上的實驗表明,XBNBlock持續地提高了不同架構(包括ResNet和ResNeXt)的性能,並且似乎對分佈轉移更穩健。

*歡迎關注公眾號*CV技術指南,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀、CV招聘信息。目前公眾號正在徵稿中,可以獲取對應的稿費哦。

論文:Delving into the Estimation Shift of Batch Normalization in a Network

論文:http://arxiv.org/abs/2203.10778

代碼:未公開

1.介紹

批歸一化(BN)在訓練過程中使用小批統計量對激活進行歸一化,而在推斷/測試過程中使用估計的總體統計量。BN確保標準化的小批輸出在每次迭代中標準化,使訓練穩定,儘管BN普遍取得了成功,但在某些場景中應用時仍會遇到問題。BN的一個很大侷限性是它的小批量問題——BN的誤差隨着批量大小的減小而迅速增加。此外,如果訓練數據和測試數據之間存在協變量偏移,具有樸素BN的網絡的性能會顯著退化。

雖然這些問題在不同的場景和上下文中出現,但用於推斷的BN的估計總體統計量似乎是它們之間的聯繫:

1)如果在測試期間對BN的估計總體統計量進行糾正,則可以緩解BN的小批量問題;

2)一個模型如果基於可用的測試數據對BN的估計總體統計量進行調整,則對未見的領域數據(損壞的圖像)更穩健。

本文對總體統計量的估計進行了系統的研究。作者引入了BN的期望總體統計量,考慮到在訓練過程中激活的不明確的總體統計量具有變化的分佈。如果BN的估計總體統計量與期望統計量不相等,將其稱為估計偏移,並設計實驗來定量研究估計偏移如何影響批處理歸一化網絡。作者通過實驗觀察到BN的估計偏移可以在一個網絡中累積(圖1)。進一步發現,一個無批處理的歸一化(BFN)——獨立地對每個樣本進行歸一化,而不跨越批處理維度——可以阻止BN估計漂移的積累。這緩解了分佈漂移時網絡性能的退化。這些觀察結果促使設計了XBNBlock,在殘差型網絡的瓶頸處用BFN取代一個BN。

圖1 主要觀察結果説明

2.相關工作

2.1總體統計的估算和利用:

批歸一化(BN)存在小批量問題,因為對總體統計數據的估計可能不準確。為了解決這一問題,提出了多種無批處理規範化(batch-free normalization, BFN)方法,如層規範化(layer normalization, LN)和組規範化(group normalization, GN)。這些工作在訓練和推理過程中對每個樣本執行相同的歸一化操作。這些工作可能優於小批量訓練的BN,其中估計是主要問題,但當批量大小適中時,它們的性能通常較差。

一些工作專注於僅在推斷期間估計校正的歸一化統計量,無論是領域自適應,腐敗魯棒性,還是小批量大小訓練。這些策略並不影響模型的訓練方案。

與上述工作相比,本文所做的的工作側重於研究網絡中BN的估計偏移。

2.2將BN與其他歸一化方法相結合:

也有研究通過結合不同的歸一化策略在一個層中構建歸一化模塊。不同於這些在一個層中構建規範化模塊的方法,本文提出的XBNBlock是一個在不同層中混合了BN和BFN的構建塊。此外,作者觀察發現,BFN可以阻止網絡中BN估計漂移的累積,這為上述方法將BN與其他歸一化方法結合起來的成功提供了一個新的視角。

本文的工作與IBN-Net密切相關,它集成了實例歸一化(instance normalization, IN)和BN作為構建塊,並可以包裝成幾個深度網絡來提高它們的性能。在此,作者着重觀察到BFN(如IN)可以阻止BNs估計漂移的積累,這也為IBN-Net的測試性能的成功提供了合理的解釋,特別是在分佈漂移的情況下。

3.方法

3.1準備工作

Batch normalization: 設x∈Rd為給定層的多層感知器(MLP)的d維輸入。在訓練過程中,批歸一化將m個小批數據中的每個神經元/通道歸一化:

在推斷/測試中的歸一化如下:

儘管層輸入的總體統計均值和方差是不明確的,他們的估計值通常在Eqn. 2中使用,通過計算不同訓練迭代t上的小批量統計的運行平均值,使用更新因子α如下:

Batch-free normalization:無批歸一化的存在是為了避免沿着批維進行歸一化,從而避免對總體統計量的估計。這些方法在訓練和推理過程中使用一致的操作。一個代表性的方法是層歸一化(LN),它對每個訓練樣本的神經元內的層輸入進行標準化,如下:

通過改變分組數,GN比LN更靈活,使其能夠在僅限於小批量訓練的視覺任務(如目標檢測和分割)上取得良好的性能。雖然這些BFN方法在某些場景下可以很好地工作,但在大多數情況下它們的性能無法與BN相比,因此在CNN的架構中並不常用。

3.2批歸一化的估計移位

在給定BN的期望總體統計量的情況下,如果BN的估計總體統計量與期望統計量不相等,則稱為BN的估計偏移。研究BN的估計偏移對批處理歸一化網絡性能的影響具有重要意義。因此,本文試圖定量地衡量估計統計量與預期統計量之間的差異程度。對於衡量的標準,文中有如下定義:

本文設置了兩個實驗來研究BN的估計偏移如何影響批處理歸一化網絡的性能以及如何進行校正。

設置1中,使用訓練集等於測試集,研究在輸入數據無分佈偏移的情況下BN的估計偏移。如圖2所示。這一現象清楚地表明,訓練和測試之間的誤差差距主要是由於對BN總體統計數據估計不準確造成的,而且由於BN層的疊加,對總體統計數據的不準確估計可能會被累積/複合。

圖2 訓練集等於測試集的實驗

設置2中,訓練集是從測試集中採樣得來的,通過改變訓練集|S|的大小來調節訓練集和測試集之間的分佈轉移。目的是希望看到變化的分佈如何移位會影響網絡中BN種羣統計量的估計。如圖3所示。這些觀察表明,輸入在訓練集和測試集之間的分佈偏移會導致BN的估計偏移,這對測試性能有不利的影響,而且在更深層次的BN的ESMσ在訓練結束時具有潛在的更高的價值。

圖3 訓練集從測試集中採樣的實驗

通過以上觀察,作者將奇數層的BNs替換為GNs,並將該網絡稱為“GNBN”。遵循前兩個實驗設置,並分別在圖4和圖5中顯示結果。

圖4 遵循圖2混合BN和GN的網絡上的實驗

圖5 遵循圖3混合BN和GN的網絡上的實驗

根據上面的實驗,作者認為BFN(例如GN)可以阻止網絡中BN的估計漂移的積累,在分佈漂移存在的情況下,可以緩解網絡性能的退化。##4.實驗部分 本文設計了XBNBlock來代替一個BN在瓶頸處使用BFN(圖6 (a)),它廣泛應用於殘差型網絡。圖6 (b)顯示了替換第二個的擬議的“XBNBlock-P2”。

圖6 Bottleneck vs 'XBNBlock-P2'

為了研究在XBNBlock中應用BFN的位置,本文使用GN(group=64)作為BFN。本文考慮了三個XBNBlock變體,它們取代了瓶頸中的第一個、第二個和第三個BN,分別稱為“XBNBlock- p1”、“XBNBlock- p2”和“XBNBlock- p3”。將這些xbnblock替換為ResNet-50的所有瓶頸,結果如表1顯示。觀察到“XBNBlock-P2”獲得了最好的性能,在接下來的實驗中,默認將“XBNBlock-P2”(圖6)作為XBNBlock。

表1 在XBNBlock應用GN時不同位置的結果

作者還研究了XBNBlock在網絡中的應用位置。結果如圖7所示。作者將這一現象歸因於IN對歸一化輸出提供了更強的約束,這會影響模型的表示能力。

圖7 在網絡中應用XBNBlock時,不同位置的驗證準確率Top-1

在ResNet-101、ResNeXt-50和ResNeXt-101上驗證了XBNBlock的有效性。baseline是使用BN訓練的原始網絡,同時我們也使用GN訓練模型。結果如表2所示。我們可以看到,與所有架構相比,我們的方法始終顯著地提高了baseline(BN)。

表2 ResNets和 ResNeXts上的Top-1準確率(% )用於 ImageNet

除了上述中描述的標準訓練策略外,本文還使用更高級的訓練策略進行實驗。XBNBlock的表現也始終顯著優於baseline。表3顯示了ResNet-50的結果。

表3 使用高級訓練在 ResNet-50 上的Top-1準確率(% )策略

本文使用Faster R-CNN框架進行目標檢測,並使用在ImageNet(表2)上預訓練的ResNet-50模型作為骨幹,結合特徵金字塔網絡(FPN)。本文考慮了兩種設置:1)使用由兩個完全連接層'2fc'組成的box head,而沒有規範化層;2)將'2fc'box head替換為'4conv1fc',併為'GN'和'XBNBlockGN'應用GN到FPN和box head。結果在表4中報吿。

表4 使用Faster R-CNN框架對COCO進行檢測和分割的結果(%)

使用Mask R-CNN框架進行目標檢測和實例分割。本文使用ResNet-50和ResNeXt-101模型在ImageNet上預訓練(表2)作為骨幹,並結合FPN。我們考慮了”2fc”和”4conv1fc”設置。我們再次使用由掩碼R- CNN代碼庫提供的訓練腳本的默認超參數配置。結果如表5所示。XBNBlock預訓練模型的性能始終顯著優於BN†和GN。

表5 使用Mask R-CNN框架對COCO進行檢測和分割的結果(%)

XBNBlock的一個主要擔憂是,由於BNs的存在,它不能在小批量的訓練場景下很好地工作。在這裏,本文從零開始訓練Faster R-CNN,並使用沒有凍結的正常BN。本文使用ResNet-50作為backbone和遵循與之前實驗相同的設置,除了:1)在每個GPU上改變了{2,4,8}中的批大小(BS);2)在{0.01,0.02,0.04}中搜索學習率考慮到BS的變化,並顯示了最佳的性能。如表6所示。我們可以看到,在批大小為4和8的情況下,XBNBlockGN獲得了明顯優於BN和GN的性能。

表6 從頭訓練對COCO的檢測結果(%)

5.結論

本文發現BN的估計偏移在網絡中會累積,這會導致網絡在測試過程中受到不利影響,而無批處理的歸一化可以阻止這種估計偏移的累積,從而緩解網絡在分佈偏移時的性能退化。這些觀察結果可能有助於理解歸一化在不同場景中的應用,併為更好的性能設計架構。

CV技術指南創建了一個計算機視覺技術交流羣和免費版的知識星球,目前星球內人數已經600+,主題數量達到200+。

知識星球內將會每天發佈一些作業,用於引導大家去學一些東西,大家可根據作業來持續打卡學習。

技術羣內每天都會發最近幾天出來的頂會論文,大家可以選擇感興趣的論文去閲讀,持續follow最新技術,若是看完後寫個解讀給我們投稿,還可以收到稿費。

另外,技術羣內和本人朋友圈內也將發佈各個期刊、會議的徵稿通知,若有需要的請掃描加好友,並及時關注。

加羣加星球方式:關注公眾號CV技術指南,獲取編輯微信,邀請加入。

其它文章

計算機視覺入門路線

CVPR2022 | iFS-RCNN:一種增量小樣本實例分割器

CVPR2022 | Time 3D:用於自動駕駛的端到端聯合單目三維物體檢測與跟蹤

CVPR2022 | A ConvNet for the 2020s & 如何設計神經網絡總結

CVPR2022 | PanopticDepth:深度感知全景分割的統一框架

CVPR2022 | 重新審視池化:你的感受野不是最理想的

CVPR2022 | 未知目標檢測模塊STUD:學習視頻中的未知目標

CVPR2022 | 基於排名的siamese視覺跟蹤

CVPR2022 | 通過目標感知Transformer進行知識蒸餾

CVPR2022丨無監督預訓練下的視頻場景分割

從零搭建Pytorch模型教程(六)編寫訓練過程和推理過程

從零搭建Pytorch模型教程(五)編寫訓練過程--一些基本的配置

從零搭建Pytorch模型教程(四)編寫訓練過程--參數解析

從零搭建Pytorch模型教程(三)搭建Transformer網絡

從零搭建Pytorch模型教程(二)搭建網絡

從零搭建Pytorch模型教程(一)數據讀取

一份熱力圖可視化代碼使用教程

一份可視化特徵圖的代碼

關於快速學習一項新技術或新領域的一些個人思維習慣與思想總結