目录
1. 图基础
图是一种数据结构,它对一组对象(节点)及其关系(边)进行建模。图对于机器学习来说,是一种独特的非欧式数据结构(对于数据中的某个点,难以定义出其邻居节点出来,或者是不同节点的邻居节点的数量是不同的),图分析侧重于节点分类,链路预测和聚类。图神经网络(GNN)是在图域上运行的基于深度学习的方法。对于解决图方面的问题,需要利用到本地连接、共享权重和多层的使用。图表示学习,利用低维向量表示图结点,边和子图。
2. 图构建
2.1 找到图结构
我们应该找到应用中的图结构。通常有结构场景和非结构场景。在结构场景中,图结构是明确的,例如分子结构,知识图谱。在非结构场景中,图结构是隐式的,因此我们必须首先从任务中构建图,例如为文本构建全连接的“单词”图或为图像构建场景图。
2.2 图类型和范围
在找到图结构后,我们必须找到图的类型和它的范围。复杂类型的图可以提供有关节点及边的更多信息。图的类型包括①有向图和无向图,有向图中的边都是由一个结点指向另一个节点,无向图中的每条边也可以看成两条有向边;②同构图和异构图,同构图中,节点的种类只有一种,一个node和另一个node的连接关系只有一种,异构图是包含不同类型节点和边的图;③动态和静态图,当输入特征和图的拓扑结构随时间变化时,该图被视为一个动态图,在动态图中应该考虑时间信息。这些类型可以组合,譬如可以处理动态有向异构图。当设备无法存储和处理图的邻接矩阵或图拉普拉斯算子时,我们讲图视为大规模图,考虑一些采样方法。
2.3 设计损失函数
对于图学习任务,通常有三种。节点级任务侧重于节点,包括节点分类,节点回归,节点聚类等。节点分类试图将节点分为若干类,节点回归预测节点的连续值,节点聚类旨在将将节点划分为几个不相交的组,其中相似节点在一组。边级任务是边分类和链路预测,这需要模型对边类型进行分类或者预测给定的两个节点间是否存在链路。图级任务包括图分类,图回归和图匹配,所有的这些任务都需要模型来学习图表示。通过任务类型和训练设置,我们可以为任务设计特定的损失函数。例如,对于节点级半监督分类任务,可以将交叉熵损失用于训练集中的标记节点。
2.4 使用计算块来建立模型
传播模块用于在节点之间传播信息,以便聚合信息能够捕获特征和拓扑信息。在传播模块中,卷积算子和循环算子通常用于聚合来自邻居的信息,而跳跃连接操作用于从节点的历史表示中收集信息并缓解过度平滑问题。当图很大时,通常需要采样模块,采样模块通常和传播模块一起使用。当我们需要高级子图或图的表示时,需要池化模块来从节点中提取信息。
3 计算模块的实例化
3.1 传播模块-卷积算子
卷积算子是 GNN 模型中最常用的传播算子。 卷积算子的主要思想是将卷积从其他域推广到图域。 在这个方向上的进展通常被归类为光谱方法和空间方法。
3.1.1. 频谱法
在频谱法中,图信号x首先通过图傅里叶变换F变换到谱域,然后进行卷积运算。 卷积之后,使用逆图傅里叶变换 F 1 将结果信号变换回来。Spectral Network;ChebNet;GCN;AGCN;DGCN;GWNN。
3.1.2 基本空间方法
空间方法是在图拓扑情况下直接在图上定义卷积。空间方法的主要挑战是定义不同大小邻域的卷积运算,并保持CNN的局部不变性。Neural FPs;DCNN.;PATCHY-SAN;LGCN;GraphSAG。
3.1.3.基于注意力的空间方法
注意机制已成功用于许多基于序列的任务,例如机器翻译、机器阅读等。还有几个模型试图在图上泛化注意力算子。与我们之前提到的算子相比,基于注意力的算子为邻居分配不同的权重,从而可以减轻噪声并取得更好的效果。GAT.;GaAN.。
3.1.4 空间方法的一般框架
除了空间方法的不同变体之外,还提出了几个通用框架,旨在将不同的模型集成到一个框架中。混合模型网络(MoNet)是一个试图统一非欧几里德域模型的空间框架,包括用于流形(流形学习的观点是认为,我们所能观察到的数据实际上是由一个低维流形映射到高维空间上的,即这些数据所在的空间是“嵌入在高维空间的低维流形。”。由于数据内部特征的限制,一些高维中的数据会产生维度上的冗余,实际上只需要比较低的维度就能唯一地表示。在极坐标的表示方法下,圆心在原点的圆,只需要一个参数就能确定:半径。当你连续改变半径的大小,就能产生连续不断的“能被转换成二维坐标表示”的圆。所以说,实际上二维空间中的圆就是一个一维流形。)的CNN和GNN(including CNNs for manifold and GNNs)。GCNN,ACNN,DCNN可以表述为MoNet的特殊实例。在MoNet中,流形上的每个点或图上的每个顶点,都用v表示,都被视为伪坐标系的原点。邻居 u 与伪坐标 u(v,u) 相关联。给定两个函数 f,g 定义在图的顶点(或流形上的点)上,MoNet 中的卷积算子定义为:
消息传递神经网络 (MPNN) 提取了几个经典模型中的一般特征。该模型包含两个阶段: 消息传递阶段和读出阶段。非局部神经网络(NLNN)推广和扩展了计算机视觉中经典的非局部平均运算。非局部操作将某个位置的隐藏状态计算为所有可能位置的特征的加权和。 潜在位置可以是空间、时间或时空。图网络(GN)通过学习节点级、边缘级和图级表示,与其他框架相比,是一个更通用的框架。
3.2. 传播模块 - 循环算子
循环方法是该研究领域的先驱。循环算子和卷积算子的主要区别在于卷积算子中的层使用不同的权重,而循环算子中的层共享相同的权重。
3.2.1.基于收敛的方法
在图中,每个节点自然地由其特征和相关节点定义。GNN的目标是学习一个嵌入hv的状态,该状态包含每个节点的邻域及其本身的信息。状态嵌入 hv 是节点 v 的 s 维向量,可用于生成输出 ov,例如预测节点标签的分布。GNN具有一定的局限性:①GNN 要求 f 是一个收缩图,这限制了模型的能力。并且迭代地更新节点的隐藏状态到固定点是低效的。②如果我们专注于节点的表示而不是图,则不适合使用固定点,因为固定点中的表示分布在值上会更加平滑,并且对于区分每个节点的信息较少。图回显状态网络(GraphESN)在图上概括了回声状态网络(echo state network)(ESN)。它使用固定的压缩编码功能,并且仅训练读出功能。为了提高 GNN 的效率,还提出了随机稳态嵌入 (SSE) 。 SSE 提出了一个包含两个步骤的学习框架。 每个节点的嵌入由参数化算子在更新步骤中更新,并将这些嵌入投影到稳态约束空间以满足稳态条件。其以随机和异步的方式周期性更新节点的隐状态,它随机采样一批节点用于状态更新,随机采样一批节点用于梯度计算。拉格朗日传播 GNN (LP-GNN) 将学习任务形式化为拉格朗日框架中的约束优化问题,避免了对不动点的迭代计算。收敛过程由约束满足机制隐式表达。
3.2.2 基于门的方法
有几项工作试图在传播步骤中使用GRU或LSTM等门机制,以减少GNN中的计算限制,并改善信息在图形结构中的长期传播。它们在不保证收敛的情况下运行固定数量的训练步骤。门控图神经网络 (GGNN) 被提出来释放GNN的限制。它将函数f的要求释放为收缩图,并在传播步骤中使用门递归单位 (GRU)。它还使用时间反向传播 (BPTT) 来计算梯度。节点 v 首先聚合来自其邻居的消息。然后类似 GRU 的更新函数结合来自其他节点和前一个时间步的信息来更新每个节点的隐藏状态。 h收集节点 v 的邻域信息,而 z 和 r 是更新和重置门。
3.3.传播模块 - 跳跃连接
许多应用程序展开或堆叠图神经网络层旨在获得更好的结果,因为更多的层(即 k 层)使每个节点从 k 跳之外的邻居聚合更多的信息。然而,在许多实验中已经观察到,更深的模型无法提高性能,更深的模型甚至可能表现更差。这主要是因为更多的层也可以传播来自数量呈指数增长的扩展邻域成员的噪声信息。这也会导致过度平滑问题,因为当模型更深入时,在聚合操作之后,节点往往具有相似的表示。而对于较为边缘的节点,即使拓展其感受域,它的邻居还是很少。因此,许多方法试图添加“跳跃连接”,以使GNN模型更深入。在本小节中,我们将介绍三种跳跃连接的实例。Highway GCN,使用了层级的门控,门控可以使网络从新的和旧的隐藏状态中进行选择。因此,将早期隐藏状态传播到最终状态也是有可能的。在实验中模型性能在四层达到峰值,继续添加层带来的变化不大。徐等人 研究邻域聚合方案的特性和局限性。他们提出了可以学习自适应和结构感知表示的跳转知识网络(JKN)。 JKN 从最后一层的每个节点的所有中间表示(“跳转”到最后一层)中选择,这使得模型根据需要调整每个节点的有效邻域大小。DeepGCNs. Li等人 借鉴了ResNet和DenseNet(该网络在前馈时将每一层都与其他的任一层进行了连接。传统的 L层卷积网络有 L个连接——每一层与它的前一层和后一层相连——我们的网络有L*(L+1) /2个连接。每一层都将之前的所有层的特征图作为输入,而它自己的特征图是之后所有层的输入。DenseNets有一些很不错的优点:有助于解决梯度消失问题,有利于特征传播,鼓励特征的重复利用,还可以减少参数量)的思想。Reggcn和DenseGCN是通过合并残差连接和密集连接来解决梯度消失和过度平滑的问题而提出的。DeepGCNs 的实验是在点云语义分割任务上进行的,使用 56 层模型取得了最好的结果。
3.4. 采样模块
GNN 模型从前一层的邻域中聚合每个节点的消息。 直观地说,如果我们回溯多个 GNN 层,支持邻居的大小将随着深度呈指数增长。 为了缓解这种“邻居爆炸”问题,一种有效且有效的方法是采样。 此外,当我们处理大图时,我们不能总是存储和处理每个节点的所有邻域信息,因此需要采样模块来进行传播。 在本节中,我们介绍三种图采样模块:节点采样、层采样和子图采样。
3.4.1 节点采样
减少相邻节点大小的直接方法是从每个节点的邻域中选择一个子集。GraphSAGE(Hamilton等人,2017a)对固定数量的邻居进行采样,确保每个节点的邻域大小为2到50。为了减少抽样方差,Chen等人(2018a)引入了一种基于控制变量的GCN随机逼近算法,将节点的历史激活作为控制变量。这种方法限制了1-跳邻域中的感受区域,并使用历史隐藏状态作为可承受的近似值。PinSage (Ying等人,2018a) 提出了基于重要性的抽样方法。通过模拟从目标节点开始的随机游走,该方法选择具有最高归一化访问计数的前T个节点。
3.4.2. 层采样
层采样不是为每个节点采样邻居,而是在每个层中保留一小组节点用于聚合以控制扩展因子。 FastGCN (Chen et al., 2018b) 直接对每一层的感受域进行采样。 它使用重要性抽样,其中重要节点更有可能被抽样。与上述固定采样方法相比,Huang 等人引入了一个参数化和可训练的采样器来执行以前一层为条件的逐层采样。此外,这种自适应采样器可以优化采样重要性并同时减少方差。 LADIES (Zou et al., 2019) 打算通过从节点的邻居联合中生成样本来缓解分层采样中的稀疏问题。
3.4.3 子图采样
一种根本不同的方法是采样多个子图并限制这些子图中的邻域搜索,而不是采样基于完整图的节点和边。ClusterGCN (Chiang等人,2019) 通过图聚类算法对子图进行采样,而GraphSAINT (Zeng等人,2020) 直接对节点或边进行采样以生成子图。
3.5 池化模块
在计算机视觉领域,卷积层之后通常是一个池化层以获得更多的一般特征。复杂大规模的图通常具有丰富的层次结构,对于节点级和图级分类任务具有重要意义。与这些池化层类似,很多工作都集中在在图上设计分层池化层。在本节中,我们将介绍两个池化模块: 直接池化模块和分层池化模块。
3.5.1 直接池化模块
直接池化模块直接从具有不同节点选择策略的节点学习图级表示。 这些模块在某些变体中也称为读出功能。Simple Node Pooling,几种模型使用了简单的节点池化方法。在这些模型中&#x