Overfitting and Regularization/zh
| Article | |
|---|---|
| Topic area | Machine Learning |
| Difficulty | Intermediate |
| Prerequisites | Loss Functions, Neural Networks |
當機器學習模型對訓練數據學習得過於充分——捕捉到噪聲和特異性而非潛在模式——從而在未見過的數據上表現不佳時,就會發生過擬合。正則化是用於防止過擬合併提高模型泛化能力的一系列技術。
偏差-方差權衡
對未見過數據的預測誤差可以分解為三個組成部分:
- $ \text{Error} = \text{Bias}^2 + \text{Variance} + \text{Irreducible noise} $
- 偏差衡量模型的平均預測與真實值的距離。高偏差表明模型過於簡單,無法捕捉數據的結構(欠擬合)。
- 方差衡量預測在不同訓練集之間的波動程度。高方差表明模型對特定訓練數據過於敏感(過擬合)。
目標是找到使總誤差最小化的最佳平衡點。參數過少的模型會欠擬合(高偏差);參數過多的模型會過擬合(高方差)。正則化技術通過約束模型複雜度來調整這種平衡,接受略高的偏差以換取大幅降低的方差。
檢測過擬合
最清晰的診斷方法是比較訓練和驗證的性能:
- 訓練損失下降,驗證損失也下降 —— 模型仍在學習;繼續訓練。
- 訓練損失下降,驗證損失上升 —— 模型正在過擬合;應用正則化或停止訓練。
- 訓練損失高,驗證損失高 —— 模型欠擬合;增加容量或延長訓練時間。
在訓練迭代過程中繪製這些學習曲線是必不可少的實踐。訓練準確率與驗證準確率之間的較大差距是過擬合的標誌。
L2 正則化(權重衰減)
L2 正則化添加一個與權重平方大小成正比的懲罰項:
- $ J(\theta) = L(\theta) + \frac{\lambda}{2}\|\theta\|_2^2 = L(\theta) + \frac{\lambda}{2}\sum_j \theta_j^2 $
正則化項的梯度為 $ \lambda \theta $,因此每個權重在每次更新時都會以乘法方式向零收縮——這就是權重衰減名稱的由來。超參數 $ \lambda $ 控制正則化的強度。
從貝葉斯角度看,L2 正則化等價於對權重施加高斯先驗。它鼓勵小的、分布式的權重,並抑制任何單個權重變得過大。
L1 正則化
L1 正則化對絕對值之和進行懲罰:
- $ J(\theta) = L(\theta) + \lambda \|\theta\|_1 = L(\theta) + \lambda \sum_j |\theta_j| $
與 L2 不同,L1 懲罰會將許多權重精確地驅動至零,產生稀疏模型。這使得 L1 正則化對特徵選擇非常有用。LASSO(Least Absolute Shrinkage and Selection Operator,最小絕對值收縮與選擇算子)是 L1 正則化線性回歸的經典例子。
| 屬性 | L1 | L2 |
|---|---|---|
| 懲罰項 | $ \lambda\sum|\theta_j| $ | $ \frac{\lambda}{2}\sum\theta_j^2 $ |
| 對權重的影響 | 將許多權重驅動至精確為零 | 將所有權重收縮至零附近 |
| 稀疏性 | 是 | 否 |
| 貝葉斯解釋 | 拉普拉斯先驗 | 高斯先驗 |
| 使用場景 | 特徵選擇、可解釋性 | 通用正則化 |
Dropout
Dropout(Srivastava 等,2014)是一種專門用於神經網絡的正則化技術。在訓練期間,每個神經元在每次前向傳播時以概率 $ p $ 被隨機"丟棄"(置零)。這可以防止神經元相互協同適應,並迫使網絡學習冗餘表示。
在測試時,所有神經元都處於激活狀態,但其輸出被縮放 $ (1 - p) $ 倍以補償較多的激活單元數量(或等效地,在訓練期間輸出被縮放 $ 1/(1-p) $ 倍——inverted dropout)。
Dropout 可以解釋為一種近似的集成方法:每個訓練步驟使用不同的子網絡,而最終模型近似於指數級多個子網絡的平均預測。
早停
早停(early stopping)在訓練期間監控驗證損失,並在驗證損失停止改善時停止優化。這是最簡單且最有效的正則化策略之一。
在實踐中,耐心(patience)參數指定了在最後一次改善之後等待多少個 epoch 再停止。模型權重在驗證損失最低的時刻被保存,並在結束時恢復。
早停作為一種隱式的正則化形式:它限制了訓練步驟的有效數量,防止模型完全記憶訓練數據。
數據增強
數據增強(data augmentation)通過應用保留標籤的變換來增加訓練集的有效規模和多樣性。對於圖像數據,常見的增強方法包括:
- 隨機水平/垂直翻轉
- 隨機裁剪和縮放
- 顏色抖動(亮度、對比度、飽和度)
- 旋轉和仿射變換
- Mixup(對圖像對及其標籤進行線性插值)
- Cutout(遮蔽隨機區域)
對於文本數據,增強方法包括同義詞替換、回譯和釋義。數據增強通過讓模型接觸更多樣化的輸入而無需收集額外數據,從而減少過擬合。
其他正則化技術
- Batch normalization —— 對層輸入進行歸一化可以減少內部協變量偏移,並具有輕微的正則化效果。
- 標籤平滑(label smoothing) —— 將 one-hot 目標替換為混合形式,例如 $ y_{\text{smooth}} = (1 - \epsilon)\, y + \epsilon / C $,以防止過度自信。
- 噪聲注入 —— 在訓練期間向輸入、權重或梯度添加高斯噪聲。
實用指南
- 從一個足夠大、能夠對訓練數據過擬合的模型開始 —— 這能確認模型具有足夠的容量。
- 逐步添加正則化(dropout、權重衰減、數據增強)並監控驗證性能。
- 使用早停作為安全網。
- 在可能的情況下,優先選擇更多訓練數據而非更強的正則化 —— 正則化是數據的替代品,而非真正的替代方案。
- 使用驗證集而非測試集來調整正則化強度($ \lambda $、dropout 比率)。
參見
參考文獻
- Srivastava, N. et al. (2014). "Dropout: A Simple Way to Prevent Neural Networks from Overfitting". JMLR, 15, 1929–1958.
- Tibshirani, R. (1996). "Regression Shrinkage and Selection via the Lasso". JRSS Series B, 58(1), 267–288.
- Goodfellow, I., Bengio, Y. 與 Courville, A. (2016). Deep Learning, 第 7 章. MIT Press.
- Zhang, C. et al. (2017). "Understanding deep learning requires rethinking generalization". ICLR.
- Shorten, C. 與 Khoshgoftaar, T. M. (2019). "A survey on Image Data Augmentation for Deep Learning". Journal of Big Data.