GPPT: Graph Pre-training and Prompt Tuning to Generalize Graph Neural Networks

GPPT: Graph Pre-training and Prompt Tuning to Generalize Graph Neural Networks

KDD22

推荐指数:#paper/⭐⭐#​

动机

本文探讨了图神经网络(GNN)在迁移学习中“预训练-微调”框架的局限性及改进方向。现有方法通过预训练(如边预测、对比学习)学习可迁移的图结构知识,在微调时将其应用于下游任务(如节点分类)。然而,预训练目标与下游任务之间的差异(如二元边预测与多类节点分类)导致知识传递低效甚至负迁移——微调效果可能逊于从头训练。传统改进方案依赖为每个下游任务定制预训练目标(目标工程),但需大量领域知识与试错成本。

受自然语言处理(NLP)中提示(Prompt)技术的启发,作者提出“预训练-提示-微调”新范式,旨在通过任务重表述缩小预训练与下游任务差异。例如,NLP通过添加语义模板将分类任务转化为与预训练一致的填空任务(如情感分类转为预测掩码词)。然而,图数据面临两大挑战:

  1. 符号化图数据适配难题:节点为抽象符号,无法直接套用基于文本模板的语义改写。
  2. 提示设计的有效性:需结合图结构(如节点邻域信息)设计高效的提示函数,以提升分类等任务精度。

因此,本文核心研究问题聚焦于如何设计图感知提示函数,以桥接预训练与下游任务,从而高效激发预训练模型的知识。该方向有望通过任务形式统一化提升预训练模型的泛用性,减少对定制化目标工程的依赖,推动少样本图分析的进一步发展。

image

图提示框架

Pre-train, Prompt, Fine-tune

Graph prompting function(图提示函数)

v i ′ = f p r o m p t ( v i ) v_{i}^{\prime}=f_{\mathrm{prompt}}(v_{i}) vi=fprompt(vi), v i ′ v_i' vi和映射头有相似的输入形状

Pairwise prompting function(成对提示函数)

v i ′ = f p r o m p t ( v i ) = [ T t a s k ( y ) , T s r t ( v i ) ] v_{i}^{\prime}=f_{\mathrm{prompt}}(v_{i})=[T_{\mathbf{task}}(y),T_{\mathbf{srt}}( v_{i})] vi=fprompt(vi)=[Ttask(y),Tsrt(vi)]

T t a s k T_{task} Ttask是下有任务的token, T s r c T_{src} Tsrc是目标节点结构的token。前者由待分类节点的标签得到,后者由目标节点周围子图表示,以提供更多的结构信息。很自然,可以利用函数来捕获他们两个的联系

Prompt addition

[ y 1 , ⋯ , y C ] [y_1,\cdots,y_C] [y1,,yC]为C个类的prompt。自然可以构造token对: [ T t a s k ( y c ) , T s r t ( v i ) ] , f o r c = 1 , ⋯ , C [T_{\mathrm{task}}(y_{c}),T_{\mathrm{srt}}(v_{i})],\mathrm{for~}c=1,\cdots,C [Ttask(yc),Tsrt(vi)],for c=1,,C

Prompt answer

对于每个token对,我们可以拼接,并将其放入预训练的映射头,如果目标节点 v i v_i vi 与某类得到最高的链接概率,我们就将其归为一类。

prompt tuning:

min ⁡ θ , ϕ ∑ ( v i , y c ) L p r e ( p ϕ p r e ( T t a s k ( y c ) , T s r t ( v i ) ) ; g ( y c , v i ) ) . \min_{\theta,\phi}\sum_{(v_i,y_c)}\mathcal{L}^{\mathrm{pre}}(p_\phi^{\mathrm{pre}}(T_{\mathrm{task}}(y_c),T_{\mathrm{srt}}(v_i));g(y_c,v_i)). minθ,ϕ(vi,yc)Lpre(pϕpre(Ttask(yc),Tsrt(vi));g(yc,vi)).其中,g为真实的标签函数

图形提示功能设计

任务token的生成:

e c = T t a s k ( y c ) ∈ R d e_c=T_\mathrm{task}(y_c)\in\mathbb{R}^d ec=Ttask(yc)Rd

E = [ e 1 , ⋯ , e C ] ⊤ ∈ R C × d E=[e_{1},\cdots,e_{C}]^{\top}\in\mathbb{R}^{C\times d} E=[e1,,eC]RC×d,C是类别数。

很自然,每个节点的token可以通过查询如上的任务token得到自己的类别。很自然的是, T t a s k ( y c ) T_{\mathbf{task}}(y_c) Ttask(yc)最优应该是类 y c y_c yc的中心。因此,我们通过聚类,来获得初始的tasktoken:

  1. 利用可扩展聚类(比如metis)获得M个类: { G 1 , ⋯ , G M } \{\mathcal{G}_1,\cdots,\mathcal{G}_M\} {G1,,GM},M是类别超参。
  2. 对于每个类,我们得到相应的task token: E m = [ e 1 m , ⋯ , e C m ] ⊤ ∈ R C × d E^m=[e_1^m,\cdots,e_C^m]^\top\in\mathbb{R}^{C\times d} Em=[e1m,,eCm]RC×d(怎么感觉有问题这一行表述)
  3. 给定集群 处节点 v i v_i vi 的任务令牌 T t a s k ( y c ) T_{task}(y_c) Ttask(yc) ,它使用向量嵌入 e c m e_c^m ecm 表示。
