1,h2,…,hN},hi∈RF。输出是N 个长度为F′ 的特征向量h′={h1′,h2′,…,hN′},hi′∈RF′。要得到充分的,将输入特征转化为高级特征的表达能力,至少需要一个线性变换。共享线性变换权重矩阵,运用在所有节点上。再为每个节点加上 self-attention,这是一个共享的attention机制:a:RF′×RF′→R。a 将两个长度为F′ 的向量转化为一个标量,作为attention系数。eij=a(Whi,Whj)
上式表示的意义是,节点j 的特征,对节点i 的重要性。在普遍情况下,对于注意力机制,允许其他所有节点参与目标节点特征的计算,也就是说不考虑图结构信息。这里,通过masked attention注入图结构信息,这样一来,对于节点j ,只计算节点j的邻居节点i 的注意力系数eij 。这里邻居节点只考虑一度邻居,为了使注意力系数更容易比较,使用softmax将其归一化。
αij=softmaxj(eij)=∑k∈Niexp(eik)exp(eij)
作者的实验中,注意力机制a 是一个权重向量a 参数化的单层前馈神经网络。网络使用非线性函数LeakyReLU作为激活函数。注意力系数的完整计算公式如下:
αij=∑k∈Niexp(LeakyReLU(aT[Whi∥Whk]))exp(LeakyReLU(aT[Whi∥Whj]))
其中.T 表示转置,∣∣ 代表连接操作。
一旦得到归一化的关注系数,就利用关注系数与对应的节点特征做线性变换,再进行一次非线性变换后,作为节点特征的输出:
hi′=σ⎝⎛j∈Ni∑αijWhj⎠⎞
对于节点i,它的一阶邻居节点集合为Ni,根据节点i对每个邻居节点j的关注系数,计算节点i 的输出hi。
为了保证注意力机制的稳定性,执行mult-head attention,同时执行三个相互独立的attention机制,并将三次的输出结果concat或者计算平均:
hi′=∥k=1Kσ⎝⎛j∈Ni∑αijkWkhj⎠⎞
在最后一层网络,如果执行多头attention机制,concat将不再合适,此时,在最终的非线性判断函数之前,计算平均 :
hi′=σ⎝⎛K1k=1∑Kj∈Ni∑αijkWkhj⎠⎞
Experiments
作者设计了四个graph based数据任务,执行了GAT模型与一系列强大的baseline方法的比较评估。在Transductive和Inductive的配置下,GATs方法均达到state-of-art的效果。
在transductive的任务中,比较平均分类准确度。为了公平的评估注意力机制的优势,作者进一步评估了一个计算64个隐含特征的GCN模型,并同时尝试了ReLU和ELU激活。由表1,GAT方法在数据集Cora、Citeseer的分类准确度比GCNs高1.5%和1.6%。这说明,将不同的权重分配给邻域内不同的邻居能够有效提高模型表达能力。
对于Inductive任务,取两个模型从未见过的graph测试,比较节点的F1-score。在PPI数据集上,GAT模型的表现比GraphSAGE的最好成绩还要高20.5%,GAT模型具有良好的inductive setting运用潜力。
Thoughts
大佬们开创性的作品!
联系作者
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 梦家博客! 打赏
wechat
alipay