深入理解图注意力机制(Graph Attention Network)

©PaperWeekly 原创 · 作者|纪厚业

学校|北京邮电大学博士生

研究方向|异质图神经网络及其应用

介绍

图神经网络已经成为深度学习领域最炽手可热的方向之一。作为一种代表性的图卷积网络,Graph Attention Network (GAT) 引入了注意力机制来实现更好的邻居聚合。通过学习邻居的权重,GAT 可以实现对邻居的加权聚合。因此,GAT 不仅对于噪音邻居较为鲁棒,注意力机制也赋予了模型一定的可解释性。

下图概述了 Graph Attention Network 主要做的事情。

针对节点 和节点 , GAT 首先学习了他们之间的注意力权重 (如左图所示);然后,基于注意力权重 来对节点 的表示 加权平均,进而得到节点  的表示

深入理解图注意力机制

2.1 非对称的注意权重

首先,介绍下如何学习节点对 之间的注意力值 。很明显,为了计算 ,注意力网络 需要同时考虑两个节点的影响,如下式:

其中, 分别是节点 的表示, 是一个投影矩阵。

注意力网络可以有很多的设计方式,这里作者将节点 的表示进行了拼接,再映射为一个标量。需要注意,这里拼接导致 ,也就是说注意力值 是非对称的。

除了拼接操作以外,聚合邻居信息时,需要对每个节点的所有邻居的注意力进行归一化。归一化之后的注意力权重 才是真正的聚合系数。

这里的归一化进一步导致了注意力权重的非对称性。因为在归一化的过程中,每个节点的归一化对象并不一样。 是针对节点 的所有邻居进行归一化,而 是针对节点 的所有邻居进行归一化。

综上,在求解注意力权重 的过程中,分子和分母都是非对称的,进而 也是非对称的。

这种非对称性在图数据上有什么用呢?一个简单的例子:在社交网络中,有一个大 V 和一个普通用户互相关注。但是,大 V 对于普通用户的重要性和普通用户对大 V 的重要性明显是不一样的。

完整的图注意力公式如下:

也有文章 18 ArXiv Attention-based Graph Neural Network for Semi-supervised Learning (AGNN) 尝试为节点对 设计对称的注意力机制,如下式的

这里, ,所以 。相对于拼接得到的 ,基于节点对 的相似性得到的 也更加直观。

2.2 可有可无的 LeakyRelu?

在求 公式中,有一个非常醒目的 LeakyReLU 激活函数。其实在最初的 GAT 论文中是没有这个激活函数的。那这里作者为什么突然要加上一个激活函数呢?

我们先拿掉 LeakyReLU,再看一下公式中最核心的一项:

假设注意力向量 是由两个向量拼接而成,即: ,那么:

如果在没有 LeakyReLU 的时候对邻居进行归一化:

也就是说,分子分母同时约去了节点 的信息, 实际变成了 。这时,节点对 之间的注意力权重实际没有考虑节点 的表示。

如果加上激活函数 (也就是 LeakyReLU),那么:

后面的归一化就不会约去节点 的信息。

这里对原始 GAT 论文中的公式进行了展开解读,一是为了更深入的理解图注意力机制,二是后面的代码解读需要用到这种展开。

2.3 Transformer Vs GAT

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

这里的 是一个单词的三种描述, 其中, 是当单词作为上下文的中心位置时的表示, 是当单词作为上下文时的表示, 是当单词作为加权输入时的表示。

因此, 其实代表了单词之间的相似性,在经过 softmax 归一化之后就可以得到注意力权重。有了注意力权重,我们再对上下文单词的表示进行加权,就可以得到单词的表示了。

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

Transformer 和 GAT 的主要区别是:

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

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

核心代码解读

Graph Attention Network 的作者开源了代码:

https://github.com/PetarV-/GAT

但是,这份代码对于初学者来说较难理解。这里对 GAT 的核心代码进行简要的解读和介绍。

