【HGT】文献精讲:Heterogeneous Graph Transformer

【HGT】文献精讲:Heterogeneous Graph Transformer

标题: Heterogeneous Graph Transformer
(异构图Transformer)
作者团队: 加利福尼亚大学Yizhou Sun
摘要: 近年来,图神经网络(GNN)在结构化数据建模方面取得了成功。然而,大多GNN是为同质图设计的,其中所有节点和边都属于同一类型,这使得表示异构结构变得不可行。本文提出了异构图转换器(HGT)架构来建模web规模的异构图。为了建模异构性,本文设计了节点和边缘类型相关的参数来表征每个边缘上的异构注意力,使HGT能够为不同类型的节点和边缘维护专用表示。为了处理web规模的图数据,文章设计了异构小批图采样算法——HGSampling,以实现高效和可扩展的训练。在包含1.79亿个节点和20亿个边的开放学术图上进行的大量实验表明,所提出的HGT模型在各种下游任务上的性能始终优于所有最先进的GNN基线9%-21%。

文献链接: https://dl.acm.org/doi/abs/10.1145/3366423.3380027
代码链接: https://github.com/acbull/pyHGT

1. 背景

过去尝试采用GNN与异构网络进行学习的工作往往面临着以下几个问题:

  • 大多数涉及为每种类型的异构图设计元路径或者变体,需要特定的领域知识;
  • 要么简单地假设不同类型的节点和边共享相同的特征和表示空间,要么单独为节点类型或边类型保留不同的非共享权重,使得它们不足以捕获异构图的属性;
  • 它们固有的设计和实现使得它们无法对web规模的异构图进行建模。

鉴于以上这些限制,本文设计了研究异构图的神经网络HGT,目标是保持节点和边类型的依赖表示,同时避免自定义元路径,并且可以扩展到web规模的异构图。

为了处理图的异构性,文章引入了依赖于节点和边类型的注意力机制,HGT中的异构相互注意不是参数化每种类型的边,而是通过基于其元关系三元组分解每个边 e = < s , t > e=<s,t> e=<s,t>来定义,其中s、t表示节点类型,e表示s与t之间的边类型。具体来说,HGT使用这些元关系来参数化权重矩阵,以计算每条边的注意力分数。因此,这样允许不同类型的节点和边保持其特定的表示空间。与此同时,不同类型的连接节点人若干可以交互、传递和聚合消息,不受其分布间隙的限制。
由于其体系结构的性质,HGT可以通过跨层的消息传递来合并来自不同类型的高阶邻居的信息,这也被称为“软”元路径。也就是说HGT只把它的一跳边作为输入,而不用手动设计元路径,所提出的注意力机制也可以自动和隐式地学习和提取对不同下游任务很重要的元路径

2.方法

在这里插入图片描述

上图显示了HGT的整体架构。给定一个采样的异构子图,HGT提取所有连接的节点对,其中目标节点t通过边e被源节点s连接,HGT的目标是聚合来自s的信息,以获得节点目标t的上下文表示。该过程主要是三个组件:异构互注意力、异构消息传递和目标特定聚合

2.1 Heterogeneous Mutual Attention 异构互注意力

