Overfitting (過擬合)
當模型在訓練資料上表現很好,但在驗證集、測試集或未見資料上表現變差時,
就發生了 Overfitting(過擬合)。
本質上,模型學到的不只是規律,還把訓練資料中的噪音、偶然性與細節也一起記住了。
因此它在已看過的資料上很強,但一換資料就失去 Generalization。
核心概念
過擬合可以簡化成:
模型太會背答案,但不是真的學會規則。
常見直覺:
- 訓練集表現很好
- 驗證 / 測試集表現明顯較差
- 模型複雜度相對資料量過高
這通常代表模型容量太大,足以把訓練樣本記下來,而不是抽出可泛化的模式。
如何辨認
| 指標 | 過擬合時常見現象 |
|---|---|
| Train Loss | 持續下降,甚至非常低 |
| Validation / Test Loss | 停滯、上升,或波動變大 |
| Accuracy | 訓練集高、測試集低 |
| 曲線型態 | Train ↓,但 Validation/Test ↑ 或不再改善 |
Example
一個模型在訓練集 Accuracy 99%,但測試集只有 78%,
這通常不是「模型很強」,而是模型對訓練資料記得太細。
常見原因
-
模型複雜度過高
- 參數太多、層數太深、自由度太高
-
資料量不足
- 訓練資料太少,無法支撐複雜模型
-
資料品質不佳或噪音過多
- 標註錯誤、異常值、偏差資料都可能被模型硬記下來
-
特徵太多或不必要特徵過多
- 模型有更多機會去擬合無關訊號
-
訓練過久
- 模型在後期逐漸從學規律變成記細節
-
正則化不足
- 缺乏限制模型複雜度的機制
常見解法
(A) 資料層面
- 增加資料量
- 收集更多樣本,讓資料分布更完整
- Data Augmentation(資料增強)
- 增加資料多樣性,降低模型只記住單一樣本細節的機會
- 資料清理
- 修正錯誤標註、移除明顯異常值、降低噪音
(B) 模型層面
- 降低模型複雜度
- 減少層數、參數數量,或限制樹深、特徵數
- Regularization (正則化)
- 使用 L1 / L2 約束權重大小
- Dropout
- 隨機關閉部分神經元,降低模型對局部特徵的過度依賴
- Feature Selection / Pruning
- 去除不必要特徵或簡化模型結構
(C) 訓練層面
- Early Stopping
- 當 validation loss 不再改善時提早停止
- Ensemble Methods
- 透過多模型平均降低 variance
- 調整超參數
- 例如降低模型容量、調整正則化強度、減少訓練 epoch
Cross Validation 的角色
Cross Validation (交叉驗證) 比較像是:
- 幫助評估模型泛化能力
- 幫助選模型與調參
- 降低單次資料切分帶來的誤判
它不是直接治療過擬合,但能幫助更早發現哪些模型 / 超參數組合更容易過擬合。
與 Underfitting 的差異
| 項目 | Overfitting | Underfitting |
|---|---|---|
| 模型狀態 | 太複雜 | 太簡單 |
| 訓練集表現 | 好 | 差 |
| 測試集表現 | 差 | 差 |
| 本質 | 記住細節,無法泛化 | 連基本規律都學不到 |
| 常見解法 | 簡化模型、加正則化、增加資料 | 增加模型能力、增加特徵、訓練更久 |
可對照 Underfitting (欠擬合) 一起看。
小結
Summary
Overfitting(過擬合)的本質,是模型在訓練資料上學得太好,
甚至把噪音與偶然細節也一起記住,導致泛化能力下降。
常見處理方向:
- 增加資料或做資料增強
- 降低模型複雜度
- 使用 Regularization (正則化)
- 使用 Early Stopping、Ensemble 等方法控制 variance