GitHub Repo
Transformers 社群回報 BatchNorm 動量語義錯配,部分視覺模型微調易受最後批次影響
Transformers 社群於 11 月 8 日回報,部分視覺模型將 Keras 慣例的 BatchNorm 動量直接傳給 PyTorch,使移動統計量過度偏重最新批次。回報附有重現程式與微調實驗,但修正方式尚待討論,影響範圍仍須驗證。

Transformers 的新問題回報指出,EfficientNet、ALIGN、MobileNetV1 與 MobileNetV2 的 BatchNorm 設定可能存在跨框架語義錯配:原本代表「保留多少歷史統計」的動量值,被當成「採用多少新批次統計」傳入 PyTorch。回報於 11 月 8 日提出,查核時仍開放,尚無已採納的修補方案。問題回報
關鍵在於同名參數的更新方向。Keras 使用「舊值乘以 m,加上批次值乘以 1−m」;PyTorch 則使用「舊值乘以 1−m,加上批次值乘以 m」。因此,0.99 在前者代表緩慢更新,在後者卻讓最新批次占九成九。兩份官方文件可直接確認這項差異。Keras 文件、PyTorch 文件
這會影響訓練與評估之間的銜接。BatchNorm 訓練時使用當前批次統計,預設在評估時改用累積的均值與變異數;若累積值幾乎只反映最後一批,較小或分布偏移的尾批便可能改變評估輸出。這也說明為何問題未必表現為訓練損失異常。PyTorch 文件
回報者以 CIFAR-10 短程微調測試,觀察到尾批由 32 張縮為 3 張時,兩個受測模型準確率明顯下降。不過,將動量改為 1−m 也未在所有短程設定中提高準確率;歷史統計更新變慢,同樣會影響預訓練模型適應新資料的速度。這些結果來自回報者實驗,不能外推至所有檢查點。實驗與重現程式
工程上可先檢查實際 BatchNorm 動量、尾批大小,以及評估是否使用移動統計量。後續應觀察維護者如何定義設定相容性,並要求跨資料集與訓練長度驗證;目前不能將這份回報視為已發布修復。