目录

  • 前言
  • 正文
  • 图注意力机制层(Graph Attentional Layer)
  • 层的输入
  • 注意力系数
  • 归一化注意力系数
  • 通过邻居节点更新自身节点
  • 层的输出
  • GAT相比于先前研究的优势
  • 附作者简介


前言

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

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

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

正文

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

层的输入

层的输入是节点特征的集合:
图神经网络属于cv还是nlp 图神经网络gat_图注意力网络 其中, 图神经网络属于cv还是nlp 图神经网络gat_Big_02 是节点个数,图神经网络属于cv还是nlp 图神经网络gat_图神经网络_03 是每个节点输入的特征维度。

注意力系数

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

图神经网络属于cv还是nlp 图神经网络gat_图神经网络属于cv还是nlp_04 其中,图神经网络属于cv还是nlp 图神经网络gat_归一化_05,为全连接层 图神经网络属于cv还是nlp 图神经网络gat_Big_06 的参数;图神经网络属于cv还是nlp 图神经网络gat_图神经网络属于cv还是nlp_07 是对节点特征的一个线性变换的参数,目的是为了增强表达能力;图神经网络属于cv还是nlp 图神经网络gat_图神经网络_08 是concat操作;(1)式的结果生成的注意力系数 图神经网络属于cv还是nlp 图神经网络gat_归一化_09,图示如下:

图神经网络属于cv还是nlp 图神经网络gat_图注意力网络_10


图神经网络属于cv还是nlp 图神经网络gat_图神经网络_11 表示节点 图神经网络属于cv还是nlp 图神经网络gat_图神经网络_12 的特征对节点 图神经网络属于cv还是nlp 图神经网络gat_图注意力网络_13


归一化注意力系数

为了使系数在不同节点之间易于比较,对注意力系数进行归一化。
图神经网络属于cv还是nlp 图神经网络gat_Big_14 其中,图神经网络属于cv还是nlp 图神经网络gat_Big_15 是节点 图神经网络属于cv还是nlp 图神经网络gat_图注意力网络_13 的直接邻居节点集合。(2)式表示对节点 图神经网络属于cv还是nlp 图神经网络gat_图注意力网络_13

综合(1)式可得归一化注意力系数的表达式为:
图神经网络属于cv还是nlp 图神经网络gat_图神经网络属于cv还是nlp_18



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

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

  1. 加权求和
    图神经网络属于cv还是nlp 图神经网络gat_归一化_19 从上式可以看到,Attention的K,Q,V均来自输入节点,因此GAT的Attention是Self-Attention。
  2. Multi-head Attention
    使用 Multi-head 可以稳定 Self-Attention 的学习过程,然后将每个 head 的输出进行concat。
    图神经网络属于cv还是nlp 图神经网络gat_Big_20 其中,图神经网络属于cv还是nlp 图神经网络gat_Big_21 是concat操作,图神经网络属于cv还是nlp 图神经网络gat_归一化_22 由第 图神经网络属于cv还是nlp 图神经网络gat_归一化_23 个注意机制计算的归一化注意力系数;由于是concat,因此 图神经网络属于cv还是nlp 图神经网络gat_Big_24
    Transformer的Multi-Head Attention中,对拼接起来的Attention结果,使用一个线性变换再变化原来的维度。
    作者认为在在网络的最终(预测)层concat多头注意力结果不合理,因此作者对多头进行了平均:
    图神经网络属于cv还是nlp 图神经网络gat_图神经网络_25 生成注意力系数及Multi-head Attention的解释如下图:
  3. 图神经网络属于cv还是nlp 图神经网络gat_归一化_26

  4. 右图中不同颜色表示不同的head,一共有三个head。

层的输出

输出节点也是节点特征的集合:
图神经网络属于cv还是nlp 图神经网络gat_归一化_27 图神经网络属于cv还是nlp 图神经网络gat_图神经网络属于cv还是nlp_28

GAT相比于先前研究的优势

  • 计算高效
    Self-Attention层的可以跨所有边并行化,输出特征的计算可以跨所有节点并行化。(个人认为这一点不算优势,GraphSage也可以做到)
  • 可解释
    类似于机器翻译Attention的可解释。
  • Inductive learning
    可以泛化到未见过的节点和图。(个人认为这一点也不算优势,GraphSage也可以做到)
  • 解决GraphSage的缺点
  • GraphSage不能在推理期间访问所有邻居。(其实使用Mean Aggregator的GraphSage可以对所有邻居进行采样。)
  • LSTM Aggregator有排序问题。
  • GAT可以重新表述为MoNet的特定实例(这个需要分析一下,待续…)