Batch Normalization/zh
| Article | |
|---|---|
| Topic area | Deep Learning |
| Difficulty | Intermediate |
| Prerequisites | Neural Networks, Backpropagation |
批歸一化(通常縮寫為 BatchNorm 或 BN)是一種通過對每一層的輸入進行歸一化來提升深度神經網絡速度、穩定性和性能的技術。該技術由 Ioffe 和 Szegedy 於 2015 年提出,已成為大多數現代深度學習架構中的標準組件。
內部協變量偏移
批歸一化最初的動機是解決內部協變量偏移——即在訓練過程中,隨著前層參數的更新,每一層輸入的分布會發生變化的現象。這種不斷變化的分布迫使每一層持續適應,從而減慢收斂速度,並要求謹慎的初始化和較小的學習率。
儘管內部協變量偏移的確切作用一直存在爭議(Santurkar 等人,2018 年認為 BatchNorm 的益處更多源於平滑損失函數的地形),但該技術在實踐中的有效性已得到充分確認。
批歸一化算法
訓練階段
對於給定層中激活值的小批量 $ \mathcal{B} = \{x_1, \dots, x_m\} $,BatchNorm 按如下步驟進行:
步驟 1. 計算小批量的均值和方差:
- $ \mu_{\mathcal{B}} = \frac{1}{m} \sum_{i=1}^{m} x_i, \qquad \sigma_{\mathcal{B}}^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_{\mathcal{B}})^2 $
步驟 2. 歸一化:
- $ \hat{x}_i = \frac{x_i - \mu_{\mathcal{B}}}{\sqrt{\sigma_{\mathcal{B}}^2 + \epsilon}} $
其中 $ \epsilon $ 是一個小常數(例如 $ 10^{-5} $),用於保證數值穩定性。
步驟 3. 使用可學習參數 $ \gamma $ 和 $ \beta $ 進行縮放和平移:
- $ y_i = \gamma \hat{x}_i + \beta $
參數 $ \gamma $ 和 $ \beta $ 在訓練期間學習得到。如果恆等變換是最優的,它們能夠恢復網絡表示該變換的能力,從而確保歸一化不會降低模型的表達能力。
推理階段
在推理階段,單個小批量的統計量並不可靠(輸入可能只是一個樣本)。BatchNorm 轉而使用在訓練過程中通過指數移動平均累積的總體均值和方差的運行估計值:
- $ \mu_{\mathrm{running}} \leftarrow (1 - \alpha)\, \mu_{\mathrm{running}} + \alpha\, \mu_{\mathcal{B}} $
- $ \sigma^2_{\mathrm{running}} \leftarrow (1 - \alpha)\, \sigma^2_{\mathrm{running}} + \alpha\, \sigma^2_{\mathcal{B}} $
其中 $ \alpha $ 是動量參數(通常為 0.1)。這些固定的統計量確保推理時輸出的確定性。
優勢
- 更高的學習率:通過約束激活值的分布,BatchNorm 允許使用更大的步長而不會發散。
- 對初始化的敏感性降低:使用 BatchNorm 的網絡對不良權重初始化具有更強的容忍性。
- 正則化效果:小批量統計量引入的噪聲起到了輕度正則化的作用,有時可以減少對 Dropout 的需求。
- 更快的收斂速度:訓練通常只需較少的 epoch 即可達到給定的性能水平。
放置位置
BatchNorm 通常應用於激活函數之前(如原始論文中所述),儘管一些實踐者將其放在激活函數之後。對於卷積層,歸一化按通道在空間維度和批量維度上執行。
歸一化的替代方法
| 方法 | 歸一化範圍 | 使用場景 |
|---|---|---|
| Batch Norm | 批量和空間維度,按通道 | 大批量的 CNN |
| Layer Norm | 所有通道和空間維度,按樣本 | Transformer、RNN、小批量 |
| Instance Norm | 僅空間維度,按樣本和通道 | 風格遷移、圖像生成 |
| Group Norm | 通道分組,按樣本 | 目標檢測、小批量訓練 |
層歸一化(Ba 等人,2016 年)在單個樣本內的所有特徵上進行歸一化,使其獨立於批量大小。這是 Transformer 架構中的標準選擇。
組歸一化(Wu 和 He,2018 年)將通道劃分為多個組,並在每個樣本的每個組內進行歸一化。它彌合了 Layer Norm 和 Instance Norm 之間的差距,在批量過小以致無法獲得可靠批量統計量時表現良好。
局限性
- 在批量極小時性能會下降,因為批量統計量會變得嘈雜。
- 在訓練(批量統計量)和推理(運行統計量)行為之間引入了差異。
- 在沒有填充或掩碼的情況下,不能直接應用於變長序列。
- 在多設備分布式訓練中使用運行統計量時需要謹慎處理。
另見
參考文獻
- Ioffe, S. and Szegedy, C. (2015). "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift". ICML.
- Ba, J. L., Kiros, J. R. and Hinton, G. E. (2016). "Layer Normalization". arXiv:1607.06450.
- Wu, Y. and He, K. (2018). "Group Normalization". ECCV.
- Santurkar, S. et al. (2018). "How Does Batch Normalization Help Optimization?". NeurIPS.