论文翻译 | GraphPrompt: Unifying Pre-Training and Downstream Tasks for Graph Neural Networks

摘要

        图可以为对象之间的复杂关系建模,支持无数的Web应用程序,例如在线页面/文章分类和社交推荐。虽然图形神经网络(gnn)已经成为图形表示学习的强大工具,但在端到端监督设置中,它们的性能严重依赖于大量特定任务的监督。为了减少标签要求,“预训练,微调”和“预训练,提示”的模式变得越来越普遍。在自然语言处理中,提示是一种流行的替代方法,它旨在以特定于任务的方式缩小预训练和下游目标之间的差距。然而,现有的图上提示的研究仍然有限,缺乏一种通用的处理方法来吸引不同的下游任务。在本文中,我们提出了一个新的图形预训练和提示框架GraphPrompt。GraphPrompt不仅将预训练和下游任务统一到一个共同的任务模板中,而且还使用了一个可学习的提示来帮助下游任务以特定于任务的方式从预训练模型中定位最相关的知识。最后,我们在五个公共数据集上进行了广泛的实验来评估和分析GraphPrompt。

1 引言

        无处不在的网络正在成为终极数据存储库,能够将广泛的物体连接起来,形成巨大而复杂的图谱。图数据的普遍性使得网络应用程序可以进行一系列下游任务,从在线页面/文章分类到社交网络中的朋友推荐。现代图分析方法通常采用图表示学习,包括图嵌入和图神经网络(GNNs)。早期的图嵌入方法[12, 33, 41]通常将图上的节点嵌入到低维空间中,其中可以捕获节点的结构信息,如节点之间的接近性[5]。最近,GNNs[13, 20, 43, 50]已成为图表示学习的最新技术。它们的关键思想归结为一种消息传递框架,每个节点通过接收和聚合其邻节点的消息来递归地导出其表示[48]。
        图预训练。通常,GNNs以端到端的方式工作,其性能在很大程度上取决于大规模、特定任务的标签数据的可用性作为监督。这种监督范式存在两个问题。首先,特定任务的监督往往难以获得或成本高昂。其次,为了处理新任务,即使任务在同一张图上,也需要重新训练GNN模型的权重。为了解决这些问题,预训练GNNs[15, 16, 30, 34]变得越来越流行,这受到了语言和视觉应用中的预训练技术的启发[1, 7]。GNN的预训练利用自监督学习在更容易获得的标签自由图(即没有特定任务标签的图)上,学习旨在跨任务和领域内的图的一般属性。换句话说,预训练提取了与任务无关的先验知识,并可用于初始化新任务的模型权重。随后,初始权重可以通过在较少的特定任务标签上的轻量级微调步骤快速更新。然而,“预训练,微调”范式存在预训练与下游任务目标不一致的问题,导致性能次优[23]。一方面,预训练步骤旨在保留各种内在图属性,如节点/边特征[15, 16]、节点连通性/链接[13, 16, 30]以及局部/全局模式[15, 30, 34]。另一方面,微调步骤旨在减少任务损失,即拟合下游任务的地面真实情况。两个步骤之间的差异可能很大。例如,预训练可能专注于学习两个节点之间的连通性模式(即与链接预测相关),而微调可能处理节点或图属性(即节点分类或图分类任务)。
        先前的工作。为了缩小预训练与下游任务之间的差距,提示[4]首先被提出用于语言模型,这是一种针对特定下游任务设计的自然语言指令,旨在“提示出”任务与语言模型之间的语义相关性。同时,预训练语言模型的参数被冻结,无需任何微调,因为提示可以将任务“拉向”预训练模型。因此,提示比微调更高效,特别是当预训练模型非常大时。最近,提示也被引入到GPPT方法[39]中的图预训练中。尽管先驱性工作提出了预训练和提示的复杂设计,但它只能应用于节点分类任务,缺乏适用于不同下游任务(如节点分类和图分类)的通用处理方法。
        研究问题与挑战。为了解决图预训练与各种下游任务之间的分歧,在本文中,我们研究了图神经网络的预训练和提示设计。特别是,我们旨在实现一种灵活适用于不同下游任务的统一设计。这个问题由于以下两个挑战而显得不平凡。
