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的特性包括:任务导向、键运行、多类任务、可扩展性。项目页面: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/ 点击阅读原文,进入项目页面!
喜欢本篇内容,请点在看阅读原文