深度图变换器的新突破:DeepGraph

 人工智能咨询培训老师叶梓 转载标明出处

在图变换器领域,尽管其全局注意力机制在图结构数据处理上显示出了巨大潜力,但现有的图变换器模型却普遍较浅,通常不超过12层。这一现象引发了学者们对于“增加层数是否能进一步提升图变换器性能”的深入探讨。在北京大学和微软研究院的合作下,研究者们提出了一个关键问题:为何现有的图变换器在增加深度后,性能并未得到显著提升,甚至出现了性能瓶颈?通过深入分析,他们发现这一问题的核心在于全局注意力机制的“消失容量”,即随着模型深度的增加,图变换器越来越难以聚焦于图的关键子结构,从而限制了模型获取富有表现力特征的能力。图1展示了不同深度的图变换器在ZINC数据集上的性能。左侧展示了随着深度增加,基线模型的性能如何变化。右侧展示了不同深度下,模型对子结构的注意力容量。

为了解决这一问题,研究团队提出了一种名为DeepGraph的新型图变换器模型。该模型通过在编码表示中显式引入子结构标记,并在相关节点上应用局部注意力,以获取基于子结构的注意力编码。这种方法不仅增强了全局注意力对子结构的聚焦能力,还提升了表示的表达力,有效解决了随着图变换器深度增加时自注意力的局限性。

方法

DeepGraph模型提出的基于子结构标记的局部注意力方法与直接替换全局注意力不同,DeepGraph在保留节点间全局注意力的同时,为子结构引入了局部注意力,实现了全局与局部编码的更好平衡。这种方法首先对图的子结构进行采样,然后将这些子结构编码为标记,并在这些子结构上实施局部注意力。

子结构被分为两类:包含局部特征的邻居(如图2跳邻居和随机游走邻居)和代表图拓扑特征的几何子结构(如图2中的环、路径、星形等特殊子结构)。为了确保计算的可行性,模型在每次编码时对子结构进行采样。图2展示了这一过程,其中子结构通过图工具包进行有效匹配,并缓存以供重用。该框架首先通过子结构采样策略从图中提取关键子结构,然后利用子结构标记编码将这些子结构转换为模型可以理解的标记形式。最后,在局部注意力机制的辅助下,模型能够专注于与子结构相关的节点,从而获得更丰富的图表示。

输入嵌入包括节点标记嵌入和子结构标记嵌入,分别由节点特征编码器和子结构编码器独立编码。子结构标记通过排列不变的结构编码直接编码子结构邻接矩阵。为了减少可能的排列组合数量,采用了深度优先搜索(DFS)算法,并在每一步中根据节点的度进行排序。公式:定义了子结构标记编码器,其中通过DFS采样代替了池化操作。

在子结构标记添加后,在子结构及其对应节点上应用局部注意力,通过在自注意力模块中添加掩码M来实现,其中掩码元素可以是0或负无穷大,从而在自注意力矩阵中实现稀疏性。公式:展示了如何通过定义掩码来引导模型对子结构标记和对应节点的局部注意力,其中子结构标记仅对相应节点应用局部注意力。这种注意力机制的结合不仅增强了模型对子结构的聚焦能力,还提升了子结构表示的区分度和表达能力。

DeepGraph模型通过在保留全局注意力的同时引入基于子结构的局部注意力,有效地解决了大模型在处理图数据时对关键子结构特征捕捉不足的问题。通过子结构采样、编码和局部注意力的实施,模型能够更准确地学习和表示图数据的复杂结构特征。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具(限时免费)。

1小时实战课程,您将学习到如何轻松上手并有效利用 Llama Factory 来微调您的模型,以发挥其最大潜力。

CSDN教学平台录播地址:https://edu.csdn.net/course/detail/39987 

实验

实验验证旨在解答几个关键问题:DeepGraph与其他变换器在流行基准测试中的表现如何?随着深度的增加,DeepGraph的性能是否提高?DeepGraph是否能够缓解注意力容量缩小的问题?以及模型各个部分对整体性能的影响如何?

实验在四个流行的图数据集上进行验证,包括PCQM4M-LSC、ZINC、CLUSTER和PATTERN,这些数据集被广泛用于图变换器研究。涵盖了从分子属性预测到节点分类的不同任务。

表1展示了DeepGraph与现有最先进方法在图回归和节点分类任务上的比较。结果显示,即使是12层的DeepGraph模型也在多个数据集上超越了基线模型。随着模型深度的增加,性能持续改善,48层的DeepGraph在所有数据集上都优于基线模型,证明了增加深度的有效性。

