CogDL: 基于图的深度学习开源工具包

CogDL 是由清华大学知识工程实验室(KEG)联合北京智源人工智能研究院(BAAI)所开发的基于图的深度学习的开源工具包,底层架构 PyTorch,编程语言使用了 Python。

视频 ↑

CogDL 允许研究人员和开发人员轻松地针对图数据进行表示学习、对比基线算法,支持节点分类、链接预测、图分类等任务。CogDL 的一个特点是整合了当下流行的图表示学习算法,包括:非图神经⽹络算法如 Deepwalk、LINE、Node2vec、NetMF、ProNE、methpath2vec、PTE、graph2vec、DGK 等;以及图神经网络算法如 GCN、GAT、GraphSAGE、GTN、HAN、GIN、DiffPool 等。工具包重现了所有算法,可以一键实现基线算法的对比。
CogDL 还提供了更多 benchmark 数据集来对不同模型进行更加全面的评测, 提供更加客观的排行榜。与其他图表示学习工具包相比,CogDL 的特性包括:
任务导向:CogDL 以图上的任务为主,提供了相关的模型、数据集以及我们得到的排行榜。
⼀键运行:CogDL 支持用户使用多个 GPU 同时运行同一个任务下多个模型在多个数据集上的多组实验。
多类任务:CogDL 支持同构/异构⽹络中的节点分类和链接预测任务以及图分类任务。
可扩展性:用户可以基于 CogDL 已有的框架来实现和提交新的数据集、模型和任务。

项目页面:http://keg.cs.tsinghua.edu.cn/cogdl
GitHub 链接:https://github.com/THUDM/cogdl

下面简单介绍一下 CogDL 当前在各个图任务上不同算法的对比情况(排行榜),包括节点分类(分为是否具有节点属性),链接预测(分为同构和异构),图分类(分有监督和无监督)。

节点分类

无监督多标签节点分类

这是一个根据无监督的多标签节点分类设置而构建的排行榜,研究团队在几个真实的数据集上运行 CogDL 上的无监督表示学习算法,并将输出的表示和 90% 的节点标签作为经 L2 归一化的逻辑回归中的训练数据,使用剩余 10% 的标签作为测试数据,计算并按照 Micro-F1 的大小进行排序。

半监督有属性的节点分类
下面是几种常见的图神经网络算法在半监督节点分类任务上构建的排行榜。研究团队在经典的三个数据集 Cora, Citeseer 和 Pubmed 进行了实验,以 Accuracy 指标来评价模型的效果。

异构节点分类

对于异构的节点分类任务,研究团队使用 Macro F1 来评价模型的效果,在 GTN 算法的实验设置和数据集下对所有算法进⾏评估。

链接预测

链接预测

对于链接预测任务,我们通过隐去数据集中 10% 的边,然后对隐去的边进⾏预测,使用 ROC-AUC 指标来评估模型的性能。ROC-AUC 指标代表了一条随机未观察到的边对应的两个节点比一条随机不存在的边对应的两个节点更相似的概率。

异构链接预测
对于异构链接预测任务,我们会对数据集中的某些视图下的链接进⾏预测,然后取 Macro ROC-AUC 作为评价指标。我们提出的 GATNE 模型是专门针对这种多视图的异构网络,而这里列举的其他⽅法只能处理同构网络,因此我们向这些方法分别输入不同视图下的网络,并为每种视图下的网络分别获得节点表示用于链接预测,最后同样采用 Macro ROC-AUC 作为评测指标。

图分类

CogDL 统一对有监督和⽆监督的图分类算法在相同的若干个真实的数据集上运⾏和评测。有监督图分类算法使⽤ kfold 对算法进行调参、训练和评测;无监督图分类算法学习到图的表示之后,将其作为输入并利用 90% 的图的标签作为 SVM 的训练数据,使⽤剩余 10% 的标签作为测试数据。两者均计算并按照 Accuracy 的大小进⾏排序。

CogDL 怎么用?

开发者在 GitHub 项目中介绍了 CogDL 的详细使用方法。
CogDL 安装请按照这⾥的说明来安装 PyTorch 和其他依赖项:
  • https://github.com/pytorch/pytorch#installation

  • https://github.com/rusty1s/pytorch_geometric/#installation

  • pip install -e .

基本用法可以使用 python train.py --task example_task --dataset example_dataset --model example_method 来在 example_data 上运行 example_method 并使用 example_task 来评测结果。

  • --task,运行的任务名称,像 node_classification,unsupervised_node_classification,link_prediction 这样来评测表示质量的下游任务;

  • --dataset,运行的数据集名称,可以是以空格分隔开的数据集名称的列表,现在⽀持的数据集包括 cora,citeseer,pumbed,PPI,wikipedia,blogcatalog,dblp,flickr 等;

  • --model,运行的模型名称,可以是个列表,支持的模型包括 gcn,gat,deepwalk,node2vec,hope,grarep,netmf,netsmf,prone 等。

如果你想在 Cora 数据集上运行 GCN 模型,并用 node classification 评测,可以使⽤如下指令:

python train.py --task node_classification --dataset cora --model gcn

定义数据集或模型

  • 提交你的“牛”算法:如果您有⼀个性能优异的算法并愿意发布出来,你可以在我们的代码仓库⾥提出⼀个 issue。在验证该算法的原创性,创造性和效果后,我们将该算法的效果添加到我们的排⾏榜上。

  • 添加你自己的数据集:如果您有⼀个独特,有研究价值的数据集并且愿意发布出来,你可以在代码仓库⾥提出⼀个 issue,我们将把所以适合的模型在您的数据集上运⾏并更新我们的排行榜。

  • 实现你自己的模型:如果您有⼀个性能优秀的算法,并愿意在工具包中实现它,以帮助更多的人,您可以创建⼀个 pull request。

如果您在工具包或自定义步骤中遇到任何困难,请随时提出一个 github issue。您可以在 24 小时内得到答复。

项目页面:http://keg.cs.tsinghua.edu.cn/cogdl

GitHub 链接:https://github.com/THUDM/cogdl

中文介绍:https://github.com/THUDM/cogdl/blob/master/README_CN.md
智源链接:http://open.baai.ac.cn/cogdl-toolkit
网站(中文):http://keg.cs.tsinghua.edu.cn/cogdl/cn/
文档:https://cogdl.readthedocs.io/

(0)

相关推荐