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

2020 年 6 月 23 日 学术头条


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/


点击 阅读原文 ,进入项目页面!
喜欢本篇内容,请点 在看
登录查看更多
2

相关内容

节点分类任务是一种算法,其必须通过查看其邻居的标签来确定样本(表示为节点)的标签。
基于改进卷积神经网络的短文本分类模型
专知会员服务
25+阅读 · 2020年7月22日
专知会员服务
78+阅读 · 2020年6月20日
基于深度学习的表面缺陷检测方法综述
专知会员服务
92+阅读 · 2020年5月31日
基于深度学习的多标签生成研究进展
专知会员服务
140+阅读 · 2020年4月25日
ACL 2019开源论文 | 基于Attention的知识图谱关系预测
港中文开源基于PyTorch的多任务人脸识别框架
极市平台
17+阅读 · 2019年8月31日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
开源|基于tensorflow使用CNN-RNN进行中文文本分类!
全球人工智能
11+阅读 · 2017年11月12日
Arxiv
7+阅读 · 2020年3月1日
Arxiv
15+阅读 · 2020年2月5日
Deep learning for cardiac image segmentation: A review
Arxiv
21+阅读 · 2019年11月9日
Arxiv
5+阅读 · 2018年7月19日
Arxiv
13+阅读 · 2018年4月6日
Arxiv
10+阅读 · 2018年2月17日
VIP会员
相关VIP内容
基于改进卷积神经网络的短文本分类模型
专知会员服务
25+阅读 · 2020年7月22日
专知会员服务
78+阅读 · 2020年6月20日
基于深度学习的表面缺陷检测方法综述
专知会员服务
92+阅读 · 2020年5月31日
基于深度学习的多标签生成研究进展
专知会员服务
140+阅读 · 2020年4月25日
Top
微信扫码咨询专知VIP会员