图3展示了DeepGraph模型与通过不同深度变换方法增强的现有最先进(SOTA)方法的性能比较。这些方法包括对Graphormer和SAT模型进行深度扩展,并通过融合方法(fusion method)和重注意力方法(reattention method)进行优化。结果表明,无论在哪个数据集上,DeepGraph都能显著优于这些基线模型,即使在模型深度增加的情况下也能保持性能提升,证明了其在深层图变换器中的有效性和优越性。

实验还通过可视化方法展示了DeepGraph与深层基线模型在ZINC数据集上的注意力容量。图1(右)展示了结果,表明DeepGraph模型的注意力容量在所有层中都保持较高,这表明基于子结构的局部注意力是防止注意力缺陷的有效方法。另外子结构标记的容量远高于基于节点计算的注意力容量,这证明了使用子结构标记对子结构进行编码的好处。

消融研究见表2。通过在ZINC和CLUSTER任务上进行消融研究来验证模型的有效性,移除了局部注意力、子结构编码和deepnorm,以观察它们的影响。结果表明,没有局部注意力,性能显著下降,证明了所提方法的有效性。另外子结构编码也起到了关键作用,强调了结构信息的重要性。最后,deepnorm通过稳定优化过程也有助于模型性能,特别是对于48层模型。

表3展示了在ZINC数据集上对DeepGraph模型进行的敏感性分析,特别是针对不同类型的子结构。这项研究探讨了仅使用几何子结构或邻居子结构,以及同时使用两者时,模型性能的变化。分析结果表明,虽然所有配置在一定程度上都能提升性能,但结合使用几何和邻居子结构时,模型表现最佳。这强调了在图变换器中同时考虑局部和几何子结构的重要性,以及DeepGraph模型在灵活利用不同子结构信息方面的能力。

实验结果证明了DeepGraph模型在图数据任务中的有效性和优越性,特别是在处理更深层模型时的性能提升。

论文地址:https://arxiv.org/pdf/2303.00579v1

项目地址:https://github.com/zhao-ht/deepgraph

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

单体架构 IM 系统之 Server 节点状态化分析

基于 http 短轮询模式的单体架构的 IM 系统见下图,即客户端通过 http 周期性地轮询访问 server 实现消息的即时通讯,也就是我们前面提到的 “信箱模型”。“信箱模型” 虽然实现非常容易,但是消息的实时性不高。 我们在上一篇文章&#xff08…

阿里云通义大模型团队开源Qwen2.5-Coder:AI编程新纪元

🚀 11月12日,阿里云通义大模型团队宣布开源通义千问代码模型全系列,共6款Qwen2.5-Coder模型。这些模型在同等尺寸下均取得了业界最佳效果,其中32B尺寸的旗舰代码模型在十余项基准评测中均取得开源最佳成绩,成为全球最强…

计算机网络(8)数据链路层之子层

上一篇已经讲到数据链路层可以分为两个子层,这次将重点讲解子层的作用和ppp协议 数据链路层的子层 数据链路层通常被分为两个子层: 逻辑链路控制子层(LLC,Logical Link Control): LLC子层负责在数据链路…

【操作系统】输入/输出(I/O)管理

王道笔记 一、I/O管理描述 1.1 I/O设备的概念和分类 1.1.1 什么是I/O设备 “I/O”就是“输入/输出”(Input/Output) I/O设备机会可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。下图就…

Day44 | 动态规划 :状态机DP 买卖股票的最佳时机IV买卖股票的最佳时机III309.买卖股票的最佳时机含冷冻期

Day44 | 动态规划 :状态机DP 买卖股票的最佳时机IV&&买卖股票的最佳时机III&&309.买卖股票的最佳时机含冷冻期 动态规划应该如何学习?-CSDN博客 本次题解参考自灵神的做法,大家也多多支持灵神的题解 买卖股票的最佳时机【…

Koa进阶:掌握中间件和参数校验的艺术

目录 一、首先下载依赖 二、在index.js中引入koa-parameter,一般挂载这个中间件时会放在注册请求体的后面 三、使用实例 四、如果跟我们所需求的参数不同,返回结果直接会返回422 koa-parameter一般是用来校验请求传过来的参数是否是自己所需要的的 G…

opencv(c++)----图像的读取以及显示

opencv(c)----图像的读取以及显示 imread: 作用:读取图像文件并将其加载到 Mat 对象中。参数: 第一个参数是文件路径,可以是相对路径或绝对路径。第二个参数是读取标志,比如 IMREAD_COLOR 表示以彩色模式读取图像。 返回值&#x…

git config是做什么的?

git config是做什么的? git config作用配置级别三种配置级别的介绍及使用,配置文件说明 使用说明git confi查看参数 默认/不使用这个参数 情况下 Git 使用哪个配置等级? 一些常见的行为查看配置信息设置配置信息删除配置信息 一些常用的配置信…

