论文笔记:详解图注意力网络(GAT)

整理了GAT( ICLR2018 Graph Attention Network)论文的阅读笔记

  • 背景
  • 图注意力网络的构建模块
  • 与其他模型对比
  • 实验

背景

  图神经网络的任务可以分为直推式(Transductive)学习与归纳(Inductive)学习:

Inductive learning,翻译成中文可以叫做 “归纳式学习”,就是从已有数据中归纳出模式来,应用于新的数据和任务。在图学习的训练过程中,看不到没有标注的节点,训练时只需要图的局部,不必一次性输入整张图,由于这个特性,归纳式学习是可以迁移的。即,在这个图上训练好的模型,可以迁移到另外一个图中使用。
Transductive learning,翻译成中文可以叫做 “直推式学习”,指的是由当前学习的知识直接推广到给定的数据上。就是训练期间可以看到没有标注的节点(训练需要整个图里面所有的节点参与),那么换一个图就需要重新训练。

  之前对将卷积网络推广到图结构的研究主要包括谱方法(spectral approaches)和非谱方法(non-spectral approaches)。
  谱方法(代表:GCN)学习到的滤波器依赖于拉普拉斯特征基,而拉普拉斯特征基依赖于图的结构。因此,在特定结构上训练的模型不能直接应用于具有不同结构的图。必须基于相应的图结构才能学到拉普拉斯矩阵,对于一个图结构训练好的模型,不能运用于另一个图结构,这就是GCN的一大弊端:无法完成inductive任务,即无法处理动态图。
  非谱方法(代表:GraphSAGE)以归纳的方式计算节点表示,通过对每个节点的固定大小的邻域进行采样,然后对其执行特定的聚合器(例如对所有采样邻域的特征向量取平均值)。取得了很好的效果。
  本文引入了一种基于注意力的架构来执行图结构数据的节点分类。其思想是通过对其邻居节点的自注意力策略计算图中每个节点的隐藏表示。它具有以下几个特性:

  1. 操作效率高,因为它可以跨节点邻居对并行化。
  2. 通过对相邻节点指定权重,可将其应用于度数不同的节点。
  3. 该模型直接适用于归纳学习(Inductive learning)问题,包括模型必须推广到完全看不见的图的任务。

图注意力网络的构建模块

