第07堂課:What to do when optimization fails? (Part 3 of 4)
本堂課由李宏毅教授講解機器學習模型在訓練與測試過程中常見的問題,以及系統化的診斷流程。當模型表現不如預期時,我們應如何判斷問題所在並進行調整。
1. 機器學習流程 (Framework of ML)
機器學習的核心流程可概括為三個步驟:
- 定義模型 (Function with unknown):設定函數 ,其中 為待學習參數。
- 定義損失函數 (Loss from training data):利用訓練資料定義損失 。
- 優化 (Optimization):找到最佳參數 。
測試階段則利用學到的函數 對測試集進行預測。
2. 機器學習診斷圖譜 (General Guidance Tree)
當我們在訓練或測試集上遇到高損失 (large loss) 時,可以依據以下流程進行診斷:
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"] -->|small| Node5["Great Success"] Node4["Loss on Testing Data"] -->|large| Node6["Overfitting"] Node4["Loss on Testing Data"] -->|large| Node7["Mismatch"] Node6["Overfitting"] --> Node8["More Data/Augmentation"] Node6["Overfitting"] --> Node9["Simpler Model"] Node2["Model Bias"] --> Node10["Complex Model"]
3. 核心問題分析
3.1 模型偏差 (Model Bias)
- 現象:訓練資料的損失很大。
- 成因:模型過於簡單(限制了模型能搜尋的空間,找不到好的函數)。
- 解法:增加模型的靈活性 (flexibility)。
- 增加特徵數量。
- 使用深度學習(增加層數、神經元數量)。
3.2 優化問題 (Optimization Issue)
- 現象:訓練資料的損失很大(但模型可能已經夠複雜)。
- 成因:優化過程失敗,未能找到訓練資料上的最小值 。
- 診斷:先從較淺的模型開始嘗試,若深度模型在訓練集表現反而更差,則確認為優化問題。
- 解法:使用更強大的優化技術(如更好的 Optimizer)。
3.3 過擬合 (Overfitting)
- 現象:訓練資料損失小,但測試資料損失大。
- 成因:模型在訓練集上捕捉到了雜訊,而非資料的分佈規律。
- 解法:
- 增加訓練資料量。
- 資料增強 (Data Augmentation)。
- 模型約束 (Constrained model):如減少參數、減少特徵、早停 (Early stopping)、正規化 (Regularization)、Dropout。
3.4 資料不匹配 (Mismatch)
- 現象:訓練與測試資料的分佈 (distribution) 不同。
- 特徵:增加訓練資料無效。
- 說明:這是真實世界常見問題,但在大多數課程作業中較少見(除 HW11 外)。
4. 模型選擇與交叉驗證 (Model Selection)
為了避免過度依賴公開測試集 (Public testing set),造成模型在私有測試集 (Private testing set) 表現不佳,我們應:
- 將訓練資料切分為 Training set 與 Validation set。
- 使用 N-fold Cross Validation:將資料切成 份,輪流驗證,取平均誤差,確保模型穩定性,避免單一切分帶來的偏差。