今天介绍的这篇文章是新加坡国立大学在WWW 2023上发表的一篇工作,将NLP中的prompt思路应用到了图学习中,统一上下游任务的一致性,在下游的node classification、graph classification等任务中都取得了不错的效果。
论文标题:GraphPrompt: Unifying Pre-Training and Downstream Tasks for Graph Neural Networks
下载地址:https://arxiv.org/pdf/2302.08043.pdf
1、Prompt应用于图学习的动机
Prompt在NLP领域取得了成功的应用,其核心目的在于缩小上游任务和下游任务的差距,从原来的pretrain-finetune训练范式修改为pretrain-prompt训练范式。这种方式让下游任务通过prompt靠近上游任务,缓解了pretrain和finetune两个过程中,上下游任务不同带来的效果损失。
那么prompt的思路能否应用到其他领域呢?文中提出,在图学习中,可以将link prediction作为预训练任务,对于下游的node级别任务和graph级别任务,都可以统一成子图相似度计算任务。因为link prediction在判断两个节点是否有连边的过程中,会考虑两个节点周围的拓扑结构,可以看成是子图相似度计算。而node级别任务和子图级别任务也是类似的,都是利用节点周围子图或某个子图的表征相似程度进行预测。
基于上述动机,本文提出了GraphPrompt,将图学习中的上游任务和下游的点级别、图级别任务统一起来,减小上下游任务之间的差距。
2、实现方法
文中首先对link prediction、node classification、graph classification三种任务进行了统一,这三者都可以看成是子图匹配任务。
link prediction可以看成是由一个anchor样本、一个与anchor有连边的正样本、一个与anchore无连边的负样本组成的三元组,让anchor与正样本的子图距离小于anchor与负样本的子图距离。
node classification可以看成是一个节点周边子图的表征和各个类别向量之间的距离。
graph classification与node classification类似,可以看成是一个子图和各个类别向量之间的距离。
预训练任务使用link prediction任务,对于一个节点,采样其邻居作为正样本,图中和其无连边的节点作为负样本,构造三元组进行训练。
对于下游任务,不同类型的下游任务需要从图中提取的信息是不同的。因此文中提出了针对不同任务的个性化prompt。实现个性化prompt的方法,主要是为不同任务指定一个可学习的prompt向量,这个向量对子图的各个节点表征进行element-wise的加权求和,从而实现针对不同任务个性化选择使用子图中的哪些信息。文中提出,也可以采用不同类型的prompt,例如也可以每个任务一个prompt矩阵,直接和子图各个节点表征相乘。
总的来看,文中虽然以prompt为中心,但是采用的prompt方式和NLP中完全不同,核心是借助NLP中上下游任务统一的思路,将图学习中的上下游任务都抽象成节点表征任务。
3、实验结果
文中基于这种预训练方法,在node classification和graph classification两类下游任务中进行实验,效果都取得了比较显著的提升。