模块的输入:节点特征的集合 h h h
h = { h 1 , h 2 , . . . , h N }    h ⃗ i ∈ R F h={\{h_1,h_2,...,h_N\}}\ \ \vec h_i\in R^F h={h1,h2,...,hN}  h iRF  其中,N是节点数量,F是每个节点的特征维度,模块的输出是更新后的节点特征集合 h ′ h^{'} h,为了获得更新的特征矩阵,首先对每个节点应用一个权值共享的参数矩阵 W ∈ R F ′ × F W\in R^{F^{'}×F} WRF×F,然后我们对每个节点对执行自注意力机制: a : R F ′ × R F = R a:R^{F^{'}}×R^F=R a:RF×RF=R计算相应的注意力系数, e i j e_{ij} eij表示节点j对节点i的重要性:
e i j = a ( W h i , W h j ) e_{ij}=a(Wh_i,Wh_j) eij=a(Whi,Whj)  在GAT中,作者提出两种运算方式:Global graph attention和Mask graph attention,Global graph attention指的是就是每一个顶点i都对于图上所有顶点都进行attention运算。这种方法的弊端明显:(1)计算量大;(2)丢掉了图结构特征,无异于自废武功。Mask graph attention指的是注意力机制的运算只在邻居顶点上进行。很明显,这才是正确的打开方式,对于每一个节点i,我们对每一个节点 j ∈ N i j \in N_i jNi计算他们的注意力系数, N i N_i Ni就是节点i的所有一阶邻居节点,然后应用一个softmax归一化:
a i j = s o f t m a x j ( e i j ) = e x p ( e i j ) ∑ k ∈ N i e x p ( e i k ) a_{ij}=softmax_j(e_{ij})=\frac {exp(e_{ij})}{\sum_{k\in N_i}exp(e_{ik})} aij=softmaxj(eij)=kNiexp(eik)exp(eij)  文章所使用的注意力机制a是一个单层前馈网络,参数化为 a ⃗ ∈ R 2 F ′ \vec a\in R^{2F^{'}} a R2F,应用LeakyReLU非线性激活函数,最终的展开式为:
a 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 e x p ( L e a k y R e L U ( a ⃗ T [ W h ⃗ i ∣ ∣ W h ⃗ k ] ) ) a_{ij}=\frac {exp(LeakyReLU({\vec a}^T[W\vec h_i||W\vec h_j]))}{\sum_{k\in N_i}exp(LeakyReLU({\vec a}^T[W\vec h_i||W\vec h_k]))} aij=kNiexp(LeakyReLU(a T[Wh i∣∣Wh k]))exp(LeakyReLU(a T[Wh i∣∣Wh j]))  其中 ∣ ∣ || ∣∣表示串联操作,可视化的样子:
请添加图片描述
  但是这样显得有些单薄了,作者又发现使用多头注意力可以为模型带来进一步提升,于是就变成了这样的情况:
请添加图片描述  上图是节点1在其邻域上的多头注意(三头)的图示。不同的箭头样式和颜色表示独立的注意力计算。通过将每个头部的聚合特征进行连接或平均,对特征矩阵进行更新。于是,假如我们加入了k头注意力机制,公式就变成了:
h i ′ ⃗ = ∣ ∣ k = 1 K σ ( ∑ j ∈ N i α i j k W k h i ⃗ ) \vec{h_i^{'}}={||_{k=1}^K}\sigma(\sum_{j\in N_i}\alpha_{ij}^kW^k\vec{h_i}) hi =k=1Kσ(jNiαijkWkhi )  其中, ∣ ∣ || ∣∣表示拼接, α i j k \alpha_{ij}^k αijk表示第k个头的归一化注意力系数, W k W^k Wk是线性变换的参数矩阵,如果是拼接的设置,那我们最终会得到的每个节点的特征维度就不再是 F F F,而是 K F KF KF。对于最终预测层,concate操作可能不那么敏感了,所以我们直接用K平均来取代concate操作:
h i ′ ⃗ = σ ( 1 K ∑ k = 1 K ∑ j ∈ N i α i j k W k h i ⃗ ) \vec{h_i^{'}}=\sigma(\frac 1K{\sum_{k=1}^K}\sum_{j\in N_i}\alpha_{ij}^kW^k\vec{h_i}) hi =σ(K1k=1KjNiαijkWkhi )  到这里,模型的推导的就结束了。

与其他模型对比

  1. 首先,GAT的算法复杂度很低,单个头计算得到 F ′ F{'} F的时间复杂度为 O ( ∣ V ∣ F F ′ + ∣ E ∣ F ′ ) O(|V|FF{'}+|E|F{'}) O(VFF+EF),其中, F F F是一个节点的特征维度, ∣ V ∣ |V| V ∣ E ∣ |E| E是节点和边的个数,这种复杂性与GCN相当,如果有K个头,就将参数需求乘以K倍,每个头是可以并行化计算的。
  2. 与GCN相比,GCN与GAT都是将邻居顶点的特征聚合到中心顶点上(一种aggregate运算),利用graph上的local stationary学习新的顶点特征表达。不同的是GCN利用了拉普拉斯矩阵,GAT利用attention系数。一定程度上而言,GAT会更强,因为顶点特征之间的相关性被更好地融入到模型中,并且GAT对干扰有更强的鲁棒性。
  3. 与LSTM的方法相比,Hamilton等人(2017)最近发表的归纳方法对每个节点的固定大小的邻域进行采样,以保持其计算足迹的一致性;这不允许它在执行推理时访问整个邻域。此外,当使用基于LSTM的邻域聚合器时,假设存在一个跨邻域的一致的顺序节点排序,并且作者通过持续地向LSTM提供随机排序的序列来纠正它。我们的技术没有这些问题——它可以处理整个邻域(代价是可变的计算空间,这仍然与GCN等方法相当),并且不假设其中有任何排序。
  4. 此外,GAT的运算方式是逐顶点的运算(node-wise),每一次运算都需要循环遍历图上的所有顶点。这意味着摆脱了拉普利矩阵的束缚,使得GAT可以应用于有向图。GAT中重要的学习参数是 w w w a ( ⋅ ) a(\cdot) a() ,因为上述的逐顶点运算方式,这两个参数仅与顶点特征相关,与图的结构无关。所以测试任务中改变图的结构,对于GAT影响并不大,只需要改变 N i N_i Ni,重新计算即可。这让它可以进行Inductive learning。

实验

文章在四个经典的数据集上进行试验,数据集信息:
请添加图片描述1、半监督学习transductive learning,实验设置:

两层 GAT
在Cora 数据集上优化网络结构的超参数,应用到Citeseer 数据集
第一层 8 head, F’=8 , ELU 作为非线性函数
第二层为分类层,一个 attention head 特征数C,后跟 softmax 函数,为了应对小训练集,正则化(L2)
两层都采用 0.6 的dropout,相当于计算每个node位置的卷积时都是随机的选取了一部分近邻节点参与卷积

实验结果:
请添加图片描述
2、归纳学习inductive learning,实验设置:

三层GAT 模型
前两层 K=4, F1=256 ,ELU作为非线性函数
最后一层用来分类 K=6, F’=121,激活函数为sigmoid
该任务中训练集足够大不需要使用正则化和 dropout

实验结果:
请添加图片描述

论文地址:https://arxiv.org/abs/1710.10903
代码地址: https://github.com/Diego999/pyGAT

欢迎点赞 关注 留言私信交流 📝 如有错误敬请指正!
本文的引用部分来自:图注意力网络(GAT)详解

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++项目引入依赖_例jsoncpp(MAC/CLion)

1、git clone jsoncpp到本地 jsoncpp github地址:https://github.com/open-source-parsers/jsoncpp/tree/master 2、编译生成 lib 文件 进入jsoncpp文件目录 # 进入 jsoncpp 目录,创建一个新的子目录来存放编译输出: mkdir build &&a…

试以单链表为存储结构实现简单选择排序的算法

简单选择排序,就是每趟把剩余元素最小或者最大的选出来排到前面 这道题值得推敲的是,p作为一个链表结点也是可以作为for循环的初始条件和判断条件的,至于查找到最小值之后,可以把两者的数值进行一个交换,就不用删结点…

SAP ABAP 面试题交流

1.列举AT事件并说明其作用,AT事件中的工作区有何不同? AT FIRST 循环loop中执行第一条数据 AT LAST 循环loop中执行最后一条数据 AT NEW 循环loop中指定字段(包含指定字段)记录与上一条记录不一致数据执行 AT END OF 循环loo…

计算机网络:物理层(奈氏准则和香农定理,含例题)

带你速通计算机网络期末 文章目录 一、码元和带宽 1、什么是码元 2、数字通信系统数据传输速率的两种表示方法 2.1、码元传输速率 2.2、信息传输速率 3、例题 3.1、例题1 3.2、例题2 4、带宽 二、奈氏准则(奈奎斯特定理) 1、奈氏准则简介 2、…

基于亚马逊云科技新功能:Amazon SageMaker Canvas无代码机器学习—以构建货物的交付状态检测模型实战为例深度剖析以突显其特性

授权说明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在亚马逊云科技开发者社区、 知乎、自媒体平台、第三方开发者媒体等亚马逊云科技官方渠道。 目录 🚀一. Amazon SageMaker 🔎1.1 新功能发布:A…

使用GAN进行异常检测

自从基于Stable Diffusion的生成模型大火以后,基于GAN的研究越来越少了,但是这并不能说明他就没有用了。异常检测是多个研究领域面临的重要问题,包括金融、医疗保健和网络安全。检测和正确分类未见的异常是一个具有挑战性的问题,多…

Electron 跨平台打包

最近利用 Electron 制作跨平台安装包,记录步骤,踩坑多多。 首先,一步步搭建项目 一、搭建环境 初始化 package.json,这里要求 node 版本不低于14.16,我用的 v14.16.0,16版本在 Linux 下容易出现安装依赖…

Java架构师系统架构高性能维度分析

目录 1 导语2 性能维度概述和定义3 高性能流程4 高性能实现方案-缓存为王5 高性能实现方案-异步为帅、分布式为将6 高性能高并发架构案例分析7 总结想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导语 Java架构师在构建高性能系统架构时,需要关注以下几个关键维度:…

Spark环境搭建和使用方法

目录 一、安装Spark (一)基础环境 (二)安装Python3版本 (三)下载安装Spark (四)配置相关文件 二、在pyspark中运行代码 (一)pyspark命令 &#xff08…

软件测试前景怎么样?寒冬季?

怎么说呢? 正所谓说360行,行行出状元。 各个行业都有金字塔,站在金字塔的只有一部分的人。 所以我的答案是,有前景,但是要努力往测试开发方向走到塔尖。 我从三个方面来说吧。 一、测试、运维、开发,我…

世界第一个语言不通的人是如何沟通的?

引言:语言是人类交流的重要工具,但在人类历史的某个时刻,肯定会有这样一位勇敢的先驱,他成为了世界上第一个语言不通的人。那么在他面临交流难题时,他是如何与他人沟通的呢?本文将对此进行探索。主体&#…

开源IPad Pro应用IDE:使用SSH远程连接服务器进行云端编程开发

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…

地理信息与遥感技术应用于草地资源监测实例

1.利用遥感监测草地现状实验 采用基于像元遥感影像分类与人机交互式解译相结合方法。 利用环境星/Landsat TM 等数据,基于像元遥感影像分类方法快速提取草地分布情况,获取草地面积信息。 为了提高精度,利用人机交互式解译方式对计算机自动分类…

计算机视觉技术在智慧城市建设中的应用

计算机视觉技术在智慧城市建设中的应用 随着城市化进程的不断推进,更多的人们选择在城市生活、工作和娱乐。面对快速增长的人口和日益复杂的城市环境,很多城市开始探索智慧城市的建设。智慧城市的核心就是将现代信息技术应用于城市管理中,以…

Django和ECharts异步请求示例

前提条件 创建django项目,安装配置过程这里就不讲述了。 后端url http://127.0.0.1:8000/echarts/demo/ view视图函数 from django.http import HttpResponse import jsondef EchartsDemo(request):data {}categories ["衬衫","羊毛衫",&…

数字逻辑 | 查漏补缺

与非RS触发器VS 或非RS触发器 卡诺图化简 格雷码 时序逻辑(不懂啊!!)

Linux-----3、物理机安装Linux

# 物理机安装Linux # 系统镜像获取 http://isoredirect.centos.org/centos/7/isos/ 例如: CentOS7.9.2009 arch (opens new window) 阿里云镜像 CentOS7.9.2009 x86 (opens new window) # 华为Atlas 500pro 表 2-1 系统版本及适配信息 名称内容操作系统型号CentO…

计算机毕业设计 基于SpringBoot的社区医院信息管理平台/系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

GAN的原理分析与实例

为了便于理解,可以先玩一玩这个网站:GAN Lab: Play with Generative Adversarial Networks in Your Browser! GAN的本质:枯叶蝶和鸟。生成器的目标:让枯叶蝶进化,变得像枯叶,不被鸟准确识别。判别器的目标&…

ShenYu网关Http服务探活解析

文章目录 网关端服务探活admin端服务探活 Shenyu HTTP服务探活是一种用于检测HTTP服务是否正常运行的机制。它通过建立Socket连接来判断服务是否可用。当服务不可用时,将服务从可用列表中移除。 网关端服务探活 以divide插件为例,看下divide插件是如何获…