你有沒有遇過模型一換批次大小就開始不穩? 你可以把層歸一化想成,每一層都先把自己的數值拉回同一個量尺。 它其實就是在單一樣本的層內做標準化,讓特徵值不要忽大忽小。 這樣訓練會更穩,對小批次、序列資料和 Transformer 特別有用。
你可以把它想成一個把抽象概念拉回日常判斷的提示,先知道它解決什麼問題,再看技術細節。
容易混淆
層歸一化 vs 批次正規化 層歸一化看單一樣本的特徵維度,批次正規化看一整批樣本的同一個特徵。 批次越小時,批次正規化越容易抖,層歸一化通常比較穩。
層歸一化 vs 權重正規化 層歸一化是在整理輸出數值,權重正規化是在限制參數大小。 一個管資料流過去的樣子,一個管模型裡的權重本身。
最關鍵的區別: 一個看自己這一筆,一個看同批別人。
記住這句就好
看自己這一筆,不看整批別人。
實際案例
Transformer 文字模型 長句子進模型時,層歸一化先把每層輸出的尺度穩住,模型比較不容易在訓練中途亂跳。
小批次語音訓練 當 GPU 記憶體不夠,只能用很小的 batch,層歸一化通常比批次正規化更可靠。
算法與應用
它會先算出單一樣本在某一層的平均值和變異數,再把數值標準化到較穩定的範圍。 之後再加上可學習的縮放和偏移參數,讓模型保留需要的表達能力。 在序列模型、語言模型和需要變動批次大小的訓練流程裡很常見。
情境判斷
Q1(直覺題): 如果 batch size 很小,哪種正規化通常比較不容易受影響?
Q2(判斷題): 如果模型是大批次影像分類,層歸一化一定比批次正規化更好嗎?
常見問題
層歸一化和批次正規化最大的差別是什麼?
差在統計量的來源。層歸一化看單一樣本內的特徵,批次正規化看同一個 batch 裡的樣本。
層歸一化為什麼常出現在 Transformer 裡?
因為 Transformer 常處理序列資料,batch 大小也不一定穩定,層歸一化比較不受這些條件影響。
層歸一化會讓模型變慢很多嗎?
通常不會。它多了一些統計計算,但和訓練穩定性比起來,成本多半值得。