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