CVPR2021 | 重新思考BatchNorm中的Batch

CV技術指南(公眾號)發表於2021-08-21

 前言

公眾號在前面發過三篇分別對BatchNorm解讀、分析和總結的文章(文章連結在文末),閱讀過這三篇文章的讀者對BatchNorm和歸一化方法應該已經有了較深的認識和理解。在本文將介紹一篇關於BatchNorm舉足輕重的論文,這篇論文對進行了很多實驗,非常全面地考慮了BatchNorm中的Batch。

歡迎關注公眾號 CV技術指南 ,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。

 

Motivation

BatchNorm 區別於其他深度學習運算元的關鍵因素是它對批量資料而不是單個樣本進行操作。BatchNorm 混合批次中的資訊以計算歸一化統計資料,而其他運算元獨立處理批次中的每個樣本。因此,BatchNorm 的輸出不僅取決於單個樣本的屬性,還取決於樣本分組的方式。

圖片

CVPR2021 | 重新思考BatchNorm中的Batch

如上左圖所示,按照取樣大小,上中下三圖表示BatchNorm的取樣方式分別為entire dataser、mini-batches和subset of mini-batches

如上右圖所示,按照取樣風格,上中下三圖表示BatchNorm的取樣方式分別為entire domain、each domain和mixture of each domain

論文研究了 BatchNorm 中批處理的這些選擇,證明了在不考慮批處理構建的不同選擇的情況下,應用批處理規範可能會在許多方面產生負面影響,但可以通過在批處理方式上做出謹慎選擇來提高模型效能。

 

Review of BatchNorm

圖片

CVPR2021 | 重新思考BatchNorm中的Batch

在一個mini-batches中,在每一BN層中,對每個通道計算它們的均值和方差,再對資料進行歸一化,歸一化的值具有零均值和單位方差的特點,最後使用兩個可學習引數gamma和beta對歸一化的資料進行縮放和移位。

此外,在訓練過程中還儲存了每個mini-batches每一BN層每一通道的均值和方差,最後求所有mini-batches均值和方差的期望值,以此來作為推理過程中該BN層各自通道的均值和方差。

 

Whole Population as a Batch

在訓練期間,BatchNorm 使用mini-batch的樣本計算歸一化統計資料。但是,當模型用於測試時,通常不再有 mini-batch 的概念。最初提出BatchNorm是在測試時,特徵應該通過在整個訓練集上計算的總體統計資料 μ、σ 進行歸一化。這裡的 μ、σ 被定義為批次統計量 µ, σ 使用整個population作為“Batch”。

廣泛使用EMA 演算法來計算 µ, σ,但它並不總是能準確地訓練population資料,因此論文提出了新的演算法PreciseBN

 

Inaccuracy of EMA

EMA: exponential moving average

演算法公式如下:

圖片

CVPR2021 | 重新思考BatchNorm中的Batch

由於以下原因,EMA會導致模型估計Population資料次優:

  • 當 λ 很大時,統計資料收斂緩慢。由於每次更新迭代僅對 EMA 貢獻一小部分 (1-λ),因此 EMA 需要大量更新才能收斂到穩定的估計值。隨著模型的更新,情況變得更糟:EMA 主要由過去的輸入特徵主導,隨著模型的訓練這些特徵已經過時。

  • 當 λ 較小時,EMA 統計資料由較少數量的近期mini-batch主導,並不代表整個populatioin。

 

PreciseBN

PreciseBN通過以下兩個步驟來近似Population統計資料。

  • (固定)模型在許多小批量上應用來收集Batch統計資料;

  • 將per-batch統計資料聚合為總體統計資料。

與EMA相比,PreciseBN多了兩個重要的屬性:

  • 統計資料完全根據固定模型狀態計算,與使用模型歷史狀態的 EMA 不同;

  • 所有樣本的權重相等。

實驗結論

圖片

CVPR2021 | 重新思考BatchNorm中的Batch

