论文笔记:GRAPH ATTENTION NETWORKS(GAT图注意力机制)

前言

由于注意力机制在RNN与CNN中都取得了不错的效果,基于此作者在此篇文章提出了图注意力机制。此方法的优点在于可以处理任意大小输入的问题,并且关注最具有影响能力的输入
论文地址:https://arxiv.org/abs/1710.10903
代码地址:https://github.com/Diego999/pyGAT

1.INTRODUCTION

在摘要中作者说明了,本文的attention计算的目的是为每个节点neighborhood中的节点分配不同的权重,也就是attention是用来关注那些作用比较大的节点,而忽视一些作用较小的节点。

作者指出这个框架有三个特点:

  1. attention机制计算很高效,为每一个节点和其每个近邻节点计算attention可以并行进行。
  2. 通过指定任意的权重给neighbor,这个模型可以处理拥有不同“度”(每个节点连接的其他节点的数目)节点,也就是说,无论一个节点连接多少个neighbor,这个模型都能按照规则指定权重。
  3. 这个模型可以直接应用到归纳推理的问题中(inductive learning problem),包括一些需要将模型推广到完全未知的graph的任务中

作者在四个数据集上进行了实验都取得了state-of-the-art的结果。这四个数据集,三个是引用文献的,一个是蛋白质相互作用网络的。

2.GAT ARCHITECTURE

在这个模块,作者提出了一种图注意力层,通过堆叠这个层来实现图注意力机制。通过与之前的方法进行比较,阐述其优势及局限性。

2.1GRAPH ATTENTIONAL LAYER

2.1.1输入与输出:

输入f={h1,h2...hN},hiϵRFf=\{\vec{h_1},\vec{h_2}...\vec{h_N}\},\vec{h_i}{\epsilon}{\mathbb{R}}^{F}

NN为节点的个数,FF为feature的个数。代表着输入为NN个节点的每个节点的FF个feature

输出f={h1,h2...hN},hiϵRFf=\{\vec{h_{1}^{'}},\vec{h_{2}^{'}}...\vec{h_{N}^{'}}\},\vec{h_{i}^{'}}{\epsilon}{\mathbb{R}}^{F^{'}}

表示对这NN个节点的 FF^{'} 个输出,输出为NN个节点的每个节点的FF'个feature

2.1.2特征提取与注意力机制

为了获得足够的转化能力将输入特征转换为更高维的特征,至少一个可学习的线性变换是必须的。因此为每个节点训练一个权值矩阵WϵRFFW{\epsilon}{\mathbb{R}}^{F^{'}*F}。这个权值矩阵就是输入feature与输出feature的直接关系。
紧接着就需要为每个节点加上此篇文章的重点:共享的注意力机制a:RFRF>Ra:{\mathbb{R}}^{F^{'}}*{\mathbb{R}}^{F^{'}}->\mathbb{R}。由此可得注意力相关系数公式如下
论文笔记:GRAPH ATTENTION NETWORKS(GAT图注意力机制)

1.公式所表达的信息是对于节点i来说节点j的重要性,而忽略图结构性的信息(这个公式模型允许图中所有节点间计算相互间的影响而不是局限于k阶邻居节点)
2.其中hh代表的是feature向量。下标ii,jj代表的是哪个节点
3.但是当将此机制引入图结构的时候,作者是通过masked attention引入。这意味着j是i的邻居节点同时为了使得互相关系数更容易计算和便于比较,引入了softmax对所有的i的相邻节点j进行正则化。公式如下图所示
论文笔记:GRAPH ATTENTION NETWORKS(GAT图注意力机制)

实验之中,注意力机制a是一个单层的前馈神经网络,通过权值向量来确定aϵR2F\vec{a}{\epsilon}{\mathbb{R}}^{2F^{'}}。并且加入了 LeakyRelu的非线性**,这里小于零的时候LeakyRelu斜率为0.2。因此得到完整的注意力机制公式如下
论文笔记:GRAPH ATTENTION NETWORKS(GAT图注意力机制)

1.模型权重aϵR2F\vec{a}{\epsilon}{\mathbb{R}}^{2F^{'}}
2.T表示转置
3.||表示concatenation

得到最终的输出特征(Output features)
通过上面,运算得到了正则化后的不同节点之间的注意力互相关系数normalized attention coefficients,可以用来预测每个节点的output feature,公式如下图所示
论文笔记:GRAPH ATTENTION NETWORKS(GAT图注意力机制)

1.WW为与输入feature相乘的权重矩阵
2.α\alpha为之前计算的注意力互相关系数
3.σ\sigma为非线性**函数
4.考虑masked attention机制,遍历节点为ii的邻居节点
5.公式意义:该节点的输出feature与与之相邻的所有节点有关,是他们的线性和的非线性**。这个线性和的线性系数是前面求得的注意力互相关系数

这是个人总结的推到流程供参考
论文笔记:GRAPH ATTENTION NETWORKS(GAT图注意力机制)

2.1.3multi-head attention

在上面的output feature加入计算multi-head的运算公式,公式如下图所示
论文笔记:GRAPH ATTENTION NETWORKS(GAT图注意力机制)

1.||为concate操作
2.aka^k表示第kk个注意力机制,共需要考虑KK个注意力机制
3.WkW^k表示输入特征的线性变换表示
4.最终的输出特征hh^{'}KFKF^{'}个特征影响

K=3K=3的时候结构如图所示
论文笔记:GRAPH ATTENTION NETWORKS(GAT图注意力机制)

节点1在邻域中具有多端注意机制,不同的箭头样式表示独立的注意力计算,通过连接或平均每个head获取 h1对于最终的输出,concate操作可能不那么敏感了,所以我们直接用K平均来取代concate操作,得到最终的公式
论文笔记:GRAPH ATTENTION NETWORKS(GAT图注意力机制)

3实验

实验分成两部分,transductive learning(半监督学习)和inductive learning(归纳学习)。模型用了两层的GAT

3.1数据集

图结构的数据集,以及数据集之中的信息如下:
论文笔记:GRAPH ATTENTION NETWORKS(GAT图注意力机制)

3.2半监督学习transductive learning

论文笔记:GRAPH ATTENTION NETWORKS(GAT图注意力机制)

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

3.3 归纳学习inductive learning

论文笔记:GRAPH ATTENTION NETWORKS(GAT图注意力机制)

  • 三层GAT 模型
  • 前两层 K=4, F1=256 ,ELU作为非线性函数
  • 最后一层用来分类 K=6, F`=121 , **函数为sigmoid
  • 该任务中,训练集足够大不需要使用 正则化 和 dropout
    两个任务都是用Glorot初始化初始的,并且是用Adam SGD来最小化交叉熵进行优化