第09堂課:Classification (Short Version)
本堂課由李宏毅教授講解機器學習在開發流程中遇到錯誤時的診斷邏輯與解決方案。透過一套系統化的「一般指引 (General Guide)」,我們可以判斷模型的效能瓶頸源自於哪一個環節。
機器學習流程框架 (Framework of ML)
機器學習的核心步驟可以分為三階段:
- 步驟一 (Step 1):建立模型函數 ,其中 為未知參數。
- 步驟二 (Step 2):基於訓練資料定義損失函數 。
- 步驟三 (Step 3):進行優化,尋找最佳參數 。
訓練完成後,我們將模型應用於測試資料進行預測。
機器學習錯誤診斷圖
若模型在訓練資料或測試資料上表現不佳,可根據下方的邏輯樹進行診斷:
graph TD Node1["Loss on Training Data"] -->|large| Node2["Model Bias"] Node1["Loss on Training Data"] -->|large| Node3["Optimization Issue"] Node1["Loss on Training Data"] -->|small| Node4["Loss on Testing Data"] Node4["Loss on Testing Data"] -->|large| Node5["Overfitting"] Node4["Loss on Testing Data"] -->|large| Node6["Mismatch"] Node4["Loss on Testing Data"] -->|small| Node7["Success"]
1. 訓練損失過大 (Large Training Loss)
如果模型在訓練集上的表現就很差(損失很大),通常有兩種可能:
- 模型偏差 (Model Bias):模型太簡單,無法擬合訓練資料。
- 解決方法:增加模型複雜度(如:增加特徵、增加神經元或層數)。
- 優化問題 (Optimization Issue):模型結構足夠,但優化技術不足,找不到最佳參數。
- 檢查方法:比較不同深度的網路,若更深的網路在訓練集上損失反而更大,則為優化問題。
- 解決方法:使用更強大的優化技術(將於後續課程討論)。
2. 測試損失過大 (Large Testing Loss)
如果模型在訓練集表現很好,但測試集表現很差,這代表模型泛化能力不足:
- 過擬合 (Overfitting):模型在訓練集上「背誦」了資料,對未見過的資料泛化能力差。
- 解決方法:增加訓練資料量、資料增強 (Data Augmentation)、縮小模型複雜度、使用正則化 (Regularization) 或 Dropout。
- 不匹配 (Mismatch):訓練與測試資料的分佈 (Distribution) 不一致。
- 解決方法:這通常無法透過單純增加訓練資料解決,需了解資料生成機制(例如課程作業 11 的案例)。
模型評估與驗證
為了做出正確的「模型選擇 (Model Selection)」,我們必須將訓練資料切分為 訓練集 (Training Set) 與 驗證集 (Validation Set)。
- 避免只看公開排行榜 (Public Leaderboard):若根據公開測試集分數不斷調整參數,會導致模型針對該測試集過擬合,導致在私有測試集 (Private Test Set) 上表現不佳。
- 交叉驗證 (Cross Validation):使用 N-fold Cross Validation 可以更穩定地評估模型效能,減少隨機抽樣導致的誤差。