Structure Token Generation.(结构token的升成)

如果直接用节点v用于下游分类,会失去结构信息。因此我们使用 T s t r ( v i ) T_{\mathrm{str}}(v_i) Tstr(vi)来表示子图结构,来涵盖结构信息。在本文中,作者使用一阶子图来表示。

e v i = a i ∗ h i + ∑ v j ∈ N ( v i ) a j ∗ h j . e_{v_i}=a_i*h_i+\sum_{v_j\in\mathcal{N}(v_i)}a_j*h_j. evi=aihi+vjN(vi)ajhj.

a通过注意力机制得到

Prompt 初始化以及正交约束:

直接使用随机初始化肯定不太好,因此我们使用预训练的GNN来初始化 E m = [ e 1 m , ⋯ , e C m ] ⊤ E^{m}=[e_{1}^{m},\cdots,e_{C}^{m}]^{\top} Em=[e1m,,eCm]

因此,我们通过节点表示来初始化标记嵌入 e c m e^m_c ecm,节点表示由集群 m 处 y c y_c yc类的训练节点给出。

不同类的中心的距离应该尽可能的打,因此有: L o = ∑ m ∥ E m ( E m ) ⊤ − I ∥ F 2 . \mathcal{L}_o=\sum_m\|E^m(E^m)^\top-I\|_F^2. Lo=mEm(Em)IF2.

损失:

min ⁡ θ , ϕ , E 1 , ⋯ , E M ∑ ( v i , y c ) L p r e ( p ϕ p r e ( e c m , e v i ) ; g ( y c , v i ) ) + λ L o , s . t . θ i n i t = θ p r e , ϕ i n i t = ϕ p r e . \begin{aligned}\min_{\theta,\phi,E^{1},\cdots,E^{M}}&\sum_{(v_{i},y_{c})}\mathcal{L}^{\mathrm{pre}}(p_{\phi}^{\mathrm{pre}}(e_{c}^{m},e_{v_{i}});g(y_{c},v_{i}))+\lambda\mathcal{L}_{o},\\\mathrm{s.t.}&\theta^{\mathrm{init}}=\theta^{\mathrm{pre}},\phi^{\mathrm{init}}=\phi^{\mathrm{pre}}.\end{aligned} θ,ϕ,E1,,EMmins.t.(vi,yc)Lpre(pϕpre(ecm,evi);g(yc,vi))+λLo,θinit=θpre,ϕinit=ϕpre.

结果:

image

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/72454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

迷你世界脚本方块接口:Block

方块接口:Block 彼得兔 更新时间: 2024-08-27 11:04:56 具体函数名及描述如下: 序号 函数名 函数描述 1 isSolidBlock(...) 是否是固体方块 2 isLiquidBlock(...) 是否是液体方块 3 isAirBlock(...) 是否是气体方块 4 getBl…

Windows下git疑难:有文件无法被跟踪

Windows下git疑难:有文件无法被跟踪 最近在写一个c# WinFrom程序, 奇怪的是,frmMain.cs这个文件一直无法被跟踪 研究了很久, 参考这一篇 https://blog.csdn.net/m0_37315653/article/details/83064810 git rm --cached ./ -r 之…

Live2d官方项目运行

Live2d官方项目运行 1-参考网址 教程网址:https://blog.csdn.net/qq_39123467/article/details/131735085live2d官方地址:https://live2d.com/cubism-sdk/download/ 2-上手实践 1)先打开官方项目-全部路径打开2)cd /CubismSdkFo…

BUU43 [BJDCTF2020]The mystery of ip 1

前置知识: X - Forwarded - For注入 X - Forwarded - For(XFF)是一个 HTTP 头字段,用于记录客户端的真实 IP 地址。当客户端请求经过代理服务器时,代理服务器会将客户端的 IP 地址添加到 X - Forwarded - For 头中。…

张岳教授:语言模型推理与泛化研究 | ICLR 2025 特邀报告与团队专场

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! AITIME 01 ICLR 2025预讲会特邀报告 AITIME 02 ICLR 2025预讲会西湖大学张岳老师实验室专场 01 AI生成文本的自动化检测 Glimpse: Enabling White-Box Methods to Use Proprietary Models for Zero-Shot LLM-Ge…

MySQL SQL 优化专题