首先,为了使预训练有效地转移到下游任务,理想的预训练步骤应保留与给定任务兼容的图属性。然而,由于不同的下游任务往往有不同的目标,我们如何统一图上的各种下游任务的预训练,以便单个预训练模型可以普遍支持不同的任务?即,我们尝试将预训练任务和下游任务转换为遵循相同的“模板”。以预训练语言模型为类比,它们的预训练和下游任务都可以表述为掩码语言建模。
其次,在统一框架下,识别不同下游任务之间的区别以实现特定于任务的最优仍然很重要。对于预训练的语言模型,提示可以采用自然语言标记或可学习的词向量形式,为不同的任务提供不同的提示,但对于图上的提示应该采取何种形式则不太明显。因此,我们如何设计图上的提示,以便它们可以有效地指导不同的下游任务利用预训练模型?
        当前工作。为了应对这些挑战,我们提出了一个新颖的图预训练和提示框架,称为GraphPrompt,旨在统一GNN的预训练和下游任务。GraphPrompt借鉴了预训练语言模型的提示策略,利用统一的模板来定义预训练和下游任务的目标,从而弥合了它们之间的差距。我们进一步为GraphPrompt配备了特定于任务的可学习提示,引导下游任务利用预训练GNN模型中的相关知识。这种统一的方法使GraphPrompt能够在有限的监督下工作,例如少量学习任务。
更具体地说,为了解决统一的第一挑战,我们关注图拓扑,这是图模型的关键促成因素。特别是,子图是一种通用结构,可以用于节点级和图级任务。在节点级别,节点信息可以通过其上下文子图(即节点所在的子图)来丰富和表示[17, 55];在图级别,图信息自然由最大子图(即图本身)表示。因此,我们将预训练或下游的节点级和图级任务统一到相同的模板中:子图表示的相似性计算。在这项工作中,我们采用链接预测作为自监督的预训练任务,因为任何图中都容易获得链接,而无需额外的注释成本。同时,我们关注流行的节点分类和图分类作为下游任务,它们分别是节点级和图级任务。所有这些任务都可以被表述为学习子图相似性的实例。一方面,预训练中的链接预测任务归结为两个节点的上下文子图之间的相似性,如图1(a)所示。另一方面,下游节点或图分类任务归结为目标实例(节点的上下文子图或整个图)与从标记数据构建的类原型子图之间的相似性,如图1(b)和(c)所示。这种统一的模板弥合了预训练与不同下游任务之间的差距。

图1:动机说明。(a)图的预训练。(b/c)下游节点/图分类。 

        面对第二个挑战,我们通过子图的ReadOut操作来区分不同的下游任务。ReadOut操作本质上是将子图中的节点表示融合为单个子图表示的聚合函数。例如,和池化(sum pooling),它将子图中所有节点的表示相加,是一种实用且流行的ReadOut方案。然而,不同的下游任务可以从不同的聚合方案中受益以进行其ReadOut。特别是,节点分类倾向于关注有助于目标节点表示的特征,而图分类倾向于关注与图类相关的特征。受这些差异的启发,我们提出了一个新颖的特定于任务的可学习提示,以引导每个下游任务的ReadOut操作采用适当的聚合方案。如图1所示,可学习提示作为下游任务的ReadOut操作的参数,从而使得不同的任务可以对不同的子图采用不同的聚合函数。因此,GraphPrompt不仅将预训练和下游任务统一到基于子图相似性的相同模板中,而且还识别了各种下游任务之间的差异,以指导特定于任务的目标。
        贡献。总结来说,我们的贡献有三点:(1) 我们认识到图预训练与下游任务之间的差距,并提出了一个基于子图相似性的统一框架GraphPrompt,适用于预训练和下游任务,包括节点分类和图分类任务。(2) 我们为GraphPrompt提出了一个新颖的提示策略,依赖于一个可学习的提示来主动引导下游任务使用特定于任务的聚合进行ReadOut,以驱动下游任务以特定于任务的方式利用预训练模型。(3) 我们在五个公共数据集上进行了广泛的实验,结果证明了GraphPrompt与最新方法相比的优越性能。

