# INTRODUCTION
# 介绍
- 图数据的复杂性对现有的机器学习算法提出了重大挑战:
- 图可以是不规则的
- 一个图可能有不同大小的无序节点
- 来自一个图的节点可能有不同数量的邻居
- 一些重要的操作 (如卷积) 在图像域很容易计算,但很难应用到图域
二维卷积:在二维卷积中,图像被视为一个规则的网格,每个像素点是一个节点,像素点之间的连接形成了一个规则的邻域结构。二维卷积操作的基本步骤包括:
- 在二维卷积中,通过一个滤波器(filter)在图像上滑动,取红色节点及其邻居节点的像素值的加权平均值。这些邻居节点是有序且大小固定的。
- 滤波器的大小通常是固定的(例如 3x3),它在图像上滑动的过程中,产生了对图像的局部特征提取。
图卷积将二维卷积的思想推广到一般的图结构上,图结构可以是任何形式的节点和边的连接。图卷积的基本原理包括以下几个步骤:
- 邻居信息聚合:
- 对于图中的每一个节点,图卷积会从该节点的邻居节点中聚合信息。邻居节点可以是直接与该节点相连的其他节点。
- 聚合方式可以是加权平均、求和或最大值等操作。比如,如果使用加权平均,图卷积会考虑每个邻居节点的特征,并根据边的权重进行加权。
- 特征更新:
- 聚合完邻居节点的信息后,该节点的特征将被更新为聚合信息的结果。这个更新过程类似于二维卷积中的特征提取,即将邻域信息整合进来,生成新的节点表示。
- 更新过程可以通过一个线性变换(例如矩阵乘法)和一个非线性激活函数(如 ReLU)来实现,使得模型能够学习到复杂的特征表示。
- 堆叠多个卷积层:
- 为了捕捉更高层次的特征表示,可以堆叠多个图卷积层。每一层都会进一步聚合更广泛的邻居信息,从而捕捉到更多的图结构信息。
- 多层的图卷积可以看作是在更深的网络中传递和更新节点特征,使得最终的节点表示能够包含全局图结构的信息。
- 邻居信息聚合:
基本数学公式表达:
其中:
- 是图的邻接矩阵,表示图中节点之间的连接关系。
- $D $ 是度矩阵,表示每个节点的度数(即有多少个邻居)。
- 是第 $ l $ 层的节点特征矩阵。
- 特征矩阵(Feature Matrix)是图神经网络(GNN)中的一个关键概念,它用于表示图中每个节点的属性或特征。在不同的任务中,特征矩阵的具体形式和含义可能会有所不同,但其核心思想是为图中的每个节点分配一组数值,来描述该节点的属性或状态。
- 通常由符号 X 表示,大小为, 是图中节点的数量, 是每个节点的特征维度,即每个节点由 个数值来描述
- 在社交网络中,节点可能代表用户,每个用户的特征可以包括用户的年龄、性别、兴趣、所在城市等。如果有 5 个用户(节点),每个用户的特征用 3 个属性表示(例如年龄、性别和城市),那么特征矩阵的维度为。
- 是第 $ l$ 层的权重矩阵。
- 是激活函数(如 ReLU),用于引入非线性。
# 定义
# 1. 图(Graph)的定义
- 图(Graph): 图可以表示为,其中 $ VE $ 是边的集合。图中的节点用 表示,边用 表示,这表示从节点 指向 的一条边。
- 邻居(Neighborhood): 节点 $ v N (v) = { u \in V | (v, u) \in E } v$ 相连的所有节点的集合。
- 邻接矩阵(Adjacency Matrix): 邻接矩阵 $ A $ 是一个 的矩阵,其中 表示存在从 到 的边,否则 。
- 节点特征矩阵(Node Feature Matrix): 图中的节点可能会有属性(特征),用 表示。 是一个 的矩阵,其中 是节点 的特征向量,维度为 。
- 边特征矩阵(Edge Feature Matrix): 边也可能有属性,用 表示。 是一个 的矩阵,其中 是边 的特征向量,维度为 。
# 2. 方向图(Directed Graph)的定义
- 方向图: 一个方向图是指其所有的边都有方向的图结构。无向图可以看作是方向图的一个特例,其中每对相连节点之间有一对方向相反的边。
- 邻接矩阵的对称性: 如果邻接矩阵是对称的,则图为无向图。
# 3. 时空图(Spatial-Temporal Graph)的定义
- 时空图: 时空图是一种带有属性的图,其中节点的属性(特征)会随着时间动态变化。时空图表示为 ,其中 是节点在时间 的特征矩阵。
# 图神经网络分类
# 1. 递归图神经网络(Recurrent Graph Neural Networks, RecGNNs)
# 1.1 基本原理
- RecGNNs 的核心思想是通过递归地传播信息来学习节点的表示。每个节点会不断地从它的邻居那里接收信息并更新自身的状态,直到整个图达到某种稳定的平衡状态(即所有节点的表示不再发生显著变化)。
- 这种信息传播的过程类似于经典的递归神经网络(RNN),但它在图结构上进行操作。
# 1.2 公式
# 2. 卷积图神经网络(Convolutional Graph Neural Networks, ConvGNNs)
# 2.1 基本原理
- ConvGNNs 将卷积操作从二维网格数据(如图像)推广到图数据。与传统卷积神经网络类似,ConvGNNs 也是通过聚合邻域信息来更新每个节点的特征表示。
- ConvGNNs 与 RecGNNs 的主要区别在于,ConvGNNs 通常使用固定的卷积层数来进行操作,而不需要递归地传播信息直到平衡。
# 2.2 公式
# 2.3 具有多个图卷积层的 ConvGNN
# 图的各部分解析:
Graph (图):
- 图结构和特征矩阵 $ X $ 作为输入,图中的每个节点都由其特征向量表示。这些节点通过边相互连接,形成一个图结构。
Graph Convolutional Layer (图卷积层,Gconv):
- 图卷积层的作用: 图卷积层对每个节点进行特征聚合(feature aggregation),即将节点的特征向量与其邻居节点的特征向量进行结合。这种聚合能够捕捉到节点的局部图结构信息。
- 多层卷积: 图中展示了两个连续的图卷积层,每一层都对节点的特征进行聚合处理。第一层卷积聚合了节点的直接邻居的信息,第二层则进一步聚合了更远的邻居信息。
ReLU (非线性激活函数):
- 在每个图卷积层之后,应用非线性激活函数 ReLU(Rectified Linear Unit),其作用是引入非线性,从而使得模型能够学习到更复杂的表示。这一步非常类似于传统神经网络中的激活函数作用。
Outputs (输出):
- 经过多个图卷积层和激活函数的处理后,最终每个节点得到了其隐藏表示。这些表示包含了节点及其邻域的综合信息,是对输入节点特征的高层次表示。
- 输出可以用于各种任务,比如节点分类、链接预测或图分类等。
# 工作流程总结:
- 输入: 一个包含节点和边的图,以及每个节点的特征矩阵 $ X$。
- 图卷积操作: 每个图卷积层对节点的特征进行聚合,并应用非线性激活函数(ReLU)。
- 堆叠卷积层: 通过多个卷积层的堆叠,节点可以从更远的邻域中收集信息,从而获得更丰富的表示。
- 输出: 最终输出的节点表示包含了每个节点从其邻居那里聚合来的信息,可以用于各种图分析任务。
# 2.4 具有池化和读出层的用于图分类的 ConvGNN
这张图展示了一个卷积图神经网络(Convolutional Graph Neural Network, ConvGNN)用于图分类任务的完整流程,包括图卷积层(Gconv)、池化层(Pooling)、读出层(Readout)和多层感知机(MLP),最终通过 Softmax 层输出分类结果。
# 图的各部分解析:
- Graph (图) 和 X (特征矩阵):
- 输入的图包含节点和边,节点具有特征矩阵 $ X$。这些特征将被传递到图卷积层中进行处理。
- Graph Convolutional Layers (图卷积层,Gconv):
- 这些层的作用是对每个节点的特征进行聚合,将邻居节点的特征信息汇总到当前节点中,从而更新节点的表示。
- 在图中,两个图卷积层通过多次聚合操作,逐步提取更高层次的节点特征。
- Pooling Layer (池化层):
- 池化层用于对图进行简化(或称为图的 “粗化”),即将原始图中的节点聚合成较少的 “子图”。这样做的目的是减少图的规模,使得每个节点表示更高层次的图结构信息。
- 经过池化操作,每个子图的节点表示将包含更多图的全局信息。
- Readout Layer (读出层):
- 读出层的作用是将所有节点的表示整合为一个全局的图表示。常见的整合方式包括对所有节点表示进行求和或取平均值。
- 读出操作生成了一个代表整个图的向量,这个向量将作为分类器的输入。
- MLP (多层感知机) 和 Softmax:
- 多层感知机(MLP)是一个全连接的神经网络层,用于对读出层生成的全局图表示进行进一步处理。
- 最后一层是 Softmax 层,它将 MLP 的输出转换为各个类别的概率分布,最终输出图的分类结果 。
# 工作流程总结:
- 输入: 包含节点和边的图,以及节点的特征矩阵 $ X$。
- 图卷积层: 对节点特征进行聚合,提取局部和全局图结构信息。
- 池化层: 将图简化为子图,进一步提取高层次表示。
- 读出层: 整合所有节点的表示为全局图表示。
- MLP 和 Softmax: 通过全连接网络和 Softmax 层对全局图表示进行分类,输出最终的分类结果。
# 基于频谱的卷积图神经网络(Spectral-based ConvGNNs)
# 3. 图自编码器(Graph Autoencoders, GAEs)
# 3.1 基本原理
- 图自编码器是无监督学习模型,旨在将图的节点或整个图嵌入到一个低维的潜在空间中,然后通过解码器从该潜在表示中重建图结构。
- GAEs 通常用于学习图的嵌入表示,这些嵌入可以用于下游任务(如分类、聚类等)。
# 3.2 公式
图自编码器的基本架构包括编码器和解码器两部分:
编码器: 编码器将图的特征嵌入到一个低维潜在空间中,常见的编码器形式为: 其中:
- 是低维的潜在嵌入矩阵。
- 是节点特征矩阵。
- 是图的邻接矩阵。
解码器: 解码器试图从嵌入表示中重建图结构,常见的解码器形式为: 其中:
- 是重建后的邻接矩阵。
- 是嵌入矩阵的转置。
- 是激活函数,如 sigmoid。
GAE 的目标是最小化原始图的邻接矩阵 与重建后的邻接矩阵 之间的差异,这通常通过最小化重建损失来实现。
# 3.3 用于网络嵌入的 GAE
这张图展示了一个图自编码器(Graph Autoencoder, GAE)的工作流程,用于网络嵌入。GAE 的目标是将图嵌入到低维空间中,然后重构图的邻接矩阵,通过最小化实际邻接矩阵和重构邻接矩阵之间的差异来进行训练。
# 图的各部分解析:
- 输入 (A 和 X):
- A (邻接矩阵): 输入图的邻接矩阵 $ A $ 表示图的结构信息,描述了图中节点之间的连接关系。
- X (特征矩阵): 输入图的节点特征矩阵 $ X $ 包含了每个节点的属性信息。这些信息将被传递到编码器中处理。
- Encoder (编码器):
- 编码器使用图卷积层(Gconv)来对每个节点进行特征聚合,从而生成节点的嵌入表示 。
- 图卷积层逐层处理节点特征,将邻居节点的特征信息融合到当前节点的表示中,从而生成更具全局信息的节点嵌入。
- Z (节点嵌入):
- 编码器的输出是节点嵌入矩阵 ,其中每个节点 v 对应一个嵌入向量 。这些嵌入向量位于一个低维的潜在空间中,捕捉了图的结构和节点属性信息。
- Decoder (解码器):
- 解码器的任务是根据节点嵌入矩阵 $ Z $ 来重构图的邻接矩阵。
- 重构过程: 解码器计算节点嵌入的两两距离(例如通过点积 ),并通过一个非线性激活函数 来生成重构后的邻接矩阵。
- Output (重构的邻接矩阵):
- 输出的 是根据节点嵌入重构的邻接矩阵。模型通过将 与原始邻接矩阵 进行比较,计算它们之间的差异并最小化这种差异,从而优化模型参数。
- 这种优化过程使得节点的嵌入 能够捕捉到图的结构信息。
# 工作流程总结:
- 输入: 包含节点特征和邻接矩阵的图数据。
- 编码器: 使用图卷积层对节点特征进行聚合,生成低维嵌入表示 。
- 解码器: 根据节点嵌入 $ Z$ 重构邻接矩阵 ,并通过最小化重构误差来训练模型。
- 输出: 重构的邻接矩阵 用于评估模型性能,节点嵌入 可用于下游任务,如节点分类或图聚类。
# 4. 时空图神经网络(Spatial-Temporal Graph Neural Networks, STGNNs)
# 4.1 基本原理
- STGNNs 专注于处理节点属性随时间动态变化的图结构,特别适用于需要同时考虑空间和时间依赖性的任务,如交通预测和动作识别。
- STGNNs 通常结合图卷积和时间序列建模方法(如 RNN 或 CNN)来捕捉这些依赖性。
# 4.2 公式
# 4.3 时空图预测的 STGNN
这张图展示了时空图神经网络(Spatial-Temporal Graph Neural Network, STGNN)的工作流程,该模型用于处理具有时空依赖性的图数据。STGNN 将图卷积(Graph Convolution, Gconv)和卷积神经网络(Convolutional Neural Network, CNN)结合在一起,用于捕捉图结构中的空间依赖性和时间维度上的动态变化。
# 图的各部分解析:
- 输入 (A 和 X):
- A (邻接矩阵随时间变化): 输入图的邻接矩阵 是随时间变化的,表示图结构在不同时间点的连接关系。这种动态邻接矩阵捕捉了节点之间的时空依赖性。
- X (特征矩阵随时间变化): 输入的节点特征矩阵 $ X$ 也是随时间变化的,表示每个节点在不同时间点的属性。这反映了节点特征随时间的动态变化。
- Graph Convolutional Layer (图卷积层,Gconv):
- 图卷积层用于提取图结构中的空间依赖性。每一层图卷积操作都会将邻居节点的特征信息聚合到当前节点中,更新节点的表示。
- 图中展示了多个图卷积层,逐层提取节点的空间信息。
- Convolutional Neural Network Layer (CNN):
- 卷积神经网络层用于捕捉节点特征的时间依赖性。通过在时间维度上应用卷积操作,CNN 能够提取节点特征随时间变化的模式。
- 图中展示了多个 CNN 层,与图卷积层交替使用,以同时捕捉空间和时间依赖性。
- MLP (多层感知机):
- 在通过多个图卷积层和 CNN 层提取了时空特征后,使用多层感知机(MLP)进一步处理这些特征,并生成最终的输出表示。
- Output (输出):
- 最后的输出 $ y$ 通常是一个分类或回归的结果,用于预测图中的节点或整个图的某种属性。例如,可能是对节点的分类、图的预测或时间序列的回归任务。
# 工作流程总结:
- 输入: 动态图的邻接矩阵 $ A X$,它们都随时间变化。
- 图卷积层: 提取图结构中的空间依赖性信息。
- CNN 层: 提取节点特征的时间依赖性信息。
- 多层感知机: 对时空特征进行进一步处理,生成最终的分类或回归结果。
- 输出: 预测图的某种属性或节点的某种状态。