《Graph Neural Networks: A Review of Methods and Applications》
《Graph Neural Networks: A Review of Methods and Applications》。
Zhou J, Cui G, Zhang Z, et al. Graph neural networks: A review of methods and applications[J]. arXiv preprint arXiv:1812.08434, 2018.
清华大学的一篇GNN综述,读完之后还蛮有收获的。
个人认为最干货的部分是「2.2.2 Propagation Types」中对各种GNN、GCN模型的介绍了,如果之前读过一些综述了,可以直接跳到这来;第三部分感觉。。哈哈哈,至少现在对我的帮助不大。
此外,《深入浅出图神经网络:GNN原理解析》这本书应该也主要参考了这篇综述,可以看完中文版再过来看英文的。
Abstract
扯了一堆,都可以用到开题报告里面。
告诉我们这是一篇GNN的综述以及文章的主要内容和结构,还有就是这个方向是很有前途滴。
1 INTRODUCTION
graph LR
a(引出图上的DL方法:GNN) --> b(两种基本动机)
b-->c(基于CNN)
b-->d(图嵌入)
c-->e(定义卷积,池化)
d-->f(DeepWalk等)
e-->g(选择GNN的原因)
f-->g
g-->i(相关工作)
i-->j(阐明文章贡献)
首先,引出了图上的DL方法——GNN。
然后,介绍了GNN的两种基本动机:(1)借鉴CNN中的卷积和池化,来提取特征。(2)基于随机游走的图嵌入方法。
在图嵌入(graph embedding)这一部分中,提到了 「DeepWalk、node2vec、LINE」 等基于随机游走的图表示学习模型,之后有时间可以去看一下。
选择GNN进行研究的原因:
- GNN忽略节点的排列顺序(排列不变性)。
- GNN通过对邻居进行加权聚合,来更新节点的状态。
- GNN可以从非结构化数据中(推理)生成图。
相关工作,主要是之前对于GNN的相关综述的情况。
最后说了一下本文的贡献:
- 为不同的模型提供一种统一的表示,从聚合器和更新器上区分各种模型。
- 根据应用场景对GNN进行分类。
- 4个未来的研究方向。
2 MODELS
2.1 Graph Neural Networks
主要介绍了原始GNN模型,后面的各种变体都是针对它进行的改进。
Scarselli F, Gori M, Tsoi A C, et al. The graph neural network model[J]. IEEE Transactions on Neural Networks, 2008, 20(1): 61-80.
原始GNN模型是一个单层的、迭代式计算的NN模型,对有节点标签的无向图进行建模。
在早期的GNN中,一般把节点隐藏嵌入(状态)称为状态嵌入,这也是模型的学习目标。并且并不是最终的输出,一般还需要经过输出函数g才行。
模型的矩阵形式如下(迭代地计算T次):
使用目标信息t进行监督学习,损失函数如下:
Limitations
主要有几个缺点,都是后面的变体需要改进的方向:
- 迭代地计算,而非定义多层GNN,导致了效率比较低。
- 每次迭代使用相同的参数,而非在不同的层上使用不同的参数,不便于分层提取特征。
- 没有考虑图中还有边特征。
- 使用的固点(fixed point)方法不适合用来观察节点的嵌入表示,因为这样会使得结果比较平滑,不易区分各个节点。
2.2 Variants of Graph Neural Networks
这一部分比较重要,主要介绍了经过改进后的各种变体GNN。
2.2.1 Graph Types
Directed Graphs
有向图。ADGPM模型为此定义了2种权重矩阵。
Heterogeneous Graphs
异构图,有多种不同类型的节点。主要介绍了GraphInception模型。
Graphs with Edge Information
含有边信息的图,有多种不同类型的边,在知识图谱中比较常见。主要介绍了G2S、r-GCN模型。
==2.2.2 Propagation Types==
这一部分很重要,正是我所需要的!
这一部分主要对传播步骤(propagation step)进行改进。通过定义不同的aggregator和updator,可以得到不同的模型。
graph LR
a(卷积)-->b(频域方法)
a-->c(空域方法)
b-->d(门控)
c-->d
d-->e(GRU)
d-->f(LSTM)
e-->g(注意力)
f-->g
g-->h(跳跃连接)
Convolution
分为频域方法和空域方法,但不论是哪种方法,都需要去定义卷积操作。
频域方法主要介绍了ChebNet和GCN。ChebNet是K阶切比雪夫多项式展开,因此它是K-局部化的;而GCN只使用了1阶近似,因此每次聚合的对象是其直接邻居。
频域方法因为依赖于图结构、拉普拉斯矩阵等,因此它们的灵活性并不好,由此引出了空域方法。
空域方法重点介绍了DCNN和GraphSAGE。
DCNN用到了转移矩阵P的概念。而可以类比来进行理解,可以认为它是从一个节点到另一个节点的距离为K的概率。
对于节点分类任务,
和之前的模型不同的一点是,最后计算出来的嵌入矩阵是一个张量。
GraphSAGE就不多说了,消息传递+固定大小邻域采样+跳跃连接(拼接)。
Gate
这一部分介绍门控方法,使用了RNN核:GRU和LSTM。
重点介绍了GGNN和Graph LSTM。
GGNN在传播过程中使用的是GRU。
Li Y, Tarlow D, Brockschmidt M, et al. Gated graph sequence neural networks[J]. arXiv preprint arXiv:1511.05493, 2015.
Graph LSTM是一类模型,使用的是LSTM。
这一部分搞得我挺懵逼的,果然基础还是很重要的。
Attention
在注意力机制这一部分中,主要介绍了GAT模型+多头注意力机制。
注意力机制可以作为一种模型的改进方法,可以很容易的应用于归纳学习的问题。
Skip connection
收到ResNet的启发,跳跃连接一般是用于缓解深层模型的过平滑问题,主要是因为深层模型聚合了过多的噪声信息。
主要介绍了Highway GCN和JK-Net。
Highway GCN主要是使用选通权重,来对某一层的输入和输出进行加权求和:
JK-Net之前也记过笔记,它将所有层的输出进行连接得到最终结果。实验证明,它在引文网络中有着不错的表现,可以借鉴它来改进模型。 此外,跳跃连接可以和GCN、GraphSAGE、GAT等模型进行组合,以改善模型的性能。
2.2.3 Training Methods
原始GCN在训练上也有一些缺点:(1)计算L代价很大(2)每次都使用节点的所有邻居,感知域很大,损失计算变得困难(3)只在固定图上进行训练,不利于归纳学习。
重点介绍了GraphSAGE和FastGCN的改进策略。
GraphSAGE对GCN进行了全面的改进,它使用可学习的聚合、更新函数+邻居采样。
FastGCN改进了采样算法,不采样每个节点的邻居了,而是直接采样每一层的感知域。
2.3 General Frameworks
主要介绍3种通用框架:MPNN、NLNN和GN。
2.3.1 Message Passing Neural Networks
MPNN是一种监督学习的框架。
Gilmer J, Schoenholz S S, Riley P F, et al. Neural message passing for quantum chemistry[J]. arXiv preprint arXiv:1704.01212, 2017.
和之前介绍的有点区别,本文将MPNN分为了2个阶段:消息传递阶段、读出阶段。之前看过的一些资料大部分都是针对节点嵌入表示的,因此重点在于消息传递阶段;而如果针对图级任务,那么还需要加上读出阶段。
不同的聚合函数、更新函数和读出函数,可以得到不同的模型。
2.3.2 Non-local Neural Networks
NLNN是一类自注意力类型的框架。
Wang X, Girshick R, Gupta A, et al. Non-local neural networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7794-7803.
NLNN的核心是非局部(non-local)操作,它是对所有位置特征的加权求和来得到隐藏表示的。
函数f的计算结果是一个标量,函数g的计算结果一个向量,一般取线性变换。剩下的工作就是去找函数f了。
文章中列举了几种函数f,说白了就是在计算两个向量之间的相似度。
Gaussian
高斯函数
Embedded Gaussian
嵌入的高斯函数
Dot product
点积
Concatenation
拼接
此外,还可以将非局部操作添加跳跃连接,封装成非局部块:
2.3.3 Graph Networks
GN模型,挺复杂的,主要还是对于GN块的理解。
3 APPLICATIONS
从各种应用场景来对GNN模型进行分类。
略略略
4 OPEN PROBLEMS
虽然GNN已经取得了巨大的成功,但是它们在某些方面仍有待提高。
Shallow Structure
现在大部分表现还不错的模型都采用了浅层结构(一般不超过3层),这反映了一个模型深度问题(过平滑),这也是GNN最大的一个问题。
有人试图去解决这个问题:
Li Q, Han Z, Wu X M. Deeper insights into graph convolutional networks for semi-supervised learning[J]. arXiv preprint arXiv:1801.07606, 2018.
Dynamic Graphs
动态图的结构会不断发生变化,目前的模型大多是针对静态图的。
Non-Structural Scenarios
非结构化场景,一般归类为图生成问题。
Scalability
由于大数据环境下的计算代价,扩展到web规模的图上还是有一定困难。
5 CONCLUSION
一篇GNN综述。