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

207 阅读2分钟

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

传统数据表示与图数据

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

图基本原理与符号表示

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

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

图卷积基本原理

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

图卷积将下一层节点的特征预测为其邻居特征的函数。它将节点的特征xix_i转换为潜在空间hih_i,可用于多种目的: xihix_i \rightarrow h_i

图神经网络应用类别

节点分类

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

边分类

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

图分类

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

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

归纳学习与转导学习

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

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

谱方法

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

图信号xx首先通过图傅里叶变换FF变换到谱域: F(x)=UTxF(x) = U^T x F1(x)=UxF^{-1}(x) = U x

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

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

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

UTgU^T g是谱域中的滤波器,DD是度矩阵,AA是图的邻接矩阵。

谱网络

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

ChebNets

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

图卷积网络(GCN)

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

他们提出了以下更改:

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

  2. 使用拉普拉斯矩阵LL的对称归一化: Lnorm=D12LD12=ID12AD12L_{norm} = D^{-\frac{1}{2}} L D^{-\frac{1}{2}} = I - D^{-\frac{1}{2}} A D^{-\frac{1}{2}}

  3. 使用重新归一化技巧解决梯度爆炸/消失问题: I+D12AD12D~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}}

如果HH是特征矩阵,WW是可训练权重矩阵,则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)})

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

空间方法

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

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

消息传递神经网络(MPNN)

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

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

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

图注意力网络(GAT)

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

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

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

采样方法

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

GraphSage

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

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

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

PinSAGE

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

主要原则:

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

动态图

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

时序图网络(TGN)

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

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

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

结论

GNN是一个非常活跃的新研究领域,具有巨大的潜力,因为在现实应用中有许多数据集可以构造为图。