2 相关工作 

        图表示学习。图表示学习的兴起,包括早期的图嵌入[12,33,41]和最近的gnn[13,20,43,50],为节点和图级别的各种下游任务开辟了巨大的机会。注意,学习图级表示需要额外的ReadOut操作,该操作通过平面[8,11,50,56]或分层[10,21,31,51]池化算法聚合节点表示来总结图的全局信息。我们建议读者参考两个综合调查[5,48]了解更多细节。
        图训练。受预训练模型在语言[2,7]和视觉[1,29]领域应用的启发,图预训练[49]成为一种强大的范式,它利用无标签图的自我监督来学习图的内在属性。
        在预训练学习任务不可知先验的同时,进一步采用相对轻量级的微调步骤来更新预训练的权重以适应给定的下游任务。不同的预训练方法基于不同的图属性设计不同的自监督任务,如节点特征[15,16]、链接[13,16,19,30]、局部或全局模式[15,30,34]、局部-全局一致性[14,32,37,44]以及它们的组合[40,52,53]。
        然而,上述方法没有考虑预训练和下游目标之间的差距,这限制了它们处理不同任务的泛化能力。最近的一些研究认识到缩小这一差距的重要性。L2P-GNN[30]利用元学习[9]来模拟预训练期间的微调步骤。然而,由于下游任务仍然可能不同于模拟任务,所以这个问题并没有从根本上得到解决。在其他领域,研究人员将提示作为微调的替代方法[4],即使用特定于任务的提示来提示下游任务。提示符可以是手工制作的[4],也可以是可学习的[22,24]。在图形数据上,提示的研究还很有限。最近一项名为GPPT[39]的工作利用了图形上可学习提示的复杂设计,但它只适用于节点分类,缺乏统一的努力来适应其他下游任务,如图形分类。此外,还有一个同样名为GraphPrompt的模型[54],但它考虑的是文本数据的NLP任务(生物医学实体归一化),其中图形只是辅助。它采用屏蔽语言建模统一的标准文本提示,并辅以关系图生成文本模板,这与我们的工作不同。
        与其他设置的比较。我们的few-shot设置不同于其他处理标签稀缺性的范例,包括半监督学习[20]和元学习[9]。特别是,半监督学习不能处理训练中没有见过的新类,而元学习需要在元训练阶段的基类中有大量标记数据,然后才能处理测试中的少量任务。

3 预备知识

        在本节中,我们给出了问题的定义,并介绍了gnn的背景。 

3.1 问题定义 

        图。图可以定义为 𝐺 = (𝑉 , 𝐸),其中 𝑉 是节点集合,𝐸 是边集合。我们还假设有一个节点的输入特征矩阵,X ∈ R |𝑉 |×𝑑 ,是可用的。令 x𝑖 ∈ R 𝑑 表示节点 𝑣𝑖 ∈ 𝑉 的特征向量。此外,我们用 G = {𝐺1,𝐺2, . . . ,𝐺𝑁 } 来表示图的集合。
        问题。在本文中,我们研究了图的预训练和提示问题。对于下游任务,我们考虑流行的节点分类和图分类任务。对于图 𝐺 = (𝑉 , 𝐸) 上的节点分类,令 𝐶 是节点类别的集合,ℓ𝑖 ∈ 𝐶 表示节点 𝑣𝑖 ∈ 𝑉 的类别标签。对于图集合 G 上的图分类,令 C 是图标签的集合,𝐿𝑖 ∈ C 表示图 𝐺𝑖 ∈ G 的类别标签。
特别是,下游任务在少量样本设置中给出了有限的监督:对于两个任务中的每个类别,只提供了 𝑘 个标记样本(即节点或图),这被称为 𝑘-shot 分类。

 3.2 图神经网络

        GNNs的成功归结于消息传递机制[48],在该机制中,每个节点接收并聚合来自其邻居节点的消息(即特征或嵌入),以生成自己的表示。这种邻域聚合操作可以多层堆叠,以实现递归消息传递。正式地,在第 𝑙 层GNN中,节点 𝑣 的嵌入,记为 h𝑙𝑣,是根据前一层中的嵌入计算得出的,如下所示。

        其中 N𝑣 是节点 𝑣 的邻居节点集合,𝜃𝑙 是第 𝑙 层的可学习 GNN 参数。Aggr(·) 是邻域聚合函数,可以采取多种形式,从简单的平均池化[13, 20]到先进的神经网络,如神经注意力[43]或多层感知器[50]。请注意,在第一层中,输入节点嵌入 h0𝑣 可以初始化为 X 中的节点特征。总的可学习 GNN 参数可以表示为 Θ = {𝜃1, 𝜃2, ...}。为了简洁起见,我们简单地将最后一层的输出节点表示记为 h𝑣。 