将第 l l l个HGT层的输出表示为 H ( l ) H^{(l)} H(l),同时也作为第 l + 1 l+1 l+1个HGT层的输入。通过堆叠L层,可以得到整个图 H ( L ) H^{(L)} H(L)的节点表示,可以用于端到端训练或馈送到下游任务。
第一步首先是计算源节点 s s s与目标节点 t t t之间的相互注意力分数。在基于注意力的GNN中,有
H l [ t ] ← A g g r e g a t e ∀ s ∈ N ( t ) , ∀ e ∈ E ( s , t ) ( A t t e n t i o n ( s , t ) ⋅ M e s s a g e ( s ) ) H^{l} [t]\gets \underset{\forall s\in N(t),\forall e\in E(s,t)}{\mathbf{Aggregate } }(\mathbf{Attention}(s,t)\cdot \mathbf{Message}(s) ) Hl[t]sN(t),eE(s,t)Aggregate(Attention(s,t)Message(s))
其中三个基本的运算符:

  • A t t e n t i o n \mathbf{Attention} Attention用于计算每个源节点的重要性
  • M e s s a g e \mathbf{Message} Message用于使用源节点来提取消息
  • A g g r e g a t e \mathbf{Aggregate } Aggregate通过关注权重对邻居信息进行聚合
    例如,图注意力网络(GAT)采用了一种加性机制作为 A t t e n t i o n \mathbf{Attention} Attention,使用相同的权重来计算 M e s s a g e \mathbf{Message} Message,并利用简单平均和非线性激活函数来进行 A g g r e g a t e \mathbf{Aggregate } Aggregate步骤。形式上来看,GAT有:
    A t t e n t i o n G A T ( s , t ) = ∀ s ∈ N ( t ) ( a ⃗ ( W H l − 1 [ t ] ∥ W H l − 1 [ s ] ) ) M e s s a g e G A T ( s ) = W H l − 1 [ s ] A g g r e g a t e G A T ( ⋅ ) = σ ( Mean ⁡ ( ⋅ ) ) \begin{aligned} \mathbf{ Attention }_{G A T}(s, t) & =\underset{\forall s \in N(t)}{ }\left(\vec{a}\left(W H^{l-1}[t] \| W H^{l-1}[s]\right)\right) \\ \mathbf { Message }_{G A T}(s) & =W H^{l-1}[s] \\ \mathbf { Aggregate }_{G A T}(\cdot) & =\sigma(\operatorname{Mean}(\cdot)) \end{aligned} AttentionGAT(s,t)MessageGAT(s)AggregateGAT()=sN(t)(a (WHl1[t]WHl1[s]))=WHl1[s]=σ(Mean())
    虽然GAT对重要节点给予高关注度是有效的,但是它通过使用一个权重矩阵 W W W来假设节点 s s s和节点 t t t具有相同的特征分布,这种假设对于异构图来说通常是不正确的,因为每种类型的节点都会有自己的特征分布。基于此,作者设计了异构互注意力机制。
    给定一个目标节点 t t t,以及它所有的邻居节点 s ∈ N ( t ) s \in N(t) sN(t) ,它们可能属于不同的分布,根据它们的元关系计算它们的相互注意力,即 < τ ( s ) , ϕ ( e ) , τ ( s ) > <\tau(s), \phi(e), \tau(s)> <τ(s),ϕ(e),τ(s)>三元组。
    作者将目标节点 t t t映射为一个Query向量,将源节点 s s s映射为一个Key向量,并计算它们的点积作为注意力。其与普通的Transformer的关键区别在于,普通Transformer对所有单词使用一组投影,而在HGT中,每个元关系都有一组不同的投影权重。为了最大限度地实现参数共享,同时保持不同关系地特定特征,作者提出将交互算子地权重矩阵参数化为源节点投影、边投影和目标节点投影。具体来说,通过以下公式为每条边 e = ( s , t ) e=(s,t) e=(s,t)计算 h h h个头注意力:
    A t t e n t i o n H G T ( s , e , t ) = Softmax ⁡ ∀ s ∈ N ( t ) ( ∏ i ∈ [ 1 , h ] A T T − head  i ( s , e , t ) ) A T T − head  i ( s , e , t ) = ( K i ( s ) W ϕ ( e ) A T T Q i ( t ) T ) ⋅ μ ⟨ τ ( s ) , ϕ ( e ) , τ ( t ) ⟩ d K i ( s ) = K-Linear  τ ( s ) i ( H ( l − 1 ) [ s ] ) Q i ( t ) = Q-Linear  τ ( t ) i ( H ( l − 1 ) [ t ] ) \begin{aligned} \mathbf{Attention}_{H G T}(s, e, t) & =\underset{\forall s \in N(t)}{\operatorname{Softmax}}\left(\prod_{i \in[1, h]} A T T-\text { head }^{i}(s, e, t)\right) \\ A T T-\text { head }^{i}(s, e, t) & =\left(K^{i}(s) W_{\phi(e)}^{A T T} Q^{i}(t)^{T}\right) \cdot \frac{\mu_{\langle\tau(s), \phi(e), \tau(t)\rangle}}{\sqrt{d}} \\ K^{i}(s) & =\text { K-Linear }_{\tau(s)}^{i}\left(H^{(l-1)}[s]\right) \\ Q^{i}(t) & =\text { Q-Linear }_{\tau(t)}^{i}\left(H^{(l-1)}[t]\right) \end{aligned} AttentionHGT(s,e,t)ATT head i(s,e,t)Ki(s)Qi(t)=sN(t)Softmax i[1,h]ATT head i(s,e,t) =(Ki(s)Wϕ(e)ATTQi(t)T)d μτ(s),ϕ(e),τ(t)⟩= K-Linear τ(s)i(H(l1)[s])= Q-Linear τ(t)i(H(l1)[t])
    首先,对于第 i i i个注意的头 A T T − h e a d i ( s , e , t ) ATT-head^i(s,e,t) ATTheadi(s,e,t),通过线性函数 $K-Linear_{\tau(s)}^{i}:\mathbb{R} ^{d} \to \mathbb{R} ^{\frac{d}{h} } $ 将源节点 τ ( s ) \tau (s) τ(s)投影到第 i i i个键向量 K i ( s ) K^i(s) Ki(s),其中 h h h是注意力头的数量, d h \frac{d}{h} hd是每个头的向量维度。注意, K − L i n e a r τ ( s ) i K-Linear_{\tau(s)}^{i} KLinearτ(s)i是由源节点 s s s的类型 τ ( s ) \tau (s) τ(s)索引的,这意味着每种类型的节点都有一个唯一的线性投影,以最大限度地模拟分布差异。类似地,通过线性函数 Q − L i n e a r τ ( t ) i Q-Linear _{\tau(t)}^{i} QLinearτ(t)i将目标节点 t t t投影到第 i i i个查询向量中。
    接下来,计算查询向量 Q i ( t ) Q^i(t) Qi(t)和键向量 K i ( s ) K^i(s) Ki(s)的相似性。异构图的一个独特之处就是有可能存在不同边类型之间的一堆节点类型,例如 τ ( s ) \tau(s) τ(s) τ ( t ) \tau(t) τ(t)。因此仍然为每种类型的边 ϕ ( e ) \phi(e) ϕ(e)使用独特的边缘权重矩阵 W ϕ ( e ) A T T ∈ R d h × d h W^{ATT}_{\phi (e)} \in \mathbb{R}^{\frac{d}{h} \times \frac{d}{h}} Wϕ(e)ATTRhd×hd。这样一来,即使在相同的节点类型对之间,模型也可以捕获不同的语义关系。另外,由于并非所有关系对目标节点的贡献相同,作者添加一个先验张量 μ ∈ R ∣ A ∣ × ∣ R ∣ × ∣ A ∣ \mu \in \mathbb{R}^{|\mathcal{A} |\times |\mathcal{R} | \times |\mathcal{A} |} μRA×R×A来表示每个元关系三元组的一般意义,作为对注意力的自适应缩放。
    最后,将 h h h个注意力头连接在一起,等到每个节点对的注意向量。随后对于每个目标节点 t t t,从它的邻居节点 N ( t ) N(t) N(t)收集所有的注意力向量,并使用softmax函数,使其满足 $ { \sum_{\forall s\in N(t)}}\mathbf{Attention} _{HGT} (s,e,t)=\mathbf{1} _{h\times 1} $.