1.PreciseBN比BN更穩定

圖片

CVPR2021 | 重新思考BatchNorm中的Batch

2.當batchsize很大時,EMA演算法不穩定。作者認為不穩定性是由大批量訓練中損害 EMA 統計收斂性的兩個因素造成的:(1)32 倍大的學習率導致特徵發生更劇烈的變化;(2) 由於總訓練迭代次數減少,EMA 的更新次數減少了 32 倍。

3.PreciseBN只需要個樣本就可以得到穩定的結果

4.小Batch會累計誤差

 

Batch in Training and Testing

在訓練和推理期間使用的Batch統計量不一致:訓練期間使用mini-batch統計資料,推理期間使用訓練期間所有mini-batch通過EMA演算法近似得到的population統計資料。論文分析了這種不一致對模型效能的影響,並指出在某些情況下可以輕鬆消除不一致以提高效能。

為了避免混淆,將SGD batch size或者total batch size定義為所有GPU上總的batch size大小,將normalization batch size定義為單個GPU上的batch size大小。(注:這一點在《歸一化方法總結》一文中有提到,當使用多個GPU時,實際的mini-batch統計資料只基於batchsize/GPU數的樣本上統計)

normalization batch size對訓練噪聲和訓練測試不一致性有直接影響:較大的Batch將mini-batch統計資料推向更接近總體統計資料,從而減少訓練噪聲和訓練測試不一致

為了便於分析,論文觀察了3種不同評估方法的錯誤率:

  • 在訓練集上對mini-batch統計量進行評估

  • 在驗證集上對mini-batch統計量進行評估

  • 在驗證集上對population統計量進行評估

實驗結論

圖片

CVPR2021 | 重新思考BatchNorm中的Batch

小的normalization batch size(例如 2 或 4)效能不佳,但如果使用mini-batch統計資料(藍色曲線),該模型實際上具有不錯的效能。結果表明,mini-batch統計和總體統計之間的巨大不一致是影響mini-batch效能的主要因素

另一方面,當normalization batch size較大時,小的不一致可以提供正則化以減少驗證錯誤。這導致紅色曲線比藍色曲線表現更好。

基於以上結論,論文給出兩個消除不一致用來提高效能的方法

  • Use Mini-batch in Inference

  • Use Population Batch in Training

 

Batch from Different Domains

BatchNorm 模型的訓練過程可以被視為兩個獨立的階段:首先通過 SGD 學習特徵,然後通過 EMA 或 PreciseBN 使用這些特徵訓練總體統計資料。我們將這兩個階段稱為“SGD training”和“population statistics training”。

在本節中,論文分析出現domain gap的兩種情況:當模型在一個domain上訓練但在其他domain上測試時,以及當模型在多個domain上訓練時。這兩者都會使 BatchNorm 的使用複雜化。

實驗結論

  1. 當存在顯著的域偏移時,模型在對評估中使用的domain會比使用 SGD 訓練,進行總體統計訓練後獲得最佳錯誤率。直觀地說,根據domain組成Batch可以減少訓練測試的不一致並提高對新資料分佈的泛化能力。

  2. BatchNorm 在mixture of multi-domain data上的domain-specific training在以前的工作中經常被提出,名稱為“Domain-Specific BN”、“Split BN”、“Mixture BN”,“Auxiliary BN”,“Transferable Norm”。這些方法都包含以下三種選擇中的一些。

  • Domain-specific SGD training

  • Domain-specific population statistics

  • Domain-specific affine transform

通過消除上述三個選擇,我們表明在 SGD training和population statistics training之間使用一致的策略很重要,儘管這種實現可能看起來不直觀。

 

Information Leakage within a Batch

我在《歸一化方法總結》中總結到,BN的三個缺陷之一便是當mini-batch中的樣本非獨立同分布時,效能比較差,作者認為這是由於Information Leakage導致的。

