图神经网络架构全面解析:GCN、GAT与MPNN详解

传统数据表示与图数据

传统深度学习应用中的数据集通常表示在欧几里得空间中。然而,近年来有越来越多的非欧几里得数据被表示为图。为此,图神经网络(GNNs)致力于将深度学习技术应用于图数据。术语GNN通常指代多种不同的算法,而非单一架构。

图基本原理与符号表示

图由一组节点和一组边组成。节点和边都可以具有一组特征。节点的特征向量表示为hih_ihi,其中iii是节点的索引。边的特征向量表示为eije_{ij}eij,其中iiijjj是边连接的节点。

图可以是有向的、无向的、加权的和非加权的。因此,每种架构可能仅适用于特定类型的图或所有类型的图。

图卷积基本原理

大多数GNN架构的基本思想是图卷积。本质上,我们试图将卷积的概念推广到图中。图可以看作是图像的泛化,其中每个节点对应一个像素,连接到8个(或4个)相邻邻居。

图卷积将下一层节点的特征预测为其邻居特征的函数。它将节点的特征xix_ixi转换为潜在空间hih_ihi,可用于多种目的:
xi→hix_i \rightarrow h_ixihi

图神经网络应用类别

节点分类

通过对每个潜在向量hih_ihi应用共享函数fff,我们可以对每个节点进行预测:
Zi=f(hi)Z_i = f(h_i)Zi=f(hi)

边分类

通常需要相邻节点向量以及边特征(如果存在):
Zij=f(hi,hj,eij)Z_{ij} = f(h_i, h_j, e_{ij})Zij=f(hi,hj,eij)

图分类

通过聚合所有节点特征并应用适当的函数fff来预测整个图的属性:
ZG=f(∑ihi)Z_G = f(\sum_i h_i)ZG=f(ihi)

聚合通常是一个置换不变函数,如求和、均值操作、池化操作甚至是可训练的线性层。

归纳学习与转导学习

在转导学习中,模型已经遇到训练和测试输入数据。在我们的案例中,这些是大型图的节点,我们想要预测节点标签。如果向图中添加新节点,需要重新训练模型。

在归纳学习中,模型仅看到训练数据。因此生成的模型将用于预测未见数据的图标签。

谱方法

谱方法处理图在谱域中的表示。这些方法基于图信号处理,并使用傅里叶变换FFF在谱域中定义卷积算子。

图信号xxx首先通过图傅里叶变换FFF变换到谱域:
F(x)=UTxF(x) = U^T xF(x)=UTx
F−1(x)=UxF^{-1}(x) = U xF1(x)=Ux

UUU是由LLL的特征向量定义的矩阵,其中L=UΛUTL = U\Lambda U^TL=UΛUTΛ\LambdaΛ是包含图特征值的对角矩阵Λ=diag([λ0,...,λ1])\Lambda = diag([\lambda_0, ..., \lambda_1])Λ=diag([λ0,...,λ1])

卷积操作定义为:
g∗x=F−1(F(g)⋅F(x))=U(UTg⋅UTx)g * x = F^{-1}(F(g) \cdot F(x)) = U (U^T g \cdot U^T x)gx=F1(F(g)F(x))=U(UTgUTx)

LLL是归一化图拉普拉斯矩阵,构造如下:
L=I−D−12AD−12L = I - D^{-\frac{1}{2}} A D^{-\frac{1}{2}}L=ID21AD21

UTgU^T gUTg是谱域中的滤波器,DDD是度矩阵,AAA是图的邻接矩阵。

谱网络

谱网络将谱域中的滤波器简化为对角矩阵gwg_wgw,其中www是网络的可学习参数。

ChebNets

ChebNets提出任何向量的特征表示应仅受其k跳邻域的影响。使用K阶切比雪夫展开,可以定义K局部卷积,用于形成卷积神经网络。

图卷积网络(GCN)

图卷积网络是GNN文献中引用最多的论文,也是实际应用中最常用的架构。在GCN中,ChebNets中提出的K局部卷积被简化为K=1K=1K=1

他们提出了以下更改:

  1. 通过将单位矩阵III添加到邻接矩阵AAA来强制执行自连接:
    A~=A+I\tilde{A} = A + IA~=A+I

  2. 使用拉普拉斯矩阵LLL的对称归一化:
    Lnorm=D−12LD−12=I−D−12AD−12L_{norm} = D^{-\frac{1}{2}} L D^{-\frac{1}{2}} = I - D^{-\frac{1}{2}} A D^{-\frac{1}{2}}Lnorm=D21LD21=ID21AD21

  3. 使用重新归一化技巧解决梯度爆炸/消失问题:
    I+D−12AD−12→D~−12A~D~−12I + D^{-\frac{1}{2}} A D^{-\frac{1}{2}} \rightarrow \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}}I+D21AD21D~21A~D~21

