Group Normalization/zh
| Article | |
|---|---|
| Topic area | Deep Learning |
| Prerequisites | Batch Normalization, Convolutional Neural Network |
概述
組歸一化(GN)是一種用於深度神經網絡的特徵歸一化技術,由 Yuxin Wu 和 Kaiming He 於 2018 年提出。[1] 它將一層的通道劃分為固定數量的組,並在每個組內獨立計算均值和方差進行歸一化,對批次中的每個樣本獨立進行。與批歸一化不同,它的統計量不依賴於批次維度,這使其在使用小批次訓練時、在內存受限的硬體上、或在目標檢測和視頻理解等大批大小不切實際的任務中保持穩定。
GN 在激活歸一化方法家族中介於層歸一化和實例歸一化之間。層歸一化對單個樣本的所有通道進行歸一化,實例歸一化對每個樣本的每個通道分別歸一化,而組歸一化則取中間方案,對若干組通道進行歸一化。從經驗上看,這一中間方案在視覺基準上的準確率通常接近批歸一化,同時消除了對批次統計量的依賴。
動機
批歸一化通過穩定訓練並使更深的網絡成為可能,徹底改變了深度學習,但它有一個結構性弱點:其逐通道的均值和方差是從當前小批次中的樣本估計的。當批次較小時,這些估計具有噪聲,歸一化本身就成為誤差來源。在檢測、分割、視頻和 3D 學習等任務中問題尤為嚴重——單個樣本就可能占用 GPU 內存的很大一部分,每設備的批次為 1 或 2 是常見情況。在 BN 中將批大小從 32 減少到 2,可能會使 ImageNet top-1 準確率下降十個百分點以上。
組歸一化的設計目標是在去除批次依賴的同時,保留激活歸一化所帶來的正則化和條件化收益。由於GN僅從單個樣本計算統計量,因此訓練和推理時使用相同的代碼路徑,歸一化行為不會隨批大小或訓練批次與測試批次之間的分布偏移而改變。
公式化
考慮來自卷積神經網絡的形狀為 $ (N, C, H, W) $ 的 4D 激活張量,其中 $ N $ 為批大小,$ C $ 為通道數,$ H, W $ 為空間維度。組歸一化將 $ C $ 個通道劃分為 $ G $ 個組,每個組包含 $ C/G $ 個通道。對給定樣本 $ n $ 和組 $ g $,設 $ \mathcal{S}_{n,g} $ 表示該組中的激活集合,其大小為 $ (C/G) \cdot H \cdot W $。
該組的均值和方差為
$ {\displaystyle \mu_{n,g} = \frac{1}{|\mathcal{S}_{n,g}|} \sum_{x \in \mathcal{S}_{n,g}} x, \qquad \sigma_{n,g}^2 = \frac{1}{|\mathcal{S}_{n,g}|} \sum_{x \in \mathcal{S}_{n,g}} (x - \mu_{n,g})^2.} $
樣本 $ n $ 的組 $ g $ 中的每個激活 $ x_i $ 隨後按如下方式歸一化
$ {\displaystyle \hat{x}_i = \frac{x_i - \mu_{n,g}}{\sqrt{\sigma_{n,g}^2 + \epsilon}},} $
其中 $ \epsilon $ 是為數值穩定性而加入的小常數(通常為 $ 10^{-5} $)。最後,應用一個帶有可學習參數 $ \gamma_c $ 和 $ \beta_c $ 的逐通道仿射變換:
$ {\displaystyle y_i = \gamma_c \hat{x}_i + \beta_c.} $
仿射參數保留了該層的表徵容量,並在空間位置和批次維度上共享。兩個極端情形對應於已知的方法:當 $ G = 1 $ 時,GN 退化為層歸一化(一個組覆蓋所有通道);當 $ G = C $ 時,退化為實例歸一化(每個通道一個組)。Wu 和 He 推薦 $ G = 32 $ 作為在各種架構上都表現良好的默認值。
與其他歸一化器的比較
激活歸一化方法家族可以通過計算統計量時所歸約的坐標軸來刻畫。給定形狀為 $ (N, C, H, W) $ 的張量:
- 批歸一化按通道在 $ (N, H, W) $ 上歸約——其統計量將批次中的樣本耦合在一起。
- 層歸一化按樣本在 $ (C, H, W) $ 上歸約——每個樣本一對均值和方差。
- 實例歸一化按(樣本,通道)在 $ (H, W) $ 上歸約。
- 組歸一化按(樣本,組)在 $ (C/G, H, W) $ 上歸約。
只有批歸一化在樣本之間混合信息;其他方法,包括GN,都是逐樣本進行的,因此在訓練和推理時行為完全一致。這種獨立於批次構成的特性正是 GN 在小批次或變化批次下保持穩定的原因。代價是 GN 不能獲得 BN 從批次噪聲中得到的隱式正則化,因此最優學習率和權重衰減策略可能有所不同。
實用考量
組的數量 $ G $ 是一個超參數,但在實踐中很少逐層調優。標準選擇 $ G = 32 $ 對通道數為 32 的倍數的 ResNet 類主幹網絡效果良好。當某一層的通道數少於 32 時,通常採用固定的組大小(例如每組 16 個通道)而非固定的組數。大多數實現要求 $ C $ 能被 $ G $ 整除;必要時需對架構進行補齊或調整。
在大多數架構中,GN可以直接替換 BN:將每個 BN 層替換為 GN 層,其餘網絡保持不變,然後重新訓練。無需跟蹤運行統計量,這簡化了模型並消除了一處訓練/測試不匹配的來源。內存和計算開銷不大——在現代框架中,GN 每次前向傳播的開銷通常略高於 BN,因為其歸約形狀對硬體不如逐通道歸約友好,但差距通常在百分之十以內。
在對使用 BN 預訓練的網絡進行微調時,切換到 GN 通常需要重新訓練或大量微調,而不能直接熱替換,因為仿射參數是在不同的歸一化方案下學習的。
實證行為
在原始論文中,使用每 GPU 批大小為 32 在 ImageNet 上訓練的 ResNet-50,在 BN 和 GN 下取得了相近的 top-1 準確率(差距約為半個百分點以內)。決定性差異在批次縮小時顯現:當每 GPU 批大小為 2 時,BN 的準確率下降約十個百分點,而 GN 幾乎保持不變。在使用 Mask R-CNN 在 COCO 上的目標檢測和視頻分類任務中,也呈現同樣的規律——在這些任務所要求的小批次條件下,GN 持續優於 BN。
組歸一化已成為檢測和分割框架中的標準選擇,並廣泛用於擴散模型以及其他每設備批大小受激活內存限制的架構中。它也是需要確定性、無分布依賴行為的實現中常用的基線歸一化器,例如強化學習和聯邦設置。
變體與相關方法
若干方法擴展或關聯了 GN:
- 可切換歸一化(Switchable Normalization)按層學習 BN、LN 和 IN 統計量的加權組合,實際上讓網絡選擇在 BN/GN/LN/IN 譜系上的工作位置。[2]
- 濾波器響應歸一化(Filter Response Normalization)完全移除了減去均值的步驟,並將逐通道的方差歸一化與一種帶閾值的可學習激活相結合,同樣避免了對批次的依賴。[3]
- 權重標準化(Weight Standardization)對卷積權重而非激活進行歸一化,通常與 GN 結合使用,以在小批大小下恢復 BN 級別的準確率。[4]
- 分組卷積在通道維度上共享分組的直覺,但作用於卷積本身而非歸一化統計量,二者有時會在高效架構中結合使用。
局限性
GN消除了對批次的依賴,但代價是失去了 BN 提供的隱式正則化,在大批次圖像分類任務中,有時會以較小的差距落後於 BN。要求 $ C $ 能被 $ G $ 整除是一種較小的架構約束。由於歸約跨越可變的空間範圍,在高度優化於按通道歸約的硬體上,GN 可能比 BN 更慢。最後,$ G $ 的選擇是一個額外的超參數;儘管默認值表現良好,但最優值可能依賴於網絡寬度和任務。