2.2 Heterogeneous Message Passing 异构消息传递

与第一步计算异构互注意力并行,将信息从源节点传递到目标节点。对于一对节点 e = ( s , t ) e=(s,t) e=(s,t),通过以下公式计算其多头消息:
Message ⁡ H G T ( s , e , t ) = ∥ i ∈ [ 1 , h ] MSG-head  i ( s , e , t ) M S G − head  i ( s , e , t ) = M-Linear  τ ( s ) i ( H ( l − 1 ) [ s ] ) W ϕ ( e ) M S G \begin{array}{l} \operatorname{Message}_{H G T}(s, e, t)=\|_{i \in[1, h]} \text { MSG-head }^{i}(s, e, t) \\ M S G-\text { head }^{i}(s, e, t)=\text { M-Linear }{ }_{\tau(s)}^{i}\left(H^{(l-1)}[s]\right) W_{\phi(e)}^{M S G} \end{array} MessageHGT(s,e,t)=i[1,h] MSG-head i(s,e,t)MSG head i(s,e,t)= M-Linear τ(s)i(H(l1)[s])Wϕ(e)MSG
为了得到第 i i i个消息头 M S G − h e a d i ( s , e , t ) MSG-head^i(s,e,t) MSGheadi(s,e,t),首先使用线性函数$M-Linear_{\tau(s)}^{i}:\mathbb{R} ^{d} \to \mathbb{R} ^{\frac{d}{h} } 将 将 \tau(s) 型源节点 型源节点 型源节点s 投影到第 投影到第 投影到第i 个消息向量中。随后使用矩阵 个消息向量中。随后使用矩阵 个消息向量中。随后使用矩阵W^{MSG}{\phi (e)} \in \mathbb{R}^{\frac{d}{h} \times \frac{d}{h}} 合并边缘依赖性。最后连接所有 合并边缘依赖性。最后连接所有 合并边缘依赖性。最后连接所有h 个消息头以获取每个节点对的 个消息头以获取每个节点对的 个消息头以获取每个节点对的\mathbb{Message}{HGT}(s,e,t)$