論文實驗發現,當使用random取樣的mini-batch統計量時,驗證誤差會增加,當使用population統計量時,驗證誤差會隨著epoch的增加逐漸增大,驗證了BN資訊洩露問題的存在。

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

圖片

CVPR2021 | 重新思考BatchNorm中的Batch

如下圖所示,實驗證明 shuffling和 SyncBN 都有效地解決了資訊洩漏問題,允許head在測試時很好地概括population statistics。

在速度方面,對於深度模型,shuffle 需要較少的 cross-GPU 同步,但每次同步傳輸的資料比 SyncBN 層傳輸的資料多。因此,它們的相對效率因模型架構而異。據比SyncBN多。因此,shuffling和SyncBN的相對效率跟具體模型架構相關。

圖片

CVPR2021 | 重新思考BatchNorm中的Batch

 

總結

本文回顧了BatchNorm演算法;分析了使用mini-batches計算的統計資料和基於population作為batch計算的統計資料的效果,提出了PreciseBN近似統計演算法,該演算法相比於常用的EMA演算法有更穩定的效果;分析了根據不同domain來組成mini-batch的效果差異;分析了處理mini-batch中的樣本非獨立同分布情況的兩種方法。

結合前面的三篇文章《Batch Normalization》、《視覺化的BatchNorm--它的工作方式以及為什麼神經網路需要它》、《歸一化方法總結 | 又名"BN和它的後浪們"》,相信讀者會對BatchNorm會有一個非常全面的認識,並進一步加深對神經網路的理解。

 本文來源於公眾號 CV技術指南 的論文分享系列。

歡迎關注公眾號 CV技術指南 ,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。

在公眾號中回覆關鍵字 “技術總結”可獲取公眾號原創技術總結文章的彙總pdf。

CVPR2021 | 重新思考BatchNorm中的Batch

其它文章

CV技術指南--精華文章彙總分類

神經網路超引數的調參方法總結

CVPR2021 | 重新思考BatchNorm中的Batch

ICCV2021 | 重新思考視覺transformers的空間維度

CVPR2021 | Transformer用於End-to-End視訊例項分割

ICCV2021 |(騰訊優圖)重新思考人群中的計數和定位:一個純粹基於點的框架

卷積神經網路的複雜度分析

2021年小目標檢測最新研究綜述

計算機視覺中的自注意力

綜述專欄 | 姿態估計綜述

漫談CUDA優化

為什麼GEMM是深度學習的核心

使用深度神經網路為什麼8位足夠?

經典論文系列--膠囊網路:新的深度學習網路

經典論文系列 | 目標檢測--CornerNet & 又名 anchor boxes的缺陷

如何看待人工智慧的泡沫

使用Dice loss實現清晰的邊界檢測

PVT--無卷積密集預測的多功能backbone

CVPR2021 | 開放世界的目標檢測

Siamese network總結

視覺目標檢測和識別之過去,現在及可能

在做演算法工程師的道路上,你掌握了什麼概念或技術使你感覺自我提升突飛猛進?

計算機視覺專業術語總結(一)構建計算機視覺的知識體系

欠擬合與過擬合技術總結

歸一化方法總結

論文創新的常見思路總結

CV方向的高效閱讀英文文獻方法總結

計算機視覺中的小樣本學習綜述   

知識蒸餾的簡要概述   

優化OpenCV視訊的讀取速度

NMS總結   

損失函式技術總結

注意力機制技術總結   

特徵金字塔技術總結   

池化技術總結

資料增強方法總結   

CNN結構演變總結(一)經典模型

CNN結構演變總結(二)輕量化模型 

CNN結構演變總結(三)設計原則

如何看待計算機視覺未來的走向   

CNN視覺化技術總結(一)特徵圖視覺化

CNN視覺化技術總結(二)卷積核視覺化

CNN視覺化技術總結(三)類視覺化

CNN視覺化技術總結(四)視覺化工具與專案    

相關文章