当前位置: 首页 > news >正文

论文笔记 Graph Attention Networks

2018 ICLR

1 intro

1.1. GCN的不足

  • 无法完成inductive任务
    • inductive任务是指:
      • 训练阶段与测试阶段需要处理的graph不同。
      • 通常是训练阶段只是在子图上进行,测试阶段需要处理未知的顶点。
    • GGN 的参数依赖于邻接矩阵A/拉普拉斯矩阵L,所以换了一张图,就会有不同的A和L
  • 处理有向图的瓶颈,不容易实现分配不同的学习权重给不同的邻居

1.2 本文思路

  • 引入masked self-attentional layers 来改进前面图卷积的缺点
    • 对不同的相邻节点分配相应的权重,既不需要矩阵运算,也不需要事先知道图结构
    • attention为每个节点分配不同权重,关注那些作用比较大的节点,而忽视一些作用较小的节点

2 GAT

  • 和一般注意力机制一样,GAT的计算也分为两步
    • 计算注意力系数
    • 加权求和

2.1 输入 输出

2.1.1 输入

单个 graph attentional layer的输入是一个节点特征向量集合

  • N是节点数量
  • F是每个节点特征维度

2.1.2 输出

新的节点特征集合

 

 2.2 计算注意力系数

2.2.1 全局attention的弊端

  • self-attention是一种Global graph attention,会将注意力分配到图中所有的节点上,但是这样会存在以下问题
    • 1,丢失结构信息
      • 基于空间相似假设,一个样本与一定范围内的样本关系较密切
    • 2,样本较多的时候,计算量非常大

2.2.2 masked self-attention

  • 为了解决这一问题,作者使用了一种 masked attention 的方法
    • 对于一个样本来说只利用邻域内的样本计算注意力系数和新的表示
    • 即仅将注意力分配到节点的一阶邻居节点集上
  • 针对每个节点执行 self-attention机制
      • eij就是i点和其邻居j点的注意力相关系数
      • 为一个映射函数(这边计算eij的时候漏了一个激活函数,论文中使用的是LeakyReLU)
      • hi,hi是点i和点j的特征向量 
  • 计算完点i和所有邻居的注意力相关系数后,引入softmax对所有相邻节点进行正则化
    • || 表示拼接(concat)操作

2.2.3 加权求和

  • 得到归一化的注意力系数后,使用归一化的值计算对应特征的线性组合,作为每个顶点这一层最后的输出特征

     

2.2.4 多头自注意力

  • 使用K个独立的 attention 机制,然后他们的特征拼接在一起

     

    • 这样每一层输出的维度为KF‘
  • 对于最后一个卷积层,不采用拼接的方式合并不同的attention机制的结果了,而是采用求平均的方式进行处理

     

3 实验

3.1 数据集

 3.2 实验结果

3.2.1 transductive learning

训练和测试在一张图上

 3.2.2 inductive learning

训练和测试不在一张图上

 

 

http://www.lryc.cn/news/131448.html

相关文章:

  • 看上去就很像的agree和degree有什么联系
  • 2023前端面试题第二弹(真实,一般人我还不给看)
  • 零基础如何学习 Web 安全,如何让普通人快速入门网络安全?
  • 安全学习DAY18_信息打点-APP资产搜集
  • react 矩形波浪
  • 【GitHub】Pycharm本地项目打包上传到Github仓库的操作步骤
  • 计算机网络基础
  • 【图像分类】基于LIME的CNN 图像分类研究(Matlab代码实现)
  • 回归预测 | MATLAB实现TSO-SVM金枪鱼群算法优化支持向量机多输入单输出回归预测(多指标,多图)
  • Pixar、Adobe 和苹果等成立 OpenUSD 联盟推行 3D 内容开放标准
  • ansible剧本之role角色模块
  • 网络安全领域的常见攻击方式及防御手段
  • Python应用工具-Jupyter Notebook
  • 音视频 FFmpeg如何查询命令帮助文档
  • 回归预测 | MATLAB实现CSO-SVM布谷鸟优化算法优化支持向量机多输入单输出回归预测(多指标,多图)
  • 元宇宙电商—NFG系统:区块链技术助力商品确权。
  • 【云原生】Docker基本原理及镜像管理
  • Apache Doris大规模数据使用指南
  • RabbitMQ 持久化
  • STM32 定时器复习
  • 17-工程化开发 脚手架 Vue CLI
  • golang 分布式微服务DAO层构建
  • Java 项目日志实例:LogBack
  • 什么是条件get方法?
  • Python爬虫——scrapy_crawlspider读书网
  • Spring源码编译-for mac
  • 视频汇聚平台EasyCVR安防监控视频汇聚平台的FLV视频流在VLC中无法播放的问题解决方案
  • 中间件:RocketMQ安装部署
  • leetcode-动态规划-42-接雨水
  • [静态时序分析简明教程(十一)]浅议tcl语言