图注意力网络GAT - 《Graph Attention Networks》论文详解

前言

之前在推荐排序上开发的一个算法,取得了不错的效果。其中就用到了图神经网络模块,该模块的一部分思想源于GraphSage和GAT,因此对GAT的算法及代码理解还是比较深的,上一篇博文介绍了GraphSage:《GraphSage -《Inductive Representation Learning on Large Graphs》论文详解》,本文对GAT算法部分进行剖析。

GAT的核心思想就是 加权聚合周围邻居的信息。其原理与GraphSage的Mean aggregator基本一致,只是作者增加了一些Tricks。

虽然GAT在论文中讨论的是有监督学习,但依旧可以使用GraphSage中论文提到的方式进行无监督学习。因为两者的层输出都是节点的embedding。

正文

图注意力机制层(Graph Attentional Layer)

层的输入

层的输入是节点特征的集合:
h = { h 1 , h 2 , … , h N } , h i ∈ R F \bold{h}=\{\bold{h}_1,\bold{h}_2,\ldots,\bold{h}_N\},\bold{h}_i\in\mathbb{R}^F h={h1,h2,,hN},hiRF 其中, N N N 是节点个数, F F F 是每个节点输入的特征维度。

注意力系数

注意力系数是每两个直接邻居节点之间的权重,包括节点本身的注意力系数。(作者表示,使用直接邻居而不是整个图的两个节点之间求注意力系数,相当于注入了结构信息。

e i j = a ( W h i   , W h j ) = L R e L U ( a T [ W h i ∥ W h j ] )      ( 1 ) \begin{aligned} e_{ij}=a\Big(\bold{W}\bold{h}_i\,, \bold{W}\bold{h}_j\Big) =LReLU\Big( \bold{a}^T [ \bold{W}\bold{h}_i \| \bold{W}\bold{h}_j ] \Big) \,\,\,\,(1) \end{aligned} eij=a(Whi,Whj)=LReLU(aT[WhiWhj])(1) 其中, a → T ∈ R 2 F ′ \overrightarrow{a}^T\in\mathbb{R}^{2F'} a TR2F,为全连接层 a a a 的参数; W ∈ R F ′ × F \bold{W}\in\mathbb{R}^{F'\times F} WRF×F 是对节点特征的一个线性变换的参数,目的是为了增强表达能力; ∥ \| 是concat操作;(1)式的结果生成的注意力系数 e i j ∈ R e_{ij}\in\mathbb{R} eijR,图示如下:
在这里插入图片描述
e i j e_{ij} eij 表示节点 j j j 的特征对节点 i i i 的重要性。


归一化注意力系数

为了使系数在不同节点之间易于比较,对注意力系数进行归一化。
α 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 ) \begin{aligned} \alpha_{ij}=softmax_j(e_{ij})={\frac {exp(e_{ij})} {\sum_{k\in\mathcal{N_i}} exp(e_{ik})}} \end{aligned} αij=softmaxj(eij)=kNiexp(eik)exp(eij) 其中, N i \mathcal{N}_{i} Ni 是节点 i i i 的直接邻居节点集合。(2)式表示对节点 i i i 的直接邻居节点之间进行归一化。

综合(1)式可得归一化注意力系数的表达式为:
α i j = e x p ( L R e L U ( a T [ W h i ∥ W h j ] ) ) ∑ k ∈ N i e x p ( L R e L U ( a T [ W h i ∥ W h k ] ) ) \begin{aligned} \alpha_{ij}={\frac {exp(LReLU\Big( \bold{a}^T [ \bold{W}\bold{h}_i \| \bold{W}\bold{h}_j ] \Big))} {\sum_{k\in\mathcal{N_i}} exp(LReLU\Big( \bold{a}^T [ \bold{W}\bold{h}_i \| \bold{W}\bold{h}_k ] \Big))}} \end{aligned} αij=kNiexp(LReLU(aT[WhiWhk]))exp(LReLU(aT[WhiWhj]))


通过邻居节点更新自身节点

