目录
前言
题目: A Comprehensive Survey on Graph Neural Networks
会议: IEEE Transactions on Neural Networks and learning systems(TNNLS)
论文地址:A Comprehensive Survey on Graph Neural Networks
本文的内容较多,在最开始时先大致总结一下:
- 第1节Introduction简要介绍了本文内容,总结了本文贡献。
- 第2节中简单介绍了GNN的发展历史,给出了GNN中的一些定义(需要区分特征向量和状态向量),然后对GNN和图嵌入进行了区分和联系。
- 第3节中给出了一个GNN的分类原则,将GNN分为四类:recurrent GNN (RecGNN,循环GNN)、convolutional GNN(ConvGNN,卷积GNN)、graph autoencoder(GAE,图自编码器)和spatial-temporal GNN (STGNN,时空GNN)。第3节还从Node Level、Edge Level和Graph Level三个方面来介绍了GNN的输出形式,同时探讨了GNN的(半)监督学习和无监督学习框架。
- 第4节介绍了RecGNN的相关知识。在之前的一篇博客图神经网络(GNN)的基本原理
中我对GNN的原始论文进行了解读,实际上这就是一种RecGNN。RecGNN的核心是消息传递机制:通过不断交换邻域信息来更新节点状态,直到达到稳定均衡(相互连接的节点间交换信息,GNN核心)。在本节中作者介绍了门控GNN(Gated GNN,GGNN)和随机稳态嵌入(SSE)两种RecGNN。 - 第5节介绍了ConvGNN的相关知识。之前的一篇博客图解GNN:A Gentle Introduction to Graph Neural Networks里实际上已经对ConvGNN的大致原理进行了讲解。与RecGNN使用相同的图循环层(Grec)来更新节点的表示不同的是,ConvGNN使用不同的图卷积层(Gconv)来更新节点表示。ConvGNN分为基于频域的ConvGNN和基于空间域的ConvGNN。基于频域的ConvGNN借助图的拉普拉斯矩阵的特征值和特征向量来研究图的卷积,而基于空间域的ConvGNN则是基于节点的空间关系来定义图卷积。基于频域的ConvGNN主要介绍了Spectral CNN、ChebNet、CayleyNet和AGCN等,基于空间域的ConvGNN主要介绍了NN4G、DCNN、PGC-DGCNN。此外,本节还探讨了GNN中的Pooling,常见的Pooling操作有:sum、max以及mean,此外还介绍了SortPooling和DiffPool等一些变种。
- 第6节介绍了GAE的相关知识。GAE是一种将节点映射到潜在特征空间并从其潜在表示中解码图形信息的深层神经网络。简单来说,需要先学习节点的状态向量,然后再从其中解码出图信息。因此,GAE一般用于学习网络嵌入表示或者来生成新的图。用于学习网络嵌入的GAE,作者介绍了DNGR、SDNE和VGAE。用于图生成的GAE,作者介绍了DeepGMG和GraphRNN。
- 第7节介绍了STGNN的相关知识。在许多真实世界的应用程序中,图在图结构和图输入方面都是动态的。STGNN在图的动态捕捉中占有重要的地位,这类方法的目标是在假定连接节点之间相互依赖的情况下,对动态节点输入进行建模。STGNN同时捕获图的空间和时间依赖性,其任务可以是预测未来的节点值或标签,也可以是预测时空图标签。 STGNN有两个方向:基于RNN的方法和基于CNN的方法。基于RNN的STGNN,作者介绍了GCRN和DCRNN。基于CNN的STGNN,作者介绍了CGCN和ST-GCN。
- 第8节介绍了GNN的一些应用。关于GNN,有两个比较流行的框架:PyTorch Geometric和DGL。GNN在实际生活中的应用主要包括:CV领域(场景图生成、点云分类和动作识别)、NLP领域(文本分类和机器翻译)、交通领域(预测交通网络中的交通速度、交通量或道路密度,出租车需求预测)、推荐系统、化学领域(分子指纹图谱、预测分子性质、推断蛋白质结构以及合成化合物)、其他领域(如程序验证、程序推理、社会影响预测、对抗攻击预防、脑网络、事件检测、组合优化等)。
- 第9节作者给出了GNN未来可能的4个研究方向:深入学习图表数据是否是一个好的策略?如何权衡算法的可扩展性和图的完整性?异质图如何有效地处理?动态图中如何进行有效卷积?
- 第10节为总结。
阅读本文前建议先阅读:
Abstract
近年来,深度学习已经彻底改变了许多机器学习任务,如图像分类和视频处理以及语音识别和自然语言理解。这些任务中的数据通常是欧几里得数据。但如今在越来越多的应用程序中,数据由非欧几里德域生成,并表示为具有复杂关系和对象间相互依赖关系的图结构。图数据的复杂性对现有的机器学习算法提出了重大挑战。
GNN作为一种解决方案,是近年来比较热门的一个方向。本文对图神经网络(GNN)在数据挖掘和机器学习领域进行了全面地概述。
本文将当前最前沿的GNN划分为4类:循环GNN、卷积GNN、图自编码器和时空GNN。同时本文讨论了GNN在各个领域的应用,总结了GNN的开源代码、基准数据集和模型评估。最后,提出了GNN未来可能的研究方向。
I. Introduction
近年来神经网络的成功促进了模式识别和数据挖掘的研究,如CNN、RNN和AE(自编码器)等应用广泛。
深度学习在许多领域的成功部分归因于:
- 快速发展的计算资源(如GPU)
- 大量数据
- 深度学习从欧几里德数据(如图像、文本和视频)中提取潜在表示的有效性。
前面讲的几种图嵌入算法就属于第三种。
图数据对现有的机器学习算法提出了以下挑战:
- 由于Graph可以是不规则的,一个Graph可能有大小可变的无序节点,同时Graph中的节点可能有不同数量的邻居,从而导致一些重要的操作(例如卷积)在Image域中很容易计算,但在Graph域中却很难应用。
- 现有机器学习算法的一个核心假设是实例是彼此独立的,这种假设不再适用于图数据,因为每个实例(节点)会通过各种类型的链接(如引用、友谊和交互)与其他实例(节点)相关联。
在CNN、RNN和AE的推动下,GNN逐渐发展起来。例如图卷积可以看作是二维卷积推广而来:
如上所示,可以将Image(左)看作是Graph(右)的一种特殊形式:Image中像素点和像素点之间通过边相连,二维卷积中我们在图像上移动卷积核,与此类似,在Graph中我们可以通过取一个节点的邻域信息的加权平均来执行图卷积。
本文贡献:
- 提出了一种新的GNN分类方法,将GNN分为:recurrent GNN (RecGNN,循环GNN)、convolutional GNN(ConvGNN,卷积GNN)、graph autoencoder(GAE,图自编码器)和spatial-temporal GNN (STGNN,时空GNN)。
- 全面的概述:对于每种类型的GNN,都对其中具有代表性的模型进行了详细的描述,并进行了必要的比较,总结了相应的算法。
- 收集了大量关于GNN的资源,包括最先进的模型、基准数据集、开源代码和实际应用。本文可以作为实践指南,帮助读者理解、使用和开发针对各种实际应用程序的不同深度学习方法。
- 未来研究方向:分析了现有方法的局限性,并从模型深度、可扩展性权衡、异质性和动态性四个方面提出了未来可能的研究方向。
II. Background And Definition
A. Background
(1)GNN简史: 这部分讲了GNN的大致发展历史:1997年Sperduti和Starita的一篇论文首先将神经网络应用于有向无环图,这拉开了GNN的序幕。GNN的概念最初由M. Gori等于2005年提出,早期的研究都属于RecGNN范畴。由于CNN在计算机视觉领域的成功,许多重新定义图形数据卷积概念的方法被提了出来,ConvGNN被分为两大类:频域方法(spectral-based method )和空间域方法(spatial-based method)。2009年,Micheli在继承了来自RecGNN的消息传递思想的同时,在架构上复合非递归层,首次解决了图的相互依赖问题。在过去的几年里还开发了许多替代GNN,包括GAE和STGNN。
简单来说:RecGNN->ConvGNN->GAE和STGNN。
(2)GNN Versus Network Embedding: GNN的研究与图嵌入或网络嵌入密切相关,前面总结了几篇关于图嵌入的文章,有兴趣的可以看一看:
网络嵌入的目的是将网络节点表示为低维向量,同时保留网络拓扑结构和节点内容信息。 有了嵌入表示后,后续的如分类、聚类和推荐等,都可以使用现成的机器学习算法(如SVM)轻松实现。
GNN与网络嵌入的区别与联系: GNN是针对各种任务设计的一组神经网络模型,而网络嵌入是针对同一任务(将图表示成低维向量)的各种方法。联系:GNN可以通过GAE框架解决网络嵌入问题。当然除了GNN,网络嵌入还包含了其他非深度学习方法,如矩阵分解和随机漫步。
(3)GNN Versus Graph Kernel Methods: 图核用于解决图分类问题,图核使用一个核函数来度量图对之间的相似性,因此基于核的算法,如支持向量机,可以用于图的监督学习。与GNN类似,图核可以通过映射函数将图或节点嵌入到向量空间中。不同之处在于,图核中映射函数是确定的,而不是可学习的。图核方法由于需要进行两两相似度计算,因此存在很大的计算瓶颈,相比之下,GNN直接根据提取的图表示进行图分类,因此比图核方法效率高得多。
B. Definition
本文中粗体大写字符表示矩阵,粗体小写字符表示向量。各种定义如表1所示:
挑一些简单解释下:
A ⊙ B A \odot B A⊙B表示两个矩阵对应元素相乘;邻接矩阵 A A A:一个 n × n n \times n n×n的矩阵, A i j = 1 i f ∃ e i j ∈ E e l s e A i j = 0 A_{ij}=1 \ \ if\ \ \exists e_{ij} \in E \ \ else\ \ A_{ij}=0 Aij=1 if ∃eij∈E else Aij=0; D D D表示度矩阵,度矩阵是对角阵,对角上的元素为各个顶点的度; X ∈ R n × d X \in R^{n \times d} X∈Rn×d:每一行为一个节点的 d d d维特征向量;同理有边的特征矩阵 X e ∈ R m × c X^e \in R^{m \times c} Xe∈Rm×c:每一行为一条边的 c c c维特征向量。
Spatial-Temporal Graph:时空图。时空图是一种属性图,其中节点属性随时间动态变化。 时空图定义为:
需要区分特征向量和状态向量: 建议阅读图神经网络(GNN)的基本原理
III. Categorization And Frameworks
本节将介绍GNN的分类。
如表2所示:
GNN被分为RecGNN、ConvGNN(频域+空间域)、GAE以及STGNN,表的右边给出了对应的参考文献。
A. Taxonomy of Graph Neural Networks
(1)Recurrent Graph Neural Networks: GNN的先驱,其目的是学习具有循环神经结构的节点表示,RecGNN假设图中的一个节点不断地与它的邻居交换信息/消息,直到达到稳定的均衡。
(2)Convolutional Graph Neural Networks: ConvGNN将网格数据的卷积运算推广到Graph数据。主要思想:聚合节点
v
v
v自身的特征
x
v
x_v
xv和其邻居的特征
x
u
x_u
xu来生成节点
v
v
v的表示。与RecGNN不同,ConvGNN通过堆叠多个图卷积层来提取节点表示,如下所示:
(a)是用于节点分类的ConvGNN,(b)是用于图分类的ConvGNN。
(3)Graph Autoencoders: 图自编码器,GAE将节点/图编码到一个潜在的向量空间中,然后从编码信息中重构图数据。 GAE一般用于学习网络嵌入和图生成:在网络嵌入方面,GAE通过重构图结构信息(如图邻接矩阵)来学习潜在节点表示。对于图的生成,有些方法是逐步生成图的节点和边,而另一些方法是一次性输出一个图。 下图是用于网络嵌入的GAE:
(4)Spatial–Temporal Graph Neural Networks: 时空GNN,旨在从时空图中学习隐藏模式,如交通速度预测、驾驶员机动预测和人类行为识别。STGNN的关键思想:同时考虑空间依赖性和时间依赖性。 目前许多方法将图卷积与RNN或CNN结合以捕获空间依赖性来建模时间依赖性。下图是用于时空图预测的STGNN:
B. Frameworks
GNN的输出分为:
(1)Node Level: 输出与节点回归和节点分类任务相关。RecGNN和ConvGNN可以通过消息传递/图卷积提取高级节点表示,然后利用多感知器或Softmax层作为输出层,GNN能够以端到端方式执行节点级任务。
(2)Edge Level: 输出涉及到边缘分类和链接预测任务。比如以GNN中两个节点的状态作为输入,利用相似函数或神经网络来预测边缘的标记/连接强度。
(3)Graph Level: 输出与图分类任务相关。为了在图级别上获得较为有效的表示,GNN通常与池化和读出操作相结合。
训练框架:许多GNN(例如ConvGNN)可以在端到端学习框架中以(半)监督或纯粹无监督的方式进行训练,这取决于现有的学习任务和标签信息。
(1)Semisupervised Learning for Node-Level Classification: 节点级别分类的半监督学习,给定一个部分节点被标记而其余节点未标记的网络,ConvGNN可以有效地识别未标记节点的类标签。ConvGNN可以通过堆叠两个图卷积层和一个softmax层来实现多类分类。
(2)Supervised Learning for Graph-Level Classification: 图级别分类的监督学习,预测整个图的类标签。如下所示:
可以通过图卷积层(Gconv)、图池层(Pooling)和/或读出层(Readout)的组合来实现。Gconv负责精确高层次的节点表示,Pooling下采样,每次都将每个图粗化为子结构。Readout将每个图的节点表示折叠为一个图表示。最后通过将多层感知器MLP和softmax层应用于图的表示,可以建立一个端到端的图分类框架。
(3)Unsupervised Learning for Graph Embedding: 图嵌入的无监督学习,当图中没有可用的类标签时,我们可以在端到端框架中以完全无监督的方式学习图的嵌入。一种简单的方法是采用自编码器框架,其中编码器使用图卷积层将图嵌入到潜在表示中,在此基础上使用解码器重构图结构。另一种流行的方法是利用负抽样方法,将部分节点对作为负对进行抽样,而图中已有的具有链接的节点对是正对,然后应用逻辑回归层来区分正对和负对。
表3总结了具有代表性的RecGNN和ConvGNN,比较了各种模型的输入层、池化层、读出层和时间复杂度:
IV. Recurrent Graph Neural Networks
第四节讲述RecGNN的相关知识,实际上在之前的图神经网络(GNN)的基本原理中已经对RecGNN的原理进行了推导。
由于计算能力限制,早期RecGNN主要研究有向无环图。Scarselliet提出的GNN* 扩展了以前的循环模型来处理一般类型的图,例如,无环图、循环图、有向图和无向图。基于信息扩散机制,GNN*通过不断交换邻域信息来更新节点状态,直到达到稳定均衡(相互连接的节点间交换信息,GNN核心)。节点的隐藏状态由以下函数来进行周期性更新:
节点
v
v
v最初的状态向量为
h
v
(
0
)
h_v^{(0)}
hv(0),随机初始化。
u
u
u是
v
v
v的邻居节点,
x
v
x_v
xv和
x
u
x_u
xu是两个节点的特征向量,
x
v
,
u
e
x_{v,u}^e
xv,ue是边的特征向量,
h
u
(
t
−
1
)
h_u^{(t-1)}
hu(t−1)是
u
u
u上一时刻的状态向量。
可以看一下RNN的结构:
RNN的隐藏层当前状态不仅和当前输入有关,也和上一时刻的状态有关,这与RecGNN是一致的。
Gated GNN (GGNN),即门控GNN,其使用门控循环单位(GRU)作为递归函数。它的优势在于它不再需要用于协调参数以确保收敛。
GGNN中,一个节点隐藏状态由其之前的隐藏状态和邻居的隐藏状态(RNN中为之前隐藏状态和当前输入)更新:
这里
h
v
(
0
)
=
x
v
h_v^{(0)}=x_v
hv(0)=xv,GGNN使用反向传播时间(BPTT)算法来学习模型参数,GGNN对大图的计算不太友好,这是因为GGNN需要在所有节点上多次运行递归函数,需要将所有节点的中间状态存储在内存中。
随机稳态嵌入(SSE)提出了一种学习算法,可扩展到更大的图:对于比较大的图,可以采样一个batch,然后分别做节点上状态的更新和梯度的计算。为了保持稳定性,将SSE的递归函数定义为历史状态和新状态的加权平均值,其形式为:
α
\alpha
α是超参数,
h
v
(
0
)
h_v^{(0)}
hv(0)随机初始化。
值得一提的是,SSE并没有证明收敛性,即稳定节点状态的收敛标准未说明。
V. Convolutional Graph Neural Networks
本节讲述ConvGNN的相关知识。
RecGNN使用相同的图循环层(Grec)来更新节点的表示,而ConvGNN使用不同的图卷积层(Gconv)来更新节点表示。
前面讲到,ConvGNN分为两种:基于频域的和基于空间域的。其中基于频域的方法通过从图信号处理的角度引入过滤器(卷积核的集合)来定义图卷积,其中图卷积运算被解释为从图信号中去除噪声。 基于空间域的ConvGNN继承了RecGNN的思想,通过消息传递来定义图卷积运算。
A. Spectral-Based ConvGNN
基于频域的ConvGNN:假设图是无向的。无向图的归一化图拉普拉斯矩阵定义为:
L
=
I
n
−
D
−
(
1
/
2
)
A
D
−
(
1
/
2
)
L=I_n-D^{-(1/2)}AD^{-(1/2)}
L=In−D−(1/2)AD−(1/2)
其中
D
D
D是一个对角阵,对角上的元素表示对应节点的度。归一化图拉普拉斯矩阵具有实对称半正定的性质,因此可以被分解为:
L
=
U
Λ
U
T
L=U\Lambda U^T
L=UΛUT
其中
U
=
[
u
0
,
u
1
,
.
.
.
,
u
n
]
∈
R
n
×
n
U=[u_0, u_1,...,u_n] \in R^{n \times n}
U=[u0,u1,...,un]∈Rn×n是特征值排序的特征向量矩阵,
Λ
\Lambda
Λ是特征值对角矩阵,线代基础知识了。归一化图拉普拉斯矩阵的特征向量形成正交空间,即
U
T
U
=
I
U^TU=I
UTU=I。
对图进行处理时, x ∈ R n x \in R^n x∈Rn表示为所有节点的特征向量, x i x_i xi为第 i i i个节点的特征向量。 x x x的图傅里叶变换为: ℑ ( x ) = U T x \Im(x)=U^Tx ℑ(x)=UTx,逆图傅里叶变换为: ℑ − 1 ( x ^ ) = U x ^ \Im^{-1}(\hat{x})=U\hat{x} ℑ−1(x^)=Ux^,其中 x ^ \hat{x} x^表示傅里叶变换的结果信号。
由以上定义可知,图傅里叶变换将输入图信号投影到标准化空间,其中空间基由标准化图拉普拉斯算子的特征向量形成。原始输入信号可以被表示为: x = ∑ i x ^ i u i x= \sum_{i}\hat{x}_iu_i x=∑ix^iui(逆图傅里叶变换)。
有了以上定义后,输入信号与过滤器
g
∈
R
b
g \in R^b
g∈Rb间的卷积运算被定义为:
如果将过滤器表示为:
g
θ
=
d
i
a
g
(
U
T
g
)
g_{\theta}=diag(U^Tg)
gθ=diag(UTg),则图卷积可以简化为:
基于频域的ConvGNN都遵循以上定义,只是过滤器可能有所不同。
Spectral CNN假设过滤器
g
θ
=
Θ
i
,
j
(
k
)
g_{\theta}=\Theta_{i, j}^{(k)}
gθ=Θi,j(k)是一组可学习的参数,Spectral CNN的图卷积层定义为:
其中
k
k
k是层索引,
H
(
k
−
1
)
∈
R
n
×
f
k
−
1
H^{(k-1)} \in R^{n \times f_{k-1}}
H(k−1)∈Rn×fk−1是输入图信号,
H
0
=
X
H_0=X
H0=X,
f
k
−
1
f_{k-1}
fk−1为输入通道数,
f
k
f_k
fk为输出通道数。
其他的一些基于频域的ConvGNN,如ChebNet、CayleyNet和AGCN等,这里就不再详细介绍了。
B. Spatial-Based ConvGNN
基于空间域的ConvGNN:基于节点的空间关系来定义图卷积。
Image可以被视为Graph的特殊形式,每个像素代表一个节点,每个像素直接连接到其附近的像素:
对于3x3窗口,每个节点的邻域就是其周围8个像素点。 类似地,基于空间域的图卷积将中心节点的表示与相邻节点的表示进行卷积,得到中心节点的更新表示。
图的神经网络(NN4G)是基于空间域的ConvGNN的第一个工作,它通过直接汇总节点的邻域信息来执行图卷积,NN4G导出的下一层的节点状态公式为:
f
f
f是激活函数,
h
v
(
0
)
h_v^{(0)}
hv(0)初始化为零向量。上式的矩阵形式为:
扩散CNN (DCNN)认为图的卷积是一个扩散过程。它假设信息以一定的转移概率从一个节点转移到它的一个相邻节点,使信息分布在几轮后达到均衡。DCNN将扩散图卷积定义为:
其中
f
f
f是激活函数,概率转移矩阵
P
=
D
−
1
A
P=D^{-1}A
P=D−1A。由于扩散的平稳分布是概率转移矩阵幂级数的总和,因此DGC可以定义如下:
这里
W
(
k
)
∈
R
D
×
F
W^{(k)} \in R^{D \times F}
W(k)∈RD×F。需要注意的是,这里使用了概率转移矩阵的幂,这意味着远处的邻居对中心节点更新的贡献很少。
PGC-DGCNN基于最短路径增加了远处邻居的贡献。PGC-DGCNN定义了最短路径邻接矩阵
S
(
j
)
S^{(j)}
S(j):如果节点
v
v
v到结节点
u
u
u的最短路径长度为
j
j
j,则
S
v
,
u
(
j
)
=
1
,
否
则
为
0
S_{v,u}^{(j)}=1,否则为0
Sv,u(j)=1,否则为0。PGC-DGCNN中的图卷积运算定义如下:
式中
D
~
i
i
(
j
)
=
∑
l
S
i
,
l
(
j
)
\tilde{D}_{ii}^{(j)}=\sum_{l}S_{i,l}^{(j)}
D~ii(j)=∑lSi,l(j),
H
(
0
)
=
X
H_{(0)}=X
H(0)=X,
∣
∣
||
∣∣表示向量的连接。
其他的一些变种不再详细了解了。
C. Graph Pooling Modules
关于Graph Pooling在图解GNN:A Gentle Introduction to Graph Neural Networks一文中已经有了较为详细的描述。
在GNN生成了节点的状态向量之后,我们可以将它们用于最后的预测任务。然而,直接使用所有这些特征在计算上具有挑战性,因此,需要一种下采样策略。根据目标和它在网络中扮演的角色,这个策略有不同的名称:pooling或者readout。
其中:
- pooling操作的目的是通过降低节点采样以生成更小的表示,从而减少参数的大小,来避免过拟合和计算复杂性问题。
- readout操作主要用于基于节点表示生成图级表示,与pooling操作类似。
目前较为常见的Pooling操作有:sum、max以及mean:
Henaff等人表明:在GNN开始时进行一个简单的max/mean pooling操作对于降低图域的维数和降低昂贵的图傅里叶变换操作的代价尤为重要。此外,还有一些论文中使用Attention机制来增强mean/sum pooling。
然而,即使在Attention机制下,池化操作也不能令人满意,因为它使嵌入效率低下:无论图形大小如何,都会生成固定大小的嵌入。鉴于此,Vinyalset等人提出了Set2Set方法来生成一个随输入大小增加而增大的内存。然后,实现了一个LSTM,该LSTM打算在应用还原之前将依赖于顺序的信息集成到内存嵌入中,否则,就会破坏该信息。
Defferrardet等人通过以一种有意义的方式重新排列图的节点,以另一种方式解决了这个问题。他们在ChebNet中设计了一个有效的池化策略:输入图首先通过Graclus算法粗化成多个层次;粗化后,输入图及其粗化版本的节点被重新排列成一个平衡二叉树;然后从下到上任意聚合平衡二叉树,将相似的节点排列在一起。他们的结果表明:池化这样一个重新排列的信号比池化原始信号要有效得多。
Zhanget等人在DGCNN中提出了具有类似的一种池化策略SortPooling。它通过将节点按有意义的顺序重新排列来执行池化。与ChebNet不同,DGCNN根据节点在图中的结构角色对节点进行排序。将空间图卷积中图的无序节点特征视为连续的WL颜色,然后利用这些特征对节点进行排序。在对节点特征进行排序的同时,通过截断/扩展节点特征矩阵来统一图的大小。
上述几种池化方法主要考虑图的特征,忽略了图的结构信息。最近,提出了一种可微池化(DiffPool),它可以生成图的层次表示。与之前所有的粗化方法相比,DiffPool不是简单地将图中的节点聚类,而是在第k层学习到一个聚类分配矩阵S,记为
S
(
k
)
∈
R
n
k
×
n
k
+
1
S^{(k)} \in R^{n_k \times n_{k+1}}
S(k)∈Rnk×nk+1,其中
n
k
n_k
nk为第k层的节点数。矩阵
S
(
k
)
S^{(k)}
S(k)中的概率值是根据节点的特征和拓扑结构来生成的:
最近提出的SAGPool方法考虑了节点特征和图拓扑,并以自注意的方式学习池化操作。
总的来说,池化是减小图大小的基本操作。如何提高池化的有效性是一个有待研究的问题。
VI. Graph Autoencoders
第六节讲述图自编码器的相关知识。
阅读前建议先了解一下自编码器的知识:DL入门(2):自编码器(AutoEncoder)
GAE是一种将节点映射到潜在特征空间并从其潜在表示中解码图形信息的深层神经网络。
简单来说,需要先学习节点的状态向量,然后再从其中解码出图信息。因此,GAE一般用于学习网络嵌入表示或者来生成新的图。
下面将从网络嵌入和图生成两个方面来回顾GAE。
A. Network Embedding
GAE用于学习网络嵌入时的机理为:使用编码器来提取网络嵌入,并使用解码器来加强网络嵌入,以保留图的拓扑信息(如PPMI矩阵和邻接矩阵)。
早期的方法主要是利用多层感知器构建用于网络嵌入学习的GAE,下面讲解一些具体的实例。
用于图表示的深度神经网络(DNGR)使用堆叠降噪自编码器,通过多层感知器对PPMI矩阵进行编码和解码。
此外,结构深度网络嵌入(structural deep network embedding, SDNE)采用堆叠式自编码器,共同保持节点的一阶邻近度和二阶邻近度。
DNGR和SDNE只考虑节点结构信息,即节点对之间的连通性。它们忽略了可能包含描述节点本身属性的特征信息的节点。GAE* 利用GCN对节点结构信息和节点特征信息同时进行编码。GAE*的编码器由两个图卷积层组成,其形式为:
这里
Z
Z
Z表示图的网络嵌入矩阵,
f
f
f为ReLU,Gconv为图卷积。
GAE* 的解码器旨在通过重构图邻接矩阵,将节点关系信息从其嵌入中解码出来,其定义为:
这里
z
v
z_v
zv表示节点
v
v
v的嵌入表示。GAE*通过给定实邻接矩阵A和重构邻接矩阵
A
^
\hat{A}
A^最小化负交叉熵进行训练。
由于自编码器的容量,简单地重构图邻接矩阵可能会导致过拟合。Variational GAE (VGAE)是一种学习数据分布的变分GAE。关于变分图自编码器这里不再详细说明。
B. Graph Generation
对于多个图,GAE能够通过将图编码成隐藏表示,并将给定隐藏表示的图结构解码来学习图的生成分布。大多数用于图生成的GAE都是为了解决分子图生成问题而设计的,在药物发现中具有很高的实用价值。 这些方法要么以顺序的方式提出一个新的图,要么以全局的方式提出一个新的图。
这里的关键在于:将给定隐藏表示的图结构解码来学习图的生成分布。
顺序方法通过逐步提出节点和边来生成图。Gómez-Bombarelliet和Kusneret等人分别以深度CNN和RNN作为编码器和解码器,对名为SMILES的分子图串表示的生成过程进行建模。虽然这些方法都是应用于特定领域的,但通过迭代地向增长的图中添加节点和边,直到满足某个条件,也可以应用于一般的图。
图的深度生成模型(DeepGMG)假设一个图的概率是所有可能的节点排列的总和:
其中
π
\pi
π表示节点排序。DeepGMG通过一系列决策来生成图,即是否增加一个节点,增加哪个节点,是否增加一条边,以及哪个节点连接到新的节点。 生成节点和边的决策过程是基于节点状态和由RecGNN更新的增长图的图状态。
GraphRNN提出了一种图级RNN和一种边级RNN,对节点和边的生成过程进行建模。图级RNN每次在一个节点序列中添加一个新节点,而边缘级RNN生成一个二进制序列,表示新节点与序列中先前生成的节点之间的连接。
VII. Spatial–Temporal GNN
在许多真实世界的应用程序中,图在图结构和图输入方面都是动态的。STGNN在图的动态捕捉中占有重要的地位。这类方法的目标是在假定连接节点之间相互依赖的情况下,对动态节点输入进行建模。
STGNN同时捕获图的空间和时间依赖性。STGNN的任务可以是预测未来的节点值或标签,也可以是预测时空图标签。 STGNN有两个方向:基于RNN的方法和基于CNN的方法。
大多数基于RNN的方法通过使用图卷积过滤输入和传递到循环单元的隐藏状态来捕获时空相关性。为了说明这一点,假设一个简单的RNN采用这种形式:
其中
X
(
t
)
X_{(t)}
X(t)是
t
t
t时刻的节点特征。插入图卷积后,上式变成:
其中Gconv(·)为图卷积层。
图卷积循环网络(Graph convolutional recurrent network, GCRN)结合了LSTM网络和ChebNet。扩散卷积RNN (DCRNN)[72]将一个提议的扩散图卷积层纳入GRU网络。此外,DCRNN采用编码器-解码器框架预测未来K个step节点值。
基于RNN的方法存在耗时的迭代传播和梯度爆炸/消失问题。作为替代解决方案,基于CNN的方法以非递归的方式处理时空图,具有可并行计算、稳定梯度和低内存需求的优点。
如下图所示:
基于CNN的STGNN将一维CNN卷积层与图卷积层交织在一起,分别学习时间依赖和空间依赖。
CGCN将一维卷积层与ChebNet或GCN层进行集成。该算法通过顺序叠加一个门控一维卷积层、一个图形卷积层和另一个门控一维卷积层来构建时空块。ST-GCN利用一维卷积层和PGC层构成时空块。
VIII. Applications
由于图形结构数据的普遍存在,GNN具有广泛的应用。在本节中,将分别总结基准图数据集、评估方法和开源实现,然后详细介绍了GNN在各个领域的实际应用。
A. Data Sets
本文主要将数据集分为四类,分别是引文网络、生化图、社交网络和其他。
B. Evaluation and Open-Source Implementations
节点分类和图分类是评估RecGNN和ConvGNN性能的常用任务。
(1)节点分类:在节点分类中,大多数方法遵循基准数据集上的训练/验证/测试的标准分割,包括Cora、Citeseer、Pubmed、PPI和Reddit,他们报告了多次运行测试数据集的平均准确性或F1得分。
(2)图分类:在图分类中,研究人员经常采用十倍交叉验证(cv)进行模型评价。
(3)开源实现:Fey等人在PyTorch中发布了一个名为PyTorch Geometric的库,它实现了许多GNN。DGL在流行的深度学习平台(如PyTorch和MXNet)上也提供了许多GNN的快速实现。
C. Practical Applications
这部分给出了GNN的一些实际应用,比较重要。
一般任务如节点分类、图分类、网络嵌入、图生成和时空图预测等可以由GNN处理。其他与图相关的任务,如节点聚类、链接预测和图划分等,也可由GNN处理。
(1)Computer Vision
GNN在CV中的应用场景包括:场景图生成、点云分类和动作识别。
场景图生成模型的作用是将图像解析为由对象及其语义关系组成的语义图,另一种应用是通过生成给定场景图的真实图像来逆转这一过程。由于自然语言可以被解析为语义图(其中每个单词代表一个对象),因此在给出文本描述的情况下合成图像是一种很有前途的解决方案。
点云是激光雷达扫描记录的一组三维点,对点云进行分类和分割,能使激光雷达设备能够“看到”周围的环境。许多文献中将点云转换为最近邻图或上点图,并使用ConvGNN来研究拓扑结构。
动作识别:识别视频中包含的人类动作有助于从机器角度更好地理解视频内容。一些解决方案检测视频片段中人体关节的位置。人类由骨骼连接的关节自然会形成一个图形。考虑到人类关节位置的时间序列,一些文献应用STGNN学习人类的动作模式。
此外,GNN在CV中的应用方向还在不断增加。包括人机交互、少镜头图像分类、语义分割、视觉推理、问答等。
(2)Natural Language Processing
GNN在nlp中最常见的一个应用是文本分类,GNN可以利用文档或单词之间的相互关系来推断文档标签。
自然语言数据中也可能包含图结构,如句法依存树,其定义了句子中单词之间的句法关系。Marcheggiani和Titov提出了运行在CNN/RNN句子编码器之上的句法GCN:句法型GCN基于句子的句法依存树聚合隐藏词表示。Bastingset等将句法GCN应用到神经机器翻译任务中。
Graph-to-sequence是通过给定抽象单词的语义图(称为抽象意义表示)来生成具有相同含义的句子。Songet等提出了一种graph-LSTM来编码图级语义信息。Becket等将GGNN应用于图到序列学习和神经机器翻译。与之相反的任务是序列到图的学习:在知识发现过程中,根据句子生成语义图或知识图非常有用。
(3)Traffic
GNN在交通领域应用也比较广泛:准确预测交通网络中的交通速度、交通量或道路密度对智能交通系统至关重要。Zhanget和Liet等利用STGNN解决流量预测问题:他们将交通网络视为一个时空图,其中节点是安装在道路上的传感器,节点对之间的距离为边,每个节点以一个窗口内的平均交通速度作为动态输入特征。另一个工业级应用是出租车需求预测:在给定历史出租车需求、位置信息、天气数据和事件特征的情况下,yao等结合LSTM、CNN和LINE训练的网络嵌入,形成每个地点的联合表示,以预测某一时间段内某一地点的出租车需求量。
(4) Recommender Systems
推荐系统中的图以项和用户为节点:通过利用物品与物品、用户与用户、用户与物品以及内容信息之间的关系,能够产生高质量的推荐。推荐系统的关键是为一个项对用户的重要性打分。 因此,它可以被转换为一个链接预测问题。为了预测用户和商品之间缺失的链接,Berget等人和Yinget等人提出了一种使用ConvGNN作为编码器的GAE。
(5) Chemistry
在化学领域,研究者利用GNN来研究分子/化合物的图结构。在分子/化合物图中,原子被视为节点,化学键被视为边。化学领域中节点分类、图分类和图生成是分子/化合物图的三大主要任务,常见的应用有:学习分子指纹图谱、预测分子性质、推断蛋白质结构以及合成化合物。
(6)Others
GNN的应用并不局限于上述领域,其他的一些领域如程序验证、程序推理、社会影响预测、对抗攻击预防、脑网络、事件检测、组合优化等,GNN也在其中发挥了作用。
IX. Future Directions
虽然GNN在学习图数据方面已经证明了其强大的能力,但由于图的复杂性,仍存在挑战。在本节中,作者给出了GNN未来的四个发展方向。
A. Model Depth
深度学习的成功在于深度神经架构,然而,Liet表明,随着图卷积层数量的增加,ConvGNN的性能急剧下降。随着图卷积将相邻节点的表示推向彼此更近,理论上,在无限个图卷积层中,所有节点的表示将收敛到单个点。这就提出了一个问题:深入学习图数据是否是一个好的策略?
B. Scalability Tradeoff
GNN网络的可扩展性是以破坏图完整性为代价的。无论使用抽样还是聚类,模型都会丢失部分图信息。通过抽样,一个节点可能会错过它有影响的邻居。通过聚类,一个图可以被剥夺一个明显的结构模式。因此,如何权衡算法的可扩展性和图的完整性是未来的研究方向。
C. Heterogenity
目前大多数GNN都是应用于同质图,当前的GNN算法很难直接应用于异质图,因为异质图可能包含不同类型的节点和边缘,或者节点和边缘输入形式不同,如图像和文本。因此,需要开发新的方法来处理异质图。
D. Dynamicity
图在本质上是动态的,节点或边可能出现或消失,节点/边输入也可能随着时间的推移而改变。为了适应图的动态性,需要进行新的图卷积。虽然STGNN可以部分解决图的动态性问题,但很少有人考虑在动态空间关系的情况下如何进行图的卷积。
X. Conclusion
本文中对GNN进行了全面的概述:提供了一种分类方法,将GNN分为四类:RecGNN、ConvGNN、GAE和STGNN,并对这几类GNN进行了全面的回顾、比较和总结。然后介绍了GNN的广泛应用:总结了GNN的数据集、开源代码和模型评估。最后,提出了GNN未来的四个发展方向。