GAT-GRAPH ATTENTION NETWORKS(论文笔记)

 CCF等级:A

发布时间:2018年

代码位置

25年4月21日交

目录

一、简介

二、原理

1.注意力系数

2.归一化

3.特征组合与非线性变换

4.多头注意力

4.1特征拼接操作

4.2平均池化操作

三、实验性能

四、结论和未来工作


一、简介

图注意力网络(GATs),可以在图结构数据上操作的神经网络架构。在GAT模型中,节点能够在它们的邻域特征上进行“关注”,从而隐式地为邻域中的不同节点指定不同的权重。简单理解为节点能够知道关联的每个节点对自己的影响权重是多少。


二、原理

首先将节点转化为向量,然后通过自我注意机制计算每个节点对其邻居的重要性权重(即注意力系数),并通过softmax函数进行归一化。接下来,利用这些归一化的注意力系数对邻近节点的特征加权求和,得到每个节点的新特征表示,并通常应用非线性激活函数进一步处理。为了增强模型的表现力和稳定性,GAT可以采用多头注意力机制独立执行上述过程多次,并将结果拼接或平均,最终生成用于分类或其他任务的节点特征表示。

1.注意力系数

先将节点转化为向量,节点h_i的向量为\overrightarrow{h_i}。(这一部分不重要,就不展开讲解)

e_{ij} = a(W\overrightarrow{h_i},W\overrightarrow{h_j})

  • \overrightarrow{h_i}\overrightarrow{h_j}分别是节点i和节点j的特征向量。
  • W是一个权重矩阵,用于线性变换这些特征向量。
  • a(\cdot , \cdot )是一个注意力机制函数,用于计算两个变换后的特征向量之间的相似度或相关性。

使用权重矩阵W对节点进行线性变换,再通过注意力机制函数a(\cdot , \cdot )计算这两个变换后特征向量之间的注意力分数e_{ij}

节点i对其邻居节点j的注意力系数a_{ij}

注意:e_{ij}只衡量了节点i关注节点j的程度,而不是同时考虑ji关注程度。换句话说e_{ij}e_{ji}是独立计算的,它们分别代表了从节点i到节点j和从节点j到节点i的注意力权重,这允许模型对每个方向的重要性进行不同的赋值。

2.归一化

a_{ij} = softmax_j(e_{ij}) = \frac{\exp (e_{ij})}{\sum_{k \in N_i} \exp (e_{ik})}

  • \exp(e_{ij})是注意力分数e_{ij}的指数函数值。
  • \sum_{k \in N_i} \exp(e_{ik})是节点i所有邻居节点k的注意力分数的指数函数值之和。
  • N-i表示节点i的邻居节点集合。

通过softmax函数,每个节点i对其邻居节点j的注意力权重a_{ij}被归一化到[0,1]区间内,并且所有邻居节点的注意力权重之和为 1。归一化不仅提高了模型性能,还增强了模型的鲁棒性和解释性。

计算注意力系数和归一化的公式可以合并为

\alpha_{ij} = \frac{\exp\left(\text{LeakyReLU}\left(\tilde{\mathbf{a}}^T [\mathbf{W} \vec{h}_i \| \mathbf{W} \vec{h}_j]\right)\right)}{\sum_{k \in N_i} \exp\left(\text{LeakyReLU}\left(\tilde{\mathbf{a}}^T [\mathbf{W} \vec{h}_i \| \mathbf{W} \vec{h}_k]\right)\right)}

3.特征组合与非线性变换

利用标准化后的注意力系数a_{ij},对邻近节点j的特征进行加权求和,从而得到每个节点的新特征表示。

