趋近智
图神经网络(GNNs)可用于处理各种类型的图任务。对于许多问题,目标不仅仅是生成节点表示(),还需要进行图级别的预测。例如,预测分子的毒性(分子表示为图)或将社交网络图分类为良性或与恶意活动相关,这些都需要为整个图提供一个单一的、固定大小的向量表示()。将节点级别的信息聚合成图级别概要的这一步骤由图池化和读出函数处理。
主要难题是设计排列不变的聚合函数。由于图表示中节点(例如邻接列表或特征矩阵)的排序是任意的,因此无论节点如何排序,生成的图级别嵌入都必须保持不变。读出通常指生成的最终聚合步骤,而池化有时指GNN架构内部使图变得粗化的中间步骤。
最直接的方法是将简单的、排列不变的聚合函数直接应用于GNN层生成的最终节点嵌入集。常见选项包括:
这些函数计算成本低且满足排列不变性。然而,它们可能导致较多的信息丢失:
对于许多简单的图分类任务,这些基本读出函数的效果出乎意料的好,特别是与强大的GNN节点嵌入结合使用时。然而,对于需要对细微结构差异或层级模式敏感的更复杂任务,通常需要更复杂的方法。
为了获取更丰富的图结构并学习更具区分性的图表示,若干高级池化技术已被提出。这些技术通常涉及学习池化机制本身或更明确地加入结构信息。
可微分池化 (DiffPool) 引入了一种可学习的层级池化方法。DiffPool 层不是在最后进行一次全局聚合,而是在每一步学习对节点进行聚类,从而有效地对图进行粗化。
DiffPool 层通常使用两个GNN:
然后对图进行粗化处理:
这个过程可以堆叠,使模型能够在不同粒度级别上学习图表示。
可微分池化 (DiffPool) 示意图。原始图(第L层)中的节点通过一个学习得到的分配矩阵被软分配到聚类中,构成一个粗化的图表示(第L+1层)。GNN操作随后可以应用于这个粗化的图。
DiffPool 可以获取复杂的拓扑结构,但引入了很大的计算开销,并且由于其双层优化特性(同时学习嵌入和聚类分配)而训练起来有难度。通常在损失函数中加入熵正则化,以促使产生多样的聚类分配。
注意力机制在序列建模中表现出色,可以用于图池化。与简单的平均或最大化不同,注意力机制在聚合过程中为节点分配不同的重要性权重。
例如,一个简单的基于注意力的读出函数可以为每个节点 计算注意力得分 :
其中 是一个可学习的全局上下文向量, 是一个兼容性函数(例如点积或小型MLP)。图嵌入是加权和:
存在更复杂的形式,例如 Set2Set,它使用基于LSTM的机制迭代地优化全局图表示,同时关注节点嵌入,保证排列不变性。基于注意力的方法提供了灵活性,但增加了模型参数和复杂性。
这些方法通过选择一部分重要节点而非聚类来执行池化。
这些方法的计算量比DiffPool小,并在中间层创建更稀疏、更小的图。然而,仅选择节点的一个子集可能会丢弃相关信息。
SortPool 在聚合之前对节点施加顺序。它首先根据统一的结构特性对节点嵌入进行排序。一个常用方法是使用节点根据Weisfeiler-Lehman测试(在第1章中讨论)分配的颜色来确定其字典序,这提供了一个规范的排序。
在对 个节点嵌入(每个维度为 )进行排序以获得矩阵 后,该矩阵将被截断或填充到固定大小 。然后,将序列处理中常见的标准1D卷积层和全连接层沿节点维度应用,以生成最终的图嵌入。
SortPool 在确立统一的节点顺序后使用CNN进行特征提取。其主要局限是对规范排序算法的要求以及由于固定大小 导致的信息丢失。
最佳选择很大程度上取决于具体任务、图的属性和计算资源:
池化层(如DiffPool、Top-K、SAGPool)通常与GNN层交错使用,以逐渐粗化图并学习不同尺度的表示。读出函数(求和、平均、最大、注意力、Set2Set)通常在最终GNN层之后应用,以生成最终的图级别嵌入,然后将其输入到最终的分类器或回归头(例如MLP)中。
理解并选择合适的图池化和读出函数是设计有效的GNN以完成图级别预测任务的必要步骤。这些技术连接了以节点为中心的消息传递与许多重要应用所需的图级别信息之间的差异。下一章将提供使用常用库实现这些高级GNN组件的实践指导。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造