一行代碼命令可以做什么?
“一行命令可以實現‘一條龍’運行實驗。”
訪問 github.com/THUDM/cogdl 一鍵體驗!
近年來,結構化數據的表示學習備受業界關注與熱捧,圖神經網絡成為處理相關工作的有力工具,基于隨機游走、矩陣分解的方法在搜索推薦、分子和藥物生成等領域有著十分重要的應用。
但是,由于許多項目的代碼并未開源或者開源代碼的風格多種多樣,研究者和使用者在使用這些方法的過程中會遇到各種各樣的問題,比如實驗復現以及如何在自己的數據集上運行模型等。
具體而言(以學術研究為例),研究者和使用者在從事研究過程中需要將自己提出的模型與其他模型進行對比,來驗證所提出模型的有效性。但在對比過程中,他們需要選定若干個下游任務,在每個任務下,通過公平的評估方式來對比不同模型的性能,由于不同模型在提出時可能會使用不完全一致的下游任務或者評估方式,他們需要花費大量精力修改基線模型來進行適配。
那么,如何快速、便捷地復現出基線模型(baseline)的結果,并將這些模型應用到自定義的數據集上?
為此,清華大學知識工程實驗室(KEG)聯合北京智源人工智能研究院(BAAI)開發了一種基于圖深度學習的開源工具包——CogDL(底層架構為 PyTorch,編程語言為 Python)。
據 CogDL 開發者介紹,該工具包通過整合多種不同的下游任務,同時搭配合適的評估方式,使得研究者和使用者可以方便、快速地運行出各種基線模型的結果,進而將更多精力投入研發新模型的工作之中。
“對圖領域中每種任務,我們提供了一套完整的“數據處理-模型搭建-模型訓練-模型評估”的方案,易于研發人員做相關的實驗。比如對于圖上半監督節點分類任務,我們整合了常用的數據集 Cora、Citeseer、Pubmed,提供了經典的/前沿的各種模型(包括GCN、GAT、GCNII 等),提供了相應的訓練腳本,并且整理出了一個相應的排行榜作為參考。” CogDL 開發者說。
CogDL 最特別的一點在于它以任務(task)為導向來集成所有算法,將每一個算法分配在一個或多個任務下,從而構建了 “數據處理-模型搭建-模型訓練和驗證” 一條龍的實現。
此外,CogDL 也支持研究者和使用者自定義模型和數據集,并嵌入在 CogDL 的整體框架下,從而幫助他們提高開發效率,同時也包含了當前許多數據集上 SOTA 算法的實現,并且仍然在不斷更新。 CogDL:面向任務,擴展算法 圖表示學習算法可以分為兩類:一類是基于圖神經網絡的算法,另一類是基于 Skip-gram 或矩陣分解的算法。前者包括 GCN、GAT、GraphSAGE 和 DiffPool 等,以及適用于異構圖的 RGCN、GATNE 等;后者則包括 Deepwalk、Node2Vec、HOPE 和 NetMF 等,以及用于圖分類的 DGK、graph2vec 等算法。
大體上,CogDL 將已有圖表示學習算法劃分為以下 6 項任務:
有監督節點分類任務(node classification):包括 GCN、GAT、GraphSAGE、MixHop 和 GRAND 等;
無監督節點分類任務(unsupervised node classification):包括 DGI、GraphSAGE(無監督實現),以及 Deepwalk、Node2vec、ProNE 等;
有監督圖分類任務(graph classification):包括 GIN、DiffPool、SortPool 等;
無監督圖分類任務(unsupervised graph classification):包括 InfoGraph、DGK、Graph2Vec 等;
鏈接預測任務(link prediction):包括 RGCN、CompGCN、GATNE 等;
異構節點分類(multiplex node classification):包括 GTN、HAN、Metapath2vec 等。
CogDL 還包括圖上的預訓練模型 GCC,GCC 主要利用圖的結構信息來預訓練圖神經網絡,從而使得該網絡可以遷移到其他數據集上,來取得較好的節點分類和圖分類的效果。 能用來做什么? 那么,研究者和使用者可以利用 CogDL 做些什么?主要有三點:跟進 SOTA、復現實驗,以及自定義模型和數據。
跟進 SOTA。CogDL 跟進最新發布的算法,包含不同任務下 SOTA 的實現,同時建立了不同任務下所有模型的 leaderboard(排行榜),研究人員和開發人員可以通過 leaderboard 比較不同算法的效果。
復現實驗。論文模型的可復現性是非常重要的。CogDL 通過實現不同論文的模型也是對模型可復現性的一個檢驗。
自定義模型和數據。“數據-模型-訓練”三部分在 CogDL 中是獨立的,研究者和使用者可以自定義其中任何一部分,并復用其他部分,從而提高開發效率。 怎么用? 有兩種方法:命令行直接運行,通過 API 調用 命令行直接運行。通過命令行可以直接指定 "task"、"model"、"dataset" 以及對應的超參數,并且支持同時指定多個模型和多個數據集,更方便。代碼如下:
支持自定義數據集和模型,并且提供了自動調參的例子。
據 CogDL 研究者介紹,從 2019 年啟動以來,該項目經過了多次密集的研發,到目前已經整合了圖領域的重要任務及其相關的經典和前沿的模型。
CogDL 開發者表示,“起初,我們只是整合了實驗室內部從事相關領域研究的同學所使用的相關代碼,為了方便實驗室其余的同學運行相關的實驗。后來,我們決定將代碼開源出來,讓更多的研究和開發人員能夠借助我們的代碼從事相關工作。”
如今,CogDL 已經上線了 CogDL v0.1.1。
“我們增加了一些最前沿的圖神經網絡模型,包括圖自監督模型、圖預訓練模型。用戶可以利用圖上預訓練好的模型做不同的下游任務。在下游任務方面,我們增加了知識圖譜的鏈接預測任務,方便從事知識圖譜領域的用戶進行相關實驗。” CogDL 開發者說。
具體而言,在監督節點分類任務上,增加了 GRAND 和 DisenGCN,GRAND 在 Cora、PubMed、Citeseer 上取得了 SOTA 或者接近 SOTA 的效果;無監督節點分類任務上,增加了 DGI、MVGRL、GraphSAGE(無監督實現);在鏈接預測任務上,增加了知識圖譜上的鏈接預測 GNN 模型 RGCN 和 CompGCN;以及增加了圖上的預訓練模型 GCC。
另外,CogDL 也提供了使用 optuna 進行超參數搜索的 example,通過指定 "模型,數據集,參數" 即可自動實現超參數的搜索。
接下來,CogDL 研究者希望在現有基礎上,繼續補充其余的圖領域的下游任務,添加更多的數據集,更新每個任務的排行榜;同時增加最前沿的關于預訓練的圖神經網絡模型,支持用戶直接使用預訓練好的模型來進行相關應用;以及完善 CogDL 的教程和文檔,讓剛接觸圖領域的初學者能夠快速上手。
談及最終的愿景,CogDL 研究者表示,一方面希望從事圖數據領域的研究人員可以方便地利用 CogDL 來做實驗,另一方面希望面向實際應用的開發人員可以利用 CogDL 來快速地搭建相關下游應用,最終打造一個完善的圖領域的研發生態。
編輯:hfy
-
人工智能
+關注
關注
1793文章
47535瀏覽量
239362 -
python
+關注
關注
56文章
4802瀏覽量
84899 -
深度學習
+關注
關注
73文章
5511瀏覽量
121362 -
結構化數據
+關注
關注
0文章
3瀏覽量
2575
發布評論請先 登錄
相關推薦
評論