2.3 Target-Specific Aggregation 目标特定聚合

最后将计算的异构多头注意力和消息从源节点聚合到目标节点。在计算异构互注意力过程中softmax已经使每个目标节点 t t t的注意力向量汇聚成了一个和。因此此时可以简单地使用注意力向量作为权重来平均来自源节点的对应消息,并得到更新的向量 H ~ ( l ) [ t ] \widetilde{H}^{(l)}[t] H (l)[t]为:
H ~ ( l ) [ t ] = ⊕ ∀ s ∈ N ( t ) ( A t t e n t i o n H G T ( s , e , t ) ⋅ M e s s a g e H G T ( s , e , t ) ) \widetilde{H}^{(l)}[t]=\underset{\forall s \in N(t)}{\oplus}\left(\mathbf { Attention }_{H G T}(s, e, t) \cdot \mathbf { Message }_{H G T}(s, e, t)\right) H (l)[t]=sN(t)(AttentionHGT(s,e,t)MessageHGT(s,e,t))
以此将不同特征分布的源节点所有的邻居节点的信息聚合到目标节点 t t t
最后再将目标节点 t t t的向量由其节点类型 τ ( t ) \tau(t) τ(t)的索引映射回其特定类型的分布。为此,使用线性函数 A − L i n e a r τ ( t ) A-Linear_{\tau(t)} ALinearτ(t)来更新向量 H ~ ( l ) [ t ] \widetilde{H}^{(l)}[t] H (l)[t],然后进行非线性激活和残差连接为:
H ~ ( l ) [ t ] = σ ( A − L i n e a r τ ( t ) H ~ ( l ) [ t ] ) + H ~ ( l − 1 ) [ t ] \widetilde{H}^{(l)}[t]=\sigma(A-Linear_{\tau(t)\widetilde{H}^{(l)}[t]})+\widetilde{H}^{(l-1)}[t] H (l)[t]=σ(ALinearτ(t)H (l)[t])+H (l1)[t]
这样得到目标节点 t t t的第 l l l个HGT层的输出 H ( l ) [ t ] H^{(l)}[t] H(l)[t],将 l l l层的HGT块堆叠,使每个节点在整个图中达到不同类型和关系的节点的很大比例,即HGT为每个节点生成一个高度情境化的表示 H ( L ) H^{(L)} H(L),该表示可以输送到任何模型中进行下游异构网络任务,如节点分类和链路预测。

2.4 HGSampling 小批图采样算法

