觀察 Batch Normalization 點樣幫助神經網絡學習:
觀察點:
- 激活分佈更穩定:BatchNorm令每層輸出維持標準分佈
- 加速收斂:可以用較大學習率,更快達到高準確率
- 減少震盪:Loss曲線平滑,訓練更穩定
- 抵抗輸入變化:對輸入雜訊有更好嘅適應力
試下「加入雜訊輸入」同「較大學習率」,睇下BatchNorm點樣提高穩定性
Batch Normalization 原理
Batch Normalization (BN) 就好似餐前洗手,喺神經網絡嘅每一層都做「標準化」處理。
點解要用 BatchNorm?
- 減少內部協變偏移:深層網絡訓練時,前層參數變化會令後層輸入分佈不斷變化,好似坐過山車,難以學習。BN將每層輸出固定為標準分佈,令後層學習更穩定。
- 允許更大學習率:因為輸入分佈穩定,可以用更大嘅學習率,加速收斂。
- 自帶輕微正則化:每個mini-batch有唔同嘅均值和方差,對網絡輸出造成輕微擾動,類似輕量版Dropout。
- 減少對初始化嘅依賴:無論初始參數點設定,BN都能確保適當嘅分佈。
數學表達
# 對mini-batch計算均值和方差
μ_B = (1/m) · Σ x_i
σ²_B = (1/m) · Σ (x_i - μ_B)²
# 標準化
x̂_i = (x_i - μ_B) / √(σ²_B + ε)
# 縮放和平移(可學習參數)
y_i = γ · x̂_i + β
測試階段嘅處理
訓練時,BN會記錄運行中嘅均值和方差 (running mean/var)。測試階段用呢啲累積值代替batch統計量,確保推理時穩定輸出,即使只有一個樣本都得。
生活例子
- 煮糖水:每次撈完蓮子先過秤,確保份量一致,之後先加糖----唔怕忽甜忽淡。
- MTR 月台閘門:列車到站前定位,對準門口;乘客上落流暢就係 BN 效果。
- 食車胎雪糕:雪糕機先將奶漿混勻(標準化),每啖味道一致。
應用場景
- 卷積神經網絡:高效穩定地處理圖像,加速訓練
- 循環神經網絡:通常用層正規化,但有些模型也會用BN
- Transformer:和層正規化一起使用,提高模型準確率
- 生成模型:GANs 和 VAE 中常用,幫助生成更穩定的輸出
注意事項
- 小批量大小可能會影響BN效果,太小(<8)會不穩定
- 有些場景需要微調:如時間序列長度不固定等
- 推理階段的running statistics質量很關鍵
BatchNorm的變體
- LayerNorm:對每個樣本單獨正規化,適合NLP場景
- InstanceNorm:對每個特徵圖單獨正規化,常用於圖像生成
- GroupNorm:介於LayerNorm和InstanceNorm之間,分組正規化