异构图注意力网络Heterogeneous Graph Attention Network ( HAN )

news2024/12/22 0:05:28

文章目录

  • 前言
  • 一、基础知识
    • 1.异构图(Heterogeneous Graph)
    • 2.元路径
    • 3.异构图注意力网络
  • 二、异构图注意力网络
    • 1.结点级别注意力(Node-level Attention)
    • 2.语义级别注意力(Semantic-level Attention)
  • 总结


前言

异构图注意力网络Heterogeneous Graph Attention Network ( HAN )学习笔记。


一、基础知识

1.异构图(Heterogeneous Graph)

同构图是指结点类型相同、边类型也相同的图。异构图则是边和结点类型总和大于2的图,如下所示。
在这里插入图片描述

2.元路径

在这里插入图片描述

3.异构图注意力网络

中心思想:通过元路径生成不同元路径下的同构子图,在不同子图中进行消息传递聚合信息( Node-Level Attention ),最后将各元路径下子图聚合出的向量注意力加权聚合后进行后道传播( Sematic-Level Attention )。

为更清晰的解释原理,以下将逐步拆解。
(1)第一步
在这里插入图片描述
异构图如图片左边所示。根据M-A-M和M-D-M两种元路径,将有“介质”A或D连接的M之间视为通路(一阶邻居),可以拆解异构图为图片右边所示的子图。

二、异构图注意力网络

1.结点级别注意力(Node-level Attention)

在这里插入图片描述

图取自论文原文

  1. 节点注意力的计算。
    h i ′ = M ϕ i ⋅ h i \mathbf{h}_i^{\prime}=\mathbf{M}_{\phi_i} \cdot \mathbf{h}_i hi=Mϕihi
  • i i i为第i个主结点。
  • j j j为第j个邻居结点。
  • M Φ i M_{\Phi_i} MΦi 是模型需要训练的线性变化矩阵。 M Φ i M_{\Phi_i} MΦi 主要作用是提高拟合能力。
  • h i \mathbf{h}_i hi为结点的特征向量。
    α i j Φ = softmax ⁡ j ( e i j Φ ) = exp ⁡ ( σ ( a Φ T ⋅ [ h i ′ ∥ h j ′ ] ) ) ∑ k ∈ N i Φ exp ⁡ ( σ ( a Φ T ⋅ [ h i ′ ∥ h k ′ ] ) ) \alpha_{i j}^{\Phi}=\operatorname{softmax}_j\left(e_{i j}^{\Phi}\right)=\frac{\exp \left(\sigma\left(\mathbf{a}_{\Phi}^{\mathrm{T}} \cdot\left[\mathbf{h}_i^{\prime} \| \mathbf{h}_j^{\prime}\right]\right)\right)}{\sum_{k \in \mathcal{N}_i^\Phi} \exp \left(\sigma\left(\mathbf{a}_{\Phi}^{\mathrm{T}} \cdot\left[\mathbf{h}_i^{\prime} \| \mathbf{h}_k^{\prime}\right]\right)\right)} αijΦ=softmaxj(eijΦ)=kNiΦexp(σ(aΦT[hihk]))exp(σ(aΦT[hihj]))
  • N i Φ N_i^{\Phi} NiΦ 代表在元路径 Φ \Phi Φ 下节点 i i i 的邻居集。如图中左右两个 z i Φ z_i^\Phi ziΦ周围的结点1、2、3…8
  • a i j Φ a_{i j}^{\Phi} aijΦ 代表在元路径 Φ \Phi Φ 下邻居节点 j j j 传递消息至主节点 i i i 的注意力。
  • α Φ T \alpha_{\Phi}^T αΦT 是模型需要训练的线性变化矩阵, 更多的作用是调整形状。
  • ∣ ∣ || 为拼接符号。式子中是将两个节点的线性变换后的特征向量拼接起来。
  1. 进行将注意力作为权重的加权求和计算(左边的公式), 或者多头注意力计算(右边的公式)。

z i Φ = σ ( ∑ j ∈ N i Φ α i j Φ ⋅ h j ′ ) z i Φ = ∥ k = 1 K σ ( ∑ j ∈ N i Φ α i j Φ ⋅ h j ′ ) \mathrm{z}_i^{\Phi}=\sigma\left(\sum_{j \in \mathcal{N}_i^{\Phi}} \alpha_{i j}^{\Phi} \cdot \mathbf{h}_j^{\prime}\right) \quad \mathrm{z}_i^{\Phi}=\|_{k=1}^K \sigma\left(\sum_{j \in \mathcal{N}_i^{\Phi}} \alpha_{i j}^{\Phi} \cdot \mathbf{h}_j^{\prime}\right) ziΦ=σjNiΦαijΦhjziΦ=k=1KσjNiΦαijΦhj

  • z i Φ z_i^{\Phi} ziΦ 代表在元路径 Φ \Phi Φ 下进行一轮消息传递后代表节点 i i i 的特征向量。
  • σ \sigma σ为激活函数。

