图神经网络GAT最详细讲解(图解版)

前言

大家好,我是阿光。

本专栏整理了《图神经网络》,内包含了不同图神经网络的原理以及相关代码实现,详细讲解图神经网络,理论与实践相结合,如GCN、GraphSAGE、GAT等经典图网络,每一个代码实例都附带有完整的代码+数据集。

正在更新中~ ✨

🚨 我的项目环境:

  • 平台:Windows10
  • 语言环境:python3.7
  • 编译器:PyCharm
  • PyTorch版本:1.11.0
  • PyG版本:2.1.0

💥 项目专栏:【入门图神经网络】


一、注意力机制

对于人类来讲,由于人的大脑处理信息能力的局限,所以就需要我们对一些信息的过滤来获取更为重要的信息来帮助我们进行判断,当我们使用眼球看一些东西的时候,我们往往会首先观察到更为显眼的事物,或者是说你现在在看我的博文,眼球一定集中在电脑屏幕上,而你桌面上的其它物体其实你的余光是可以看到的,但是你没有注意到,这都是采用了注意力机制。

对于这个问题,我们人类处理问题常常会把焦点放在更为重要的事情身上,而一定程度忽略一些小事件,这会大大提高人类对于信息处理效率,能够立刻从海量信息中获取与我们目标需要的信息。

在这里插入图片描述

比如我们想判断一张图片中的动物是什么,例如上图我们想判断图中的动物是不是企鹅,我们关注的肯定是企鹅本身,目光首先立刻就会定在企鹅身上,而不会过于关注后面的雪地和蓝天,因为我们觉得直接看动物本身对于我们判别动物更为有用,而看背景判别动物不太实用,这是利用了视觉上的注意力机制。

对于文本任务也是一样,我们可能会看上下文的词对当前词的影响,我们会更关注贡献程度最大的词,像Transformer中就是利用了Self-Attention机制,利用Q、K、V来计算注意力分数,这个分数就代表贡献程度或者说是重要程度。

二、Q、K、V

如果要理解注意力机制一定需要理解Q、K、V是什么?

这三个字母分别代表查询向量(Query)、键值向量(Key)、值向量(Value),由于我们需要从信息中获取与我们目标任务重要的信息,那么我们就需要对这些信息计算权重,也就是注意力分数,这个分数代表不同信息对于目标的重要性程度。

那么这个Q可以就是我们的任务向量,K就是其它信息的向量,我们利用Q分别与不同的K进行查询,通过一些方法计算权重(常见是相关性),然后利用这个分数进行权重分配,然后融合信息。

A t t e n t i o n ( Q , K , V ) = ∑ i L < Q , K i > V i Attention(Q,K,V)=\sum_{i}^{L}<Q,K_i>V_i Attention(Q,K,V)=iL<Q,Ki>Vi

上面式子就可以用来表示注意力机制,通过使用我们的目标Q分别与其它K做内积,计算权重分数,然后用这些权重分别乘以对应的V进行信息加权。

这里我们并没有将权重分数归一化,由于要信息加权,一般是要将分数归一化的,保证不同信息的贡献程度之和为1。

对于这个权重分数计算方法有很多,因为我们是要计算权重,它是一个标量,一个数,所以只要是能够是两个向量最终计算结果为一个数的方法都是可行的,但是要符合任务要求,最常见就是做内积操作,或者复杂一点就是将其拼接送入到MLP中进行映射。

三、图注意力网络

说了这么多,应该能够大概了解注意力机制是什么了吧,说白了就是按照一定权重进行信息加权。

对于GCN来将我们最重要的一个阶段就是进行聚合邻居信息,利用邻居的信息来表示自己节点的信息,最常见就是利用邻接矩阵,如果两个节点之间存在边的话,就将其进行聚合,对于GAT(图注意力网络)来将,就是在聚合邻居信息时考虑了不同邻居的权重信息,然后将这些邻居的信息按照注意力分数进行信息加权。

那么如何通过Q、K、V来计算这个聚合后的特征信息呢?