这里使用过注意力机制,对邻居进行加权求和,然后聚合到自己身上,其原理与GraphSage基本一致,只是作者做了一些trick。

  1. 加权求和
    h i ′ = σ ( ∑ j ∈ N i α i j W h j ) \begin{aligned} \bold{h}_i'=\sigma\Big( \sum_{j\in\mathcal{N}_i} \alpha_{ij} \bold{W} \bold{h}_j \Big) \end{aligned} hi=σ(jNiαijWhj) 从上式可以看到,Attention的K,Q,V均来自输入节点,因此GAT的Attention是Self-Attention

  2. Multi-head Attention
    使用 Multi-head 可以稳定 Self-Attention 的学习过程,然后将每个 head 的输出进行concat。
    h i ′ = ∥ k = 1 K σ ( ∑ j ∈ N i α i j k W k h j ) \begin{aligned} \bold{h}_i^{\prime}=\|_{k=1}^K \sigma\left(\sum_{j \in \mathcal{N}_i} \alpha_{i j}^k \mathbf{W}^k \bold{h}_j\right) \end{aligned} hi=k=1KσjNiαijkWkhj 其中, ∥ \| 是concat操作, α i j k \alpha_{i j}^k αijk 由第 k k k 个注意机制计算的归一化注意力系数;由于是concat,因此 h i ′ ∈ R K F ′ \bold{h}_i^{\prime}\in\mathbb{R}^{KF^{\prime}} hiRKF
    Transformer的Multi-Head Attention中,对拼接起来的Attention结果,使用一个线性变换再变化原来的维度
    作者认为在在网络的最终(预测)层concat多头注意力结果不合理,因此作者对多头进行了平均:
    h i ′ = σ ( 1 K ∑ k = 1 K ∑ j ∈ N i α i j k W k h j ) \begin{aligned} \bold{h}_i^{\prime}= \sigma\left({\frac 1 K}\sum_{k=1}^{K}\sum_{j \in \mathcal{N}_i} \alpha_{i j}^k \mathbf{W}^k \bold{h}_j\right) \end{aligned} hi=σK1k=1KjNiαijkWkhj 生成注意力系数及Multi-head Attention的解释如下图:
    在这里插入图片描述
    右图中不同颜色表示不同的head,一共有三个head。

层的输出

输出节点也是节点特征的集合:
h ′ = { h → 1 ′ , h → 2 ′ , … , h → N ′ } , h → i ′ ∈ R F ′ \bold{h}'=\{\overrightarrow{h}_1',\overrightarrow{h}_2',\ldots,\overrightarrow{h}_N'\},\overrightarrow{h}_i'\in\mathbb{R}^{F'} h={h 1,h 2,,h N},h iRF F ′ F' F 是每个节点输出的特征维度。

GAT相比于先前研究的优势

  • 计算高效
    Self-Attention层的可以跨所有边并行化,输出特征的计算可以跨所有节点并行化。(个人认为这一点不算优势,GraphSage也可以做到

  • 可解释
    类似于机器翻译Attention的可解释。

  • Inductive learning
    可以泛化到未见过的节点和图。(个人认为这一点也不算优势,GraphSage也可以做到

  • 解决GraphSage的缺点

    • GraphSage不能在推理期间访问所有邻居。(其实使用Mean Aggregator的GraphSage可以对所有邻居进行采样。
    • LSTM Aggregator有排序问题。
  • GAT可以重新表述为MoNet的特定实例(这个需要分析一下,待续…)


附作者简介

Petar Velickovic: 佩塔尔·维利奇科维奇,DeepMind的研究员,剑桥大学的附属讲师,剑桥大学克莱尔霍尔的副研究员,研究涉及几何深度学习,由于Petar的突出贡献,被公认为几何深度学习计划中的ELLIS学者。Petar 拥有剑桥大学(三一学院)的计算机科学博士学位。
Guillem Cucurull: 吉列姆·库库尔,Blue Prism研究工程师,从事机器学习和计算机视觉方面的工作。
Arantxa Casanova:蒙特利尔综合理工大学/蒙特利尔学习算法研究所博士生。目前在FAIR, Meta AI工作。
Adriana Romero:Meta AI的研究科学家,也是麦吉尔大学的兼职教授。研究重点是开发能够从多模态数据中学习的算法,推理概念关系,并利用主动和自适应数据采集策略。
Pietro Lio:剑桥大学计算机科学与技术系的正教授、人工智能小组的成员、剑桥人工智能医学中心的成员。研究兴趣集中在开发人工智能和计算生物学模型,以了解疾病的复杂性并解决个性化和精准医学问题。目前的重点是图神经网络建模。Pietro Lio拥有剑桥大学的硕士学位,复杂系统和非线性动力学博士学位(意大利佛罗伦萨大学信息学院工程系)和(理论)遗传学博士学位(意大利帕维亚大学)。
Yoshua Bengio:大牛!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值