MySQL SQL 优化专题 1. 插入数据优化 -- 普通插入(不推荐) INSERT INTO tb_user VALUES(1,tom); INSERT INTO tb_user VALUES(2,cat); INSERT INTO tb_user VALUES(3,jerry);-- 优化方案1:批量插入(推荐,不建议超过1…

【AI深度学习基础】NumPy完全指南进阶篇:核心功能与工程实践(含完整代码)

NumPy系列文章 入门篇进阶篇终极篇 一、引言 在掌握NumPy基础操作后,开发者常面临真实工程场景中的三大挑战:如何优雅地处理高维数据交互?如何在大规模计算中实现内存与性能的平衡?怎样与深度学习框架实现高效协同?…

Python学习第十八天之深度学习之Tensorboard

Tensorboard 1.TensorBoard详解2.安装3.使用4.图像数据格式的一些理解 后续会陆续在词博客上更新Tensorboard相关知识 1.TensorBoard详解 TensorBoard是一个可视化的模块,该模块功能强大,可用于深度学习网络模型训练查看模型结构和训练效果(…

【GraphQL API 漏洞简介】

GraphQL API 漏洞简介 一、漏洞原理与分类二、漏洞检测方法三、典型利用方式四、工具推荐防御建议 GraphQL API 因其灵活性和高效性被广泛应用,但也因设计和实现缺陷存在多种安全风险。以下从漏洞原理、检测方法及利用方式三个维度进行详细分析: 一、漏洞…

Windows逆向工程入门之MASM数据结构使用

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 第一章:MASM数据定义体系精要 1.1 基础数据类型全景 1.1.1 整型数据规范 1.1.2 浮点数据编码 1.2 复合数据结构 1.2.1 多维数组定义 1.2.2 复杂结构体 第二章&#xf…

筑牢安全防线:工商业场所燃气泄漏防护新方案

燃气安全是企业经营不可逾越的生命线。在餐饮后厨、化工车间、酒店锅炉房等场所,可燃气体一旦泄漏,极易引发严重事故。如何实现精准监测、快速响应,成为工业及商业领域安全管理的核心诉求。旭华智能深耕安全监测领域,推出的工业及…

本地部署大数据集群前置准备

1. 设置VMware网段 虚拟网络编辑器——更改设置——选择VMnet8——子网改成192.168.88.0——NAT设置——网关设置为192.168.88.2 2. 下载CentOS操作系统 下载CentOS 7.6(1810)版本 3. 在VMware中安装CentOS操作系统 创建新的虚拟机——典型——安装光盘映像文件——输入账…

【蓝桥杯单片机】第十二届省赛

一、真题 二、模块构建 1.编写初始化函数(init.c) void Cls_Peripheral(void); 关闭led led对应的锁存器由Y4C控制关闭蜂鸣器和继电器 由Y5C控制 2.编写LED函数(led.c) void Led_Disp(unsigned char ucLed); 将ucLed取反的值赋给P0 开启锁存器…

PyCharm接入本地部署DeepSeek 实现AI编程!【支持windows与linux】

今天尝试在pycharm上接入了本地部署的deepseek,实现了AI编程,体验还是很棒的。下面详细叙述整个安装过程。 本次搭建的框架组合是 DeepSeek-r1:1.5b/7b Pycharm专业版或者社区版 Proxy AI(CodeGPT) 首先了解不同版本的deepsee…

CSS 系列之:grid 布局

基本概念 <template><div class"parent"><div class"box">p1-1</div><div class"box">p1-2</div><div class"box">p1-3</div></div><div class"parent"><…

数学软件Matlab下载|支持Win+Mac网盘资源分享

如大家所了解的&#xff0c;Matlab与Maple、Mathematica并称为三大数学软件。Matlab应用广泛&#xff0c;常被用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人&#xff0c;控制系统等领域。 Matlab将数值分析、矩阵计算、科学…

水仙花数(华为OD)

题目描述 所谓水仙花数&#xff0c;是指一个n位的正整数&#xff0c;其各位数字的n次方和等于该数本身。 例如153是水仙花数&#xff0c;153是一个3位数&#xff0c;并且153 13 53 33。 输入描述 第一行输入一个整数n&#xff0c;表示一个n位的正整数。n在3到7之间&#x…

物联网同RFID功能形态 使用场景的替代品

在物联网&#xff08;IoT&#xff09;和自动识别技术领域&#xff0c;除了RFID标签外&#xff0c;还有一些其他技术产品可以在形态和大小上与RFID标签相似&#xff0c;同时提供类似或更强大的功能。以下是几种能够替代RFID标签的产品&#xff1a; 一、NFC标签 NFC&#xff08;…

03.03 QT

1.在注册登录的练习里面&#xff0c;追加一个QListwidget 项目列表 要求:点击注册之后&#xff0c;将账号显示到 1istwidget上面去 以及&#xff0c;在listwidget中双击某个账号的时候&#xff0c;将该账号删除 Widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWi…

c++ cout详解

在 C++ 中,cout 是标准输出流对象,用于向控制台(或标准输出设备)输出数据。它是 iostream 库的核心组件之一,与 << 流插入运算符配合使用。 一、基本用法 1. 头文件和命名空间 #include <iostream> // 必须包含的头文件 using namespace std; // 命名空间(…