动手学学GNN
此blog和本人另一篇博客图神经网络GNN简介有部分内容重合,相对来说介绍的更清晰、更全面。
另,若无特殊提示,博客设计的均是无向图。
1.什么是Graph
在人们的日常生活中,Graph结构的实例形形色色,无所不在。
甚至我们遇到的比较标准的数据,也可以看成是一种比较规则的graph结构。
1.1 图结构的表示
在计算机中,图是怎样表示的呢?
一个图结构是由它的vertex(node)、edge(边)以及一些特征(如node的属性/feature)组成。
为了表示图node之间的邻接关系,常常将图存储为一个其邻接矩阵 A A A的形式,该矩阵通常是一个对称的稀疏矩阵。
度矩阵 D D D的计算:
D i i = ∑ j A i j \qquad\qquad D_{ii}=\sum_jA_{ij} Dii=∑jAij
另外,在有些GNN模型中还要用到拉普拉斯矩阵 L L L(normalized graph Laplacian matrix):
L = I n − D − 1 2 A D − 1 2 \qquad\qquad L=I_n-D^{-\frac{1}{2}} A D^{-\frac{1}{2}} L=In−D−21AD−21
需要进一步了解谱方法image/graph表征及重建,可以参考图片的谱表征。
1.2 特殊数据的图表示
常用CNN/RNN表示的数据,如图片、文本、语音等也可以表示为图结构的形式。
文本这里使用的是有向图表示。
1.3 GNN常用的输入数据
GNN中最常用的输入数据是以下两种:一是邻接矩阵 A A A,另一个是特征(如节点特征 X X X):
2.Why GNN?
CNN与GNN通常的数据计算范式如下:
3.GNN解决的问题及对应的任务
3.1 例1
3.2 例2
4.GNN模型
从算子角度,主要分为谱方法和空间方法。
4.1 GCN
从谱方法到GCN的演变过程,简单总结如下:
4.2 GAT
4.3 GIN
GIN主要改进有两点:
- 加入了一个小的学习参数 ϵ \epsilon ϵ;
- concatenate/aggragate 所有layer的输出结果。
为了介绍更详细,本文使用了不少来自参考文献的图片,在此感谢。
若有侵犯,请联系删除。
参考文献
[1] https://distill.pub/2021/gnn-intro/#other-types-of-graphs-multigraphs-hypergraphs-hypernodes
[2] https://dsgiitr.com/blogs/gcn/
[3] https://distill.pub/2021/understanding-gnns/
[4] https://web.njit.edu/~ym329/dlg_book/dlg_book.pdf
[5] Graph neural networks: A review of methods and applications
[6] GIN: How to Design the Most Powerful Graph Neural Network