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ÿ…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...