跳至主要内容

Overfitting

What?​

過擬合( Overfitting )是指在模型訓練時,模型過度學習了訓練資料中的細節和噪音,導致在新資料(測試集或實際應用場景)上的表現不佳。 簡單來說,模型「記住」了訓練資料,而非「理解」其背後的普遍規則。

舉例來說,就像準備考試只死背範例題,但無法靈活應對考卷上的變化題型一樣。過擬合會讓機器學習模型在測試集上出現偏低的準確率,甚至完全沒辦法泛化到真實世界中的資料。


Who?​

過擬合主要影響以下兩類人:

  1. 機器學習工程師:在開發模型時,過擬合是需要注意並避免的重要問題。
  2. 使用模型的人:如果模型因過擬合而預測不準,他們的業務決策可能受到負面影響,例如錯誤的銷售預測或不精準的推薦系統。

When?​

以下情境容易出現過擬合:

  1. 訓練資料量不足:當訓練集太小時,模型容易直接記住每一筆資料。
  2. 模型複雜度太高:例如深層神經網絡中有太多層或節點,導致其過度適配訓練資料。
  3. 缺乏正則化( Regularization )技術:未使用 L1 正則化、 L2 正則化等方法控制模型參數。
  4. 訓練時間過長:當 Epoch 數設得太多,也可能造成模型反覆學習噪音。

Where?​

在架構中,過擬合通常出現在以下部分:

  • 訓練階段:當執行模型訓練時,如果未妥善處理,就會發生。
  • 評估階段:檢查 Test set 的結果時,如果測試表現與訓練表現差距很大,就可能是因為過擬合。

例如,在深度學習架構中,如 CNN 或 RNN ,如果沒有足夠監控 Validation Loss ,可能導致模組潛藏著過擬合問題。


Why?​

避免過擬合非常重要,因為它解決了以下問題:

  1. 泛化能力不足:如果模型只能對特定的訓練資料有效,那就無法解決真實世界中的問題。
  2. 資源浪費:花費大量時間和計算資源得到不能泛用的結果,是極大的效率損失。
  3. 錯誤預測風險提高:例如用來診斷疾病的 AI 模型,如果因為過擬合而誤判,那後果可能非常嚴重。

How?​

🛠️ 建立階段​

避免過擬合的方法可以分以下幾步:

  1. 增加 Training Data:
    • 蒐集更多樣本或進行 Data Augmentation (如旋轉影像、加入隨機噪音)。
  2. 降低 Model Complexity:
    • 減少網絡層數、節點數或限制參數自由度。
  3. 使用正則化技術:
    • 加入 $$L_1$$ 或 $$L_2$$ Regularization ,限制權重大小以降低自由度。
  4. 提早停止( Early Stopping )
    • 設定 Validation Loss 為監控指標,一旦停止下降就終止訓練。
  5. 使用 Dropout 技術:
    • 在人工神經網絡中隨機關閉部分神經元,以降低依賴性並提升泛化能力。

🔍 查詢階段​

檢查是否存在過擬合,可以採用以下流程:

  1. 將 Train set 和 Test set 的 Loss 曲線繪製出來:
    • 如果 Train Loss 持續下降但 Test Loss 開始上升,就有明顯的 Overfitting 問題。
  2. 評估 Test Accuracy 與 Train Accuracy 差距:
    • 若差距持續拉大,就代表泛化能力不足。
  3. 使用交叉驗證( Cross Validation )
    • 利用 K-fold Cross Validation 減少偏差並評估穩定性。

補充說明​

📌 範例比較​

方法過擬合防治效果資料需求量
Data Augmentation高中等
Regularization中無需額外資料
Early Stopping高無需額外資料

🧠 延伸/常見誤解​

  • 誤解一:「增加層數一定能提升準確率。」 事實上,更多層會增加運算成本且更容易造成 Overfitting 。
  • 誤解二:「只要 Test Accuracy 很高就沒問題。」 要注意 Test Accuracy 是否穩定,以及是否依照不同批次進行評估才能確保泛用性。