作者还提出一种高效的异构小批图采样算法—HGSampling——使HGT和传统GNN都能处理web规模的异构图。HGSampling能够为每种类型保持相似数量的节点和边,同时还能采样子图的密度,以最小化信息损失和样本方差。
在这里插入图片描述

以上为HGSampling的伪代码。其基本思想是为每种节点类型 τ \tau τ保持一个单独的节点预算 B [ τ ] B[\tau] B[τ],并使用重要采样策略对每种类型的节点进行相同数量的采样以减小方差。

3. 结果

最终在OAG数据集中进行节点分类任务发现,HGT模型远优于当前其他模型。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大厂基本功 | MySQL 三大日志 ( binlog、redo log 和 undo log ) 的作用?

前言 MySQL日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中&#xff0c;比较重要的还要属二进制日志binlog&#xff08;归档日志&#xff09;和事务日志redo log&#xff08;重做日志&#xff09;和undo log&#xff08;回滚日志&#xff09;…

【系统架构设计师(第2版)】五、软件工程基础知识

5.1 软件工程 20世纪60年代&#xff0c;为了解决软件危机&#xff0c;提出了软件工程的概念。 软件危机的具体表现&#xff1a; 软件开发进度难以预测&#xff1b;软件开发成本难以控制&#xff1b;软件功能难以满足用户期望&#xff1b;软件质量无法保证&#xff1b;软件难以…

手机内卷下一站,AI Agent

作者 | 辰纹 来源 | 洞见新研社 2024年除夕夜&#xff0c;OPPO在央视春晚即将开始前举办了一场“史上最短发布会”&#xff0c;OPPO首席产品官刘作虎宣布&#xff0c;“OPPO正式进入AI手机时代”。 春节假期刚过&#xff0c;魅族又公开表示&#xff0c;将停止“传统智能手机…

科研绘图系列:R语言组合堆积图(stacked plot)

文章目录 介绍加载R包数据数据预处理画图1画图2组合图形系统信息介绍 堆积图(Stacked Chart),也称为堆叠图,是一种常用的数据可视化图表,主要用于展示不同类别的数据量在总体中的分布情况。堆积图可以是柱状图、条形图或面积图的形式,其中各个类别的数据量被叠加在一起,…

Node.js 完全教程:从入门到精通

Node.js 完全教程&#xff1a;从入门到精通 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;允许开发者在服务器端使用 JavaScript。它的非阻塞 I/O 和事件驱动架构使得 Node.js 非常适合于构建高性能的网络应用。本文将详细介绍 Node.js 的安装、基本语…

微服务day03

导入黑马商城项目 创建Mysql服务 由于已有相关项目则要关闭DockerComponent中的已开启的项目 [rootserver02 ~]# docker compose down WARN[0000] /root/docker-compose.yml: version is obsolete [] Running 4/4✔ Container nginx Removed …

每日一题之二叉树

已知结点元素值为正整数且值不相同的一棵二叉树。 该二叉树通过给出其先序遍历序列和中序遍历序列构造而成。 输入一个整数x&#xff0c;针对此二叉树编写程序求出x的右子树中所有结点值的和&#xff08;若x不在树上&#xff0c;输出-1&#xff09;。 输入说明&#xff1a;第一…

win10系统使用Visual Studio 2019或cmake编译SDL2为32位库时出现error C2118: 负下标winnt.h的解决方法

提示&#xff1a; 下图蓝体字中的VS2008是错误的&#xff0c;其实SDL.sln是用VS2010版本的软件开发的&#xff08;对于SDL-release-2.0.5.zip源码而言至少是这样&#xff0c;而2024-11-6为止SDL是2.30.9版本了&#xff0c;2.30.9版本则无需自己编译&#xff0c;只需下载带后缀…

推荐一款管道数据检索工具:Pipedata-Pro

Pipedata-Pro是一款专为设计石油、天然气、水和蒸汽管道及管道系统的工程师开发的应用程序。该应用程序提供了设计管道系统所需的工程数据&#xff0c;拥有一个全面的管道类型、配件和材料数据库。 软件特点&#xff1a; 1. 技术参数查询&#xff1a;Pipedata-Pro 提供关于管道…

