🧠 Batch Normalization 示範

觀察 Batch Normalization 點樣幫助神經網絡學習:

0%
準確率
0%
無BN準確率
0
訓練輪次
有BatchNorm
無BatchNorm

觀察點:

  • 激活分佈更穩定: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之間,分組正規化