前言
由于注意力机制在RNN与CNN中都取得了不错的效果,基于此作者在此篇文章提出了图注意力机制。此方法的优点在于可以处理任意大小输入的问题,并且关注最具有影响能力的输入
论文地址:https://arxiv.org/abs/1710.10903
代码地址:https://github.com/Diego999/pyGAT
1.INTRODUCTION
在摘要中作者说明了,本文的attention计算的目的是为每个节点neighborhood中的节点分配不同的权重,也就是attention是用来关注那些作用比较大的节点,而忽视一些作用较小的节点。
作者指出这个框架有三个特点:
- attention机制计算很高效,为每一个节点和其每个近邻节点计算attention可以并行进行。
- 通过指定任意的权重给neighbor,这个模型可以处理拥有不同“度”(每个节点连接的其他节点的数目)节点,也就是说,无论一个节点连接多少个neighbor,这个模型都能按照规则指定权重。
- 这个模型可以直接应用到归纳推理的问题中(inductive learning problem),包括一些需要将模型推广到完全未知的graph的任务中
作者在四个数据集上进行了实验都取得了state-of-the-art的结果。这四个数据集,三个是引用文献的,一个是蛋白质相互作用网络的。
2.GAT ARCHITECTURE
在这个模块,作者提出了一种图注意力层,通过堆叠这个层来实现图注意力机制。通过与之前的方法进行比较,阐述其优势及局限性。
2.1GRAPH ATTENTIONAL LAYER
2.1.1输入与输出:
输入
为节点的个数,为feature的个数。代表着输入为个节点的每个节点的个feature
输出
表示对这个节点的 个输出,输出为个节点的每个节点的个feature
2.1.2特征提取与注意力机制
为了获得足够的转化能力将输入特征转换为更高维的特征,至少一个可学习的线性变换是必须的。因此为每个节点训练一个权值矩阵。这个权值矩阵就是输入feature与输出feature的直接关系。
紧接着就需要为每个节点加上此篇文章的重点:共享的注意力机制。由此可得注意力相关系数公式如下
1.公式所表达的信息是对于节点i来说节点j的重要性,而忽略图结构性的信息(这个公式模型允许图中所有节点间计算相互间的影响而不是局限于k阶邻居节点)
2.其中代表的是feature向量。下标,代表的是哪个节点
3.但是当将此机制引入图结构的时候,作者是通过masked attention引入。这意味着j是i的邻居节点同时为了使得互相关系数更容易计算和便于比较,引入了softmax对所有的i的相邻节点j进行正则化。公式如下图所示
实验之中,注意力机制a是一个单层的前馈神经网络,通过权值向量来确定。并且加入了 LeakyRelu的非线性**,这里小于零的时候LeakyRelu斜率为0.2。因此得到完整的注意力机制公式如下
1.模型权重
2.T表示转置
3.||表示concatenation
得到最终的输出特征(Output features)
通过上面,运算得到了正则化后的不同节点之间的注意力互相关系数normalized attention coefficients,可以用来预测每个节点的output feature,公式如下图所示
1.为与输入feature相乘的权重矩阵
2.为之前计算的注意力互相关系数
3.为非线性**函数
4.考虑masked attention机制,遍历节点为的邻居节点
5.公式意义:该节点的输出feature与与之相邻的所有节点有关,是他们的线性和的非线性**。这个线性和的线性系数是前面求得的注意力互相关系数
这是个人总结的推到流程供参考
2.1.3multi-head attention
在上面的output feature加入计算multi-head的运算公式,公式如下图所示
1.||为concate操作
2.表示第个注意力机制,共需要考虑个注意力机制
3.表示输入特征的线性变换表示
4.最终的输出特征由个特征影响
当的时候结构如图所示
节点1在邻域中具有多端注意机制,不同的箭头样式表示独立的注意力计算,通过连接或平均每个head获取 h1对于最终的输出,concate操作可能不那么敏感了,所以我们直接用K平均来取代concate操作,得到最终的公式
3实验
实验分成两部分,transductive learning(半监督学习)和inductive learning(归纳学习)。模型用了两层的GAT
3.1数据集
图结构的数据集,以及数据集之中的信息如下:
3.2半监督学习transductive learning
- 两层 GAT
- 在Cora 数据集上优化网络结构的超参数,应用到Citeseer 数据集
- 第一层 8 head, F`=8 , ELU 作为非线性函数
- 第二层为分类层,一个 attention head 特征数C,后跟 softmax 函数,为了应对小训练集,正则化(L2)
- 两层都采用 0.6 的dropout,相当于计算每个node位置的卷积时都是随机的选取了一部分近邻节点参与卷积
3.3 归纳学习inductive learning
- 三层GAT 模型
- 前两层 K=4, F1=256 ,ELU作为非线性函数
- 最后一层用来分类 K=6, F`=121 , **函数为sigmoid
- 该任务中,训练集足够大不需要使用 正则化 和 dropout
两个任务都是用Glorot初始化初始的,并且是用Adam SGD来最小化交叉熵进行优化