4 建议的方法 

        在本节中,我们将介绍我们建议的GraphPrompt方法。 

4.1 统一框架 

        我们首先在图2中介绍了GraphPrompt的整体框架。我们的框架部署在图2(a)所示的一组无标签图上,用于图2(b)中的预训练。预训练采用了链接预测任务,这是自监督的,不需要额外的注释。之后,在图2(c)中,我们利用一个可学习的提示来引导每个下游任务,即节点分类或图分类,以特定于任务的方式利用预训练模型。下面,我们将解释框架如何支持预训练和下游任务的统一视图。

图2:GraphPrompt的整体框架。 

          实例作为子图。预训练和下游任务统一的关键在于为任务找到共同的模板。然后,可以将特定于任务的提示与每个下游任务的模板进一步融合,以区分不同任务的变化特征。
        与视觉和语言处理等其他领域相比,图学习的特点在于利用图拓扑。特别是,子图是一种通用结构,能够表达节点级和图级实例。一方面,在节点级别,每个节点都存在于一个局部邻域中,这反过来又对节点进行了上下文化[25, 27, 28]。在图 𝐺 = (𝑉, 𝐸) 上节点 𝑣 的局部邻域通常由一个上下文子图 𝑆𝑣 = (𝑉(𝑆𝑣), 𝐸(𝑆𝑣)) 定义,其中其节点集合和边集合分别由以下方式给出。

        其中 𝑑(𝑢, 𝑣) 给出了图 𝐺 上节点 𝑢 和 𝑣 之间的最短距离,而 𝛿 是一个预定的阈值。也就是说,𝑆𝑣 包含了从节点 𝑣 出发 𝛿 跳范围内的节点,以及这些节点之间的边。因此,上下文子图 𝑆𝑣 不仅体现了节点 𝑣 的自身信息,还包含了丰富的上下文信息来补充自身信息[17, 55]。另一方面,在图级别,图 𝐺 的最大子图,记作 𝑆𝐺,就是图本身,即 𝑆𝐺 = 𝐺。最大子图 𝑆𝐺 自然地包含了 𝐺 的所有信息。
        总结来说,子图可以用来表示节点级和图级实例:给定一个实例 𝑥,它可以是节点或图(例如 𝑥 = 𝑣 或 𝑥 = 𝐺),子图 𝑆𝑥 提供了访问与 𝑥 相关信息的统一方式。 

        统一任务模板。基于节点级和图级实例的上述子图定义,我们准备将不同的任务统一为遵循一个通用模板。具体来说,预训练中的链路预测任务以及下游的节点和图分类任务都可以重新定义为子图相似度学习。设s∈为子图𝑆∈的向量表示,sim(·,·)为余弦相似函数。如图2(b)和(c)所示,这三个任务可以映射到子图相似度的计算,其形式化如下。 

         •链路预测:这是一个节点级任务。给定一个图𝐺=(𝑉𝐸)和一个三联体的节点(𝑣、𝑎𝑏),(𝑣𝑎)∈𝐸和(𝑣𝑏)∉𝐸,我们有

        直观上,𝑣的上下文子图与链接到𝑣的节点的上下文子图应该比与未链接的节点的上下文子图更相似。 

        • 节点分类:这同样是一个节点级别的任务。考虑一个图 𝐺 = (𝑉, 𝐸),其中有一组节点类 𝐶,以及一组标记节点 𝐷 = {(𝑣1, ℓ1), (𝑣2, ℓ2), ...},其中 𝑣𝑖 ∈ 𝑉 且 ℓ𝑖 是 𝑣𝑖 对应的标签。由于我们采用 𝑘-shot 设置,对于每个类 𝑐 ∈ 𝐶,恰好有 𝑘 对 (𝑣𝑖, ℓ𝑖 = 𝑐) ∈ 𝐷。对于每个类 𝑐 ∈ 𝐶,进一步定义一个由向量 s˜𝑐 表示的节点类原型子图,给出如下。

        请注意,类原型子图是一个“虚拟”子图,在与节点上下文子图相同的嵌入空间中具有潜在表示。基本上,它被构造为给定类中标记节点的上下文子图的平均表示。那么,给定一个节点𝑣𝑗不在标注集𝐷中,其类标号为 

 