对于GAT中,Q就是我们当前节点的特征向量,而K就是邻居的特征向量,V也是邻居经过W映射后的特征向量,计算注意力分数我们需要拿着自身节点的特征向量分别与邻居节点的特征向量做内积计算分数,然后将分数归一化,然后分别乘以对应的节点特征向量进行加权操作。

1.第一步:计算中心节点与邻居节点的注意力分数(权重)
e i j = ϕ ( W h i , W h j ) e_{ij}=\phi(Wh_i,Wh_j) eij=ϕ(Whi,Whj)
该式中 e i j e_{ij} eij 代表节点i和节点j之间的注意力分数, ϕ \phi ϕ 代表计算权重的方法,常用是内积操作,这里可能有点不太一样,上面我们说过是使用Q和K直接相乘,为什么这里多了个W呢?这个W是我们模型需要学的参数,用来将我们原始节点的特征维度映射到一个新的维度上面。

对于本示例中 ϕ \phi ϕ我们使用的是MLP操作,定义一个a向量维度为映射后节点特征维度的2倍,将 W h i Wh_i Whi W h j Wh_j Whj这两个列向量按列进行拼接,然后与a向量进行点乘,计算内积。

2.第二步:激活权重分数

e i , j = L e a k y R e L U ( a T [ W h i ∣ ∣ W h j ] ) e_{i,j}=LeakyReLU(a^T[Wh_i||Wh_j]) ei,j=LeakyReLU(aT[Whi∣∣Whj])
上面的 ∣ ∣ || ∣∣表示向量拼接操作,就是将映射后的列向量进行拼接,将拼接后的向量与a向量做内积操作,然后使用LeakyReLU激活函数进行激活。

3.第三步:权重归一化

由于为了聚合信息进行加权,我们要使所有的权重之和为1。
e i , j = s o f t m a x ( e i , j ) = e x p ( L e a k y R e L U ( a T [ W h i ∣ ∣ W h j ] ) ) ∑ k ∈ N ( i ) ∪ i L e a k y R e L U ( a T [ W h i ∣ ∣ W h k ] ) e_{i,j}=softmax(e_{i,j})=\frac{exp(LeakyReLU(a^T[Wh_i||Wh_j]))}{\sum_{k\in N(i) \cup {i}}LeakyReLU(a^T[Wh_i||Wh_k])} ei,j=softmax(ei,j)=kN(i)iLeakyReLU(aT[Whi∣∣Whk])exp(LeakyReLU(aT[Whi∣∣Whj]))

上式中的 k ∈ N ( i ) ∪ i {k\in N(i) \cup {i}} kN(i)i 表示节点i的邻居信息,后面并上i就是在计算注意力分数考虑自身信息。

4.第四步:信息聚合

