ANGELA JIAN
LOADING
回到課程總覽
第 27 篇 L11301 機器學習進階

過擬合與正則化:為什麼 AI 不能死背答案?

Angela Jian
Angela Jian 簡琬庭
iPAS AI 應用規劃師 / AI Product Builder

一、學習目標

完成本單元後,你將能夠:

  • 用具體比喻解釋過擬合(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 偵測過擬合的方法

  1. 比較訓練集與驗證集指標:訓練準確率 >> 驗證準確率 → 過擬合
  2. 繪製學習曲線(Learning Curves):觀察隨訓練資料量增加,兩條曲線是否趨於收斂
  3. 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、增加資料、簡化模型等措施
2L1 可讓權重歸零做特徵選擇,L2 只縮小不歸零;應選 L1(Lasso)
3訓練時隨機關閉神經元,推論時啟用所有神經元(權重縮放);確保訓練與推論行為一致
4(B)
5Patience 允許驗證損失連續上升幾個 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 又繼續下降。若立即停止,可能過早中斷仍在學習中的模型,錯過更好的結果。