直观上,一个节点应该属于原型子图与其上下文子图最相似的类。 

        •图分类:这是一个图级任务。考虑一组图G和一组图类C,以及一组标记图D ={(𝐺1,𝐿1),(𝐺2,𝐿2),…},其中𝐺∈G和𝐿是𝐺的对应标签。在𝑘-shot设置中,对于每个类𝑐∈C,我们有𝑘对(𝐺,𝐿=𝑐)∈D。与节点分类类似,对于每个类𝑐∈C,我们定义一个图类原型子图,同样用𝑐中(子)图的均值嵌入向量表示: 

然后,给定一个不在标注集D中的图𝐺𝑗,其类标号𝐿𝑗为 

从直观上看,一个图应该属于与其原型子图最相似的类。 

        值得注意的是,节点分类和图分类可以进一步简化为单一组符号。令 (𝑥, 𝑦) 是图数据的一个注释实例,即 𝑥 要么是一个节点,要么是一个图,而 𝑦 ∈ 𝑌 是 𝑥 在类集合 𝑌 中的类别标签。然后, 

        最后,为了实现共同的任务模板,我们讨论了如何学习子图𝑆的子图嵌入向量s。给定由GNN生成的节点表示h𝑣(参见3.2节),计算s - 1的标准方法是使用一个ReadOut操作,该操作聚合子图𝑆- 1中节点的表示。也就是说,

        ReadOut聚合方案的选择是灵活的,包括sum pooling和更高级的技术[50,51]。在我们的实现中,我们只使用sum pooling。
        综上所述,统一框架是由子图相似性学习的公共任务模板实现的,这为我们的预训练和提示策略奠定了基础,我们将在以下部分介绍。

4.2 预训练阶段 

        正如前面所讨论的,我们的预训练阶段采用了链接预测任务。使用链接预测/生成是一种流行且自然的方式[13, 16, 18, 30],因为在大型图数据上有大量链接可供使用,无需额外的注释。换句话说,链接预测目标可以在无标签的图上进行优化,例如图2(a)中所示的那些图,以自监督的方式进行。
        基于第4.1节中定义的通用模板,链接预测任务锚定在两个候选节点的上下文子图的相似性上。一般来说,两个正例(即相连的)候选节点的子图应该比负例(即不相连的)候选节点的子图更相似,如图2(b)所示。
        随后,预训练得到的关于子图相似性的先验知识可以自然地转移到节点分类的下游任务中,这共享了类似的直觉:同一类别中的节点的子图应该比不同类别中的节点的子图更相似。
        另一方面,这个先验知识也可以支持图分类的下游任务,因为图相似性与子图相似性不仅在字母上(因为从技术上讲,图总是它自己的子图)一致,而且在精神上也是如此。这里的“精神”指的是共享相似子图的图很可能自身也相似,这意味着图相似性可以转化为包含子图的相似性[36, 42, 56]。
        正式地,给定图 𝐺 上的一个节点 𝑣,我们随机从 𝑣 的邻居中采样一个正例节点 𝑎,以及从不与 𝑣 相连的图中采样一个负例节点 𝑏,形成一个三元组 (𝑣, 𝑎, 𝑏)。我们的目标是增加上下文子图 𝑆𝑣 和 𝑆𝑎 之间的相似性,同时减少 𝑆𝑣 和 𝑆𝑏 之间的相似性。更一般地,在一组无标签的图 G 上,我们从每个图中采样多个三元组来构建一个整体的训练集 Tpre。然后,我们定义以下预训练损失。

        其中,为控制输出分布形状的温度超参数。注意,损失是通过Θ参数化的,它代表了GNN模型的权重。
        预训练阶段的输出为最优模型参数Θ0 = arg minΘ Lpre (Θ)。Θ0可以用来初始化下游任务的GNN权重,从而实现先验知识的下游传递。

