简单了解图注意力机制
简单了解图注意力机制
如果对传统的图匹配的聚合方式进行创新的话,也就是对h这一个节点的聚合方式进行创新。
h i ( l + 1 ) = Norm ( σ ( h i ( l ) + α ∥ h i ( l ) ∥ m i ( l ) ∥ m i ( l ) ∥ ) ) , \mathbf{h}_{i}^{(l+1)}=\operatorname{Norm}\left(\sigma\left(\mathbf{h}_{i}^{(l)}+\alpha\left\|\mathbf{h}_{i}^{(l)}\right\| \frac{\mathbf{m}_{i}^{(l)}}{\left\|\mathbf{m}_{i}^{(l)}\right\|}\right)\right), hi(l+1)=Norm σ hi(l)+α hi(l) mi(l) mi(l) ,
将这一个聚合的方式进行改进,然后在通过余弦相似度生成亲和力矩阵进行匈牙利算法的匹配操作。
M i , j = h i ⊤ h j ∥ h i ∥ ⋅ ∥ h j ∥ . \mathbf{M}_{i, j}=\frac{\mathbf{h}_{i}^{\top} \mathbf{h}_{j}}{\left\|\mathbf{h}_{i}\right\| \cdot\left\|\mathbf{h}_{j}\right\|} . Mi,j=∥hi∥⋅∥hj∥hi⊤hj.
也就是想学习能不能在聚合的这个公式上加入注意力,或者考虑加入一个Transform模块作为一个创新点。
传统GNN的计算方法
在很早之前刚开学的时候,看过一些视频资料来学习GNN的聚合方式,本质上就是自身的节点,加上与之相连的节点乘以一个权重系数W进行聚合操作。
每一个连接的顶点特征向量乘以W在进行求和,最后通过一个激活函数来进行实现。
也就是要通过给出的特征向量矩阵(假设每一个节点是4维度的特征向量)先乘以一个可学习的参数矩阵w 得到更新之后的h,然后在根据邻接矩阵进行聚合操作.
下面是实际运算给出的示例图
也就是只有它自己本身和连接的两条边2和3来参与运算.然后其他节点的更新策略依次类推从而完成整个节点的一个更新操作.
图中的Attention操作
对于上面的一个图来说,同样对于节点1的权重更新需要考虑的是与之相邻的节点2和3,但是一个值得注意的点就是2和3对节点1的影响程度应该是一样的吗?
这里说的图中的注意力也就是要在连接两个节点之间的边上赋予其权重,类似于一个加权平均的感觉了.
计算i节点和j节点之间的注意力我们给出下面的公式来进行计算.
e i j = a ( W h i , W h j ) e_{i j}=a\left(W h_{i}, W h_{j}\right) eij=a(Whi,Whj)
注意力机制的运算就采样下面的方法来进行.
α i j = softmax j ( e i j ) = exp ( e i j ) ∑ k ∈ N ( i ) exp ( e i k ) = exp ( a ( W h i , W h j ) ) ∑ k ∈ N ( i ) exp ( a ( W h i , W h j ) ) \alpha_{i j}=\operatorname{softmax}_{j}\left(e_{i j}\right)=\frac{\exp \left(e_{i j}\right)}{\sum_{k \in N(i)} \exp \left(e_{i k}\right)}=\frac{\exp \left(a\left(W h_{i}, W h_{j}\right)\right)}{\sum_{k \in N(i)} \exp \left(a\left(W h_{i}, W h_{j}\right)\right)} αij=softmaxj(eij)=∑k∈N(i)exp(eik)exp(eij)=∑k∈N(i)exp(a(Whi,Whj))exp(a(Whi,Whj))
与之关联的节点之间做一个softmax操作.
这种方法的举例就是1和2之间做一个点积运算得到一个值,然后在2和3之间做一个点积运算得到另一个值,它们之间做softmax操作.
这种图中加注意力的方式是有很多种的,关于这方面的论文应该是有很多,这里就值列举课程中提到的一些.
相关文章:

