首页 > 编程语言 >GraphPrompt: Unifying Pre-Training and Downstream Tasks for Graph Neural Networks

GraphPrompt: Unifying Pre-Training and Downstream Tasks for Graph Neural Networks

时间:2023-10-24 21:46:40浏览次数:45  
标签:Pre Training Tasks mathbf text 结点 tilde mathcal sim

目录

Liu Z., Yu X., Fang Y. and Zhang X. GraphPrompt: Unifying pre-training and downstream tasks for graph neural networks. WWW, 2023.

统一的图预训练模型 + Prompt 微调.

符号说明

  • \(G = (V, E)\), 图;
  • \(\mathbf{X} \in \mathbb{R}^{|V| \times d}\), node features;
  • \(\mathcal{G} = \{G_1, G_2, \ldots, G_N\}\), a set of graphs.
  • \(S_v = (V(S_v), E(S_v))\), 结点 \(v\) 的子图 (\(\le \delta\) hops):

    \[V(S_n) = \{d(u, v) \le \delta | u \in V\}, \\ E(S_n) = \{(u, u') \in E| u \in V(S_v), u' \in V(S_v)\}. \]

GraphPrompt

  • 作者想通过 pretraining + prompt 的方式使得模型适用于各种下游任务, 首先需要做的是就是保持预训练模型和下游任务的预测基础, 对于图而言, 这个基础就是图的拓扑结构.

  • 所以预训练任务是如此设计的:

    1. 对于结点 \(v\), 从邻居中采样正样本结点 \(a\), 并从非邻居中采样负样本结点 \(b\), 各自提取子图: \(S_v, S_a, S_b\);
    2. 预训练模型对图上特征进行转换后, 每个子图的结点通过如下方式得到:

      \[\mathbf{s}_x = \text{ReadOut}(\{\mathbf{h}_u: u \in V(S_x)\}), \quad x \in \{v, a, b\}. \]

    3. 接着, 我们通过如下损失训练:

      \[\mathcal{L}_{pre} = -\sum_{(v, a, b) \in \mathcal{T}_{pre}} \ln \frac{\exp(\text{sim}(\mathbf{s}_v, \mathbf{s}_a) / \tau)}{\sum_{u \in \{a, b\}} \exp(\text{sim}(\mathbf{s}_v, \mathbf{s}_u) / \tau)}. \]

  • 在预训练模型的基础上怎么做图的各种下游任务呢?

    • Link prediction: 这个是自然的, 直接通过

      \[\text{sim}(\mathbf{s}_v, \mathbf{s}_u) \]

      来判断两个结点的距离即可.

    • Node classification: 假设 k-shot 的设置, 假设结点类别集合为 \(C\), 对于每个类 \(c\in C\) 有 \(\{(v_i, \ell_i = c\}_{i=1}^k\) 对, 然后计算类内中心:

      \[\tilde{\mathbf{s}}_c = \frac{1}{k} \sum_{(v_i, \ell_i) \in D, \ell_i = c} \mathbf{s_{v_i}}, \quad \forall c \in C. \]

      则每个结点的分类可以通过:

      \[\hat{\ell}(v_j) = \text{argmax}_{c \in C} \: \text{sim}(\mathbf{s}_{v_j}, \tilde{\mathbf{s}}_c). \]

    • Graph classification: 和 node classification 类似, 同样假设 k-shot settings, 此时类内中心为:

      \[\tilde{\mathbf{s}}_c = \frac{1}{k} \sum_{(G_i, L_i) \in \mathcal{D}, L_i = c} \mathbf{s_{G_i}}, \quad \forall c \in \mathcal{C}. \]

      然后通过如下方式分类:

      \[\hat{L}(G_j) = \text{argmax} \: \text{sim}(\mathbf{s}_{G_j}, \tilde{\mathbf{s}}_c). \]

  • 虽然现在预训练模型和任务和后续下游任务形式上保持了一致, 但是如果不加微调直接用还是太过粗糙. 于是作者希望通过 prompt 来区分不同的下游任务.

  • 和预训练不同之处在于, 在 readout 部分:

    \[\mathbf{s}_{t, x} = \text{ReadOut}(\{\mathbf{p}_t \odot \mathbf{h}_v: v \in V(S_x)\}). \]

  • 微调的损失为 (针对 node/graph classification):

    \[\mathcal{L}_{prompt}(\mathbf{p}_t) =-\sum_{(x_i, y_i) \in \mathcal{T}_t} \ln \frac{ \exp(\text{sim}(\mathbf{s}_{t, x_i}, \tilde{\mathbf{s}}_{t, y_i}) / \tau) }{ \sum_{c \in Y} \exp(\text{sim}(\mathbf{s}_{t, x_i}, \tilde{\mathbf{s}}_{t, c}) / \tau) }. \]

代码

[official]

标签:Pre,Training,Tasks,mathbf,text,结点,tilde,mathcal,sim
From: https://www.cnblogs.com/MTandHJ/p/17785798.html

相关文章

  • Oracle Preinstall 调优参数的学习
    OraclePreinstall调优参数的学习背景学习是一个痛苦并快乐的过程.之前自己手工安装过很多套Oracle数据库,也总结过很多但是很多都是比较皮毛的.最近遇到了一些问题.才发现.快餐只能吃饱,要是想学到东西必须精读.必须多方考证多方学习.用户相关所有的应用都不应......
  • Unity DOTS系列之Filter Baking Output与Prefab In Baking核心分析
    最近DOTS发布了正式的版本,我们来分享一下DOTS里面Baking核心机制,方便大家上手学习掌握UnityDOTS开发。今天给大家分享的Baking机制中的FilterBakingOutput与PrefabInBaking。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发......
  • GPT-GNN: Generative Pre-Training of Graph Neural Networks
    目录概符号说明GPT-GNN代码HuZ.,DongY.,WangK.,ChangK.andSunY.GPT-GNN:Generativepre-trainingofgraphneuralnetworks.KDD,2020.概比较早的一篇图预训练模型.符号说明\(G=(\mathcal{V},\mathcal{E},\mathcal{X})\),某个图,其中\(\mathcal{X}\)......
  • 2023-10-24 Too many re-renders. React limits the number of renders to prevent an
    React报错:Toomanyre-renders.Reactlimitsthenumberofrenderstopreventaninfiniteloop. 重新渲染过多。React限制渲染次数,以防止出现无限循环。解决方案:查看你最近写的代码,比如我写了一个函数组件,我在函数组件里面写了直接执行的任务,这将导致状态变化,react会重新渲......
  • 利用docker安装wordpress
    ubuntu系统没有docker直接snapinstalldocker拉取wordpress镜像dockerpullwordpress:php7.3创建mysql数据文件夹mkdir-p/data/wordpress/运行mysql5.7镜像,没有会直接拉取dockerrun-d--namemy_mysql--restartalways-eMYSQL_ROOT_PASSWORD=redhat-eMYSQL_D......
  • Premiere CC2018 Mac汉化版「Pr 常用视频编辑软件」附汉化补丁
    Premierecc2018mac版是Adobe公司开发的一款可以在Mac系统上运行的常用视频编辑软件。作为行业数一数二的视频编辑软件,Prcc2018mac版提供了剪辑、调色、采集、美化音频、字幕添加、输出、DVD刻录的一整套流程,并且与其他的Adobe软件高效集成,使用户可以在编辑、制作、以及工作流上......
  • Adobe Prelude CC2021 for Mac「Pl」汉化版下载附安装激活步骤
    AdobePrelude是一款非常实用的视频处理工具,在办公软件中我们都知道本公司的产品那就是非常好用,而且这款视频处理工具也很不错,而且这款视频处理工具也很不错,它能快速有效地帮助大家进行办公软件的开发。软件地址:看置顶贴AdobePrelude2021Mac版软件特点:1、全新快速入门体验新的启......
  • DevExpress WinForms地图组件 - 轻松集成地图功能到应用程序
    DevExpressWinForms地图控件允许您在WinForms应用程序中合并地图服务,您可以选择现有的地图资源,如如Bing或OpenStreetMap,或者在公司网络中创建自己的地图数据服务器。DevExpressWinForms地图控件完全支持矢量和笛卡尔坐标地图。DevExpressWinForms有180+组件和UI库,能为Windows......
  • 从零用VitePress搭建博客教程(7) -– 如何用Github Actions自动化部署到Github Pages?
    接上一节:从零用VitePress搭建博客教程(6)-–第三方组件库的使用和VitePress搭建组件库文档 我们搭建完成vitePress后,那么接下来就是如何部署到线上服务器,这里使用GithubPages,免得自己购买服务器,当然你也可以自己购买服务器来部署(比如阿里云服务器)。在部署之前,我们先简单了解......
  • Hello-FPGA CoaXPress 2.0 FPGA HOST IP Core PCIe Demo User Manual
     目录1说明42设备连接73VIVADOFPGA工程84调试说明9图1‑1资料目录4图1‑2VIVADO工程目录结构5图1‑3VS软件工程目录5图1‑4CXPHOSTPCIeBlockDesign5图1‑5VS工程6图1‑6CXPcamera6图1‑7KC705搭载Hello-FPGACoaXPress2.0FMC子......