\overrightarrow{h'_i} = \sigma (\sum_{j \in N_i} \alpha_{ij}W\overrightarrow{h_j})

  • \overrightarrow{h'_i}是节点i更新后的特征向量。
  • \alpha _{ij}表示经过softmax归一化后,邻居节点j对节点i的注意力权重。
  • W是一个可学习的权重矩阵,用于对输入特征进行线性变换。
  • N_i表示节点i的邻居集合。
  • \sigma是一个非线性激活函数,例如ReLULeakyReLU,用于引入非线性。

通过上述步骤,图注意力网络(GATs)能够动态地调整每个节点对其邻居节点的关注度,并据此更新自身的特征表示,以捕捉更丰富的局部结构信息。

4.多头注意力

通过为每个注意力头使用不同的权重矩阵,模型可以捕捉到不同类型的特征关系。

类似于卷积神经网络中使用不同的卷积核计算。

多头注意力机制 类似于多尺度特征提取,不同尺度的特征通过不同的卷积核提取。

多头注意力机制来计算节点\overrightarrow{h_i}的新特征表示\overrightarrow{h'i}

4.1特征拼接操作

\vec{h}_i' = \parallel_{k=1}^{K} \sigma\left( \sum_{j \in N_i} \alpha_{ij}^k \mathbf{W}^k \vec{h}_j \right)

  • \parallel_{k=1}^{K}表示将K个注意力头的结果进行拼接,形成最终的特征表示。
  • W^k是第k个注意力头对应的权重矩阵,用于对邻居节点j的特征向量\overrightarrow{h_j}进行线性变换。
  • \sum_{j \in N_i} \alpha_{ij}^k \mathbf{W}^k \vec{h}_j表示对所有邻居节点j的特征向量进行加权求和。这里的N_i是节点i的邻居节点集合。

4.2平均池化操作

\vec{h}_i' = \sigma\left( \frac{1}{K} \sum_{k=1}^{K} \sum_{j \in N_i} \alpha_{ij}^k \mathbf{W}^k \vec{h}_j \right)

  • \frac{1}{K} \sum_{k=1}^{K}表示对K个注意力头的结果进行平均池化,即将K个注意力头的结果相加后除以K

总结:

使用单一的注意力权重和权重矩阵,适用于简单的注意力机制。

使用多头注意力机制,特征拼接操作,并通过特征拼接操作组合多个注意力头的结果,从而增强模型的表达能力。

使用多头注意力机制,平均池化操作,并通过平均池化操作组合多个注意力头的结果,从而增强模型的表达能力。


三、实验性能

Cora、Citeseer和Pubmed分类准确率的结果总结。GCN-64 *对应于计算64个隐藏特征的最佳GCN结果。

对于PPI数据集,以微平均F1分数表示的结果摘要。GraphSAGE*对应于我们仅通过修改其架构即可获得的最佳GraphSAGE结果。


四、结论和未来工作

1.解决稀疏矩阵运算限制的问题:使用的张量操作框架仅支持秩2张量的稀疏矩阵乘法,这限制了批次处理的能力。

2.扩展模型深度:采用跳连接等技术可以适当扩展模型的深度,从而提高其表达能力。

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

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

相关文章

XML、JSON 和 Protocol Buffers (protobuf) 对比

目录 1. XML (eXtensible Markup Language) 1)xml的特点: 2)xml的适用场景: 2. JSON (JavaScript Object Notation) 1)JSOM的特点: 2)JSON的适用场景: 3. Protocol Buffers (…

如何通过简单步骤保护您的网站安全

在如今的数字化时代,网站安全已经成为每个网站管理者都不能忽视的重点。未授权用户入侵、数据泄露和恶意软件等威胁越来越多,网站安全对于保护企业、用户和客户的数据非常重要。为了帮助您提升网站的安全性,本文介绍了一些简单且有效的措施&a…

【后端开发】初识Spring IoC与SpringDI、图书管理系统

文章目录 图书管理系统用户登录需求分析接口定义前端页面代码服务器代码 图书列表展示需求分析接口定义前端页面部分代码服务器代码Controller层service层Dao层modle层 Spring IoC定义传统程序开发解决方案IoC优势 Spring DIIoC &DI使用主要注解 Spring IoC详解bean的存储五…

通付盾风控智能体(RiskAgent): 神烦狗(DOGE)

在数字化业务高速发展的今天,风控系统已成为企业抵御黑产、欺诈、保障交易安全的核心防线。然而传统风控面临人力依赖高与策略滞后性等挑战,数据分析师需每日从海量数据中手动提炼风险特征、设计防护规则,耗时费力;新策略从发现到…

大模型论文:Language Models are Unsupervised Multitask Learners(GPT2)

大模型论文:Language Models are Unsupervised Multitask Learners(GPT2) 文章地址:https://storage.prod.researchhub.com/uploads/papers/2020/06/01/language-models.pdf 摘要 自然语言处理任务,例如问答、机器翻译、阅读理解和摘要&am…

分布式ID生成方案的深度解析与Java实现

在分布式系统中,生成全局唯一的ID是一项核心需求,广泛应用于订单编号、用户信息、日志追踪等场景。分布式ID不仅需要保证全局唯一性,还要满足高性能、高可用性以及一定的可读性要求。本文将深入探讨分布式ID的概念、设计要点、常见生成方案&a…

记 etcd 无法在docker-compose.yml启动后无法映射数据库目录的问题

1、将etcd 单独提取 Dockerfile,指定配置文件和数据目录 #镜像 FROM bitnami/etcd:3.5.11 #名称 ENV name"etcd" #重启 ENV restart"always" #运行无权限 ENV ALLOW_NONE_AUTHENTICATION"yes" #端口 EXPOSE 2379 2380 #管理员权限才…

怎样才不算干扰球·棒球1号位

在棒球运动中,"干扰球"(Interference)是指球员或场外人员非法影响了比赛的正常进行。以下情况通常 不构成干扰,属于合法行为或无需判罚: 1. 击跑员(Batter-Runner)合法跑垒 跑垒限制…

PyTorch实现多输入输出通道的卷积操作

本文通过代码示例详细讲解如何在PyTorch中实现多输入通道和多输出通道的卷积运算,并对比传统卷积与1x1卷积的实现差异。 1. 多输入通道互相关运算 当输入包含多个通道时,卷积核需要对每个通道分别进行互相关运算,最后将结果相加。以下是实现…

深入解析 MySQL 中的日期时间函数:DATE_FORMAT 与时间查询优化、DATE_ADD、CONCAT

深入解析 MySQL 中的日期时间函数:DATE_FORMAT 与时间查询优化 在数据库管理和应用开发中,日期和时间的处理是不可或缺的一部分。MySQL 提供了多种日期和时间函数来满足不同的需求,其中DATE_FORMAT函数以其强大的日期格式化能力,…

SSH配置优化:提升本地内网Linux服务器远程连接速度与稳定性

文章目录 引言一. 理解SSH连接过程与影响因素二. 服务器端SSH配置优化三. 客户端SSH配置优化四. 高级技巧五. 内网穿透突破公网IP限制总结 引言 SSH (Secure Shell) 是一种网络协议,用于加密的网络服务,常用于远程登录和管理Linux服务器。对于本地内网的…

BERT - MLM 和 NSP

本节代码将实现BERT模型的两个主要预训练任务:掩码语言模型(Masked Language Model, MLM) 和 下一句预测(Next Sentence Prediction, NSP)。 1. create_nsp_dataset 函数 这个函数用于生成NSP任务的数据集。 def cr…

“实时滚动”插件:一个简单的基于vue.js的无缝滚动

1、参考连接: 安装 | vue-seamless-scroll 2、使用步骤: 第一步:安装 yarn add vue-seamless-scroll 第二步:引入 import vueSeamlessScroll from vue-seamless-scroll/src 第三步:注册 components: { vueSeamless…

【蓝桥杯】赛前练习

1. 排序 import os import sysn=int(input()) data=list(map(int,input().split(" "))) data.sort() for d in data:print(d,end=" ") print() for d in data[::-1]:print(d,end=" ")2. 走迷宫BFS import os import sys from collections import…

pyTorch-迁移学习-学习率衰减-四种天气图片多分类问题

目录 1.导包 2.加载数据、拼接训练、测试数据的文件夹路径 3.数据预处理 3.1 transforms.Compose数据转化 3.2分类存储的图片数据创建dataloader torchvision.datasets.ImageFolder torch.utils.data.DataLoader 4.加载预训练好的模型(迁移学习) 4.1固定、修改预训练…

第十四届蓝桥杯大赛软件赛国赛Python大学B组题解

文章目录 弹珠堆放划分偶串交易账本背包问题翻转最大阶梯最长回文前后缀贸易航线困局 弹珠堆放 递推式 a i a i − 1 i a_ia_{i-1}i ai​ai−1​i, n 20230610 n20230610 n20230610非常小,直接模拟 答案等于 494 494 494 划分 因为总和为 1 e 6 1e6…

Python 和 JavaScript两种语言的相似部分-由DeepSeek产生

Python 和 JavaScript 作为两种流行的编程语言,虽然在设计目标和应用场景上有差异(Python 偏向后端和脚本,JavaScript 偏向前端和动态交互),但它们的语法存在许多相似之处。以下是两者在语法上的主要共同点及对比&…

改善 Maven 的依赖性

大家好,这里是架构资源栈!点击上方关注,添加“星标”,一起学习大厂前沿架构! 建议使用mvn dependency:analyze命令来摆脱已声明但未使用的依赖项: 还有另一个用例, mvn dependency:analyze 它可…

【SQL】子查询详解(附例题)

子查询 子查询的表示形式为:(SELECT 语句),它是IN、EXISTS等运算符的运算数,它也出现于FROM子句和VALUES子句。包含子查询的查询叫做嵌套查询。嵌套查询分为相关嵌套查询和不想关嵌套查询 WHERE子句中的子查询 比较运算符 子查询的结果是…

Stable Diffusion 扩展知识实操整合

本文的例子都是基于秋叶整合包打开的webui实现的 一、ADetailer——改善人脸扭曲、恶心 After detailer插件可以自动检测生成图片的人脸,针对人脸自动上蒙版,自动进行重绘,整个流程一气呵成,因此可以避免许多重复的操作。除此之…