2.语义级别注意力(Semantic-level Attention)

  1. 语义级别注意力的计算。
    w Φ p = 1 ∣ V ∣ ∑ i ∈ V q T ⋅ tanh ⁡ ( W ⋅ z i Φ p + b ) w_{\Phi_p}=\frac{1}{|\mathcal{V}|} \sum_{i \in \mathcal{V}} \mathbf{q}^{\mathrm{T}} \cdot \tanh \left(\mathbf{W} \cdot \mathbf{z}_i^{\Phi_p}+\mathbf{b}\right) wΦp=V1iVqTtanh(WziΦp+b)
  • V V V 代表所有节点的数量。 q , W , b q, W, b q,W,b 是此处模型需要训练的参数。
  • 公式的意义代表对元路径 Φ p \Phi^p Φp 下生成的子图中所有的节点都进行 过消息传递得到每个节点的向量表示 z i Φ p z_i^{\Phi_p} ziΦp 后。进行线性变化再将 形状调整至一维标量后取个平均值。
  • 对上述的结果进行Sotfmax归一化作为语义级别的注意力。
    β Φ p = exp ⁡ ( w Φ p ) ∑ p = 1 P exp ⁡ ( w Φ p ) \beta_{\Phi_p}=\frac{\exp \left(w_{\Phi_p}\right)}{\sum_{p=1}^P \exp \left(w_{\Phi_p}\right)} βΦp=p=1Pexp(wΦp)exp(wΦp)
  1. 最终注意力的加权求和。
    Z = ∑ p = 1 P β Φ p ⋅ Z Φ p \mathbf{Z}=\sum_{p=1}^P \beta_{\Phi_p} \cdot \mathbf{Z}_{\Phi_p} Z=p=1PβΦpZΦp
  • 公式中的 Z Φ P Z_{\Phi_P} ZΦP 代表在元路径 p p p 下生成的子图 Φ p \Phi_p Φp 的所有节点集合 Z Φ P = { z 1 Φ p , z 2 Φ p … z n Φ p } ∘ Z_{\Phi_P}=\left\{z_1^{\Phi_p}, z_2^{\Phi_p} \ldots z_n^{\Phi_p}\right\}_{\circ} ZΦP={z1Φp,z2ΦpznΦp}
  • Z Z Z 即代表最终经过HAN网络层传递一轮后的节点特征向量集合 Z = { z 1 , z 2 … z n } Z=\left\{z_1, z_2 \ldots z_n\right\} Z={z1,z2zn}

总结

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

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

相关文章

微信商城小程序怎么开发_分享微信商城小程序的搭建

如何搭建好一个微信商城?这三个功能要会用! 1.定期低价秒杀,提高商城流量 除了通过私域流量裂变,低价秒杀是为商城引流提高打开率的良好手段。 以不同节日作为嘘头,在情人节、38妇女节、中秋国庆、七夕节等日子&…

前端框架 Nuxtjs Vue3 SEO解决方案 SSR

目录 一、Nuxtjs安装 二、路由规则 三、公共布局 四、Vue3中TypeScript的使用 一、Nuxtjs安装 参考&#xff1a;Installation Get Started with Nuxt安装 - NuxtJS | Nuxt.js 中文网Installation Get Started with Nuxt yarn create nuxt-app <项目名> 项目运行…

GAMES101 作业0 环境配置 PC下简单配置i

前言 GAMES101提供了计算机图形学相关教学知识&#xff0c;闫教授及其团队也为大家准备了相应课程作业。课程作业部署在虚拟机上&#xff0c;以便免去环境部署的麻烦。但对于一些同学来说&#xff0c;还是希望直接在WIN的VS上使用并编码&#xff0c;本文对此进行简单说明。 环…

神经网络和深度学习-后向传播back propagation

后向传播back propagation 首先我们要了解&#xff0c;前向传播&#xff0c;损失函数这些前置知识&#xff0c;下面我们给出一张神经网络的图 反向传播通过导数链式法则计算损失函数对各参数的梯度&#xff0c;并根据梯度进行参数的更新 下面举个简单的例子 我们需要知道x,y,…

Linux C网络通信过程

socket函数、sockaddr_in结构体 和 bind函数 socket函数的作用是创建一个网络文件描述符&#xff0c;程序通过这个文件描述符将数据发送到网络&#xff0c;也通过这个文件描述符从网络中接受数据。观察一下socket函数&#xff1a; int listenfd; listenfd socket(AF_INET, S…

NNDL 作业11:优化算法比较

目录 1. 编程实现图6-1&#xff0c;并观察特征 2. 观察梯度方向 3. 编写代码实现算法&#xff0c;并可视化轨迹 4. 分析上图&#xff0c;说明原理&#xff08;选做&#xff09; 5. 总结SGD、Momentum、AdaGrad、Adam的优缺点&#xff08;选做&#xff09; 6. Adam这么好&…