如果HHH是特征矩阵,WWW是可训练权重矩阵,则GCN层的更新规则变为:
H(l+1)=σ(D~−12A~D~−12H(l)W(l))H^{(l+1)} = \sigma (\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)})H(l+1)=σ(D~21A~D~21H(l)W(l))

从节点角度,更新规则可以写为:
hi(l)=σ(∑i∈NjcijWhj)h_i^{(l)} = \sigma( \sum_{i \in N_j} c_{ij} W h_j)hi(l)=σ(iNjcijWhj)
其中cij=1∣Ni∣∣Nj∣c_{ij} = \frac{1}{\sqrt{|N_i| |N_j|}}cij=Ni∣∣Nj 1NiN_iNiNjN_jNj是节点邻域的大小。

空间方法

空间方法直接基于图拓扑在图上定义卷积。它们通常遵循相同的模式:

  • 节点的特征向量使用某种投影进行变换
  • 通过置换不变函数进行聚合
  • 基于当前值和聚合的邻域表示更新每个节点的特征向量

消息传递神经网络(MPNN)

消息传递神经网络利用GNN中的消息概念。消息mijm_{ij}mij可以跨边iiijjj发送,并使用消息函数fef_efe计算。

对于具有边特征eije_{ij}eij的两个节点iiijjj
mij=fe(hi,hj,eij)m_{ij} = f_e(h_i, h_j, e_{ij})mij=fe(hi,hj,eij)

所有到达每个节点的消息然后使用置换不变函数(如求和)进行聚合。聚合表示然后通过fvf_vfv与现有节点特征组合,产生更新的节点特征向量:
hi=fv(hi,∑j∈Nimji)h_i = f_v (h_i, \sum_{j \in N_i} m_{ji})hi=fv(hi,jNimji)

图注意力网络(GAT)

GAT的主要思想是隐式而非显式地计算该系数。这样我们可以使用除图结构之外的更多信息来确定每个节点的"重要性"。

GAT背后的作者提出,系数(从现在开始表示为aija_{ij}aij)应该基于节点特征计算,然后传递到注意力函数。最后,softmax函数应用于注意力权重aija_{ij}aij,产生概率分布:
aij=attention(hi,hj)a_{ij} = attention(h_i, h_j)aij=attention(hi,hj)
aij=exp⁡(aij)∑k∈Niexp⁡(aik)a_{ij} = \frac{\exp(a_{ij})}{\sum_{k \in N_i} \exp(a_{ik})}aij=kNiexp(aik)exp(aij)

更新规则现在形成如下:
hi(l)=σ(∑i∈NjaijWhj)h_i^{(l)} = \sigma( \sum_{i \in N_j} a_{ij} W h_j)hi(l)=σ(iNjaijWhj)

采样方法

大多数GNN架构的一个主要缺点是可扩展性。通常,每个节点的特征向量取决于其整个邻域。对于具有大邻域的巨型图,这可能非常低效。为解决此问题,已纳入采样模块。采样模块的主要思想是,我们可以使用邻域信息的子集进行传播,而不是使用所有邻域信息。

GraphSage

GraphSage通过提出以下框架推广了这一思想:

  • 从邻域中均匀采样一组节点
  • 从采样邻居聚合特征信息
  • 基于聚合,我们执行图分类或节点分类

在每一层,我们扩展邻域深度KKK,导致采样KKK跳远的节点特征。这与增加经典卷积网络的感受野类似。

PinSAGE

PinSAGE是GraphSAGE的直接延续,是最流行的GNN应用之一。PinSAGE基本上是应用于非常大的图(30亿节点和180亿边)的GraphSAGE。

主要原则:

  • 使用随机游走定义节点的邻域
  • 使用"重要性采样"执行聚合
  • 模型在基于用户历史参与的数据集上以监督方式进行训练

动态图

动态图是其结构随时间不断变化的图。这包括可以添加、修改和删除的节点和边。示例包括社交网络、金融交易等。动态图可以表示为改变图结构的时间戳事件的有序列表或流。

时序图网络(TGN)

最有前途的架构是时序图网络。由于动态图表示为时间列表,节点的邻域随时间变化。在每个时间ttt,我们可以获取图的快照。特定时间ttt的邻域称为时序邻域。

TGN的主要组件是产生节点嵌入的GAT网络。GAT模块以两种形式接收信息:

  • 特定时间时序邻域的节点特征
  • 节点的记忆:节点记忆是节点过去交互的紧凑表示

结论

GNN是一个非常活跃的新研究领域,具有巨大的潜力,因为在现实应用中有许多数据集可以构造为图。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