課程學習 是什麼?
Curriculum Learning:課程學習 的完整解釋
系統從簡單任務開始,逐步學習難度遞增的任務,提升效率和收斂性。
核心概念
課程學習(Curriculum Learning)源自人類教育直覺。傳統機器學習假設訓練資料順序無關緊要,隨機採樣訓練。但心理學和教育學都証實,學習順序對效率至關重要。先掌握基礎,再建構複雜知識,學習效率最高。
課程學習的核心假設是:模型的學習能力是漸進式的。初期模型容量有限,無法處理複雜樣本,應專注於簡單樣本以快速建立基礎表示。隨著訓練進行,模型參數和特徵表示逐漸成熟,能處理更複雜的樣本。按難度排序訓練可以最大化這一漸進過程。
運作原理
難度定義
難度沒有固定定義,需根據應用自定義:
樣本難度
- 邊界樣本(靠近決策邊界的點)比核心樣本難
- 稀有類別樣本比常見類別難
- 標籤噪聲的樣本比清潔樣本難
任務難度
- 少樣本任務比多樣本難
- 視覺上變化多的物體比單一物體難
- 多域任務比單域任務難
自度量(Self-paced Learning)
- 不用人工定義難度,而是模型自動選擇當前容易預測的樣本
- 隨著訓練進行,模型信心提高,逐漸納入更難的樣本
課程設計
預定課程
- 人工設計固定的難度遞增序列
- 如先訓練大物體識別,再訓練小物體
- 優點:簡單透明;缺點:需人工知識
自適應課程
- 根據模型訓練進度動態調整難度
- 若模型快速收斂,加速難度增加
- 若模型平坦,維持當前難度
- 需要自適應機制監控模型進度
多維課程
- 不同維度獨立設置難度遞增
- 如同時在視角難度和光線難度維度遞增
- 更靈活,但設計複雜
實現方式
樣本選擇
- 每個 epoch 根據難度選擇樣本子集訓練
- 簡單階段用簡單樣本,後期用全部樣本
樣本加權
- 損失函數中加上難度權重
- 簡單樣本權重高,難樣本權重低
- 隨著訓練進行逐漸調整權重
多任務課程
- 對多任務學習設計任務順序
- 如先學通用任務,再學特異性任務
- 任務間知識可被後續任務利用
實際應用
物體檢測
訓練物體檢測器時,先用大物體影像(容易檢測),再加入小物體。再進階到遮擋物體、多物體場景。這種遞增式課程使模型先習得基本檢測能力,再學習複雜場景。效果顯著優於隨機訓練。
機器翻譯
訓練翻譯模型時,先用簡單句子(短、詞彙少),再過渡到複雜句子。這加速了模型對基本語法的學習,後期更容易處理複雜結構。
強化學習遊戲 AI
在遊戲中訓練智能體時,先設置簡單環境(敵人弱、地圖小),逐漸增加難度。AlphaGo 的訓練用課程學習:先自對弈學基本棋型,再與人類高手對弈,再與更強版本自己對弈。
醫療影像分類
訓練診斷模型時,先用清晰、無噪聲的影像(易診斷的病例),再加入低品質影像和邊界病例。這確保模型先建立可靠的診斷基礎,再學習處理困難情況。
常見誤區
- 課程學習等同於數據排序:課程學習考慮的是策略性排序,不只是簡單的排序
- 課程越緩越好:課程進度太緩會導致訓練緩慢;太快又無法充分學習簡單任務。需平衡
- 難度定義應該客觀:難度高度依任務而定。同一樣本對不同模型可能難度完全不同
- 課程學習只適合監督學習:課程概念也適用於強化學習、無監督學習等
與相關技術的比較
- 課程學習 vs 數據增強:增強在訓練期間應用;課程是訓練資料的組織方式
- 課程學習 vs 難例挖掘:難例挖掘專注困難樣本;課程學習是階段化的漸進訓練
- 課程學習 vs 自監督學習:自監督學習不需標籤;課程學習對有標籤資料的順序優化
- 課程學習 vs 元學習:元學習學習過程;課程學習設計訓練序列