图神经网络GNN学习路径
Posted L2_Zhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图神经网络GNN学习路径相关的知识,希望对你有一定的参考价值。
GNN
首先推荐两篇GNN综述性的文章:A Comprehensive Survey on Graph NeuralNetworks以及Graph neural networks: A review of methods and applications。
下图是第2个综述里提到的ConvGNN的分类,即基于spectral-based 方法和基于spatial-based的方法。spectral-based(谱)方法,如果对谱聚类之类比较熟悉的话会容易上手点。
1.DL库及数据集
1.1 GNN通用DL库
但是用起来也有缺陷,比如使用比较流行的图数据集很方便,但是如果要自定义数据集,那就要对其数据集构建风格足够了解。因此对要使用新数据集的初学者并不是很友好。
1.2 图数据集
2. GCN
graph-convolutional-networks-gcn这个网页介绍的GCN很不错,下图主要来自这里。
另外也可以参阅GCN直观解析及代码实现。
这里我总结了一份GCN 图分类的代码,如果图nodes、features个数相同,邻接矩阵一致,可以直接支持batch操作。
3. GAT
Github:gordicaleksa/pytorch-GAT,是一份比较流行的GAT仓库,它关于cora数据集可视化的部分也是很精彩的。仓库中给出了GAT的3个实施例。
正如代码中所说,实施例1和2几乎一致且比较易懂,而且参考了官方实现;实施例3比较难懂但是效率高。
I've added 3 GAT implementations - some are conceptually easier to understand some are more efficient.
The most interesting and hardest one to understand is implementation #3.
Imp1 and imp2 differ in subtle details but are basically the same thing.
Implementation2 was inspired by the official GAT implementation: https://github.com/PetarV-/GAT
因此,对于初学者,接受起来有点困难,不太推荐。
这里推荐Diego999/pyGAT这个github,针对的数据集也是Cora,而且也不支持batch操作。如果要应用于图分类,还要改造下。
3.1 GAT注意力机制
结合Diego999/pyGAT代码,以及原论文,将GAT注意力机制的过程更清晰总结下,主要分为两步:
- 各head attention:利用左图的过程,获取带mask(忽略无连接边的node)的self-attention系数;
- multi-head attention:在各head-attention基础上进行concat/avg等操作,最后通过非线性层输出。
4. GIN
GIN(Graph Isomorphism Network)模型出自ICLR 2019论文HOW POWERFUL ARE GRAPH NEURAL NETWORKS?,对比了GIN与其他GNN模型在多个图分类数据集上的效果。
对应github/powerful-gnns也是比较友好的,同时支持batch训练、测试。参照其代码中构建图数据集的方法,也是不错的。
参考文献
[1] A Comprehensive Survey on Graph NeuralNetworks
[2] GCN pytotch 实现:graph intro ai summer.ipynb
[3] Best Graph Neural Network architectures: GCN, GAT, MPNN and more
[4] HOW POWERFUL ARE GRAPH NEURAL NETWORKS?
[5] Deep Graph Convolutional Neural Network (DGCNN)
[6] Graph neural networks: A review of methods and applications
[7] book:Deep Learning on Graphs
以上是关于图神经网络GNN学习路径的主要内容,如果未能解决你的问题,请参考以下文章
图神经网络学习笔记 | 基础知识与 GNN 介绍 直观透彻理解