当前位置: 首页 > news >正文

简单了解图注意力机制

简单了解图注意力机制

如果对传统的图匹配的聚合方式进行创新的话,也就是对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=hihjhihj.

也就是想学习能不能在聚合的这个公式上加入注意力,或者考虑加入一个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)=kN(i)exp(eik)exp(eij)=kN(i)exp(a(Whi,Whj))exp(a(Whi,Whj))

与之关联的节点之间做一个softmax操作.

在这里插入图片描述

这种方法的举例就是1和2之间做一个点积运算得到一个值,然后在2和3之间做一个点积运算得到另一个值,它们之间做softmax操作.

这种图中加注意力的方式是有很多种的,关于这方面的论文应该是有很多,这里就值列举课程中提到的一些.

http://www.lryc.cn/news/507644.html

相关文章:

  • UI Automator Viewer操作
  • SpringBoot的创建方式
  • Vue3之性能优化
  • RFdiffusion Sampler类 sample_step 方法解读
  • Flutter组件————FloatingActionButton
  • 算法学习(十六)—— 综合练习
  • kratos源码分析:熔断器
  • CTF_1
  • 【系统】Mac crontab 无法退出编辑模式问题
  • K8s中 statefulset 和deployment的区别
  • springboot中的AOP以及面向切面编程思想
  • 降低Mobx技术债问题-React前端数据流方案调研整理
  • RabbitMQ消息可靠性保证机制7--可靠性分析-rabbitmq_tracing插件
  • SQL进阶技巧:如何求解直接线上最多的点数?
  • 【老白学 Java】泛型应用 - 卡拉 OK(四)
  • android studio更改应用图片,和应用名字。
  • SQL Server 表值函数使用示例
  • SpringBoot项目的创建方式
  • 微服务设计(第2版)读书笔记
  • idea无法识别文件,如何把floder文件恢复成model
  • vscode的keil assistant 中搜索不到全局变量
  • html+css网页设计 美食 餐饮杰12个页面
  • 重撸设计模式--代理模式
  • Redis性能调优:深入剖析变慢原因及应对策略
  • Python联合Halcon的详细教程
  • raid 状态查看 storcli64
  • 时间管理系统|Java|SSM|JSP|
  • 使用Docker启用MySQL8.0.11
  • Qt之修改窗口标题、图标以及自定义标题栏(九)
  • 每天40分玩转Django:Django测试