訓練與最佳化

權重衰減

大權重讓網路畫出狂野扭曲、蜿蜒穿過每個訓練點的決策邊界,因而過擬合;小權重則迫使更平滑、更簡單、泛化更好的函數。權重衰減把偏好小權重的傾向直接編入訓練:每一步它依每個權重當前的大小,將其稍微推向零,所以權重只有在資料的梯度訊號持續夠強地推它、足以克服那股穩定的回拉時,才被容許變大。它是最古老也最可靠的正則化器之一,幾乎用於每個正經的視覺模型。

在其經典形式中,權重衰減就是 L2 正則化:你在損失上加一個懲罰 (λ/2)‖θ‖²,其中 θ 是權重、‖θ‖² 是它們平方的總和、λ(lambda)是正則化強度。對此懲罰取梯度得到 λθ,因此更新多了一項,每步從每個權重減去其 λ 比例——字面上把它衰減向零。在純 SGD 下,「在損失上加 L2 懲罰」與「直接衰減權重」在數學上是同一個運算,這也是兩個名稱可互換使用的原因。

這個等價對自適應最佳化器失效,而這正是最重要的實務要點。在 Adam 中,每個梯度分量——包括來自 L2 懲罰的 λθ——都會被逐參數縮放 √v̂ 除掉。所以那些剛好有大而頻繁梯度的權重,其衰減被縮小,正則化不再均勻作用。AdamW(Loshchilov 與 Hutter,「解耦權重衰減」)藉由把懲罰從損失中移除、改在自適應步驟之後直接從權重減去 λθ 來修正:θ ← θ − η(自適應步) − η λ θ。這個解耦形式恢復了預期的均勻收縮,並一貫地泛化得更好,這也是為何訓練 ViT、DETR、ConvNeXt 與多數大型視覺模型的標準是 AdamW,而非 Adam 加 L2。

兩點實務注意。強度 λ 在擬合與簡單之間權衡:太大模型會欠擬合,因為朝零的拉力壓過資料;太小則沒有正則化效果。此外常見的做法是把某些參數排除在權重衰減之外——尤其是偏置項與正規化層的縮放/平移參數——因為把那些推向零是有害而非有益的。

實務結論:若你用 Adam,就用 AdamW。舊程式裡「設了 weight_decay 的 Adam」通常指耦合的 L2,會悄悄地對高梯度權重正則化不足——這常是重新實作表現不如原論文的原因。

又称
L2 regularizationridge penalty