[图神经网络] 图节点Node表示---GAT
一. 概括
图神经网络已经成为深度学习领域最炽手可热的方向之一。本文提出Graph Attention Networks(GATs),将注意力机制应用到图神经网络中,每一层学习节点每个邻居对其生成新特征的贡献度,按照贡献度大小对邻居特征进行聚合,以此生成节点新特征。GATs具有计算复杂度低,适用归纳学习任务的特性。因此,GAT 不仅对于噪音邻居较为鲁棒,注意力机制也赋予了模型一定的可解释性。
二. self-attention
本节详细介绍每一次迭代(每一层)中aggregate模块所使用的Self-Attention机制
2.1 方法
输入:节点i特征 , 邻居特征
输出:邻居j对节点i生成新特征的贡献度
模型:使用一个简单的前馈神经网络去计算 , 共享参数W 通过反向传播学习。
2.2 输入预处理
对, 线性变换,得到W和W
- W为参数矩阵,将F维的特征线性组合生成F'维特征。
- 线性变换的目的是得到更强大的表达,可以见参考:YJango:深层学习为何要“Deep”
2.3 输入层->隐层
注意力网络可以有很多的设计方式,这里作者将节点 i和j 的表示进行了拼接,再映射为一个标量。需要。
- eij表示邻居j的特征对i的重要性/贡献度。
- ||表示将将i和j拼接起来,作为神经网络的输入(2F'维),注意这里拼接导致eij != eji ,也就是说注意力值 是非对称的.
- a为输入层->隐层的参数,因为隐藏只有一个神经元,故是一个2F'维的向量。
- 激活单元使用Leaky ReLU 进行非线性转换
2.4 隐层->输出层
为了使不同邻居的贡献度可以对比,使用softmax归一化,最终得到邻居j对节点i生成新特征的贡献度 aij
2.5 生成节点新特征
对节点i的邻居特征按贡献度 aij进行加权平均后加一个非线性转换,得到节点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,对应参数 ,然后在生成节点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中重要的学习参数是 W 与 a(·) ,因为上述的逐顶点运算方式,这两个参数仅与顶点特征相关,与图的结构毫无关系。所以测试任务中改变图的结构,对于GAT影响并不大,只需要改变 Ni,重新计算即可。
与此相反的是,GCN是一种全图的计算方式,一次计算就更新全图的节点特征。学习的参数很大程度与图结构相关,这使得GCN在inductive任务上遇到困境。
补充. Message Passing
https://zhuanlan.zhihu.com/p/66812926
[图神经网络] 图节点Node表示---GAT相关推荐
- 图神经网络基础--基于图神经网络的节点表征学习
图神经网络基础–基于图神经网络的节点表征学习 引言 在图节点预测或边预测任务中,首先需要生成节点表征(Node Representation).我们使用图神经网络来生成节点表征,并通过基于监督学习的对 ...
- 基于图神经网络的节点表征
我们使用图神经网络来生成节点表征,并通过基于监督学习的对图神经网络的训练,使得图神经网络学会产生高质量的节点表征.高质量的节点表征能够用于衡量节点的相似性,同时高质量的节点表征也是准确分类节点的前提. ...
- 干货!Labeling Trick: 一个图神经网络多节点表示学习理论
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! GNN 旨在学习单节点表示.当我们想要学习一个涉及多个节点的节点集表示(如链路表示)时,以往工作中的一个常见做法是将 GNN 学习到的多 ...
- [图神经网络] 图神经网络GNN基础入门
最近,深度学习领域关于图神经网络(Graph Neural Networks,GNN)的研究热情日益高涨,图神经网络已经成为各大深度学习顶会的研究热点,包括社交网络,知识图,推荐系统,甚至生命科学.G ...
- 图神经网络-图与图学习笔记-1
图神经网络-图与图学习 笔记-1 目录 一. 图是什么? 图的基本表示方法 计算图的每个节点的度 计算边的数量 可视化 二. 如何存储图? 存储为边列表 使用邻接矩阵 使用邻接列表 三. 图的类型和性 ...
- 图神经网络--图神经网络
图神经网络 图神经网络 图神经网络 一.PageRank简介 1.1互联网的图表示 1.2PageRank算法概述 1.3求解PageRank 二.代码实战 2.1引入库 2.2加载数据,并构建图 2 ...
- [图神经网络] 图节点Node表示---GCN
一. 概括 图神经网络已经成为深度学习领域最炽手可热的方向之一.GCN具体思想的核心是通过拉普拉斯矩阵可以对图信息进行特征分解的特点把该公式定义为图卷积操作,同时图卷积的出现也填补了神经网络获取拓扑图 ...
- [图神经网络] 图节点Node表示---GraphSAGE与PinSAGE
一 前言 在大规模图上学习节点embedding,在很多任务中非常有效,如学习节点拓扑结构的 DeepWalk 以及同时学习邻居特征和拓扑结构的semi-GCN. 但是现在大多数方法都是直推式学习, ...
- [图神经网络] 图节点Node表示(DeepWalk与Node2Vec)
一 前言 在图中,如果能把节点表示成合适的数值,能做很多任务,例如节点分类,关系预测,聚类等等.如何把节点表示成计算机能看懂的数值目前也有很多方法,本文主要为大家介绍基于DeepWalk的节点表示方法 ...
最新文章
- typescript 叹号_TypeScript系列(五)最佳实践
- 巧用参数组件和过滤组件,教你快速定位目标数据
- PE文件格式--------------导出表
- 同步手绘板——json
- 为什么不敢和别人竞争_净空法师开示:学老实,在社会上不能跟人竞争吗? - 如是我闻佛教网...
- B端出行,缺一个盒子汽车么?
- ActiveMQ下载与安装(Linux环境下进行)
- ScreenFlow for mac(最强大的屏幕录像软件)
- 微信客服介绍和使用指引(4.19)
- 软件项目管理期末复习整理
- 宠物商店项目mysql_北大青鸟java宠物商店+MySQL数据库
- 项目管理知识体系九大知识领域简介
- [PHP] Larval 主从读写分离配置
- 关于反向传播算法中几个公式的推导
- python获取图片像素点颜色_Python获取图片位置像素色值及判断色值是否存在
- JS_Gallary
- 2021-2027全球与中国MPO连接器市场现状及未来发展趋势
- 基于AVpro视频播放器的展馆视频播放
- 淘宝客推广的优势 推广作用提高销量、转化率、测图测款
- 域名该怎样选_网站域名应该怎样选择?