[图神经网络] 图节点Node表示---GAT

article/2025/9/21 20:07:51

一. 概括

图神经网络已经成为深度学习领域最炽手可热的方向之一。本文提出Graph Attention Networks(GATs),将注意力机制应用到图神经网络中,每一层学习节点每个邻居对其生成新特征的贡献度,按照贡献度大小对邻居特征进行聚合,以此生成节点新特征。GATs具有计算复杂度低,适用归纳学习任务的特性。因此,GAT 不仅对于噪音邻居较为鲁棒,注意力机制也赋予了模型一定的可解释性。

二. self-attention

本节详细介绍每一次迭代(每一层)中aggregate模块所使用的Self-Attention机制

2.1 方法

输入:节点i特征h_{}i  , 邻居特征h_{}j

输出:邻居j对节点i生成新特征的贡献度 a_{ij}

模型:使用一个简单的前馈神经网络去计算a_{ij} , 共享参数W  通过反向传播学习。

2.2 输入预处理

h_{}i,  h_{}j 线性变换,得到Wh_{}i和Wh_{}j 

  1. W为参数矩阵,将F维的特征线性组合生成F'维特征。
  2. 线性变换的目的是得到更强大的表达,可以见参考:YJango:深层学习为何要“Deep”

2.3 输入层->隐层

注意力网络可以有很多的设计方式,这里作者将节点 i和j 的表示进行了拼接,再映射为一个标量。需要。

  1.  eij表示邻居j的特征对i的重要性/贡献度。
  2.  ||表示将将i和j拼接起来,作为神经网络的输入(2F'维),注意这里拼接导致eij != eji ,也就是说注意力值 是非对称的.
  3.  a为输入层->隐层的参数,因为隐藏只有一个神经元,故是一个2F'维的向量。
  4. 激活单元使用Leaky ReLU 进行非线性转换

2.4 隐层->输出层

为了使不同邻居的贡献度可以对比,使用softmax归一化,最终得到邻居j对节点i生成新特征的贡献度 aij

2.5 生成节点新特征

对节点i的邻居特征按贡献度 aij进行加权平均后加一个非线性转换,得到节点i的新特征 h{}'_{i}

2.6 Transformer Vs GAT

NLP 中大火的 Transformer 和 GAT 本质在做一样的事情。Transformer 利用 self-attention 机制将输入中的每个单词用其上下文的加权来表示,而 GAT 是利用 self-attention 机制将每个节点用其邻居的加权来表示。下面是经典的 Transformer 公式:

上述过程和 GAT 的核心思想非常相似:都是通过探索输入之间的关联性(注意力权重),通过对上下文信息(句子上下文/节点邻居)进行聚合,来获得各个输入(单词/节点)的表示。

Transformer 和 GAT 的主要区别是:

1.在 GAT 中,作者对自注意力进行了简化。每个节点无论是作为中心节点/上下文/聚合输出,都只用一种表示 。也就是说,在 GAT 中 Q=K=V

2.在图上,节点的邻居是一个集合,具有不变性。Transformer 将文本隐式的建图过程中丢失了单词之间的位置关系,这对 NLP 的一些任务是很致命的。为了补偿这种建图损失的位置关系,Transformer 用了额外了的位置编码来描述位置信息

 

三. Multi-head Attention

因为只计算一次attention,很难捕获邻居所有的特征信息,《Attention is all you need》论文中进一步完善了attention机制,提出了multi-head attention ,其实很简单,就是重复做多次attention计算),如下图所示:

其中, 表示一个可训练的参数向量, 用来学习节点和邻居之间的相对重要性, 也是一个可训练的参数矩阵,用来对输入特征做线性变换,表示向量拼接(concate)。

 

本文也使用了multi-head attention:学习K个不同的attention,对应参数a_{ij}^{k} ,W^{k}然后在生成节点i的新特征时拼接起来

如果在整个图神经网络的最后一层,使用平均替代拼接,得到节点最终的embedding:

 

四. GAT VS GCN

1. 与GCN的联系与区别

无独有偶,我们可以发现本质上而言:GCN与GAT都是将邻居顶点的特征聚合到中心顶点上(一种aggregate运算),利用graph上的local stationary学习新的顶点特征表达。不同的是GCN利用了拉普拉斯矩阵,GAT利用attention系数。一定程度上而言,GAT会更强,因为顶点特征之间的相关性被更好地融入到模型中。

2.  为什么GAT适用于有向图?

我认为最根本的原因是GAT的运算方式是逐顶点的运算(node-wise),这一点可从公式(1)—公式(3)中很明显地看出。每一次运算都需要循环遍历图上的所有顶点来完成。逐顶点运算意味着,摆脱了拉普利矩阵的束缚,使得有向图问题迎刃而解。

3. 为什么GAT适用于inductive任务?

GAT中重要的学习参数是  a(·) ,因为上述的逐顶点运算方式,这两个参数仅与顶点特征相关,与图的结构毫无关系。所以测试任务中改变图的结构,对于GAT影响并不大,只需要改变 Ni,重新计算即可。

与此相反的是,GCN是一种全图的计算方式,一次计算就更新全图的节点特征。学习的参数很大程度与图结构相关,这使得GCN在inductive任务上遇到困境。

 

 

 

 

 

补充. Message Passing

 

 

 

https://zhuanlan.zhihu.com/p/66812926

 


http://chatgpt.dhexx.cn/article/YEJ85gw4.shtml

相关文章

图灵 | 一站式图应用平台

点击「京东金融技术说」可快速关注 「引言」随着社会的日益发展,数据急剧增长,而数据背后的关系的挖掘的就显得更加重要,目前越来越多的人通过图技术去挖掘海量数据中的价值,却没有一个统一的平台,而【图灵】是为此而诞…

图神经网络基础--基于图神经网络的节点表征学习

图神经网络基础–基于图神经网络的节点表征学习 引言 在图节点预测或边预测任务中,首先需要生成节点表征(Node Representation)。我们使用图神经网络来生成节点表征,并通过基于监督学习的对图神经网络的训练,使得图神…

图神经网络(三):节点分类