简单了解图注意力机制
简单了解图注意力机制 如果对传统的图匹配的聚合方式进行创新的话,也就是对h这一个节点的聚合方式进行创新。 h i ( l 1 ) Norm ( σ ( h i ( l ) α ∥ h i ( l ) ∥ m i ( l ) ∥ m i ( l ) ∥ ) ) , \mathbf{h}_{i}^{(l1)}\operatorname{Norm}\left(\sigm…...

UI Automator Viewer操作
版本:24.4.1 使用UI Automator Viewer报错如下: Error obtaining Ul hierarchy Reason: Error while obtaining Ul hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesnt exist!可以使用指令: 保存uix文件 adb sh…...

SpringBoot的创建方式
SpringBoot创建的五种方式 1.通过Springboot官网链接下载 注意SpringBoot项目的封装方式默认为Jar 需要查看一下,自己的Maven版本是否正确 创建成功 2.通过 aliyun官网链接下载 修改服务路径为阿里云链接 创建成功 3.通过Springboot官网下载 点击,拉到最…...
Vue3之性能优化
Vue3作为Vue框架的最新版本,在性能上进行了大量的优化,使得其在处理大型应用和复杂界面时表现更加出色。本文将详细介绍Vue3的性能提升、优化策略以及性能提升的实例,并结合具体代码和性能测试数据,展示Vue3在实际应用中的性能优势…...
RFdiffusion Sampler类 sample_step 方法解读
Sampler类的sample_step 方法的主要目的是根据扩散模型的预测生成在时间步 t-1 上的下一个三维结构、序列和其他相关特征。这是扩散采样过程的核心步骤之一。 源代码: def sample_step(self, *, t, x_t, seq_init, final_step):Generate the next pose that the model should…...

Flutter组件————FloatingActionButton
FloatingActionButton 是Flutter中的一个组件,通常用于显示一个圆形的按钮,它悬浮在内容之上,旨在吸引用户的注意力,并代表屏幕上的主要动作。这种按钮是Material Design的一部分,通常放置在页面的右下角,但…...

算法学习(十六)—— 综合练习
目录 1863. 找出所有子集的异或总和再求和 47. 全排列 Ⅱ 17. 电话号码的字母组合 22. 括号生成 77. 组合 494. 目标和 39. 组合总和 784. 字母大小写全排列 526. 优美的排列 51. N皇后 36. 有效的数独 37. 解数独 79. 单词搜索 1219. 黄金矿工 980. 不同路径 Ⅲ…...

kratos源码分析:熔断器
文章目录 为什么需要熔断Google sre弹性熔断算法kratos Breaker源码分析公共接口sre实现上报请求结果判定是否熔断 为什么需要熔断 一般来说,当服务器过载(overload)时,需要给client返回服务过载的报错 但是拒接请求也有成本&…...

CTF_1
CTF_Show 萌新赛 1.签到题 <?php if(isset($_GET[url])){system("curl https://".$_GET[url].".ctf.show"); }else{show_source(__FILE__); }?> 和 AI 一起分析 1.if(isset($_GET[url]))检查GET请求中是否存在名为url的参数。 curl 2.curl…...

【系统】Mac crontab 无法退出编辑模式问题
【系统】Mac crontab 无法退出编辑模式问题 背景一、问题回答1.定位原因:2.确认编辑器类型3.确保编辑器进入正确3.1 确认是否有crontab调度任务3.2 进入编辑器并确保编辑器正常3.3 保存操作 4.确认crontab任务存在5.确保脚本的可执行性和正确性 二、后续 背景 之前…...
K8s中 statefulset 和deployment的区别
在 Kubernetes 中,StatefulSet 和 Deployment 是两种管理 Pod 的控制器,它们的主要区别在于 状态管理 和 Pod 的标识。以下是详细对比: 1. 功能定位 Deployment 用途:用于 无状态应用 的部署,例如 Web 服务、API 服务…...

springboot中的AOP以及面向切面编程思想
快速入门体验AOP aop中相关概念 实现导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 新建aop文件夹,里面声明XXXAspect类 @Aspect // 声…...

降低Mobx技术债问题-React前端数据流方案调研整理
我们现在主要是使用Mobx,但是Mobx的易于上手和灵活度也带来了很多预期以外的问题,随着项目的增长我们的代码技术债变得愈加沉重,不同的模块杂糅一起、单一store无限膨胀。 为此我们的调研是希望能找到一个更好的state配置、数据流的约定方案。…...

RabbitMQ消息可靠性保证机制7--可靠性分析-rabbitmq_tracing插件
rabbitmq_tracing插件 rabbitmq_tracing插件相当于Firehose的GUI版本,它同样能跟踪RabbitMQ中消息的注入流出情况。rabbitmq_tracing插件同样会对流入流出的消息进行封装,然后将封装后的消息日志存入相应的trace文件中。 # 开启插件 rabbitmq-plugins …...
SQL进阶技巧:如何求解直接线上最多的点数?
目录 0 问题描述 1 数据准备 2 问题分析 3 求解优化 步骤一:构建 “斜率键” 并统计点的数量(核心步骤) 步骤二:找出最多的点数(最终结果) 0 问题描述 “平面上最多的点数” 问题通常是指在一个二维平面中给定了若干个点的坐标(例如以 (x,y) 的形式表示),要求找…...

【老白学 Java】泛型应用 - 卡拉 OK(四)
泛型应用 - 卡拉 OK(四) 文章来源:《Head First Java》修炼感悟。 上文说到,解决了按歌名排序的问题后,老白立刻想到了按歌手名字排序的问题。 老白决定趁热打铁,尝试着实现自定义排序方式。 Collections…...

android studio更改应用图片,和应用名字。
更改应用图标,和名字 先打开AndroidManifest.xml文件。 更改图片文件名字( 右键-->构建-->重命名(R))...
SQL Server 表值函数使用示例
在 SQL Server 中,表值函数(Table-Valued Functions, TVFs)是一种用户定义函数,它可以返回一个表。表值函数有两种类型:内联表值函数(Inline Table-Valued Function)和多语句表值函数(Multi-Statement Table-Valued Function)。下面分别介绍这两种类型的表值函数及其使…...

SpringBoot项目的创建方式
目录 1.通过idea创建SpringBoot项目 2.在idea中通过aliyun创建SpringBoot 3.通过spring官网下载再用idea打开 5.通过mavenjava项目改为springboot项目 6.测试springboot 第二种方法使用的是idea2021版本,其余方法使用idea2017版本 1.通过idea创建SpringBoot项…...
微服务设计(第2版)读书笔记
微服务概述 什么是微服务? 答:微服务(microservice)是基于业务领域建模的,可独立发布的服务。它会把业务内聚的功能封装起来,并通过网络供其他服务访问。将这样的服务组合起来构建出更复杂的系统。 微服务…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

门静脉高压——表现
一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...