【计算机网络】【传输层】【习题】

计算机网络-传输层-习题 文章目录 10. 图 5-29 给出了 TCP 连接建立的三次握手与连接释放的四次握手过程。根据 TCP 协议的工作原理,请填写图 5-29 中 ①~⑧ 位置的序号值。答案技巧 注:本文基于《计算机网络》(第5版)吴功宜、吴英…

【二叉搜素树】——LeetCode二叉树问题集锦:6个实用题目和解题思路

文章目录 计算布尔二叉树的值求根节点到叶节点的数字之和二叉树剪枝验证二叉搜索树二叉搜索树中第K小的元素二叉树的所有路径 计算布尔二叉树的值 解题思路: 这是一个二叉树的布尔评估问题。树的每个节点包含一个值,其中叶子节点值为 0 或 1&#xff0…

2023年MathorCup数学建模A题量子计算机在信用评分卡组合优化中的应用解题全过程文档加程序

2023年第十三届MathorCup高校数学建模挑战赛 A题 量子计算机在信用评分卡组合优化中的应用 原题再现: 在银行信用卡或相关的贷款等业务中,对客户授信之前,需要先通过各种审核规则对客户的信用等级进行评定,通过评定后的客户才能…

嵌入式开发套件(golang版本)

1. watchdog(软件看门狗:守护升级) 2. gate(主程序) 3. web(api版本 升级包) OTA 升级流程 watchdog启动后检查守护进程gate是否正在运行,如果没有,api对比版本号&am…

解压专家 2.4.12| 多功能解压缩工具,支持密码共享、音乐播放和歌词匹配。

解压专家是一款功能强大的解压缩软件,提供了类似于WIFI万能钥匙的密码分享功能,帮助用户快速获取共享的解压密码。作为专业的解压缩工具,它支持多种常见和不常见的压缩包格式,如ZIP、RAR、7z、TAR.GZ和ISO等,并且还支持…

并发编程(10)——内存模型和原子操作

文章目录 十、day101. 内存模型基础1.1 对象和内存区域1.2 改动序列 2. 原子操作及其类型2.1 原子操作2.2 原子类型2.3 内存次序2.4 std::atomic_flag2.4.1 自旋锁 2.5 std::atomic&#xff1c;bool&#xff1e;2.6 std::atomic<T*>2.7 标准整数原子类型2.8 std::atomic&…

【Flink】-- flink新版本发布:v2.0-preview1

目录 1、简介 2、非兼容变更 2.1、API 2.2、连接器适配计划 2.3、配置 2.4、其它 3、重要新特性 3.1、存算分离状态管理 3.2、物化表 3.3、批作业的自适应执行 3.4、流式湖仓 4、附加 4.1、非兼容性的 api 程序变更 4.1.2、Removed Classes # 4.1.3、Modified Cl…

ffmpeg+D3D实现的MFC音视频播放器,支持录像、截图、音视频播放、码流信息显示等功能

一、简介 本播放器是在vs2019下开发&#xff0c;通过ffmpeg实现拉流解码功能&#xff0c;通过D3D实现视频的渲染功能。截图功能采用libjpeg实现&#xff0c;可以截取jpg图片&#xff0c;图片的默认保存路径是在C:\MYRecPath中。录像功能采用封装好的类Mp4Record实现&#xff0c…

webpack指南

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;webpack篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来webpack篇专栏内容:webpack-指南 概念 中文&#xff1a; webpack | webpack中文文档 | webpack中文网 英文&…

把越南语翻译成中文一般用什么翻译工具?《越南语翻译通》App或许能满足你的技术痛点需求!

在多语言交流日益频繁的今天&#xff0c;掌握越南语对于商务、旅游或学术交流都是一项重要技能。《越南语翻译通》App应运而生&#xff0c;旨在通过技术手段简化越南语学习和翻译过程&#xff0c;满足用户在不同场景下的需求。 核心技术 《越南语翻译通》App采用了先进的自然语…

Android Framework AMS(16)进程管理

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节主要解读AMS 进程方面的知识。关注思维导图中左上侧部分即可。 我们本章节主要是对Android进程管理相关知识有一个基本的了解。先来了解下L…

Rust Struct 属性初始化

结构体是用户定义的数据类型&#xff0c;其中包含定义特定实例的字段。结构有助于实现更容易理解的抽象概念。本文介绍几种初始化结构体对象的方法&#xff0c;包括常规方法、Default特征、第三方包实现以及构建器模式。 Struct声明与初始化 struct Employee {id: i32,name: …