清華大學發(fā)布首個課程學習開源庫CurML
在機器學習的發(fā)展過程中,人類的學習方式常常會對各種算法的設計產(chǎn)生啟發(fā)。而作為人類學習的一個重要范式,通過課程進行學習,已經(jīng)被借鑒到機器學習中形成了名為課程學習(Curriculum Learning)的研究方向。
普遍而言,人類的教育是通過高度組織化的課程來完成的。每一門課或是每一個學科,都會從簡單的內容開始,逐步向學生呈現(xiàn)更復雜的概念。例如,在大學接受微積分的概念之前,一名學生應當先在小學學習算術,在初中學習函數(shù),在高中學習導數(shù)。然而與人類教育不同的是,傳統(tǒng)機器學習模型的訓練都是將數(shù)據(jù)樣本隨機輸入模型,忽略了數(shù)據(jù)樣本之間不同的復雜性以及模型當前的學習狀態(tài)。因此,課程學習在機器學習領域的提出,正是為了模仿人類由易到難的學習方式,為模型提供更好的訓練策略,從而提升模型的表現(xiàn)。

課程學習概念圖
目前課程學習已經(jīng)廣泛應用在機器學習的各個任務中,包括圖片分類、目標檢測、語義分割、機器翻譯、音頻識別、音頻增強、視頻問答等等,同時也在有監(jiān)督、無監(jiān)督和半監(jiān)督學習以及強化學習等場景下受到大量關注和研究。
隨著課程學習的應用和場景日益豐富,特別需要對這一領域進行細致的梳理和歸納,從而推動研究者的深入探索、提升使用者的應用體驗。
因此,清華大學朱文武教授所帶領的媒體與網(wǎng)絡大數(shù)據(jù)實驗室在發(fā)表了多篇課程學習學術論文的積累和基礎上,實驗室成員王鑫在 IEEE TPAMI 發(fā)表了關于課程學習的綜述論文,實驗室進一步發(fā)布了全球首個課程學習開源庫 CurML (Curriculum Machine Leanring)。
朱文武教授與王鑫助理研究員的課程學習研究工作包括應用于城市興趣地點推薦的課程元學習方法、基于帶噪多反饋信息的課程解耦商品推薦、基于課程學習的共享參數(shù)神經(jīng)架構搜索、以及基于課程難度自適應的組合優(yōu)化問題求解等等。研究成果發(fā)表于 SIGKDD、NeurIPS、ACM MM 等高水平國際機器學習會議上。

部分研究成果框架圖
課程學習綜述論文則全面回顧了課程學習的產(chǎn)生、定義、理論和應用等各個方面,設計了統(tǒng)一的課程學習框架,并根據(jù)框架內的核心組成將課程學習算法分為兩個大類和多個小類,區(qū)分了課程學習與其他機器學習概念之間的不同和關聯(lián),指出了這一領域所面臨的挑戰(zhàn)和未來可能的研究方向。

課程學習方法分類
課程學習開源庫 CurML 是課程學習算法的支持平臺,已經(jīng)集成十多種課程學習算法,同時支持帶噪和非帶噪兩種應用場景,便于研究者和使用者復現(xiàn)、評估、比較以及選擇課程學習算法。
CurML 的主體模塊是 CL Trainer,它由兩個子模塊 Model Trainer 和 CL Algorithm 組成,兩者間通過五個接口函數(shù)進行交互,從而實現(xiàn)課程學習指導的機器學習過程。

CurML 框架圖
主體模塊:CL Trainer
這一模塊是整個開源庫的主體部分。通過調用這一模塊,使用者僅需幾行代碼即可實現(xiàn)課程學習算法。在給定數(shù)據(jù)集、模型和超參數(shù)后,模塊將進行一定時間的訓練,并輸出訓練后的模型參數(shù)和任務的測試結果。這一模塊的設計主要是為了滿足易用性的要求,因此進行了高度的封裝,提供給想要使用課程學習算法但并不在意具體實現(xiàn)細節(jié)的使用者。
子模塊 1:Model Trainer
這一模塊用于完成一般的機器學習過程,例如訓練一個圖片分類器或是一個語言模型。同時,它預留了五個接口函數(shù)的位置,用于和第二個子模塊 CL Algorithm 進行交互,也支持自定義的輸入函數(shù)。
子模塊 2:CL Algorithm
這一模塊封裝了 CurML 所支持的全部課程學習算法,如下表所示:

模塊的實現(xiàn)是通過五個接口函數(shù),分別用于從機器學習過程中獲取數(shù)據(jù)和模型信息,以及指導模型的學習策略,如下圖所示。

CurML 流程圖
接口函數(shù):data_prepare
這一函數(shù)用于從 Model Trainer 模塊向 CL Algorithm 模塊提供數(shù)據(jù)集信息。很多課程學習算法需要對數(shù)據(jù)集有一個整體的了解,才能更好地判斷數(shù)據(jù)樣本難度,因此這一接口函數(shù)是很有必要的。
接口函數(shù):model_prepare
這一函數(shù)與 data_prepare 很類似,區(qū)別在于傳遞的不是數(shù)據(jù)集信息而是模型訓練的相關信息,例如模型架構、參數(shù)優(yōu)化器、學習率調整器等等,很多課程學習算法通過調節(jié)這些要素指導機器學習。
接口函數(shù):data_curriculum
這一函數(shù)用于計算數(shù)據(jù)樣本難度,并根據(jù)數(shù)據(jù)難度和當前模型狀態(tài)為模型提供合適的數(shù)據(jù),大部分的課程學習都具有類似的思想。
接口函數(shù):model_curriculum
這一函數(shù)用于更新模型,調節(jié)模型從數(shù)據(jù)樣本中獲取的信息量,間接指導模型的學習,目前這類算法的數(shù)量還較少,但 CurML 也同樣支持這類算法的實現(xiàn)。
接口函數(shù):loss_curriculum
這一函數(shù)用于對損失函數(shù)值進行重加權,間接調整不同數(shù)據(jù)對于模型的影響,這類算法在課程學習中較為常見,因為損失值的加權在本質上是一種對數(shù)據(jù)的軟采樣。
通過對于十多種近年來課程學習方法的總結,采用上述的模塊和接口參數(shù)可以統(tǒng)一化實現(xiàn)不同類型的課程學習算法,從而能在公平的場景和任務下對課程學習算法進行評估、比較和選擇。
未來展望
CurML 的研發(fā)團隊表示,在未來他們將不斷更新這一開源庫,為課程學習的發(fā)展和應用提供進一步的支持。
相關鏈接:
- CurML 開源代碼庫鏈接:https://github.com/THUMNLab/CurML
- CurML 開源軟件論文鏈接: https://dl.acm.org/doi/pdf/10.1145/3503161.3548549
- 課程學習綜述論文鏈接:https://ieeexplore.ieee.org/abstract/document/9392296/
- 課程元學習論文鏈接:https://dl.acm.org/doi/abs/10.1145/3447548.3467132
- 課程解耦學習論文鏈接:https://proceedings.neurips.cc/paper/2021/file/e242660df1b69b74dcc7fde711f924ff-Paper.pdf
- 課程神經(jīng)架構搜索論文鏈接:https://dl.acm.org/doi/abs/10.1145/3503161.3548271
- 課程難度自適應論文鏈接:https://ojs.aaai.org/index.php/AAAI/article/download/20899/version/19196/20658

























