图神经网络GNN学习路径

时间:2022-10-10 19:56:12

首先推荐两篇GNN综述性的文章:A Comprehensive Survey on Graph NeuralNetworks以及Graph neural networks: A review of methods and applications

下图是第2个综述里提到的ConvGNN的分类,即基于spectral-based 方法和基于spatial-based的方法。spectral-based(谱)方法,如果对谱聚类之类比较熟悉的话会容易上手点。

图神经网络GNN学习路径

1.DL库及数据集

1.1 GNN通用DL库

pygdgl是比较火的两个图神经网络仓库。

但是用起来也有缺陷,比如使用比较流行的图数据集很方便,但是如果要自定义数据集,那就要对其数据集构建风格足够了解。因此对要使用新数据集的初学者并不是很友好。

1.2 图数据集

2. GCN

GCN直观解析及代码实现里介绍GCN很直观,理解容易。

这里我总结了一份GCN 图分类的代码,支持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注意力机制

图神经网络GNN学习路径

结合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