| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> TNNLS | GNN综述:A Comprehensive Survey on Graph Neural Networks -> 正文阅读 |
|
[人工智能]TNNLS | GNN综述:A Comprehensive Survey on Graph Neural Networks |
目录前言
本文的内容较多,在最开始时先大致总结一下:
阅读本文前建议先阅读: Abstract近年来,深度学习已经彻底改变了许多机器学习任务,如图像分类和视频处理以及语音识别和自然语言理解。这些任务中的数据通常是欧几里得数据。但如今在越来越多的应用程序中,数据由非欧几里德域生成,并表示为具有复杂关系和对象间相互依赖关系的图结构。图数据的复杂性对现有的机器学习算法提出了重大挑战。 GNN作为一种解决方案,是近年来比较热门的一个方向。本文对图神经网络(GNN)在数据挖掘和机器学习领域进行了全面地概述。 本文将当前最前沿的GNN划分为4类:循环GNN、卷积GNN、图自编码器和时空GNN。同时本文讨论了GNN在各个领域的应用,总结了GNN的开源代码、基准数据集和模型评估。最后,提出了GNN未来可能的研究方向。 I. Introduction近年来神经网络的成功促进了模式识别和数据挖掘的研究,如CNN、RNN和AE(自编码器)等应用广泛。 深度学习在许多领域的成功部分归因于:
前面讲的几种图嵌入算法就属于第三种。 图数据对现有的机器学习算法提出了以下挑战:
在CNN、RNN和AE的推动下,GNN逐渐发展起来。例如图卷积可以看作是二维卷积推广而来: 本文贡献:
II. Background And DefinitionA. 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所示: 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通过堆叠多个图卷积层来提取节点表示,如下所示: (3)Graph Autoencoders: 图自编码器,GAE将节点/图编码到一个潜在的向量空间中,然后从编码信息中重构图数据。 GAE一般用于学习网络嵌入和图生成:在网络嵌入方面,GAE通过重构图结构信息(如图邻接矩阵)来学习潜在节点表示。对于图的生成,有些方法是逐步生成图的节点和边,而另一些方法是一次性输出一个图。 下图是用于网络嵌入的GAE: (4)Spatial–Temporal Graph Neural Networks: 时空GNN,旨在从时空图中学习隐藏模式,如交通速度预测、驾驶员机动预测和人类行为识别。STGNN的关键思想:同时考虑空间依赖性和时间依赖性。 目前许多方法将图卷积与RNN或CNN结合以捕获空间依赖性来建模时间依赖性。下图是用于时空图预测的STGNN: B. FrameworksGNN的输出分为: 训练框架:许多GNN(例如ConvGNN)可以在端到端学习框架中以(半)监督或纯粹无监督的方式进行训练,这取决于现有的学习任务和标签信息。 (2)Supervised Learning for Graph-Level Classification: 图级别分类的监督学习,预测整个图的类标签。如下所示: (3)Unsupervised Learning for Graph Embedding: 图嵌入的无监督学习,当图中没有可用的类标签时,我们可以在端到端框架中以完全无监督的方式学习图的嵌入。一种简单的方法是采用自编码器框架,其中编码器使用图卷积层将图嵌入到潜在表示中,在此基础上使用解码器重构图结构。另一种流行的方法是利用负抽样方法,将部分节点对作为负对进行抽样,而图中已有的具有链接的节点对是正对,然后应用逻辑回归层来区分正对和负对。 表3总结了具有代表性的RecGNN和ConvGNN,比较了各种模型的输入层、池化层、读出层和时间复杂度: IV. Recurrent Graph Neural Networks第四节讲述RecGNN的相关知识,实际上在之前的图神经网络(GNN)的基本原理中已经对RecGNN的原理进行了推导。 由于计算能力限制,早期RecGNN主要研究有向无环图。Scarselliet提出的GNN* 扩展了以前的循环模型来处理一般类型的图,例如,无环图、循环图、有向图和无向图。基于信息扩散机制,GNN*通过不断交换邻域信息来更新节点状态,直到达到稳定均衡(相互连接的节点间交换信息,GNN核心)。节点的隐藏状态由以下函数来进行周期性更新: 可以看一下RNN的结构: Gated GNN (GGNN),即门控GNN,其使用门控循环单位(GRU)作为递归函数。它的优势在于它不再需要用于协调参数以确保收敛。 GGNN中,一个节点隐藏状态由其之前的隐藏状态和邻居的隐藏状态(RNN中为之前隐藏状态和当前输入)更新: 随机稳态嵌入(SSE)提出了一种学习算法,可扩展到更大的图:对于比较大的图,可以采样一个batch,然后分别做节点上状态的更新和梯度的计算。为了保持稳定性,将SSE的递归函数定义为历史状态和新状态的加权平均值,其形式为: 值得一提的是,SSE并没有证明收敛性,即稳定节点状态的收敛标准未说明。 V. Convolutional Graph Neural Networks本节讲述ConvGNN的相关知识。 前面讲到,ConvGNN分为两种:基于频域的和基于空间域的。其中基于频域的方法通过从图信号处理的角度引入过滤器(卷积核的集合)来定义图卷积,其中图卷积运算被解释为从图信号中去除噪声。 基于空间域的ConvGNN继承了RecGNN的思想,通过消息传递来定义图卷积运算。 A. Spectral-Based ConvGNN基于频域的ConvGNN:假设图是无向的。无向图的归一化图拉普拉斯矩阵定义为: 对图进行处理时, 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=∑i?x^i?ui?(逆图傅里叶变换)。 有了以上定义后,输入信号与过滤器
g
∈
R
b
g \in R^b
g∈Rb间的卷积运算被定义为: Spectral CNN假设过滤器
g
θ
=
Θ
i
,
j
(
k
)
g_{\theta}=\Theta_{i, j}^{(k)}
gθ?=Θi,j(k)?是一组可学习的参数,Spectral CNN的图卷积层定义为: 其他的一些基于频域的ConvGNN,如ChebNet、CayleyNet和AGCN等,这里就不再详细介绍了。 B. Spatial-Based ConvGNN基于空间域的ConvGNN:基于节点的空间关系来定义图卷积。 Image可以被视为Graph的特殊形式,每个像素代表一个节点,每个像素直接连接到其附近的像素: 图的神经网络(NN4G)是基于空间域的ConvGNN的第一个工作,它通过直接汇总节点的邻域信息来执行图卷积,NN4G导出的下一层的节点状态公式为: 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中的图卷积运算定义如下: 其他的一些变种不再详细了解了。 C. Graph Pooling Modules关于Graph Pooling在图解GNN:A Gentle Introduction to Graph Neural Networks一文中已经有了较为详细的描述。 在GNN生成了节点的状态向量之后,我们可以将它们用于最后的预测任务。然而,直接使用所有这些特征在计算上具有挑战性,因此,需要一种下采样策略。根据目标和它在网络中扮演的角色,这个策略有不同的名称:pooling或者readout。 其中:
目前较为常见的Pooling操作有:sum、max以及mean: 然而,即使在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 EmbeddingGAE用于学习网络嵌入时的机理为:使用编码器来提取网络嵌入,并使用解码器来加强网络嵌入,以保留图的拓扑信息(如PPMI矩阵和邻接矩阵)。 早期的方法主要是利用多层感知器构建用于网络嵌入学习的GAE,下面讲解一些具体的实例。 用于图表示的深度神经网络(DNGR)使用堆叠降噪自编码器,通过多层感知器对PPMI矩阵进行编码和解码。 此外,结构深度网络嵌入(structural deep network embedding, SDNE)采用堆叠式自编码器,共同保持节点的一阶邻近度和二阶邻近度。 DNGR和SDNE只考虑节点结构信息,即节点对之间的连通性。它们忽略了可能包含描述节点本身属性的特征信息的节点。GAE* 利用GCN对节点结构信息和节点特征信息同时进行编码。GAE*的编码器由两个图卷积层组成,其形式为: GAE* 的解码器旨在通过重构图邻接矩阵,将节点关系信息从其嵌入中解码出来,其定义为: 由于自编码器的容量,简单地重构图邻接矩阵可能会导致过拟合。Variational GAE (VGAE)是一种学习数据分布的变分GAE。关于变分图自编码器这里不再详细说明。 B. Graph Generation对于多个图,GAE能够通过将图编码成隐藏表示,并将给定隐藏表示的图结构解码来学习图的生成分布。大多数用于图生成的GAE都是为了解决分子图生成问题而设计的,在药物发现中具有很高的实用价值。 这些方法要么以顺序的方式提出一个新的图,要么以全局的方式提出一个新的图。 这里的关键在于:将给定隐藏表示的图结构解码来学习图的生成分布。 顺序方法通过逐步提出节点和边来生成图。Gómez-Bombarelliet和Kusneret等人分别以深度CNN和RNN作为编码器和解码器,对名为SMILES的分子图串表示的生成过程进行建模。虽然这些方法都是应用于特定领域的,但通过迭代地向增长的图中添加节点和边,直到满足某个条件,也可以应用于一般的图。 图的深度生成模型(DeepGMG)假设一个图的概率是所有可能的节点排列的总和: GraphRNN提出了一种图级RNN和一种边级RNN,对节点和边的生成过程进行建模。图级RNN每次在一个节点序列中添加一个新节点,而边缘级RNN生成一个二进制序列,表示新节点与序列中先前生成的节点之间的连接。 VII. Spatial–Temporal GNN在许多真实世界的应用程序中,图在图结构和图输入方面都是动态的。STGNN在图的动态捕捉中占有重要的地位。这类方法的目标是在假定连接节点之间相互依赖的情况下,对动态节点输入进行建模。 STGNN同时捕获图的空间和时间依赖性。STGNN的任务可以是预测未来的节点值或标签,也可以是预测时空图标签。 STGNN有两个方向:基于RNN的方法和基于CNN的方法。 大多数基于RNN的方法通过使用图卷积过滤输入和传递到循环单元的隐藏状态来捕获时空相关性。为了说明这一点,假设一个简单的RNN采用这种形式: 图卷积循环网络(Graph convolutional recurrent network, GCRN)结合了LSTM网络和ChebNet。扩散卷积RNN (DCRNN)[72]将一个提议的扩散图卷积层纳入GRU网络。此外,DCRNN采用编码器-解码器框架预测未来K个step节点值。 基于RNN的方法存在耗时的迭代传播和梯度爆炸/消失问题。作为替代解决方案,基于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 场景图生成模型的作用是将图像解析为由对象及其语义关系组成的语义图,另一种应用是通过生成给定场景图的真实图像来逆转这一过程。由于自然语言可以被解析为语义图(其中每个单词代表一个对象),因此在给出文本描述的情况下合成图像是一种很有前途的解决方案。 点云是激光雷达扫描记录的一组三维点,对点云进行分类和分割,能使激光雷达设备能够“看到”周围的环境。许多文献中将点云转换为最近邻图或上点图,并使用ConvGNN来研究拓扑结构。 动作识别:识别视频中包含的人类动作有助于从机器角度更好地理解视频内容。一些解决方案检测视频片段中人体关节的位置。人类由骨骼连接的关节自然会形成一个图形。考虑到人类关节位置的时间序列,一些文献应用STGNN学习人类的动作模式。 此外,GNN在CV中的应用方向还在不断增加。包括人机交互、少镜头图像分类、语义分割、视觉推理、问答等。 (2)Natural Language Processing 自然语言数据中也可能包含图结构,如句法依存树,其定义了句子中单词之间的句法关系。Marcheggiani和Titov提出了运行在CNN/RNN句子编码器之上的句法GCN:句法型GCN基于句子的句法依存树聚合隐藏词表示。Bastingset等将句法GCN应用到神经机器翻译任务中。 Graph-to-sequence是通过给定抽象单词的语义图(称为抽象意义表示)来生成具有相同含义的句子。Songet等提出了一种graph-LSTM来编码图级语义信息。Becket等将GGNN应用于图到序列学习和神经机器翻译。与之相反的任务是序列到图的学习:在知识发现过程中,根据句子生成语义图或知识图非常有用。 (3)Traffic (4) Recommender Systems (5) Chemistry (6)Others IX. Future Directions虽然GNN在学习图数据方面已经证明了其强大的能力,但由于图的复杂性,仍存在挑战。在本节中,作者给出了GNN未来的四个发展方向。 A. Model Depth深度学习的成功在于深度神经架构,然而,Liet表明,随着图卷积层数量的增加,ConvGNN的性能急剧下降。随着图卷积将相邻节点的表示推向彼此更近,理论上,在无限个图卷积层中,所有节点的表示将收敛到单个点。这就提出了一个问题:深入学习图数据是否是一个好的策略? B. Scalability TradeoffGNN网络的可扩展性是以破坏图完整性为代价的。无论使用抽样还是聚类,模型都会丢失部分图信息。通过抽样,一个节点可能会错过它有影响的邻居。通过聚类,一个图可以被剥夺一个明显的结构模式。因此,如何权衡算法的可扩展性和图的完整性是未来的研究方向。 C. Heterogenity目前大多数GNN都是应用于同质图,当前的GNN算法很难直接应用于异质图,因为异质图可能包含不同类型的节点和边缘,或者节点和边缘输入形式不同,如图像和文本。因此,需要开发新的方法来处理异质图。 D. Dynamicity图在本质上是动态的,节点或边可能出现或消失,节点/边输入也可能随着时间的推移而改变。为了适应图的动态性,需要进行新的图卷积。虽然STGNN可以部分解决图的动态性问题,但很少有人考虑在动态空间关系的情况下如何进行图的卷积。 X. Conclusion本文中对GNN进行了全面的概述:提供了一种分类方法,将GNN分为四类:RecGNN、ConvGNN、GAE和STGNN,并对这几类GNN进行了全面的回顾、比较和总结。然后介绍了GNN的广泛应用:总结了GNN的数据集、开源代码和模型评估。最后,提出了GNN未来的四个发展方向。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 22:29:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |