Paper : Graph Attention Networks
Code :
摘要
注意力机制的核心在于对给定信息进行权重分配,只关注最相关的输入来进行决策。当注意力机制用来生成一个序列的表示时,也被称作是自注意力机制。注意力机制的表示形式如下
假定Source是需要系统处理的信息源,Query代表某种条件或者先验信息,Attention Value是给定Query信息的条件下,通过注意力机制从Source中提取得到的信息。一般Source里面包含有多种信息,我们将每种信息通过Key-Value对的形式表示出来,那么Attention定义为
Attention(Query,Source)=i∑similarity(Query,Keyi)⋅Valuei
其中 similarity(Query,Keyi) 表示权重,当Query与Key越接近时,答案越依赖于对应的Value的值。GAT将Attention机制应用到GNN中,Attention机制的三要素分别对应到图中的以下要素
- Query : 某节点的特征向量
- Source : 上一层所有邻居节点的特征向量
- Attention Value : 经过聚合后形成的当前层某节点的特征向量
GAT具有以下几个特点
- 操作高效,可以在 节点-邻居 之间进行并行化计算
- 通过对邻居指定任意权重,可以应用于度数不同的图节点
- 该模型直接适用于归纳学习问题,包括必须将模型推广到完全不可见图的任务
GAT结构
GAT层的输入是节点的特征表示 h={hi∣1≤i≤N} ,其中 hi∈RF,输出是聚合后节点的新的特征表示 h′={h′i∣1≤i≤N} ,其中 h′i∈RF′。与其他MPNN结构GNN层相似,GAT层需要学习一个线性映射 W∈RF′×F ,而节点 j 对于节点 i 的注意力权重定义为
ei,j=a(Whi,Whj)
最通用的形式下,该注意力机制可以表示任意节点 j 对任意节点 i 的权重,但是一般限制为一阶邻居和自己,即
j∈N(vi)N(vi)=N(vi)∪{vi}
为了便于比较不同节点之间的相关系数,需要对节点 i 所有的邻居节点 j 的权重进行正则化
αi,j=softmaxj(ei,j)=∑vk∈N(vi)exp(ei,k)exp(ei,j)
对于 ei,j ,a 可以选择为非参数的相似度函数,也可以选择使用参数化的模型来输出相似度。在GAT中采用单层全连接网络进行相似度评估,即 a∈R2F′,并使用LeakyReLU 参数 α=0.2,最终权重可以表示为
αi,j=∑vk∈N(vi)exp(LeakyReLU(aT[Whi∣∣hk]))exp(LeakyReLU(aT[Whi∣∣hj]))
节点表示向量聚合之后的结果如下
hi′=σ(vj∈N(vi)∑αi,jWhj)
为了使自注意力机制的学习过程更加稳定,可以将该方法扩展到multi-head attention,假设同时使用了K个注意力机制,输出是将它们单独的输出进行连接
hi′=∣∣k=1Kσ(vj∈N(vi)∑αi,jkWkhj)
如果将多头注意力机制使用到最后一层,那么连接操作不太合适,一般使用均值操作来合并多个注意力机制的结果并延迟sigmoid操作
hi′=σ(K1k=1∑Kvj∈N(vi)∑αi,jkWkhj)
总结
GAT提出了一个只需要知道局部特征就可以计算的Attention机制,算法并行支持很好,而且对于效果也有一定的改善。从实验设置上,可能缺乏一个有关计算代价的实验来支持“低代价计算Attention”的结论。GAT具有以下几个可以改进的方向
- 处理的batch size的数据
- 使用Attention分析模型表示能力
- 从node classification 扩展到graph classification
- 将edge features考虑进来