首页 > 其他分享 >图表示学习中的Transformer:Graphormer的突破

图表示学习中的Transformer:Graphormer的突破

时间:2024-09-29 11:50:00浏览次数:11  
标签:编码 Transformer 模型 学习 Graphormer GNN 节点

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

在自然语言处理和计算机视觉等领域,Transformer架构已经成为主导选择。然而,在图级别的预测任务中,它的表现并不如主流的图神经网络(GNN)变体。这一现象引发了一个思考:Transformer是否适合图表示学习,以及如何使其在图表示学习中发挥作用。来自大连理工大学、普林斯顿大学、北京大学和微软亚洲研究院的研究人员共同提出了一种名为Graphormer的新型架构,该架构基于标准的Transformer架构,并在多个图表示学习任务上取得了优异的结果。

Graphormer的核心观点是,要有效地利用Transformer进行图表示学习,关键在于如何有效地将图的结构信息编码到模型中。为此提出了几种简单但有效的结构编码方法,帮助Graphormer更好地模拟图结构数据。

方法

图1为Graphormer模型中的三种关键结构编码方法:中心性编码、空间编码和边编码的视觉表示。这些编码方式共同作用,使得Graphormer能够有效地利用图数据的结构信息。

中心性编码

中心性编码是Graphormer的一个关键特性,它通过考虑节点的入度和出度来捕捉节点在图中的重要性。这种编码方式允许模型在计算注意力时同时考虑节点的语义相关性和节点的重要性。如图1所示,中心性编码可以被视为节点特征的直接扩展。

其中,是可学习的嵌入向量,分别由节点的入度和出度决定。这种编码方式使得模型能够更好地理解图中节点的重要性。

空间编码

空间编码利用了Transformer的全局接受域优势,通过定义一个函数φ来衡量节点对之间的空间关系。这个函数基于节点之间的最短路径距离,为自注意力模块提供了一个可学习的偏置项。

这种编码方式允许模型根据图的结构信息自适应地调整注意力分布,从而更好地捕捉图中的空间依赖性。

边编码

边编码是Graphormer的另一个创新点,它通过考虑连接节点对的边的特征来增强注意力机制。这种方法通过计算边特征和可学习嵌入的点积的平均值,将边特征作为注意力模块的偏置项纳入模型。

其中,c_ij​ 是通过边特征和可学习嵌入的点积的平均值计算得到的,这使得模型能够更全面地利用边信息。

Graphormer层是基于经典的Transformer编码器实现的,它在多头自注意力(MHA)和前馈块(FFN)之前应用层归一化(LN),而不是之后。这种修改已被证明可以更有效地优化模型。

Graphormer引入了一个特殊节点[VNode],它与图中的每个节点单独连接,使得模型能够更好地捕捉整个图的全局信息。

Graphormer不仅能够表示流行的GNN模型(如GIN、GCN、GraphSAGE)中的AGGREGATE和COMBINE步骤,而且通过使用空间编码,Graphormer能够超越经典的信息传递GNNs,其表达能力不亚于1-Weisfeiler-Lehman (WL)测试。

另外Graphormer还发现使用自注意力和虚拟节点启发式之间存在有趣的联系。自注意力能够自然地完成图级别的聚合和传播操作,而无需额外的编码,这使得Graphormer在不遇到过度平滑问题的情况下,实现了可扩展的改进。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

评论留言“参加”或扫描微信备注“参加”,即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory。关注享粉丝福利,限时免费录播讲解。

实验

首先在OGB-LSC(Open Graph Benchmark Large-Scale Challenge)上进行了实验,这是目前最大的图级别预测数据集,包含超过3.8M个图。还在OGB和benchmarking-GNN的其他三个流行任务上报告了结果。

实验设置:

模型大小:报告了两种模型大小的结果,Graphormer(L = 12, d = 768)和较小的GraphormerSMALL(L = 6, d = 512)。

优化器:使用AdamW,设置超参数ϵ为1e-8,(β1, β2)为(0.99, 0.999)。

学习率调度:峰值学习率设置为2e-4(GraphormerSMALL为3e-4),预热阶段为60,000步,之后采用线性衰减学习率调度器。

总训练步数:1M步。

批处理大小:1024。

训练硬件:所有模型在8个NVIDIA V100 GPU上训练了大约2天。

表1展示了在PCQM4M-LSC数据集上的性能比较。GIN-VN在验证MAE上达到了0.1395的最佳状态。报告了GT模型的结果,通过增大隐藏维度到768(称为GT-Wide),参数总数达到83.2M,但未超过GIN-VN和DeeperGCN-VN的性能。

Graphormer在与之前最佳GNN架构相比,显著超越GIN-VN,例如,在验证MAE上降低了11.5%。使用ExpC集成后,Graphormer在完整测试集上达到了0.1200的MAE,并在OGB大规模挑战中赢得了图级别赛道的第一名。

