图神经网络综述:模型与应用
图神经网络综述:模型与应用
引言
图是一种数据结构,它对一组对象(节点)及其关系(边)进行建模。近年来,由于图结构的强大表现力,用机器学习方法分析图的研究越来越受到重视。图神经网络(GNN)是一类基于深度学习的处理图域信息的方法。由于其较好的性能和可解释性,GNN 最近已成为一种广泛应用的图分析方法。
GNN 的第一个动机源于卷积神经网络(CNN)。CNN 的广泛应用带来了机器学习领域的突破并开启了深度学习的新时代。然而 CNN 只能在规则的 Euclidean 数据上运行,如图像(2 维网格)和文本(1 维序列)。如何将 CNN 应用于图结构这一非欧几里德空间,成为 GNN 模型重点解决的问题。
GNN 的另一个动机来自图嵌入(Graph Embedding),它学习图中节点、边或子图的低维向量空间表示。DeepWalk、LINE、SDNE 等方法在网络表示学习领域取得了很大的成功。然而,这些方法在计算上较为复杂并且在大规模上的图上并不是最优的,GNN 旨在解决这些问题。
这篇文章对图神经网络进行了广泛的总结,并做出了以下贡献:
- 文章详细介绍了图神经网络的经典模型。主要包括其原始模型,不同的变体和几个通用框架。
- 文章将图神经网络的应用系统地归类为结构化场景、非结构化场景和其他场景中,并介绍了不同场景中的主要应用。
- 本文为未来的研究提出四个未解决的问题。文章对每个问题进行了详细分析,并提出未来的研究方向。
模型
在模型这一部分中,文章首先介绍了最经典的图神经网络模型 GNN,具体阐述了 GNN 的模型与计算方式,然而 GNN 模型仍然存在一定的限制,比如较高的计算复杂度以及表示能力不足等等。
后续的很多工作致力于解决 GNN 存在的种种问题,在 2.2 一节中文章详细介绍了 GNN 的不同变体。具体来说,文章分别介绍了适应于不同图类型、采用不同的信息传递方式以及采用了不同的训练方法的变体。
在 2.2.1 节中,文章介绍了处理不同图类型的 GNN 变体,包括有向图、异质图和具有边信息的图。在 2.2.2 节中,文章对于采用不同信息传递方式的变体进行了总结与概括。主要分为以下四个类别:
卷积。Graph Convolutional Network(GCN)希望将卷积操作应用在图结构数据上,主要分为Spectral Method和Spatial Method(Non-spectral Method)两类。Spectral Method希望使用谱分解的方法,应用图的拉普拉斯矩阵分解进行节点的信息收集。Spatial Method直接使用图的拓扑结构,根据图的邻居信息进行信息收集。
注意力机制。Graph Attention Network 致力于将注意力机制应用在图中的信息收集阶段。
门机制。这些变体将门机制应用于节点更新阶段。Gated graph neural network 将 GRU 机制应用于节点更新。很多工作致力于将 LSTM 应用于不同类型的图上,根据具体情境的不同,可以分为 Tree LSTM、Graph LSTM 和 Sentence LSTM 等。
残差连接。注意到堆叠多层图神经网络可能引起信息平滑的问题,很多工作将残差机制应用于图神经网络中,文中介绍了 Highway GNN 和 Jump Knowledge Network 两种不同的处理方式。
文章还对于不同的信息传递方式进行了公式化总结。简单来说,信息传递函数主要包括信息收集(agggregation)和节点信息更新(update)两个部分,在表格中列出了每种方法的不同配置。
扩展1:什么是Euclidean数据?
在我们日常生活中,最常见到的媒体介质莫过于是图片(image)
和视频(video)
以及语音(voice)
了,这些数据有一个特点就是:“排列整齐”。什么叫做排列整齐呢?举例子来说,图片可以用矩阵来表达其像素,就如同下图所示:
对于某个节点,我们很容易可以找出其邻居节点,就在旁边嘛,不偏不倚。而且,图片数据天然的,节点和邻居节点有着统计上的相关性,因此能够找出邻居节点意味着可以很容易地定义出卷积这个操作出来,而我们在深度学习的过程中知道,卷积这个操作是提取局部特征以及层次全局特征的利器,因此图片可以很容易定义出卷积操作出来,并且在深度网络中进行进一步操作。
而且,因为这类型的数据排列整齐,不同样本之间可以容易的定义出“距离”这个概念出来。我们且思考,假设现在有两个图片样本,尽管其图片大小可能不一致,但是总是可以通过空间下采样(池化pooling,目的就是用来降低特征的维度并保留有效信息,一定程度上可以避免过拟合)的方式将其统一到同一个尺寸的,然后直接逐个像素点进行相减后取得平方和,求得两个样本之间的欧几里德距离是完全可以进行的。如下式所见:
扩展2:非欧几里得结构样本
非欧几里德结构的样本总得来说有两大类型,分别是图(Graph)数据和流形数据,如下图所示:
这两类数据有个特点就是,排列不整齐,比较的随意。具体体现在:对于数据中的某个点,难以定义出其邻居节点出来,或者是不同节点的邻居节点的数量是不同的,这个其实是一个特别麻烦的问题,因为这样就意味着难以在这类型的数据上定义出和图像等数据上相同的卷积操作出来,而且因为每个样本的节点排列可能都不同,比如在生物医学中的分子筛选中,显然这个是一个Graph数据的应用,但是我们都明白,不同的分子结构的原子连接数量,方式可能都是不同的,因此难以定义出其欧几里德距离出来,这个是和我们的欧几里德结构数据明显不同的。因此这类型的数据不能看成是在欧几里德样本空间中的一个样本点了,而是要想办法将其嵌入(embed)到合适的欧几里德空间后再进行度量。而我们现在流行的Graph Neural Network便可以进行这类型的操作。
图神经网络分类
大致可以分为4类。
-
Recurrent graph neural networks(RecGNNs)递归图神经网络
RecGNNs旨在使用递归神经结构学习节点表示。它们假设图中的一个节点不断与其邻居进行信息/消息交换,直到达到稳定的平衡状态。RecGNNs在概念上非常重要,对后续对卷积图神经网络的研究有一定的启发作用。后来的卷积图神经网络继承了其中的消息传递的理念。
-
Convolutional graph neural networks (ConvGNNs) 图卷积神经网络
图卷积神经网络将卷积的概念从欧式结构的数据扩展到图结构的数据。图卷积的基本思路是聚合一个节点周围节点的特征,用以生成该节点自身的特征。图卷积网络堆叠了多个“图卷积层”,用来提取各个节点的高层次信息。图卷积神经网络具体分为谱方法(Spectral methods)和空间方法(Spatial methods)。谱方法的卷积操作依赖于图的拉普拉斯矩阵的特征值和特征向量。空间方法的卷积则直接在图的邻域上进行。
-
Graph autoencoders (GAEs) 图自编码器
图自编码器是一种无监督的学习方式。它将图编码成一个隐式向量,通过编码信息来重建图中的数据。图自编码器用于学习网络中的嵌入,以及生成图的生成式分布。图自编码器被广泛应用于社交网络分析、生物信息学和推荐系统中。通过学习有效的图表示,图自编码器有助于对复杂关系数据的理解和应用。
-
Spatial-temporal graph neural networks (STGNNs) 时空图神经网络
时空图神经网络用于从时空图中,学习隐藏的模式。时空数据通常是指具有时间和空间维度的数据,例如移动物体的轨迹、气象数据、交通流量等。这些数据通常以图的形式表示,其中节点代表地点或实体,边代表时空关系。时空图可以是有向的或无向的,具体取决于应用场景。ST-GNN的关键任务是建模时空数据中的动态关系。它可以通过不同的方式来处理时空数据,例如通过对每个时刻的快照建立图,或者通过在图上引入时间信息来捕捉动态性。这使得ST-GNN能够在时间上进行推理和预测。ST-GNN学习每个节点的表示,使得这些表示包含了节点的属性信息以及与其他节点的时空关系。这有助于对节点进行时空上的预测或分类。ST-GNN在许多应用领域都有广泛的应用,包括交通管理(交通流量预测、路径规划)、气象预测、地理信息系统(GIS)、社交网络分析等。在这些领域中,ST-GNN可以帮助理解时空数据中的模式、趋势和异常。
关键概念与工作原理
图神经网络中一些关键概念和工作原理如下:
节点表示(Node Embedding):GNN的主要任务之一是学习每个节点的表示(或嵌入)。这些表示通常是一个固定维度的向量,用于捕捉节点的特征。GNN通过聚合节点的邻居节点信息来更新节点表示。这个过程在每个图卷积层中迭代进行。
图卷积(Graph Convolution):图卷积是GNN中的核心操作。在每一层,它会考虑节点的邻居信息,并使用权重来聚合这些信息以更新节点的表示。这使得节点能够捕捉到周围节点的信息,从而改善*节点的分类或预测任务。
聚合函数(Aggregation Function):在图卷积中,节点邻居的信息被聚合成一个新的节点表示。常见的聚合函数包括求和、平均值、最大值等。不同的聚合函数可以用于不同的任务和图结构。
图池化(Graph Pooling):类似于卷积神经网络中的池化操作,图池化用于减小图的规模和复杂性。它可以通过合并节点或边来减小图的大小,以便在后续层中处理更抽象的信息。
任务层(Task Layer):GNN通常最后会连接一个任务层,用于执行具体的任务,如节点分类、图分类、链接预测等。任务层的结构取决于所解决的任务类型。
反向传播(Backpropagation):与其他深度学习模型一样,GNN使用反向传播算法来更新模型参数,以最小化损失函数。这使得模型能够从训练数据中学习,并提高其性能。