作者在 GAT/utils/layers.py 中的 attn_head 实现了 GAT 核心模块:注意力机制。

def attn_head(seq, out_sz, bias_mat,activation, in_drop=0.0, coef_drop=0.0, residual=False):

这里有 3 个比较核心的参数:

  • seq 指的是输入的节点特征矩阵,大小为 [num_graph, num_node, fea_size]

  • out_sz 指的是变换后的节点特征维度,也就是 后的节点表示维度。

  • bias_mat 是经过变换后的邻接矩阵,大小为 [num_node, num_node]。

作者首先将原始节点特征 seq 进行变换得到了 seq_fts。这里,作者使用卷积核大小为 1 的 1D 卷积模拟投影变换,投影变换后的维度为 out_sz。注意,这里投影矩阵 是所有节点共享,所以 1D 卷积中的多个卷积核也是共享的。

seq_fts = tf.layers.conv1d(seq, out_sz, 1, use_bias=False)

也就是说,seq_fts 的大小为 [num_graph, num_node, out_sz]。

回顾前面的公式展开  也可以认为是投影变换,只不过投影到 1 维表示。注意,这里节点及其邻居的投影是分开的,有两套投影参数 ,对应下面两个 conv1d 中的参数。

f_1 = tf.layers.conv1d(seq_fts, 1, 1)
f_2 = tf.layers.conv1d(seq_fts, 1, 1)

经过 tf.layers.conv1d(seq_fts, 1, 1) 之后的 f_1 和 f_2 维度均为 [num_graph, num_node, 1]。

将 f_2 转置之后与 f_1 叠加,通过广播得到的大小为 [num_graph, num_node, num_node] 的 logits,就是一个注意力矩阵:

按照 GAT 的公式,我们只要对 logits 进行 softmax 归一化就可以拿到注意力权重 ,也就是代码里的 coefs。但是,这里为什么会多一项 bias_mat 呢?

coefs = tf.nn.softmax(tf.nn.leaky_relu(logits) + bias_mat)

因为的 logits 存储了任意两个节点之间的注意力值,但是,归一化只需要对每个节点的所有邻居的注意力进行(下式标红的部分)。所以,引入了 bias_mat 就是将 softmax 的归一化对象约束在每个节点的邻居上,如下式的红色部分。

那么,bias_mat 是如何实现的呢?直接的想法就是只含有 0,1 的邻接矩阵与注意力矩阵相乘,从而对邻居进行 mask。但是,直接用 0,1mask 会有问题。

假设注意力权值 [1.2, 0.3, 2.4] 经过 [0,1,1] 的乘法 mask 得到 [0, 0.3, 2.4],再送入到 softmax 归一化,实际上变为 ,这里本应该被 mask 掉的 1.2 变成了 =1,还是参与到了归一化的过程中。

作者这里用一个很大的负数,如 ,将原始邻居矩阵进行下面的变换, 见 utils/process.py/adj_to_bias。

def adj_to_bias(adj, sizes, nhood=1):......return -1e9 * (1.0 - mt)

然后,将 bias_mat 和注意力矩阵相加,进而将非节点邻居进行 mask。

例如,[1.2, 0.3, 2.4] 经过  的加法 mask 得到 。这样 softmax 就达到了我们的目的。

因为 较大的负数 。最后,将 mask 之后的注意力矩阵 coefs 与变换后的特征矩阵 seq_fts 相乘,即可得到更新后的节点表示 vals。

vals = tf.matmul(coefs, seq_fts)

总结

Graph Attention Network 作为首次将图注意力机制引入到图神经网络中的工作,已经在很多领域得到了广泛应用。受益于注意力机制,GAT 能够过滤噪音邻居,提升模型表现并可以对结果实现一定的解释。