进一步研究了Graphormer在OGB(OGBG-MolPCBA, OGBG-MolHIV)和benchmarking-GNN(ZINC)上的图级别预测任务的性能。由于OGB鼓励预训练,主要探索了在PCQM4M-LSC上预训练的Graphormer模型的迁移能力。

表2、表3和表4总结了Graphormer与其他GNN在MolHIV、MolPCBA和ZINC数据集上的性能比较。Graphormer在所有三个数据集上一致且显著地超越了之前的最先进GNN,性能提升幅度很大。

最后在PCQM4M-LSC数据集上对Graphormer的关键设计元素进行了系列消融研究。表5展示了不同设计元素的消融研究结果。空间编码、中心性编码和边编码的引入都显著提高了模型的性能,证明了这些编码方式在Transformer架构中对建模图数据的有效性。

Graphormer的代码和模型在以下GitHub链接公开提供:GitHub - microsoft/Graphormer: Graphormer is a general-purpose deep learning backbone for molecular modeling.

论文链接:https://arxiv.org/pdf/2106.05234 

标签:编码,Transformer,模型,学习,Graphormer,GNN,节点
From: https://blog.csdn.net/weixin_44292902/article/details/142459601

相关文章

  • SpringBoot学习笔记(一)
    源码地址(含完整笔记):https://gitee.com/Mr-Sponge/spring-boot-study主要学习以下内容:SpringBoot入门了解知识(比如:各个注解是什么意思,SpringBoot是如何封装数据到容器的,等等)前后端是如何交互的SpringBoot中的拦截器原理HTML如何实现文件上传(能否实现一个限制上传的文件类型......
  • 经典强化学习算法:分层强化学习算法—options算法2(理解篇)
    论文地址:https://people.cs.umass.edu/~barto/courses/cs687/Sutton-Precup-Singh-AIJ99.pdf例子:这是一个寻路问题,该问题使用强化学习算法解决,准确的来说是使用“表格表示的强化学习算法中的规划算法”来进行解决的;之所以没有说是使用规划算法来说是因为这里使用了学习型......
  • 深度DFS 和 广度BFS搜索算法学习
    深度DFS和广度BFS搜索算法学习 目录广度优先的动态图深度优先的动态图广度和深度的具体步骤深度和广度的应用场景 图的两种遍历方式:深度优先遍历(DFS——DepthFirstSearch)广度优先遍历(BFS——BreathFirstSearch)图的遍历算法里,处理临时数据,依赖两个抽象......
  • 浅浅记录学习情况叭
    BasicConcepts对于一个给定的网络G=(V,E),其中V为网络的节点集,E为网络的边集.Trace(迹):将G划分为q个社区,我们用一个qxq的对称矩阵e来表示该划分,e中的每个元素表示连接社区i与社区j的边在G的全部边中所占的比例显然有∑i,jeij=1。矩阵e的迹Tr(e)表示连接社区内部节点的边......
  • Mybatis学习笔记
    目录Mybatis简介MyBatis历史MyBatis特性MyBatis下载和其它持久化层技术对比搭建MyBatis开发环境创建maven工程创建MyBatis的核心配置文件创建mapper接口创建MyBatis的映射文件通过junit测试功能加入log4j日志功能核心配置文件详解默认的类型别名MyBatis的增删改查MyBatis获取参数......
  • 什么样的人适合学习网络安全?
    有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题:什么样的人适合学习网络安全?我适不适合学习网络安全?会产生这样的疑惑并不奇怪,毕竟网络安全这个专业在2017年才调整为国家一级学科,而且大众对于网络安全的认知度不高,了解最多的可能就是个人信息......
  • C++ 学习,标准库
    C++标准库是C++语言的重要组成部分,它提供了一系列的类、函数和模板,使得开发者能够更加高效地进行编程。C++标准库包括一组头文件,头文件提供了各种功能和工具,涵盖了输入输出、容器、算法、多线程、正则表达式等。C++标准库可以分为两部分:标准函数库: 由通用的、独立的、......
  • 使用表格型强化学习算法解决寻路问题的两种建模方式
    寻路问题示意图:(只有目标点形式的示意图)寻路问题示意图:(带有目标点和起始点形式的示意图,红色位置为起始点,黑色位置为目标点)解决强化问题首先需要建模,只有把目标问题建立为强化学习模型后才能使用强化学习算法进行解决;在这一过程中我们在建立强化学习模型(指定环境,状态迁移函......
  • python学习-python对文件的操作
    Python文件操作指南一、文件的打开与关闭(一)打开文件在Python中,可以使用内置的open()函数来打开文件。它接受文件名和模式作为参数,并返回一个文件对象。基本语法:file=open(file_name,mode)file_name:要打开的文件的名称,可以是相对路径或绝对路径。mode:打开文件的......
  • 丰富的诗词资源!一个现代化诗词学习网站!
    大家好,我是Java陈序员。之前,给大家推荐过一个古诗文起名工具,利用古诗文进行起名。一个古诗文起名工具今天,给大家介绍一个现代化诗词学习网站,完美适用于自身、孩子学习背诵古诗词!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。......