CVPR 2022 | 網路中批處理歸一化估計偏移的深入研究
前言 批歸一化(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 | 未知目標檢測模組STUD:學習視訊中的未知目標
CVPR2022 | 通過目標感知Transformer進行知識蒸餾
從零搭建Pytorch模型教程(五)編寫訓練過程--一些基本的配置
從零搭建Pytorch模型教程(四)編寫訓練過程--引數解析
- 普通段位玩家的CV演算法崗上岸之路(2023屆秋招)
- 用於超大影象的訓練策略:Patch Gradient Descent
- 關於知識蒸餾,你一定要了解的三類基礎演算法
- 深度理解變分自編碼器(VAE) | 從入門到精通
- CUDA 教程(一) GPU 程式設計概述和 CUDA 環境搭建
- 一文總結當下常用的大型 transformer 效率優化方案
- 多模態學習有哪些架構?MBZUAI最新《多模態表示學習》綜述,29頁詳述多模態表示學習的演化、預訓練及其應用綜述
- Transformer-Based Learned Optimization
- U-Net在2022年相關研究的論文推薦
- ECCV 2022 | 新方案: 先剪枝再蒸餾
- CVPR2022 | 簡單高效的語義分割體系結構
- CVPR 2022 | 網路中批處理歸一化估計偏移的深入研究
- CVPR2022 | 通過目標感知Transformer進行知識蒸餾
- 經典論文 | 300FPS,超快結構感知的深度車道檢測
- YOLO系列梳理(九)初嘗新鮮出爐的YOLOv6
- CVPR2022 | 長期行動預期的Future Transformer
- CVPR2022 | 可精簡域適應
- CVPR2022 | 弱監督多標籤分類中的損失問題
- 計算機視覺中的論文常見單詞總結
- CVPR2022 | A ConvNet for the 2020s & 如何設計神經網路總結