權重衰減(Weight Decay)
定義:懲罰過大的權重值,防止過擬合
作用:
-
限制模型複雜度
-
防止權重爆炸
-
提升泛化能力
數學原理
標準更新公式:
weight_new = weight - lr × gradient
加入 weight decay:
weight_new = weight - lr × gradient - lr × weight_decay × weight
↑
這部分會讓權重逐漸變小
實際範例:
# 當前權重
weight = 10.0
# 訓練參數
lr = 0.001
gradient = -5.0
weight_decay = 0.0001
# 沒有 weight_decay
weight_new = 10.0 - 0.001 × (-5.0)
= 10.0 + 0.005
= 10.005
# 有 weight_decay
weight_new = 10.0 - 0.001 × (-5.0) - 0.001 × 0.0001 × 10.0
= 10.0 + 0.005 - 0.000001
= 10.004999 ← 權重被壓制了一點
3.3 效果展示
權重大小
│
│ ╱‾‾‾‾‾‾‾‾╲
│╱ ╲ ← 無 weight_decay:權重可能過大
│ ╲
│ ╲___
│ ╲
│___________________╲___ ← 有 weight_decay:權重被限制
訓練過程 →
過擬合 vs 正則化:
訓練準確率 vs 驗證準確率
無正則化(weight_decay=0):
Train: 95% ████████████████
Val: 75% ██████████ ← 過擬合!差距 20%
適度正則化(weight_decay=1e-4):
Train: 88% █████████████
Val: 85% ████████████ ← 健康!差距 3%
過度正則化(weight_decay=1e-2):
Train: 70% █████████
Val: 68% █████████ ← 欠擬合!都太低
選擇指南
| Weight Decay | 效果 | 適用場景 |
|---|---|---|
| 0 | 無正則化 | 資料量大、模型簡單 |
| 1e-5 | 極輕微 | 輕微過擬合 |
| 1e-4 | 標準(推薦) | 一般情況 |
| 5e-4 | 中等 | 明顯過擬合 |
| 1e-3 | 較強 | 嚴重過擬合 |
| 1e-2 | 很強 | 極度過擬合 |
| >1e-2 | 過強 | 可能導致欠擬合 |
相關筆記
- AdamW(Adam with Weight Decay):在優化器中解耦權重衰減
- 正則化:正則化總覽