注意力机制 神经网络_GATs:图神经网络中的注意力机制

论文:Graph Attention Networks
作者:Petar Velickovic, Guillem Cucurull
来源:ICLR 2018

1. 概括

本文提出Graph Attention Networks(GATs),将注意力机制应用到图神经网络中,每一层学习节点每个邻居对其生成新特征的贡献度,按照贡献度大小对邻居特征进行聚合,以此生成节点新特征。

GATs具有计算复杂度低,适用归纳学习任务的特性。

review:

  1. 本文使用的注意力机制是来自Google 2017的论文《Attention is all you need》中的self-attentionmulti-head attention,该论文提出了一个仅用attention搭建的神经网络架构"the transformer" 应用到机器翻译任务,支持并发,性能更强。
  2. GATs其实是扩展了GraphSAGE框架,使用了注意力机制的aggregate方法,从实验效果看显著提升(PPI数据集上F1-score从0.768--> 0.973, 是否具有普遍性,打个问号)。
  3. GeniePath:蚂蚁提出自动选择邻居的GNN 这篇论文是本文在学习深度邻居贡献度上的一个扩展(本文只学习直接相连邻居的贡献度)。

2. self-attention

本节详细介绍每一次迭代(每一层)中aggregate模块所使用的self-attention机制 (主流的图神经网络架构介绍见另一篇文章GraphSAGE框架)

2.1 方法

输入:节点i特征

, 邻居特征

输出:邻居j对节点i生成新特征的贡献度

模型:使用一个简单的前馈神经网络去计算

, 共享参数
通过反向传播学习。

如下图所示:

c83f8be909af5e8a3eb0b52918591d5c.png

2.2 输入预处理

线性变换,得到
  1. W为参数矩阵,将F维的特征线性组合生成F'维特征。
  2. 线性变换的目的是得到更强大的表达,可以见参考:YJango:深层学习为何要“Deep”

2.3 输入层->隐层

  1. 表示邻居j的特征对i的重要性/贡献度。
  2. 表示将将
    拼接起来,作为神经网络的输入(2F'维)
  3. 为输入层->隐层的参数,因为隐藏只有一个神经元,故是一个2F'维的向量。
  4. 激活单元使用Leaky ReLU 进行非线性转换

2.4 隐层->输出层

为了使不同邻居的贡献度可以对比,使用softmax归一化,最终得到邻居j对节点i生成新特征的贡献度

2.5 生成节点新特征

对节点i的邻居特征按贡献度

进行加权平均后加一个非线性转换,得到节点i的新特征

3. multi-head attention

因为只计算一次attention,很难捕获邻居所有的特征信息,《Attention is all you need》论文中进一步完善了attention机制,提出了multi-head attention ,其实很简单,就是重复做多次attention计算),如下图所示:

6f6601daccb29c75127a3be1307466f9.png
不同线条颜色表示不同的attention

本文也使用了multi-head attention:学习K个不同的attention,对应参数

,然后在生成节点i的新特征时拼接起来:

8bce7b18f915542a0010bf402a4bfeb5.png

如果在整个图神经网络的最后一层,使用平均替代拼接,得到节点最终的embedding:

58816832c47a7a7dc79f30c32191fe5b.png

4.实验效果

GATs可适用直推和归纳学习也是作者强调,在实验中分别做了测试

直推学习

2a0d1270f1219b8e2b111443c120294f.png

归纳学习

感觉效果有点夸张,因为在直推学习数据集中也没有这么大的差异。

992c6d01cfc4282c11dd72b63b8786cb.png

5.未来有价值的工作:

  1. 利用attention机制分析模型可解释性。
  2. 在attention中考虑边的特征:本文仅考虑“直接相连”的邻居计算attention。


参考:

  1. 传统attention机制:https://www.coursera.org/learn/nlp-sequence-models
  2. self-attention机制:川陀学者:Attention机制详解(二)——Self-Attention与Transformer
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值