4.3 下游任务提示 

        预训练和下游任务的统一使得知识转移更加有效,因为通过遵循一个通用模板,两个阶段中的任务变得更加兼容。然而,区分不同的下游任务仍然很重要,以便捕捉任务的个性并实现特定于任务的最优解。为了应对这一挑战,我们提出了一种基于图的新的特定于任务的可学习提示,这是受自然语言处理中提示启发的[4]。在语言环境中,提示最初是一个手工编制的指令,用于指导下游任务,它提供了特定于任务的线索,通过统一的任务模板提取相关的先验知识(通常,预训练和下游任务都被映射到掩码语言建模)。最近,可学习的提示[22, 24]被提出来作为手工编制提示的替代方案,以减轻后者的高工程成本。
        提示设计。然而,我们的提议与基于语言的提示有两个不同之处。首先,我们的任务模板与掩码语言建模不同。其次,由于我们的提示是为图结构设计的,它们更加抽象,不能采用基于语言的指令形式。因此,它们实际上不可能被手工编制。相反,它们应该是与图学习的核心相一致的相关拓扑。特别是,在相同的子图相似性学习的任务模板下,ReadOut操作(用于生成子图表示)可以针对不同的下游任务进行不同的“提示”。直观地说,不同的任务可以从不同的聚合方案中受益,以进行它们的ReadOut。例如,节点分类更加关注与目标节点主题更相关的特征。相比之下,图分类倾向于关注与图类别相关的特征。此外,给定任务中的不同实例或类别集合,重要的特征也可能会变化。
        正式地,令 p𝑡 表示下游任务 𝑡 的一个可学习提示向量,如图2(c)所示。对于任务 𝑡,辅助提示的ReadOut操作在子图 𝑆𝑥 上是

         其中 s𝑡,𝑥 是任务 𝑡 特定的子图表示,⊙ 表示元素级的乘法。也就是说,我们对来自子图的节点表示进行特征加权和求和,其中提示向量 p𝑡 是为了提取任务 𝑡 最相关的先验知识而进行的维度重加权。
        请注意,其他提示设计也是可能的。例如,我们可以考虑一个可学习的提示矩阵 P𝑡 ,它对节点表示应用线性变换:

 

        更复杂的提示,如注意层是另一种选择。然而,使用提示而不是微调的主要动机之一是减少对标记数据的依赖。在很少的镜头设置中,给予非常有限的监督,更倾向于使用较少参数的提示,以减轻过度拟合的风险。因此,我们的提示采用Eq.(12)中的特征加权方案,因为提示符是与节点表示长度相同的单个向量,通常是较小的数字(例如128)。 

        提示调整(Prompt Tuning)。为了优化可学习的提示,也称为提示调整,我们基于子图相似性的通用模板来制定损失函数,使用提示辅助的任务特定子图表示。
        正式地,考虑一个任务 𝑡 及其标记的训练集 T𝑡 = {(𝑥1, 𝑦1), (𝑥2, 𝑦2), ...},其中 𝑥𝑖 是一个实例(即一个节点或一个图),而 𝑦𝑖 ∈ 𝑌 是 𝑥𝑖 在类别集合 𝑌 中的类别标签。提示调整的损失定义如下:

其中,类别原型子图对于类别 𝑐 由 ˜s𝑡,𝑐 表示,它也是通过提示辅助的、任务特定的 ReadOut 生成的。
        注意,提示调整损失仅由可学习的提示向量 p𝑡 参数化,而不涉及 GNN 的权重。相反,预训练的 GNN 权重 Θ0 在下游任务中是固定的,因为不需要微调。这显著减少了下游需要更新的参数数量,从而不仅提高了任务学习和推理的计算效率,还减少了对于标记数据的依赖。

5 实验 

        在本节中,我们在五个基准数据集上进行了广泛的实验,包括节点分类和图分类作为下游任务,以评估所提出的GraphPrompt。 

