Can Transformer and GNN Help Each Other?
ABSTRACT
尽管 Transformer 在自然语言处理和计算机视觉方面取得了巨大成功,但由于两个重要原因,它很难推广到中大规模图数据:(i) 复杂性高。 (ii) 未能捕获复杂且纠缠的结构信息。在图表示学习中,图神经网络(GNN)可以融合图结构和节点属性,但感受野有限。因此,我们质疑是否可以将 Transformer 和 GNN 结合起来,互相帮助?在本文中,我们提出了一种名为 TransGNN 的新模型,其中 Transformer 层和 GNN 层交替使用以相互改进。具体来说,为了扩大感受野并解开边缘的信息聚合,我们建议使用 Transformer 聚合更多相关节点的信息,以改善 GNN 的消息传递。此外,为了捕获图结构信息,我们利用位置编码并利用GNN层将结构融合为节点属性,从而改进了图数据中的Transformer。我们还建议对 Transformer 最相关的节点进行采样,并提出两种有效的样本更新策略以降低复杂性。最后,我们从理论上证明 TransGNN 仅在具有额外的线性复杂度的情况下才比 GNN 更具表现力。在八个数据集上的实验证实了 TransGNN 在节点和图分类任务上的有效性。
关键词 图数据、图神经网络、Transformer
背景
近年来,Transformer在自然语言处理(NLP)和计算机视觉(CV)领域取得了巨大成功。它被公认为最强大的神经网络,并取代了卷积神经网络和循环神经网络,成为语言理解、机器翻译和图像分割等许多任务中新的事实上的标准。尽管 Transformer 在序列数据上已经被证明是成功的,但它还没有很好地推广到图上。图数据在我们的生活中也非常重要,它可以描述实体之间的多种关系,包含很多有用的知识。例如,我们可以通过分析新分子的图结构和节点属性来预测新分子的属性。
在图数据中使用Transformer面临的主要挑战有两方面:
(i)计算每个中心节点对整个图数据的注意力权重会导致O(N2)时间和空间复杂度,从而导致图变大时内存不足的问题。
(ii)虽然Transformer可以全局自适应地聚合信息,但由于其聚合过程完全不依赖于边,因此Transformer很难充分利用图结构信息。
在图表示学习中,图神经网络(GNN)已成为主导选择,各种 GNN 架构在许多基于图的任务中实现了最先进的性能,例如节点分类、链接预测和图分类。尽管 GNN 及其变体已经取得了很大的进步,但仍然存在一些局限性。一方面,消息传递机制依赖边来融合图结构和节点属性,导致很强的偏差和噪声。如果节点之间没有连接,就无法获得一些有用的信息。此外,在真实的图数据中,存在许多连接不相关节点的噪声边。这些由消息传递机制引起的偏差和噪声使得 GNN 学习到的表示包含不完整的信息,从而损害了下游任务的性能。另一方面,由于过度平滑问题,GNN 的感受野也受到限制。事实证明,随着GNNs架构变得更深并达到一定程度,模型将不再对训练数据做出响应,并且这种深度模型获得的节点表示往往会过度平滑,也变得难以区分。这些限制导致 GNN 出现令人沮丧的妥协,其中感受野有限的浅层 GNN 只能聚合邻域内的不完整信息,而深层 GNN 则存在过度平滑问题。
本文提出的问题是,是否可以将 Transformer 和 GNN 结合起来,通过融合各自的优势来相互帮助? 在 Transformer 的帮助下,GNN 的接受场可以扩展到更多相关的节点,这些节点可能远离中心节点。另一方面,GNN 可以帮助 Transformer 捕获复杂图拓扑信息,并有效地从邻域中聚合更多相关节点。
模型框架
TransGNN 的框架如图1所示,该框架由三个重要组成部分组成: (1)注意力采样模块,(2)位置编码模块,(3) TransGNN 模块。首先通过考虑注意力采样模块中的语义相似度和图结构信息,对每个中心节点进行最相关节点的采样。然后在位置编码模块中,计算位置编码以帮助 Transformer 捕获图拓扑信息。在这两个模块之后我们使用 TransGNN 模块,该模块按顺序包含三个子模块: (i) Transformer 层,(ii) GNN 层,(iii)样本更新子模块。其中,Transformer 层用于扩展 GNN 层的接受场,高效地聚合注意力样本信息,而 GNN 层则帮助 Transformer 层感知图结构信息,获取更多邻近节点的相关信息。样本更新子模块用于在新表示时有效地更新注意力样本。
图 1:TransGNN 的框架。我们首先对中心节点的相关节点进行采样,然后计算位置编码以通过结合结构信息来增强原始属性。在TransGNN模块中,Transformer层和GNN层相互改进,其次是样本更新子模块。
1 注意力采样模块
在图数据中,不需要计算每个节点对整个图的关注,只要考虑最相关的节点就足够了,这不仅降低了复杂性,而且还过滤掉了噪声节点的信息。计算节点属性的语义相似矩阵:
然而,通过 S 只能得到原始的语义相似度,而不考虑结构的影响。邻居节点的偏好对中心节点也有影响,因为在消息传递机制后,信息将被传递到邻居节点。使用以下公式更新相似度矩阵以包含邻居节点的偏好:
注意力采样:给定输入图 G 及其相似度矩阵 S,对于图中的节点 𝑣𝑖,我们将其注意力样本定义为集合 Smp(𝑣𝑖) = {𝑣𝑗 |𝑣𝑗 ∈ 𝑉 和 𝑆(𝑖, 𝑗) ∈ top-k (𝑆(𝑖, :))} 其中𝑆(𝑖, :) 表示 S 的第 𝑖 行,𝑘 作为超参数,决定应该关注多少个节点。
2 位置编码模块
在图数据中,结构信息对于图表示学习是非常重要的。然而,与类似网格的数据(其中序列顺序可以被 Transformer 轻松捕获)不同,图结构信息更为复杂。为了获取 Transformer 的图结构信息,我们提出了三种位置编码:(i)基于最短路径跳的位置编码。(ii)基于程度的位置编码。(iii)基于位置编码的 PageRank。前两个考虑了拓扑距离和局部结构,最后一个显示了拓扑在中、大型图中决定的重要性。
(1)基于最短路径跳的位置编码:
拓扑距离是图数据中一种重要的结构信息,可以在一定程度上用来描述拓扑相似性。具体地说,将最短路径跳矩阵记为P,对于每个节点𝑣∈V及其注意样本节点𝑣𝑗∈Smp(𝑣),最短路径跳为P(i,𝑗),计算每个注意样本节点𝑣𝑗的基于最短路径跳的位置编码(SPE)为:
(2)基于度的位置编码:
在图数据中,节点的度可以表示其周围邻居结构的复杂程度,而度越大的节点可能具有更复杂的局部结构。许多真实世界数据中的度分布具有幂律性质,表明中心节点和注意样本的度可能是不同的。对于任意一个度为degi的节点𝑣i,基于度的位置编码(DE)为
(3)基于Page Rank 的位置编码:
在现实图中,不同的节点由于拓扑结构的不同而具有不同的重要性。Page Rank算法可以根据节点在图数据中的结构角色对其重要性进行标注,其中重要性越高的节点将被标记为页面Rank值越高的节点。对于节点𝑣i,将其页面秩值表示为Pr(𝑣i),基于页面秩的位置编码(PRE)为:
基于上面定义的位置编码,Transformer 可以捕获许多不同类型的图结构信息,方法是将它们聚合到原始节点属性中。具体来说,对于中心节点𝑣和它的注意力样本Smp(𝑣),通过以下方式对位置编码进行聚合:
3 TransGNN模块
GNN 的感受野有限,因为它们的消息传递机制只聚集邻居内的信息,但深度 GNN 存在过度平滑问题。在图中,相关节点可能远离中心节点,并且在邻居内的节点也可能包含噪声。这损害了 GNN 的有效性。然而,虽然 Transformer 可以聚合远距离的相关信息,但是 Transformer 很难充分利用结构信息,并且复杂性也是重要的问题。在本模块中,将 Transformer 和 GNN 相结合,使其优势互补,其中包含三个子模块:(i) Transformer 层,(ii) GNN 层,(iii) samples 更新子模块。
(1)Transformer 层:
使用 Transformer 层来改进 GNN 层,将感受野扩展到更相关的节点,这些节点可能远离邻域。
多头的注意力
(2)GNN 层:
利用 GNN 层融合表示和图结构,帮助 Transformer 层更好地利用图结构。
(3)样本更新子模块:
在 Transformer 层和 GNN 层之后,注意力样本应该根据新的表示进行更新。然而,计算相似矩阵将导致𝑂(N2)复杂度。
基于随机游走的更新:考虑到图数据的局域性,相似节点更有可能包含在邻域中,通过探索注意力样本邻域来更新注意力样本,以找到可能的新的相关节点。使用随机漫步策略来探索每个采样节点的局部邻域。具体而言,根据相似度计算随机游走的转移概率为:
基于消息传递的更新:基于随机游动的更新策略有额外的开销。我们提出了另一种更新策略,利用GNN层的消息传递来更新样本,而没有额外的开销。具体来说,我们在GNN层的消息传递过程中,对每个中心节点的邻居节点的注意力样本进行聚合。这背后的直觉是,邻居的注意力样本也可能是中心节点的相关注意力样本。我们将相邻节点的关注样本集表示为关注消息,其定义如下:
理论分析
(1)定理1:TransGNN 至少具有 GNN 的表达能力,任何 GNN 都可以被 TransGNN 表达。
虚线表示Transformer层的感受野,颜色表示相似关系。
(2)定理2:TransGNN 比 1-WL Test 更具表达性。
实验
结果
节点分类
图分类
注意力采样
可视化
相关文章:

