詳細解釋
批次正規化(Batch Normalization)是對每層輸入進行正規化的技術,穩定訓練過程,允許更高學習率,加速收斂,是深度網絡的標準組件。
數學操作:
- 計算批次均值μ和方差σ²
- 正規化:x̂ = (x - μ) / √(σ² + ε)
- 縮放平移:y = γx̂ + β
- γ和β是可學習參數
為何有效:
- 內部協變量偏移:減少層間分布變化
- 平滑損失曲面:優化更穩定
- 更高學習率:正規化後允許更大學習率
- 正則化效果:批次噪聲有輕微正則化作用
- 梯度流:緩解梯度消失/爆炸
訓練vs推理:
- 訓練:使用當前批次統計量
- 推理:使用訓練期間累積的移動平均
- 實現:框架自動處理
位置:
- 卷積層後:BN→ReLU的順序
- 全連接層後:同樣適用
- 注意:在殘差連接前或後有爭議
變體:
- 層正規化(Layer Norm):每樣本獨立,適合序列模型
- 實例正規化:每樣本每通道獨立,風格遷移
- 群組正規化:通道分組正規化
- 批次重正規化:改進推理穩定性
與其他技術的關係:
- Dropout:都可視為正則化,但BN允許減小dropout
- 權重衰減:互補的正則化方法
- 學習率調度:BN允許使用更大初始學習率
應用:
- CNN:ResNet、DenseNet等的標準組件
- 早期Transformer:原始Transformer使用LN而非BN
- GAN:穩定訓練的關鍵
局限:
- 小批次問題:批次太小時統計不穩定
- 序列模型:序列長度變化時不適用(用LN)
- 分布式訓練:需要同步批次統計
批次正規化是深度學習訓練的標準化技術。