h i ′ = e i , i W h i + ∑ j ∈ N ( i ) e i , j W h j h_{i}^{'}=e_{i,i}Wh_i+\sum_{j \in N(i)}e_{i,j}Wh_j hi=ei,iWhi+jN(i)ei,jWhj

聚合就是将邻居节点特征信息与自身节点特征信息按照一定的权重分数进行加和,形成新的节点表示特征。

对于新的节点的特征维度可以和原来节点的特征维度是不同的,这取决于我们的参数W,W会将信息从原始特征空间d映射到新的空间 d ′ d' d,例如原始每个节点的特征向量的维度为3,如果我们的W矩阵的维度为【5,3】,那么W乘以h后,我们的 h’的节点的维度就变成了5。

四、多头注意力网络

多头注意力网络就是使用多个注意力机制形成多个聚合结果,那么为什么要采用这种机制呢?

对于常见卷积网络,当我们使用卷积核提取特征信息时,我们常常会使用多组卷积核去进行提取,目的就是每组卷积核能够提取到不同的图像信息,第一组提取纹理、第二组提取边缘信息等,那么引入多头注意力网络也是这个原因,希望每个注意力机制网络能够注意到不同的内容,进一步提升注意力层的表达能力。

对于最终形成的多组聚合结果,一般是两种处理方式,第一种是将所有的结果取平均或者最大化来获得该节点的最终输出,第二种是将多组输出结果按照列的方式进行拼接,形成【heads*out_channels】形状的输出,例如我们我们使用8组,每组的映射矩阵W的维度为【5,3】,那么每组的输出结果为5维,然后将这8组进行拼接,形成最终的40维。

h i ′ = ∣ ∣ k = 1 K ( e i , i W h i + ∑ j ∈ N ( i ) e i , j W h j ) h_{i}^{'}=||_{k=1}^K(e_{i,i}Wh_i+\sum_{j \in N(i)}e_{i,j}Wh_j) hi=k=1K(ei,iWhi+jN(i)ei,jWhj)

在这里插入图片描述
上图中的heads为3,采用了3组注意力机制网络,然后将3组网络的结果进行拼接形成最终的h。

换成公式表示就是:

( A ⊗ M ) X W (A\otimes M)XW (AM)XW

上式中的A为我们的邻接矩阵或者拉普拉斯矩阵,就是反应节点之间关系的矩阵,M为注意力分数矩阵,对应位置为节点对节点的注意力分数,X就是我们的特征矩阵,W就是学习的参数。

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

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

相关文章

图神经网络(GNN)的简介

近年来&#xff0c;图神经网络(GNN)在社交网络、知识图、推荐系统甚至生命科学等各个领域得到了越来越广泛的应用。GNN在对图节点之间依赖关系进行建模的强大功能&#xff0c;使得与图分析相关的研究领域取得了突破。本文介绍了图神经网络的基本原理&#xff0c;以及两种高级的…

什么是图神经网络GNN?

一、什么是GNN 一句话概括图神经网络&#xff08;Graphic Nuaral Network&#xff0c;GNN&#xff09;&#xff1a;将一个数据&#xff08;一个图&#xff09;输入到网络&#xff08;GNN&#xff09;中&#xff0c;会得到一个输出数据&#xff08;同样是图&#xff09;&#xf…

图神经网络简介,什么是图神经网络,GNN

目录 什么是图&#xff1f; 二、怎么把一些内容表示成图 2.1 怎么把图片表示成图 2.2 将一句话表示成图 2.3 其他信息转换成图的例子 2.3.1 分子结构表示成图 2.3.2 社会人物关系表示成图 2.3.3 其他可以表示成图的信息 三、哪些类型的问题有图结构数据 3.1 图层面的任务…

ChatGPT 火爆了,为什么不被开发者所欢迎?

可以说&#xff0c;ChatGPT是近几个月最受欢迎的话题之一&#xff0c;毕竟这个聊天机器人比它的前辈们“聪明”了很多&#xff0c;除了聊天之外&#xff0c;还会打草稿和编写代码&#xff0c;在某种程度上也能提高生产力。 记得 ChatGPT 最开始上线不久的时候&#xff0c;看到…

不需要等待列表,也不用魔法上网的Claude,能否比肩ChatGPT?

近期&#xff0c;国外Anthropic公司发布了Claude聊天机器人&#xff0c;堪比ChatGPT的最大竞争对手。一经推出&#xff0c;市场上就经常拿它俩来对比&#xff0c;因为推出Claude产品的Anthropic 公司是由多位前OpenAI前员工组成&#xff0c;两家公司&#xff0c;以及他们推出的…

漫画:骚操作系列(一文让你学会如何用代码判断“24“点)

“24点”是一种数学游戏&#xff0c;正如象棋、围棋一样是一种人们喜闻乐见的娱乐活动。它始于何年何月已无从考究&#xff0c;但它以自己独具的数学魅力和丰富的内涵正逐渐被越来越多的人们所接受。今天就为大家分享一道关于“24点”的算法题目。 话不多说&#xff0c;直接看题…

修改Discuz首页四格列表

优化经典四格版式下的用户界面 CSS&#xff0c;增加了表格间的分割线显示&#xff0c;使页面 UI 更为整齐 效果图&#xff1a; 修改步骤&#xff1a; 1.打开文件&#xff1a;template/default/style/t5/style.css 2.尾部新增样式&#xff1a; .category_newlist {padding: 0…

卡方检验四格表怎么做_SPSS案例实践:2*2四格表卡方检验

在某项调查研究中,所有受访家庭按照家庭收入被分为低收入家庭和中高收入家庭两类,现希望考察不同收入级别的家庭其轿车拥有率是否相同。 SPSS数据如下: 家庭是否拥有轿车是一个二结局的分类变量,要么有要么没有,互斥,所以该问题是一个典型的两个率的差异比较。 01 频数资…

AI漫画生成

文章目录 前言一、漫画生成怎么搞&#xff1f;二、White-box Cartoon Representations1.网络结构2.代码 附 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c…

[四格漫画] 第523话 电脑的买法

翻译至&#xff1a;http://www.atmarkit.co.jp/ait/articles/1610/04/news018.html

四格漫画《MUXing》——发版后……

产品发版上线后&#xff0c;工作并没有结束…… 【本文首发于&#xff1a;百度MUX】http://mux.baidu.com/?p2736 【 关注百度技术沙龙】 本文转自百度技术51CTO博客&#xff0c;原文链接&#xff1a; http://blog.51cto.com/baidutech/770299 &#xff0c;如需转载请自行联系…

四格漫画《MUXing》——度姐传说

MUXING用户研究工程师们热情、专业且富有亲和力。同时&#xff0c;他们也是群有故事的人…… 【本文首发于&#xff1a; 百度用户体验部】 http://mux.baidu.com/?p1169 【 关注百度技术沙龙】 本文转自百度技术51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.c…

四格漫画《MUXing》——请客记

年关将近&#xff0c;聚会增多&#xff0c;请客&#xff1f;还是被请&#xff1f;这是个问题…… 【本文首发于&#xff1a; 百度用户体验部】 http://mux.baidu.com/?p675 【 关注百度技术沙龙】 本文转自百度技术51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51ct…

四格漫画《MUXing》——龙年大吉

2012世界末日就要来了&#xff01;MUXING要集齐龙珠&#xff0c;唤出神龙&#xff0c;拯救世界&#xff01;龙年必须要大吉&#xff01; 【本文首发于&#xff1a;百度MUX】http://mux.baidu.com/?p2866 【 关注百度技术沙龙 本文转自百度技术51CTO博客&#xff0c;原文链接&a…

四格漫画《MUXing》——他们在干什么

黑夜给了我一双黑色的眼睛&#xff0c;我用它来追逐光明&#xff0c;但……他们在干什么&#xff1f; 【本文首发于&#xff1a; 百度用户体验部】 http://mux.baidu.com/?p1859 【 关注百度技术沙龙】 本文转自百度技术51CTO博客&#xff0c;原文链接&#xff1a;http://bl…

四格漫画《MUXing》——MUX诞生记

MUXING 是谁&#xff1f;&#xff1f;&#xff01;&#xff01;据说与外星生物有关……是神秘的…… 木星&#xff08;muxing&#xff09;&#xff0c;为太阳系八大行星之一&#xff0c;距太阳&#xff08;由近及远&#xff09;顺序为第五&#xff0c;亦为太阳系体积最大、自转…

[四格漫画] 第504话 网络相机

本文翻译至&#xff1a;http://www.atmarkit.co.jp/ait/articles/1604/26/news026.html

四格漫画《MUXing》——一场大雪

飞 花厚一尺&#xff0c;和月照三更。 【本文首发于&#xff1a; 百度用户体验部】 http://mux.baidu.com/?p758 【 关注百度技术沙龙】 本文转自百度技术51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/baidutech/747677&#xff0c;如需转载请自行联系原作…

四格漫画《MUXing》——坏习惯

每个人都有这样那样的坏习惯…… 【本文首发于&#xff1a; 百度用户体验部】 http://mux.baidu.com/?p1389 【 关注百度技术沙龙】 本文转自百度技术51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/baidutech/747528&#xff0c;如需转载请自行联系原作者

四格漫画《MUXing》——为生命努力

如果身陷困境中&#xff0c;需要保持镇静&#xff0c;分析所处环境&#xff0c;寻找出路&#xff0c;或根据自身的情况和周围的环境条件&#xff0c;发出不同的求救信号…… 【本文首发于&#xff1a; 百度用户体验部】 http://mux.baidu.com/?p812 【 关注百度技术沙龙】 本文…