5.1 实验设置 

        数据集。我们使用了五个基准数据集进行评估。(1) Flickr [47] 是一个图片分享网络。(2) PROTEINS [3] 是一组蛋白质图,包括氨基酸序列、构象、结构以及蛋白质的活性位点等特征。(3) COX2 [35] 是一个包含467种环氧化酶-2抑制剂的分子结构数据集。(4) ENZYMES [46] 是从BRENDA酶数据库中收集的600种酶的数据集。(5) BZR [35] 是一组包含405种苯二氮䓬受体配体的集合。

 表1:数据集摘要。 

         我们在表1中总结了这些数据集,并在附录B中提供了更多细节。请注意,“任务”列指示了在每个数据集上执行的下游任务类型:“N”代表节点分类,“G”代表图分类。
        基线方法。我们将GraphPrompt与以下三个主要类别中的最新方法进行了比较:(1) 端到端的图神经网络:GCN [20], GraphSAGE [13], GAT [43] 和 GIN [50]。它们利用邻居聚合的关键操作递归地聚合来自邻居的消息,并以端到端的方式工作。(2) 图预训练模型:DGI [44], InfoGraph [38], 和 GraphCL [53]。它们采用“预训练,微调”范式工作。特别是,它们预训练GNN模型以保留内在的图属性,并在下游任务上微调预训练的权重以适应任务标签。(3) 图提示模型:GPPT [39]。GPPT使用链接预测任务进行预训练,并采用可学习的提示进行节点分类任务,该任务映射到链接预测任务。
        请注意,图上的其他少样本学习方法,如Meta-GNN [57] 和 RALE [26],采用了元学习范式[9]。因此,它们不能在我们的设置中使用,因为它们需要在元训练阶段的基本类别中使用标记数据。在我们的方法中,仅使用无标签的图进行预训练。
        设置和参数。为了评估我们的GraphPrompt实现统一设计的有效性,该设计可以灵活地适应不同的下游任务,我们考虑了两种典型的下游任务类型,即节点分类和图分类。特别是,对于适合这两种任务的 数据集,即PROTEINS和ENZYMES,我们在每个数据集上只预训练一次GNN模型,并使用相同的预训练模型进行两种下游任务及其特定任务的提示。
下游任务遵循𝑘-shot分类设置。对于每种类型的下游任务,我们构建了一系列𝑘-shot分类任务。任务构建的细节将在第5.2节报告结果时详细说明。对于任务评估,由于𝑘-shot任务是平衡分类,我们根据早期工作[26, 45]采用准确率作为评估指标。
        对于所有基线方法,基于作者提供的代码和默认设置,我们进一步调整了它们的超参数以优化性能。我们在附录D中提供了基线方法和我们的GraphPrompt的更多实现细节。

5.2 性能评估 

        正如所讨论的,我们执行两种与预训练中的链接预测任务不同的下游任务类型,即在少样本设置中的节点分类和图分类。我们首先在固定样本设置上进行评估,然后改变样本数量以观察性能趋势。
        少样本节点分类。我们在三个数据集上进行了这项节点级任务,即Flickr、PROTEINS和ENZYMES。遵循典型的𝑘-shot设置[26, 45, 57],我们为模型训练和验证生成了一系列少样本任务。特别是,对于PROTEINS和ENZYMES,我们每个图上随机生成了十个1-shot节点分类任务(即在每个任务中,我们每个类别随机采样1个节点)用于训练和验证。每个训练任务都与一个验证任务配对,而由这对训练和验证任务未采样的剩余节点将用于测试。对于Flickr,由于它包含大量非常稀疏的节点特征,选择非常少的样本进行训练可能会导致所有方法的性能不佳。因此,我们随机生成了十个50-shot节点分类任务,分别用于训练和验证。在Flickr上,50个样本仍然被认为是少数,占图中所有节点的不到0.06%。

表2:节点分类精度评价。 

         表2展示了少样本节点分类的结果。我们有以下观察。首先,我们提出的GraphPrompt在所有三个数据集上均优于所有基线方法,这证明了GraphPrompt在从预训练到下游任务转移知识方面的有效性。特别是,得益于统一框架和在ReadOut函数中的基于提示的任务特定聚合,GraphPrompt能够缩小预训练与下游任务之间的差距,并指导下游任务以任务特定方式利用预训练模型。其次,与图预训练模型相比,端到端GNN模型有时能够达到相当甚至更好的性能。这意味着这些预训练方法中预训练与下游任务之间的差异阻碍了知识从前者到后者的转移。在这种情况下,即使有复杂的预训练,它们也无法有效提升下游任务的性能。第三,尽管图提示模型GPPT也使用了提示,但它只与其他基线方法相当甚至更差。一个可能的原因是GPPT在它们的提示中需要更多的可学习参数,这在非常少的样本(例如1-shot)情况下可能效果不佳。
        少样本图分类。我们进一步在四个数据集上进行了少样本图分类,即PROTEINS、COX2、ENZYMES和BZR。对于每个数据集,我们随机生成了100个5-shot分类任务用于训练和验证,遵循与节点分类任务相似的过程。