Can Transformer and GNN Help Each Other?
ABSTRACT 尽管 Transformer 在自然语言处理和计算机视觉方面取得了巨大成功,但由于两个重要原因,它很难推广到中大规模图数据:(i) 复杂性高。 (ii) 未能捕获复杂且纠缠的结构信息。在图表示学习中,图神经网络(GNN&…...

在隐私计算应用中和数链具备哪些技术特点?
在加速“可信数字化”进程的背景下,我国区块链产业将在打造新型平台经济,开启共享经济新时代的同时,带动数字经济“脱虚向实”服务实体经济。 和数软件在加速数字化进程的同时,进一步服务实体经济,提高实体经济的活力…...

【智能家居入门4】(FreeRTOS、MQTT服务器、MQTT协议、微信小程序)
前面已经发了智能家居入门的1、2、3了,在实际开发中一般都会使用到实时操作系统,这里就以FreeRTOS为例子,使用标准库。记录由裸机转到实时操作系统所遇到的问题以及总体流程。相较于裸机,系统实时性强了很多,小程序下发…...

爬取豆瓣(线程、Session)优化版本
爬取豆瓣(线程、Session)优化版本 该文章只是为了精进基础,对Session、threading、网站请求解析的理解。 此版本没有爬取详情页。还在学习阶段的读者可以尝试一下。 适用于基础刚开始学习爬虫的! 1.改进点: 将普通的r…...
拷贝控制总结
1.拷贝、值与销毁: 拷贝构造函数:如果一个构造函数的第一个参数是自身类类型的引用,且其他(如果有的话)参数都有默认实参,则此构造函数叫做拷贝构造函数;如果我们没有为类定义一个拷贝构造函数…...

无重复字符串的最长子串
题目描述:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。 第一次提交记录 class Solution:def lengthOfLongestSubstring(self, s: str) -> int:if not s:return 0lookup set()left res 0for right in range(len(s)):while s…...
javaScript Object.hasOwn()的用法
Object.hasOwn() 如果指定的对象自身有指定的属性,则静态方法 Object.hasOwn() 返回 true。如果属性是继承的或者不存在,该方法返回 false。 备注: Object.hasOwn() 旨在取代 Object.prototype.hasOwnProperty()。 **语法:**Objec…...

MINI2440 开发板 给他干出来了
环境是ubuntu14.04。不要问我为什么是这个版本,因为之前的ubuntu12.04 环境干不出来,你去试试就知道了!各种资源包下载不下来。 输入启动参数: 进入MINI2440:别说心里一万个开心,启动完成,输入p…...

上海人工智能实验室的书生·浦语大模型学习笔记(第二期第三课——上篇)
书生浦语是上海人工智能实验室和商汤科技联合研发的一款大模型,这次有机会参与试用,特记录每次学习情况。 一、课程笔记 本次学习的是RAG(Retrieval Augmented Generation)技术,它是通过检索与用户输入相关的信息片段…...
前端小白的学习之路(Vue2 三)
提示:学习vue2的第三天,笔记记录:生命周期,组件(注册,传值) 目录 一、生命周期 二、组件 1.注册组件 1)全局注册 2)局部注册 2.组件传值 1)父传子 2)子传父 3)兄弟传值 一…...
ChatGPT 之优势与缺陷
原文: 译者:飞龙 协议:CC BY-NC-SA 4.0 介绍 欢迎来到《ChatGPT:好的、坏的和丑陋的》。在本书中,我们踏上了探索 ChatGPT 多面世界的旅程,这是由 OpenAI 开发的先进自然语言处理模型。随着 ChatGPT 和类似…...

