一、學習目標
完成本單元後,你將能夠:
- 用具體比喻解釋過擬合(Overfitting)與欠擬合(Underfitting)的差異
- 看懂訓練曲線,辨識過擬合發生的時機
- 說明 L1(Lasso)與 L2(Ridge)正則化的原理與差異
- 解釋 Dropout、Early Stopping 與 Batch Normalization 的作用
- 理解偏差-變異數權衡(Bias-Variance Tradeoff)
二、核心內容
2-1 用學生比喻理解過擬合與欠擬合
生活比喻:備考的學生
想像有三個學生準備考試:
| 學生類型 | 行為 | 對應模型狀態 |
|---|---|---|
| 死背生(過擬合) | 把每一年的考古題和答案全背下來,連錯誤選項的陷阱都記住了,但換一道新題型就完全不會 | Overfitting |
| 放棄生(欠擬合) | 根本沒讀書,考什麼都不太懂,連基本題型都答不對 | Underfitting |
| 理解生(恰到好處) | 理解核心概念,能舉一反三,面對新題型也能靈活應對 | Good Generalization |
過擬合(Overfitting):模型在訓練資料上表現極佳,但在新資料(測試集)上表現差。模型「記住」了訓練資料的雜訊和細節,而非學到真正的規律。
欠擬合(Underfitting):模型連訓練資料都表現不好,代表模型太簡單,無法捕捉資料中的規律。
2-2 用訓練曲線視覺化過擬合
觀察訓練損失(Training Loss)與驗證損失(Validation Loss)的變化:
Loss
^
|
| ╔════════════════════════════════╗
| ║ 欠擬合區域 ║ 甜蜜點 ║ 過擬合區域 ║
| ╚════════════════════════════════╝
|
| Train Loss ─────────────────────────────────\
| \___
|
| Val Loss ──────────\
| \______/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
| ↑
| 最佳停止點
+──────────────────────────────────────────────→ Epoch
關鍵訊號:
- 訓練損失持續下降,驗證損失開始上升 → 過擬合警報
- 訓練損失與驗證損失都很高,且差距小 → 欠擬合訊號
- 訓練損失與驗證損失都低且接近 → 理想狀態
2-3 過擬合的成因
| 成因 | 說明 |
|---|---|
| 模型太複雜 | 參數過多,足以記住每個訓練樣本 |
| 訓練資料太少 | 樣本不足以代表真實分布 |
| 特徵數量過多 | 高維度資料中雜訊特徵干擾學習 |
| 訓練太久 | 模型開始學習雜訊而非規律 |
| 資料未洗乾淨 | 含有標記錯誤或極端離群值 |
生活比喻:一個只讀過 3 本書的人,他的「世界觀」完全由這 3 本書決定,無法泛化到更廣的知識。
2-4 偵測過擬合的方法
- 比較訓練集與驗證集指標:訓練準確率 >> 驗證準確率 → 過擬合
- 繪製學習曲線(Learning Curves):觀察隨訓練資料量增加,兩條曲線是否趨於收斂
- K-Fold Cross-Validation:多次驗證,若平均分數與訓練分數差距大,即為過擬合
2-5 解決方案一:增加資料
最根本的解決方式,但往往成本最高。
**資料增強(Data Augmentation)**是替代方案,對現有資料做變換產生更多樣本:
| 資料類型 | 增強方式 |
|---|---|
| 圖像 | 旋轉、翻轉、裁切、調整亮度、加入雜訊 |
| 文字 | 同義詞替換、回譯(Back Translation)、隨機刪除詞語 |
| 音頻 | 時間拉伸、音調偏移、加入背景噪音 |
2-6 解決方案二:簡化模型
減少神經網路層數、減少每層神經元數量、減少決策樹的最大深度——讓模型沒有能力記住細節,只能學習主要規律。
2-7 解決方案三:L1 正則化(Lasso Regression)
在損失函數中加入權重絕對值的懲罰項:
$$\text{Loss} = \text{原始損失} + \lambda \sum |w_i|$$
生活比喻:每多帶一件行李就要多付行李費(費率固定)。為了省錢,你會把不重要的行李直接捨棄(重量歸零),只帶真正必要的物品。
L1 的特性:
- 可以讓不重要特徵的權重直接歸零 → 自動做特徵選擇(Feature Selection)
- 產生**稀疏(Sparse)**模型,適合高維度資料
- λ(Lambda)是超參數,控制懲罰強度
2-8 解決方案四:L2 正則化(Ridge Regression)
在損失函數中加入權重平方的懲罰項:
$$\text{Loss} = \text{原始損失} + \lambda \sum w_i^2$$
生活比喻:行李費用按重量的平方計算(越重越貴),你不會捨棄任何行李,但會把每件行李都盡量壓縮到最輕。沒有行李會歸零,但每件都變小了。
L2 的特性:
- 讓所有權重趨向縮小但不歸零 → 平滑化模型
- 對離群值更穩健
- 適合大多數情境的預設選擇
2-9 L1 vs L2 比較
| 項目 | L1(Lasso) | L2(Ridge) |
|---|---|---|
| 懲罰項 | $\lambda \sum |w_i|$ | $\lambda \sum w_i^2$ |
| 對權重的影響 | 部分歸零 | 趨向縮小,不歸零 |
| 特徵選擇 | 是(自動剔除不重要特徵) | 否 |
| 適用情境 | 特徵多、認為很多特徵無用 | 特徵多但大多有用 |
| 模型稀疏性 | 稀疏(Sparse) | 稠密(Dense) |
Elastic Net:L1 + L2 組合,同時享有稀疏性與平滑化的優點:
$$\text{Loss} = \text{原始損失} + \lambda_1 \sum |w_i| + \lambda_2 \sum w_i^2$$
2-10 解決方案五:Dropout
Dropout 在每次訓練時,隨機關閉(停用)一定比例的神經元,讓網路不能依賴任何單一神經元。
正常訓練網路: 加入 Dropout 後:
[輸入層] [輸入層]
↓ ↓
○ ○ ○ ○ ○ ○ ○ × ○ × ← 50% 神經元被隨機關閉
↓ ↓
○ ○ ○ ○ ○ × ○ ○ × ○ ← 再次隨機關閉
↓ ↓
[輸出層] [輸出層]
生活比喻:用隨機遮掉部分筆記來讀書。今天遮掉 A、B 章節,明天遮掉 C、D 章節,強迫大腦從不同角度學習,而不是只依賴某幾個關鍵詞。訓練時隨機「缺席」,讓每個神經元都必須獨立學到有用的特徵。
- Dropout Rate:通常設為 0.2 ~ 0.5(關掉 20% ~ 50% 的神經元)
- 只在訓練時啟用,推論(Inference)時使用所有神經元(但權重會按比例縮放)
2-11 解決方案六:Early Stopping
監控驗證集損失,當驗證損失開始上升且持續一段時間,即停止訓練。
驗證損失
^
|
| ↘
| ↘___
| ‾↗↗↗↗↗ ← 開始上升!
| ↑
| Stop here(最佳模型儲存點)
+──────────────────────→ Epoch
生活比喻:考試前一晚複習,讀到精神變差時,強迫繼續讀反而會「讀壞掉」,把原本對的東西也弄亂了。知道何時停下來,本身就是一種能力。
實作方式:
- 設定 Patience(耐心值):允許驗證損失連續上升幾個 Epoch 才真正停止(避免暫時波動)
- 儲存每次驗證損失最低時的模型檢查點(Checkpoint)
2-12 解決方案七:Batch Normalization
在每層網路的激活函數之前,對每個 Mini-Batch 的輸出進行標準化(零均值、單位方差)。
生活比喻:每次小組討論後,老師重新把大家的理解程度調整到同一個基準點,避免某些人跑太快、某些人跑太慢造成的不穩定。
優點:
- 加速訓練收斂
- 減少對初始權重的敏感度
- 有一定的正則化效果(類似 Dropout 但機制不同)
2-13 偏差-變異數權衡(Bias-Variance Tradeoff)
這是機器學習中最核心的平衡觀念:
預測誤差
^
| 高偏差區域 高變異數區域
| (欠擬合 Underfitting) (過擬合 Overfitting)
|
| ↘ Bias² ↗
| ↘ ↗ Variance
| ↘ ↗↗
| ↘ ↗↗
| ↘____↗↗
| ↑
| 甜蜜點(最低總誤差)
+──────────────────────────→ 模型複雜度
| 名稱 | 定義 | 對應問題 |
|---|---|---|
| 偏差(Bias) | 模型的預測平均值與真實值的差距 | 高偏差 = 欠擬合,模型太簡單,系統性偏離答案 |
| 變異數(Variance) | 模型對不同訓練集的預測結果變動幅度 | 高變異數 = 過擬合,對訓練資料過度敏感 |
| 雜訊(Noise) | 資料本身的不可避免誤差 | 無法被任何模型完全消除 |
$$\text{總誤差} = \text{Bias}^2 + \text{Variance} + \text{Noise}$$
生活比喻:射箭比賽
- 高偏差、低變異數:每一箭都打在同一個位置,但系統性地偏離靶心(方向錯了)
- 低偏差、高變異數:箭散落在靶心周圍,但毫無規律(忽左忽右)
- 低偏差、低變異數:每一箭都精準打在靶心(理想狀態)
三、關鍵名詞中英對照
| 中文 | 英文 |
|---|---|
| 過擬合 | Overfitting |
| 欠擬合 | Underfitting |
| 泛化能力 | Generalization |
| 正則化 | Regularization |
| L1 正則化 | L1 Regularization / Lasso |
| L2 正則化 | L2 Regularization / Ridge |
| 彈性網路 | Elastic Net |
| 稀疏模型 | Sparse Model |
| 特徵選擇 | Feature Selection |
| 隨機失活 | Dropout |
| 提前停止 | Early Stopping |
| 批次正規化 | Batch Normalization |
| 資料增強 | Data Augmentation |
| 偏差 | Bias |
| 變異數 | Variance |
| 偏差-變異數權衡 | Bias-Variance Tradeoff |
| 學習曲線 | Learning Curve |
| 驗證損失 | Validation Loss |
| 超參數 | Hyperparameter |
| 懲罰項 | Penalty Term |
| 耐心值 | Patience |
| 模型檢查點 | Model Checkpoint |
四、考試重點提示
重點 1:過擬合 vs 欠擬合的診斷方式 訓練準確率高但驗證準確率低 = 過擬合;兩者都低 = 欠擬合。考題常給訓練/驗證準確率要你判斷。
重點 2:L1 vs L2 最關鍵的差異 L1(Lasso)能讓權重歸零,達到特徵選擇效果;L2(Ridge)讓權重縮小但不歸零。考題常考「哪種正則化可以做特徵選擇?」答案是 L1。
重點 3:Dropout 的運作時機 Dropout 只在訓練時啟用,推論(預測)時關閉。考題常考這個細節。
重點 4:Early Stopping 的判斷依據 依據驗證集損失(不是訓練集損失)決定何時停止。當驗證損失開始持續上升,即應停止並回復到損失最低的模型。
重點 5:Bias-Variance Tradeoff 高偏差 = 欠擬合(模型太簡單);高變異數 = 過擬合(模型太複雜)。增加模型複雜度可降低偏差但提升變異數,反之亦然。
1. 某模型訓練集準確率為 98%,驗證集準確率為 71%。請問這個模型發生了什麼問題?應採取哪些措施改善?
2. L1 正則化(Lasso)與 L2 正則化(Ridge)最關鍵的差異是什麼?如果你有一個含有 500 個特徵但認為大多數特徵無用的資料集,應選擇哪種正則化?
3. Dropout 在訓練階段和推論(預測)階段的行為有何不同?為什麼要這樣設計?
4. 以下哪個描述最符合「高偏差、低變異數」的模型特徵?
- (A) 訓練準確率 95%,驗證準確率 62%,每次換訓練集結果差異很大
- (B) 訓練準確率 60%,驗證準確率 58%,換不同訓練集結果都差不多
- (C) 訓練準確率 95%,驗證準確率 94%,表現非常穩定
- (D) 訓練準確率 55%,驗證準確率 72%,驗證集比訓練集還好
5. Early Stopping 的 Patience 參數是什麼意思?為什麼需要這個參數而不是「驗證損失一上升就立刻停止」?
解答與解析
| 題號 | 答案 |
|---|---|
| 1 | 過擬合(Overfitting);應採取正則化、Dropout、增加資料、簡化模型等措施 |
| 2 | L1 可讓權重歸零做特徵選擇,L2 只縮小不歸零;應選 L1(Lasso) |
| 3 | 訓練時隨機關閉神經元,推論時啟用所有神經元(權重縮放);確保訓練與推論行為一致 |
| 4 | (B) |
| 5 | Patience 允許驗證損失連續上升幾個 Epoch 才停止;避免因短暫波動誤判停止時機 |
詳細解析:
第 1 題: 訓練集與驗證集準確率差距高達 27%,是典型的過擬合(Overfitting)。模型過度學習了訓練資料的細節,喪失泛化能力。改善措施包括:加入 L1/L2 正則化、增加 Dropout、收集更多訓練資料或進行資料增強、簡化模型架構(減少層數或神經元數量)、使用 Early Stopping。
第 2 題: 最關鍵差異:L1 的懲罰是絕對值,可使部分權重恰好歸零,自動剔除不重要的特徵(特徵選擇);L2 的懲罰是平方,讓所有權重縮小趨近於零但不會真正為零。對於 500 個特徵且大多數無用的情境,應選 L1(Lasso),讓模型自動篩掉無用特徵。
第 3 題: 訓練階段:以設定的 Dropout Rate(如 50%)隨機關閉神經元,每個 Batch 使用不同的「子網路」學習。推論階段:所有神經元都啟用,但將輸出乘以 (1 - Dropout Rate) 進行縮放補償,確保期望值一致。這樣設計是因為推論時需要最穩定、最完整的預測,不能隨機關閉神經元;而訓練時的隨機性正是防止過擬合的來源。
第 4 題:(B) 選項分析:
- (A) 訓練遠高於驗證且差異大 → 高變異數(過擬合)
- (B) 訓練和驗證都低(約 60%),且結果穩定 → 高偏差、低變異數(欠擬合)
- (C) 兩者都高且穩定 → 低偏差、低變異數(理想)
- (D) 驗證高於訓練 → 不常見,可能資料切割問題或訓練集太難
第 5 題: Patience 是「允許驗證損失連續上升多少個 Epoch 才真正停止訓練」的參數,例如 Patience=5 代表允許連續 5 個 Epoch 驗證損失上升才停止。需要 Patience 是因為驗證損失本身有波動性——可能某個 Epoch 因隨機性短暫上升,下一個 Epoch 又繼續下降。若立即停止,可能過早中斷仍在學習中的模型,錯過更好的結果。