点击以下标题查看更多往期内容: 

  • 图神经网络时代的深度聚类

  • ICLR 2020 | 多关系图神经网络CompGCN

  • 图神经网络三剑客:GCN、GAT与GraphSAGE

  • ICLR 2020 | 隐空间的图神经网络:Geom-GCN

  • 这10篇硬核论文,让你宅家也能更了解图神经网络

  • WWW 2020 开源论文 | 异构图Transformer

#投 稿 通 道#

 让你的论文被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

???? 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

???? 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

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

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

相关文章

注意力机制详述

学习本部分默认大家对RNN神经网络已经深入理解了,这是基础,同时理解什么是时间序列,尤其RNN的常用展开形式进行画图,这个必须理解了。 这篇文章整理有关注意力机制(Attention Mechanism )的知识&#xff0c…

注意力机制Attention详解

注意力机制Attention详解 一、前言 2018年谷歌提出的NLP语言模型Bert一提出,便在NLP领域引起热议,之所以Bert模型能够火出圈,是由于Bert模型在NLP的多项任务中取得了之前所有模型都不能达到的出色效果。那么Bert模型它是如何提出的呢&#x…

注意力机制(Attention Mechanism)-ECANet

引言 神经网络中的注意力机制(Attention Mechanism)是在计算能力有限的情况下,将计算资源分配给更重要的任务,同时解决信息超载问题的一种资源分配方案。在神经网络学习中,一般而言模型的参数越多则模型的表达能力越强…

注意力机制介绍(attention)

注意力机制是指我们将视觉注意力集中在图像的不同区域,或者将注意力集中在一句话中的某个词语,以下图为例: 人眼的视觉注意力允许我们以“高分辨率”关注某个特定区域(例如黄色框内的耳朵)同时以“低分辨率”处理周围的…

基于图像的场景三维建模

三月已过半旬,已是春暖花开的季节,也是我们科研爱好者最繁忙的一段时间。春天的到来,意味着新一届的学子即将离开学校,走向自己人生的第二段道路,也意味着您年伊始,所有的工作、项目、计划等都要开始步入正…

让运营人员相见恨晚的抖音自动化数据分析方案

让运营人员相见恨晚的抖音自动化数据分析方案 数据统计发现,目前抖音的用户数已超过5亿。流量时代,很多企业开始涌进这个庞大的流量池,基于抖音可以通过直播电商和广告投放等方式来挖掘商机。然而新机遇面前也是新的挑战,抖音类营…

LLaMA模型指令微调 字节跳动多模态视频大模型 Valley 论文详解

Valley: Video Assistant with Large Language model Enhanced abilitY 大家好,我是卷了又没卷,薛定谔的卷的AI算法工程师「陈城南」~ 担任某大厂的算法工程师,带来最新的前沿AI知识和工具,包括AI相关技术、ChatGPT、AI绘图等&…

【毕业设计】基于大数据的抖音短视频数据分析与可视化 - python 大数据 可视化

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,…

跨国邮件诈骗团伙案例

如果某天你收到了这样一封邮件,啊,大体意思就是这人身患绝症且有一笔遗产,你是个幸运儿要你继承。 重点来了啊,他会伪造证件然后让你相信并按照对方的思路来,给他你的身份信息,例如身份证照片,你…

文献AI神器!司马阅(SmartRead)一键整理PDF论文摘要,轻松回答重点问题!

阅读本文大概需要 2.35 分钟。 在司马阅(SmartRead)、 Midjourney 等AI 内容生成工具大热,加上前几天OpenAI 开放API 功能后,许多工具串接AI 功能来实现不只是问答,而是更多图文影音内容的自动创造。我自己比较专注在文字内容、想法规划的部份…

如何持续架构治理?我们和 ChatGPT 聊了一会?

在上周的 QCon 北京 2022 大会上,我和我的同事黄雨青一起分享了《组织级架构治理的正确方式》,以帮助开发人员对组织级架构治理体系全貌一瞥,并厘清治理工具的设计思路和核心功能内容。 结合我们在 ArchGuard 的探索经验,我们&…