python爬虫———post请求方式(第十四天)
🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…...

51蓝桥杯之DS18B20
DS18B20 基础知识 代码流程实现 将官方提供例程文件添加到工程中 添加onewire.c文件到keil4里面 一些代码补充知识 代码 #include "reg52.h" #include "onewire.h" #include "absacc.h" unsigned char num[10]{0xc0,0xf9,0xa4,0xb0,0x99,…...

TiDB 组件 GC 原理及常见问题
本文详细介绍了 TiDB 的 Garbage Collection(GC)机制及其在 TiDB 组件中的实现原理和常见问题排查方法。 TiDB 底层使用单机存储引擎 RocksDB,并通过 MVCC 机制,基于 RocksDB 实现了分布式存储引擎 TiKV,以支持高可用分…...

【c++】STl-list使用list模拟实现
主页:醋溜马桶圈-CSDN博客 专栏:c_醋溜马桶圈的博客-CSDN博客 gitee:mnxcc (mnxcc) - Gitee.com 目录 1. list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 …...

号卡极团分销管理系统 index.php SQL注入漏洞复现
0x01 产品简介 号卡极团分销管理系统,同步对接多平台,同步订单信息,支持敢探号一键上架,首页多套UI+商品下单页多套模板,订单查询支持实时物流信息、支持代理商自定义域名、泛域名绑定,内置敢探号、172平台、号氪云平台第三方接口以及号卡网同系统对接! 0x02 漏洞概述…...

