GAT

Paper : Graph Attention Networks
Code :

摘要

注意力机制的核心在于对给定信息进行权重分配,只关注最相关的输入来进行决策。当注意力机制用来生成一个序列的表示时,也被称作是自注意力机制。注意力机制的表示形式如下

在这里插入图片描述
假定Source是需要系统处理的信息源,Query代表某种条件或者先验信息,Attention Value是给定Query信息的条件下,通过注意力机制从Source中提取得到的信息。一般Source里面包含有多种信息,我们将每种信息通过Key-Value对的形式表示出来,那么Attention定义为

Attention(Query,Source)=isimilarity(Query,Keyi)Valuei \text{Attention(Query,Source)} = \sum_i\text{similarity(Query,Key}_i)\cdot\text{Value}_i

其中 similarity(Query,Keyi)\text{similarity(Query,Key}_i) 表示权重,当Query与Key越接近时,答案越依赖于对应的Value的值。GAT将Attention机制应用到GNN中,Attention机制的三要素分别对应到图中的以下要素

  • Query : 某节点的特征向量
  • Source : 上一层所有邻居节点的特征向量
  • Attention Value : 经过聚合后形成的当前层某节点的特征向量

GAT具有以下几个特点

  • 操作高效,可以在 节点-邻居 之间进行并行化计算
  • 通过对邻居指定任意权重,可以应用于度数不同的图节点
  • 该模型直接适用于归纳学习问题,包括必须将模型推广到完全不可见图的任务

GAT结构

GAT层的输入是节点的特征表示 h={hi1iN}\text h = \{\overrightarrow{h}_i| 1\leq i\leq N\} ,其中 hiRF\overrightarrow{h}_i \in \mathbb R^F,输出是聚合后节点的新的特征表示 h={hi1iN}\text h' = \{\overrightarrow{h'}_i| 1\leq i\leq N\} ,其中 hiRF\overrightarrow{h'}_i \in \mathbb R^{F'}。与其他MPNN结构GNN层相似,GAT层需要学习一个线性映射 WRF×FW\in\mathbb R^{F'\times F} ,而节点 jj 对于节点 ii 的注意力权重定义为
ei,j=a(Whi,Whj) e_{i,j} = a(W\overrightarrow h_i, W\overrightarrow h_j)

最通用的形式下,该注意力机制可以表示任意节点 jj 对任意节点 ii 的权重,但是一般限制为一阶邻居和自己,即
jN~(vi)N~(vi)=N(vi){vi} \\j\in \widetilde N(v_i) \\ \widetilde N(v_i) = N(v_i) \cup\{v_i\}

为了便于比较不同节点之间的相关系数,需要对节点 ii 所有的邻居节点 jj 的权重进行正则化

αi,j=softmaxj(ei,j)=exp(ei,j)vkN~(vi)exp(ei,k) \alpha_{i,j} = \text{softmax}_j(e_{i,j}) = \frac{\exp(e_{i,j})}{\sum_{v_k\in \widetilde N(v_i)}\exp(e_{i,k})}

对于 ei,je_{i,j}aa 可以选择为非参数的相似度函数,也可以选择使用参数化的模型来输出相似度。在GAT中采用单层全连接网络进行相似度评估,即 aR2F\overrightarrow a \in \mathbb R^{2F'},并使用LeakyReLU 参数 α=0.2\alpha = 0.2,最终权重可以表示为

αi,j=exp(LeakyReLU(aT[Whihj]))vkN~(vi)exp(LeakyReLU(aT[Whihk])) \alpha_{i,j} = \frac{\exp(\text{LeakyReLU}(\overrightarrow a^{\text T}[W\overrightarrow h_i||\overrightarrow h_j]))}{\sum_{v_k\in\widetilde N(v_i)}\exp(\text{LeakyReLU}(\overrightarrow a^{\text T}[W\overrightarrow h_i||\overrightarrow h_k]))}

节点表示向量聚合之后的结果如下

hi=σ(vjN~(vi)αi,jWhj) \overrightarrow h_i' = \sigma(\sum_{v_j\in \widetilde N(v_i)}\alpha_{i,j}W\overrightarrow h_j)

为了使自注意力机制的学习过程更加稳定,可以将该方法扩展到multi-head attention,假设同时使用了K个注意力机制,输出是将它们单独的输出进行连接

hi=k=1Kσ(vjN~(vi)αi,jkWkhj) \overrightarrow h_i' = ||_{k=1}^K \sigma(\sum_{v_j\in \widetilde N(v_i)}\alpha_{i,j}^kW^k\overrightarrow h_j)

在这里插入图片描述

如果将多头注意力机制使用到最后一层,那么连接操作不太合适,一般使用均值操作来合并多个注意力机制的结果并延迟sigmoid操作

hi=σ(1Kk=1KvjN~(vi)αi,jkWkhj) \overrightarrow h_i' = \sigma(\frac{1}{K}\sum_{k=1}^K\sum_{v_j\in \widetilde N(v_i)}\alpha_{i,j}^kW^k\overrightarrow h_j)

总结

GAT提出了一个只需要知道局部特征就可以计算的Attention机制,算法并行支持很好,而且对于效果也有一定的改善。从实验设置上,可能缺乏一个有关计算代价的实验来支持“低代价计算Attention”的结论。GAT具有以下几个可以改进的方向

  • 处理的batch size的数据
  • 使用Attention分析模型表示能力
  • 从node classification 扩展到graph classification
  • 将edge features考虑进来
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章