算法竞赛(Python)-数组

文章目录 一 、排序算法二 、二分查找1 二分查找讲解2 二分查找题目&#xff08;1&#xff09;二分查找&#xff08;2&#xff09;在排序数组中查找元素的第一个和最后一个位置&#xff08;3&#xff09;两数之和 II - 输入有序数组 三、数组双指针1对撞指针对撞指针题目1&…

基于STM32的LCD1602显示Proteus仿真设计(仿真+程序+设计报告+讲解视频)

这里写目录标题 1.主要功能0. 资料清单&下载链接资料下载链接&#xff1a;2.仿真设计3. 程序设计4. 设计报告5. 框图 基于STM32的LCD1602显示Proteus仿真设计(仿真程序设计报告讲解视频&#xff09; 仿真图proteus 8.9 程序编译器&#xff1a;keil 5 编程语言&#xff1a…

SpringBoot项目编译报错 类文件具有错误的版本 61.0, 应为 52.0

springboot项目在编译时报错&#xff1a; /Users/Apple/Developer/art/caicai/cai-api/dubbo-samples/1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-provider/src/main/java/org/apache/dubbo/springboot/demo/provider/ProviderApplication.java:22:32 java…

PVE纵览-备份与快照指南

PVE纵览-备份与快照指南 文章目录 PVE纵览-备份与快照指南摘要1 备份与快照概述定义与区别备份与快照在PVE中的应用场景 2 PVE 备份功能详解备份类型与策略配置备份任务自动化备份管理 3 PVE 快照功能详解快照的工作原理快照的创建与恢复机制快照对系统性能的影响快照的使用场景…

Mac如何实现最简单的随时监测实时运行状态的方法

Mac book有着不同于Windows的设计逻辑与交互设计&#xff0c;使得Mac book有着非常棒的使用体验&#xff0c;但是在Mac电脑的使用时间过长时&#xff0c;电脑也会出现响应速度变慢或应用程序崩溃的情况&#xff0c;当发生的时候却不知道什么原因导致的&#xff0c;想要查询电脑…

JavaWeb合集23-文件上传

二十三 、 文件上传 实现效果&#xff1a;用户点击上传按钮、选择上传的头像&#xff0c;确定自动上传&#xff0c;将上传的文件保存到指定的目录中&#xff0c;并重新命名&#xff0c;生成访问链接&#xff0c;返回给前端进行回显。 1、前端实现 vue3AntDesignVue实现 <tem…

WPF之iconfont(字体图标)使用

1&#xff0c;前文&#xff1a; WPF的Xaml是与前端的Html有着高度相似性的标记语言&#xff0c;所以Xaml也可同Html一般轻松使用阿里提供的海量字体图标&#xff0c;从而有效的减少开发工作度。 2&#xff0c;下载字体图标&#xff1a; 登录阿里图标库网iconfont-阿里巴巴矢量…

leetcode92:反转链表||

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a;[1,4,3,2…

Python-安装与PyCharm的安装配置(1)

目录 安装 打开运行 PyCharm的安装 新建项目 安装 找到官网下载对应的电脑对应的版本 Welcome to Python.org -- 官网 下载稳定版的 安装记得勾选配置环境&#xff0c;这样自己就不需要再配置环境了 安装成功 至此python的运行环境就安装好了 打开运行 在开始菜单中可以…

python的编程基础分支,循环与函数的应用知识

编程基础是学习任何编程语言的必备知识之一。在Python中&#xff0c;分支、循环和函数是常用的编程概念&#xff0c;它们可以让我们编写出更复杂、更灵活的程序。 分支 分支是根据条件来决定程序执行的不同路径。在Python中&#xff0c;我们使用if语句来实现分支。 if 条件:# …

qt QLocale详解

1、概述 QLocale是Qt框架中的一个类&#xff0c;用于处理与本地化相关的操作。它能够方便地实现日期、时间、数字和货币的格式化和解析&#xff0c;支持不同的语言、区域设置和字符集。QLocale提供了一种跨平台的方式来获取当前系统的语言设置&#xff0c;并返回该语言的本地化…