表3:图分类精度评价。 

         我们在表3中展示了少样本图分类的结果,并有以下观察。首先,我们提出的GraphPrompt在这些四个数据集上显著优于基线方法。这再次证明了预训练与下游任务统一化的必要性,以及prompt辅助的任务特定聚合对于ReadOut的有效性。其次,由于节点和图分类任务在PROTEINS和ENZYMES上共享相同的预训练模型,GraphPrompt在这两种类型任务上的优越性能进一步证明,不同任务之间的差距通过我们的统一框架得到了很好的解决。第三,图预训练模型通常比端到端GNN模型获得更好的性能。这是因为InfoGraph和GraphCL都利用了图级任务进行预训练,这自然更接近于下游的图分类任务。

 

图3:shots对少样本节点分类的影响。 

图4:样本数量对少样本图分类的影响。 

        不同样本数量下的性能表现。我们研究了样本数量对PROTEINS和ENZYMES数据集的影响。对于节点分类,我们将样本数量在1到10之间变化,并在图3中与几个有竞争力的基线方法(即GIN, DGI, GraphCL, 和 GPPT)进行比较。对于少样本图分类,我们将样本数量在1到30之间变化,并在图4中与有竞争力的基线方法(即GIN, InfoGraph, 和 GraphCL)进行比较。任务设置与之前所述相同。
        总体而言,我们提出的GraphPrompt在样本数量较少时一致性地优于基线方法。对于节点分类,由于每个图中的节点数量相对较小,每个类别10个样本可能足以进行半监督节点分类。尽管如此,即使只有10个样本,GraphPrompt也是具有竞争力的。对于图分类,当给予更多样本(例如20个或更多)时,GraphPrompt可能会被一些基线方法超越,尤其是在ENZYMES数据集上。在这个数据集上,每个类别30个样本意味着600个图中的30%用于训练,这并不是我们的目标场景。

5.3 模型分析 

        我们进一步分析了我们模型的几个方面。由于篇幅限制,我们只报告了消融研究和参数效率研究,其余内容留到附录E中。
        消融研究。为了评估每个组件的贡献,我们通过比较不同提示策略下的GraphPrompt进行了消融研究:(1) 无提示:对于下游任务,我们移除了提示向量,并通过在直接求和基础的ReadOut操作获得的子图表示上使用分类器进行分类。(2) 线性提示:我们用方程(13)中的线性变换矩阵替换提示向量。
        我们在三个数据集上进行了节点分类的消融研究(Flickr, PROTEINS, 和 ENZYMES),以及图分类(COX2, ENZYMES, 和 BZR),并在图5中展示了比较结果。我们有以下观察:(1) 没有提示向量时,无提示通常在变体中表现最差,显示出对于不同的下游任务,需要以不同的方式提示ReadOut操作的必要性。(2) 将提示向量转换为线性变换矩阵也会损害性能,因为矩阵涉及更多参数,从而增加了对标记数据的依赖。

 

图5:消融研究。 

 

表4 节点分类参数效率研究。 

       参数效率。我们还比较了在下游节点分类任务中需要更新的参数数量,以及几个代表性模型的浮点运算次数(FLOPs),具体见表4。
        特别是,由于GIN以端到端的方式工作,很明显它涉及更新最多的参数。对于GPPT,它需要一个单独的可学习向量作为每个类的表示,以及一个注意力模块来在结构令牌生成中加权邻居进行聚合。因此,GPPT需要更新的参数比GraphPrompt多,这是损害其在下游任务性能的一个因素。对于我们提出的GraphPrompt,它不仅如我们之前所见的优于基线GIN和GPPT,而且在下游任务中需要的参数和FLOPs也最少。为了说明,除了提示调整,如果我们微调预训练的权重而不是冻结它们(记为GraphPrompt+ft),那么需要更新的参数将显著增多。

6 结论 

        本文研究了图上提示的研究问题,并提出了GraphPrompt,以克服图神经网络在监督或“预训练、微调”范式中的局限性。特别是,为了缩小图上的预训练和下游目标之间的差距,我们引入了一个统一框架,将不同的任务映射到一个共同的任务模板。此外,为了区分任务个性,实现特定任务最优,我们提出了一个可学习的特定任务提示向量,引导每个下游任务充分利用预训练模型。最后,我们在五个公共数据集上进行了广泛的实验,并表明GraphPrompt明显优于各种最先进的基线。 


   

 

 

 

 

         

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 


      

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值