Python威布尔分布

文章目录威布尔分布及其性质在Python中生成威布尔分布的随机数指数分布和拉普拉斯分布的对比威布尔分布及其性质 威布尔分布&#xff0c;即Weibull distribution&#xff0c;又被译为韦伯分布、韦布尔分布等&#xff0c;是仅分布在正半轴的连续分布。 在numpy.random中&#…

python中urllib库的使用

1. 获取目标页面的源码 以获取百度页面源码为例 #使用urllib获取百度首页的源码 import urllib.request#1 定义一个url 作为需要访问的网址 url http://www.baidu.com#2 模拟浏览器向服务器发送请求 response响应 response urllib.request.urlopen(url)#3 获取响应中的页面…

Monkey测试

一、什么是 Monkey 测试 Monkey 测试是通过向系统发送伪随机的用户事件流&#xff08;如按键输入、触摸屏输入、手势输入等&#xff09;&#xff0c;实现对应用程序客户端的稳定性测试&#xff1b;通俗来说&#xff0c;Monkey 测试即“猴子测试”&#xff0c;是指像猴子一样&a…

JVM垃圾回收算法整理

JVM垃圾回收算法整理前言关键概念了解标记–清除算法复制算法标记–整理算法分代收集算法仰天大笑出门去&#xff0c;我辈岂是蓬蒿人前言 大概内容&#xff1a; jvm垃圾回收算法&#xff1a; 1、“标记–清除”算法&#xff1b;首先标记出所有需要被回收的对象&#xff0c;然…

搭建自己的SSR

Vue SSR介绍 是什么 官方文档&#xff1a;https://ssr.vuejs.org/Vue SSR&#xff08;Vue.js Server-Side Rendering&#xff09; 是 Vue.js 官方提供的一个服务端渲染&#xff08;同构应用&#xff09;解 决方案使用它可以构建同构应用还是基于原有的 Vue.js 技术栈 官方文档…

XXL-JOB逻辑自测及执行参数配置踩坑

概述 关于XXL-JOB的使用遇到的问题记录。对XXL-JOB不熟的&#xff0c;可以先参考分布式任务调度平台XXL-JOB深度实战 实战 业务DTO定义如下&#xff1a; Data public class AdAccountDTO {private String accountId;/*** yyyy-MM-dd HH:mm:ss*/private String startCreateT…

ThingBoard源码解析-缓存

配置 TB支持两种缓存&#xff1a;Caffeine和Redis,通过配置cache.type来指定使用哪种缓存。 位于 org.thingsboard.server.cache Caffeine 配置类&#xff1a;CaffeineCacheConfiguration Configuration ConditionalOnProperty(prefix "cache", value "t…

HTML CSS 个人网页设计 WEB前端大作业代码

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

【计算机毕业设计】7.线上花店系统maven源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘 要 随着互联网突飞猛进的发展及其对人们的生活产生至关重要的影响&#xff0c;线上购花&#xff0c;送货到家的购物方式受到了越来越多顾客的接受与喜爱。线上花卉小铺的设计与实现不仅可以带来更广泛的选择与实…

餐饮业如何现业绩突破性增长?

疫情反复无常&#xff0c;餐饮人每天都面临着极大的挑战&#xff1a;无法预测的关店通知、突如其来的禁止堂食命令......餐饮店客流减少&#xff0c;业绩下滑成为不可避免的趋势。 在这种情形下&#xff0c;不少餐饮老板拒绝“躺平”&#xff0c;上演“花式自救”&#xff1a;…

cpu设计和实现(数据预取)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面说过了一条指令经过cpu处理的时候需要经历几个阶段。通过实验&#xff0c;我们发现&#xff0c;哪怕是再简单的ori指令也要经历取指、译码、执…

MyBatis是什么?使用方式?

目录 前言&#xff1a; 一、概念讲述 1.什么是MyBatis&#xff1f; 2.官网网址 二、使用方式 1.pom.xml里面添加依赖包 2.新建统一配置文件&#xff08;俗称数据库连接文件&#xff09; 3.新建立映射文件 &#xff08;俗称数据库表对应xml&#xff09; 4.建立数据库表…

ArcMap中之提取影像数据边界

1、前言 手里有一些经过裁剪的不规则多边形影像数据&#xff08;如图例所示&#xff09;&#xff0c;希望能批量获取该类影像的边界信息&#xff0c;即影像对应的面信息&#xff0c;边界线信息。这里我们提供一种利用镶嵌数据集Footprint图层的方法来获取&#xff0c;面&#…

基于Python机器学习及深度学习在空间模拟与时间预测应用

了解机器学习的发展历史、计算原理、基本定义&#xff0c;熟悉机器学习方法的分类&#xff0c;常用机器学习方法&#xff0c;以及模型的评估与选择&#xff1b;熟悉数据预处理的流程&#xff0c;掌握python程序包的使用&#xff1b;理解机器学习在生态水文中的应用&#xff0c;…