OpenNE-Pytorch是对网络嵌入开源工具包OpenNE的一次整体升级,本次升级将之前的工具包从TensorFlow版本全面迁移至PyTorch,而且从代码、使用、结构和效率等方面进行了全面优化,让工具包更加易于使用、定制、阅读和进一步开发,同时使运行速度和模型效果得到大幅提升。新的工具包被命名为OpenNE-Pytorch。
本次升级后,OpenNE-Pytorch主要包含了三个新特性,包括了提供统一代码框架、实现代码模块化以及运行结果高效准确。如需参考工具包中提供的各种方法的相关论文,可参考网络表示学习论文列表NRLPapers以及图神经网络论文列表GNNPapers。
工具包地址:https://github.com/thunlp/OpenNE/tree/pytorch
NRLPapers:https://github.com/thunlp/NRLPapers
GNNPapers:https://github.com/thunlp/GNNPapers
总体介绍
OpenNE-Pytorch主要关注无监督/自监督图表示学习方法,并提供了统一的代码框架。工具包整合了目前流行的节点分类算法,包括无监督的网络表示学习(Network Embedding)方法:LINE[1]、GraphFactorization[2]、DeepWalk[3]、Node2Vec[4]、HOPE[5]、GraRep[6]、SDNE[7]、LLE[8]、Lap[9]、TADW[10],以及最近基于图神经网络(Graph Neural Network)的自监督表示学习方法:GAE/VGAE[11]。
项目将上述模型在多个数据集上的节点分类任务进行了评测,旨在为研究和开发人员提供便利有效的算法实现。
实现细节
新版OpenNE将模型实现代码模块化,并将训练过程中的代码划分为三个部分,并由三个类来具体控制,分别是图数据集、模型和任务。
派生自torch.utils.data.Dataset的图数据集类负责加载并处理图,支持从网络资源下载数据集(派生自NetResources)或直接从本地加载(派生自LocalFile)。基类Graph通过read()函数读取本地文件,提供了邻接表、边列表、节点标签、节点特征向量文件的读取方式。Graph用networkx对象存储图,同时提供了邻接矩阵和特征向量矩阵的接口。
派生自torch.nn.Module的模型类负责实现具体的模型和训练过程。调用模型类的forward()时,该类通过build()导入图和训练参数建立模型,用train_model()进行训练。
节点分类任务根据监督和无监督分为两个任务类,它们通过check()检查用户输入的训练参数是否合法,通过train()结合训练参数、模型、图进行训练,并通过evaluate()进行评估。
分工明确的三个模块使得数据准备、训练、测试被分为相对独立的三部分,它们都有易于调用的接口,便于编写命令、开发扩展功能。
实验结果
我们在Cora数据集上对比了新旧版本中默认参数下11个模型的表现,发现与旧版结果相比,新版工具包运行结果高效准确。工具包在Cora上的结果如下:
我们还测试了新版本的7个模型在wiki和BlogCatalog上的表现,结果如下:
使用说明
在训练时,只需在OpenNE/src中运行:python -m openne --model gf --dataset blogcatalog,其中--model和--dataset后可以替换成任意其他已有模型和数据集。
还可以指定--local-dataset使用自己的数据集,如:python -m openne --model gf --local-dataset --root-dir mydatasetdir --edgefile edges.txt --labelfile --labels.txt
结语
我们的工具包将继续关注在无监督/自监督图表示学习领域,并预计进行下面的升级与更新:
敬请关注OpenNE-Pytorch项目与后续更新,也欢迎在issue中提出意见、提交与贡献您的代码
开发团队
杜雨峰:清华大学计算机系本科生,https://github.com/Bznkxs
崔淦渠:清华大学计算机系硕士生,https://github.com/cgq15
周界:清华大学计算机系硕士生,https://github.com/jayzzhou-thu
指导教师
孙茂松:清华大学计算机系教授,http://nlp.csai.tsinghua.edu.cn/staff/sms/
刘知远:清华大学计算机系副教授,http://nlp.csai.tsinghua.edu.cn/~lzy/
杨成:北京邮电大学助理教授,http://nlp.csai.tsinghua.edu.cn/~yangcheng/
相关论文
[1] Tang, J., Qu, M., Wang, M., Zhang, M., Yan, J., & Mei, Q. (2015, May). Line: Large-scale information network embedding. In Proceedings of the 24th international conference on world wide web (pp. 1067-1077).
[2] Ahmed, A., Shervashidze, N., Narayanamurthy, S., Josifovski, V. and Smola, Alexander J. (2013, May). Distributed large-scale natural graph factorization. In Proceedings of the 22nd international conference on World Wide Web (pp.37-48).
[3] Perozzi, B., Al-Rfou, R. and Skiena, S. (2014, August). DeepWalk: Online learning of social representations. In Proceedings of KDD (pp.701-710).
[4] Grover, A. and Leskovec, J. (2016, August). node2vec: Scalable feature learning for networks. In Proceedings of KDD (pp.855-864).
[5] Ou, M., Cui, P., Pei, J., Zhang, Z. and Zhu, W. (2016, August). Asymmetric transitivity preserving graph embedding. In Proceedings of the 22nd ACM SIGKDD (pp.1105-1114).
[6] Cao, S., Liu, W. and Xu, Q. (2015, October). Grarep: Learning graph representations with global structural information. In Proceedings of CIKM (pp.891-900).
[7] Wang, D., Cui, P. and Zhu, W. (2016, August). Structural deep network embedding. In Proceedings of the 22nd ACM SIGKDD international conference on Knowledge discovery and data mining (pp.1225-1234).
[8] Roweis, S. T., and Saul, L. K. (2000). Nonlinear Dimensionality Reduction by Locally Linear Embedding. In Science 290.5500 (pp.2323-2326).
[9] Belkin, M. and Niyogi, P. (2002). Laplacian eigenmaps and spectral techniques for embedding and clustering. In Advances in neural information processing systems (pp.585-591).
[10] Yang, C., Liu, Z., Zhao, D., Sun, M. and Chang, E. (2015, July). Network representation learning with rich text information. In Proceedings of IJCAI (pp.2111-2117).
[11] Kipf, Thomas N and Max Welling. (2016). Variational graph auto-encoders. In NIPS Workshop on Bayesian Deep Learning.
[12] Pan, S., Hu, R., Long, G., Jiang, J., Yao, L. and Zhang, C. (2018). Adversarially Regularized Graph Autoencoder for Graph Embedding. In Proceedings of IJCAI (pp.2609-2615).
[13] Park, J., Lee, M., Chang, H. J., Lee, K. and Choi, J. Y. (2019).
Symmetric graph convolutional autoencoder for unsupervised graph representation learning. In Proceedings of ICCV (pp.6519-6528).
[14] Cui, G., Zhou, J., Yang, C. and Liu Z. (2020). Adaptive Graph Encoder for Attributed Graph Embedding. https://arxiv.org/abs/2007.01594.
[15] Qiu, J., Dong, Y., Ma, H., Li, J., Wang, K., & Tang, J. (2018, February). Network embedding as matrix factorization: Unifying deepwalk, line, pte, and node2vec. In Proceedings WSDM (pp. 459-467).
[16] Qiu, J., Dong, Y., Ma, H., Li, J., Wang, C., Wang, K., & Tang, J. (2019, May). Netsmf: Large-scale network embedding as sparse matrix factorization. In Proceedings of WWW (pp. 1509-1520).