【AI提示】通过提供哪些具体要素,可以更好地引导chatGPT提供针对性、准确和完美的回答,以满足我的需求...

以下是几个AI副驾驶(ChatGPT、讯飞星火、阿里通义、Claude、Bing Chat)提供的回答: 一、ChatGPT 分析一下从你那得到完美回答所需提示的要素 从我那得到完美回答所需的要素可以归纳为以下几点: 1.清晰的问题陈述:一个…

blinker+esp8266-01s继电器模块+小爱同学,远程控制开关灯,有按键反馈

读者按照一下图片自行配置app #define BLINKER_WIFI #define BLINKER_MIOT_LIGHT #include <Blinker.h>#define LED 0 //定义继电器输入引脚为GPIO0//填入自己的信息 char auth[] " "; char ssid[] " "; char pswd[] " ";bool…

解决小米鼠标小爱同学无法登录问题

问题描述&#xff1a;点击左下角未登录&#xff0c;一直显示加载中&#xff0c;没有后续反应 解决办法&#xff1a;下载新的驱动 1、点击“关于” 2、点击“帮助中心”——>“常见问题”——>“使用语音、翻译等功能&#xff0c;需要下载驱动软件吗”&#xff1b; 访问…

raspberry Pi 连接蓝牙(小爱同学)

参数valueraspberry pi MOdel4B&#xff0c;4Gbbluetooth MOdel小爱同学writeTime2023年 2月11日 下午13&#xff1a;14分raspberry System ModelLinux raspberrypi 5.15.61-v8 #1579 SMP PREEMPT Fri Aug 26 11:16:44 BST 2022 aarch64 GNU/Linux 连接蓝牙 请在小爱同学app上…

小爱同学控制ESP8266点灯

小爱同学吃灰很久了&#xff0c;一直想接入小爱来控制些智能硬件&#xff0c;无奈小米的IOT开放平台只对企业用户开放。最近研究了点灯科技的物联网平台&#xff0c;软件硬件支持非常丰富&#xff0c;关键对于爱好者有免费的版本可以使用&#xff0c;爱了爱了有木有&#xff1f…

“小爱同学”商标遭抢注,小米上诉被驳回

本文转载自IT之家 IT之家 6 月 2 日消息 小米科技有限责任公司与知识产权局商标行政管理&#xff08;商标&#xff09;的案件于近日公布&#xff0c;“小爱同学”商标 37 类 建筑修理类曾于 2017 年被陈某注册成功&#xff0c;小米于 2018 年注册该商标被驳回后起诉知识产权局…

小爱同学控制灯 局域网

继电器--------i02 #include <ESP8266WiFi.h> #define LED 0 // 以上烧写程序配网方式可以换成微信扫码配网&#xff0c;等等&#xff0c;具体操作可查看博客相关例子 WiFiServer server(80); // 服务器端口号 void smartConfig() { WiFi.mode(WIFI_STA); Serial.printl…

有道CEO周枫:当我们谈论大模型时,应该关注哪些新能力?

作者&#xff1a;周枫 基于大语言模型技术的ChatGPT推出已经有4个月了&#xff0c;更多同类产品还在快速出现。比如&#xff0c;前天谷歌更新了Bard&#xff0c;将辅助编程能力支持的语言数量扩展到20种。 然而&#xff0c;对大模型技术的重要性也出现了质疑&#xff0c;前段…

手机里的PDF文件怎样发送给好友?

有时我们会通过手机将一些资料或东西拍成照片又以PDF格式进行保存&#xff0c;但却没有找到分享的方法&#xff0c;要怎样才能将手机里面保存的PDF发送给其他好友呢&#xff1f; 1、PDF制作 首先我们下载并安装极速PDF&#xff08;阅读器&#xff09;APP后&#xff0c;打开阅…