节点分类问题 数据集:Cora 包含七类学术论文,论文与论文之间存在引用和被引用的关系 数据集导入 from torch_geometric.datasets import Planetoid from torch_geometric.transforms import NormalizeFeaturesdatasetPlanetoid(rootdataset,nameCora,…

基于图神经网络的节点表征

我们使用图神经网络来生成节点表征,并通过基于监督学习的对图神经网络的训练,使得图神经网络学会产生高质量的节点表征。高质量的节点表征能够用于衡量节点的相似性,同时高质量的节点表征也是准确分类节点的前提。 在节点预测任务中&#xf…

sg、xb分析

文章目录 流程分析远程调用本地调用分析结果 甚感欣慰,系统的写一下教程,希望能够帮助到大家。 流程分析 第一步,分析流程。 通过堆栈信息点到源码中并断点。 apply方法能劫持另外一个对象的方法,继承另外一个对象的属性 apply方…

Intel SGX入坑必读——《Intel SGX Explained》(个人翻译,持续更新中)

写在最前 入坑Intel SGX之前先打好基础。《Intel SGX Explained》就是入坑必读之一,有助于理解Intel SGX的原理。这里仅作个人翻译,便于加深理解,也方便感兴趣的小伙伴一起学习交流。 原文下载地址:《Intel SGX Explained》原文 …

Intel SGX入门(一)——背景篇

为什么要Intel SGX? 以云环境为例子,云租户会将自己的产品部署在云平台中,但是云平台现在普遍认为是一个不可信的地方,因为可能会有云平台管理者、同一云主机其他租户的恶意攻击,也可能云平台本身存在漏洞&#xff0c…

windows下使用SGX

前言: 这个是简单对于毫无经验的人的入门博客,杠精勿扰,大神离开。 我觉得每当下载一个新的工具的时候要先看一看他自己带的文档。 何谓SGX?不解释,您可以去看其介绍,百度搜搜即可。 win10如何下载SGX&a…

Intel SGX学习笔记(1):虚拟机Ubuntu20.04配置Intel SGX环境

写在前面 本教程仅仅适用虚拟机下的Ubuntu20.04配置Intel SGX环境,若是双系统下的Ubuntu系统,请看最后的参考连接。若是window10自带的ubuntu,也就是从微软商店下载的ubuntu系统,这个我到make preparation指令就开始疯狂报错&…

Windows10下使用Intel SGX功能(四):SGX技术分析

参考文献 Overview of Intel SGX - Part 1, SGX InternalsDeveloper Guide: Intel Software Guard Extensions (Intel SGX)(最新版)Overview of Intel SGX - Part 2, SGX Externals SGX 介绍 SGX 发展情况 SGX技术目前已经发展到SGX2。比如安全证明功…

可信启动、安全启动:SGX、TrustZone、SecureEnclave

最近在公众号上看到了一篇文章,算是又丰富了自己的安全方面的眼界。 最近看公众号取代了小视频、知乎这些东西。以前是真的不喜欢碎片化的东西,看什么学什么总是要找到书籍。但是这样的做法太过的极端,因为有时候有些事是两面性的。比如像安全…

Intel SGX 技术初探

最近公司需要开发一款使用intel 的移动终端,需要用到SGX技术,特此将调研和整理的相关资料放置于下,欢迎交流。 一、SGX技术背景 1.1 SGX技术定义 SGX全称Intel Software Guard Extensions,顾名思义,其是对因特尔体系…

Intel SGX入门(二)——SGX应用篇

大概了解SGX以后,SGX应用有哪些? 第一种,SGX应用于服务器端,云端 这一类个人觉得很需要结合代码、它们所描述的行业需求和以前的行业产品去考虑问题,毕竟是应用,不然可能体会不到精髓。 我对SGX应用的理解…

Intel SGX Explained

文章目录 SGX新增Abstract第一章 概括1.1 SGX简介1.2 大纲和问题发现 第二章 Intel体系架构背景知识2.1 Overview2.2 计算模型2.3 软件权限级别2.4 地址空间2.5 地址转换2.5.1 地址转换概念2.5.2 地址转换和虚拟化2.5.3 页表属性 2.6 执行上下文2.7 段寄存器2.8 特权级别转换2.…

sgx使用记录(Windows开发环境搭建以及sgx的简单介绍)1

sgx使用记录 相关代码仓库 ##sgx-sdk https://github.com/apache/incubator-teaclave-sgx-sdk.git##Teaclave:通用安全计算平台 https://github.com/apache/incubator-teaclave检测sgx运行环境是否支持 ##或使用cpuid命令 cpuid |grep -i sgx##或使用脚本测试 下…

Windows10下使用Intel SGX功能(一):环境搭建

文章目录 参考文献系统要求一、安装Open Enclave SDK 环境(一)什么是Open Enclave SDK(二)启动SGX功能方法一: BIOS启动方法二:软件方式启动 (三)安装必要环境(1&#xf…

Intel SGX 功能如何开启

Intel SGX 功能如何开启 我本身是 Windows10 系统, BIOS 是 ASUS 的,在想装 Ubuntu 双系统的时候,在启动 Ubuntu 安装 ISO 的时候提示说电脑的 SGX 没有开启,安装失败,安装界面都没有进去。 之后搜了下如何开启 SGX&a…

SGX的内部组件概述

导语:SGX是Intel开发的新的处理器技术,可以在计算平台上提供一个可信的空间,保障用户关键代码和数据的机密性和完整性。SGX全称Intel Software Guard Extensions,顾名思义,其是对因特尔体系(IA)…

SGX入门

如何设计SGX程序: SGX分为可信部分和不可信部分,可信部分由enclave组成(一个应用程序可以拥有一个或多个enclave),enclave存储在加密的内存中,受SGX保护,enclave一旦被建立就不能更改,所以通常…

SGX Enable

根据INTEl的官方建议, 目前的电脑主板在BIOS设置上只保留了Disabled和Software Controlled来开启和关闭SGX扩展 使用Software Controlled开关的原因官方文档有阐述,如下: 开启SGX扩展,首先需要满足以下要求: CPU具有…