所有文章 > 正文

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

作者: 学术头条

时间: 2020-06-23 21:58

助力国内学者做研究!

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

2020062230101-jBEPwGKUG5.png

CogDL 介绍视频(暂时无法上传,请微信扫描右侧二维码打开文章观看)

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/

往期回顾:

点内与多方联合举办肋骨骨折检测与分类MICCAI国际挑战赛

未来已来?科学家开发出可与大脑神经元实时通信的人工神经网络

好文荐读:时间门控荧光成像技术及其生物学应用

[关于转载]:本文为“AMiner”官网文章。转载本文请联系原作者获取授权,转载仅限全文转载并保留文章标题及内容,不得删改、添加内容绕开原创保护,且文章开头必须注明:转自“AMiner”官网。谢谢您的合作。

二维码 扫码微信阅读
推荐阅读 更多