内核驱动更新
1.声明我们是开源的 .c 文件末尾加上 2.在Kconfig里面修改设备,bool(双态)-----》tristate(三态) 3.进入menuconfig修改为M 4.编译内核 make modules 也许你会看到一个 .ko 文件 5.复制到根目录文件下 在板子…...

故障诊断 | 一文解决,PLS偏最小二乘法的故障诊断(Matlab)
效果一览 文章概述 故障诊断 | 一文解决,PLS偏最小二乘法的故障诊断(Matlab) 模型描述 偏最小二乘法(Partial Least Squares, PLS)是一种统计建模方法,用于建立变量之间的线性关系模型。它是对多元线性回归方法的扩展,特别适用于处理高维数据和具有多重共线性的数据集。…...

我为什么选择成为程序员?
前言: 我选择成为程序员不是兴趣所在,也不是为了职业发展,全是生活所迫! 第一章:那年,我双手插兜,对外面的世界一无所知 时间回到2009年,时间过得真快啊,一下就是15年前…...

Open CASCADE学习|统计形状拓扑数量
边界表示法(Boundary Representation,简称B-Rep)是几何造型中最成熟、无二义的表示法。它主要用于描述物体的几何信息和拓扑信息。在边界表示法中,一个实体(Solid)由一组封闭的面(Faceÿ…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...