1、主要是graph attentional layer的构建过程,输入是节点的特征表示
输出是新的节点表示:
2、为了获得足够的表达能力,需要把输入特征转化为高级别的特征,至少需要一个线性转换层,使用权重矩阵W,执行自注意力,相当于两个节点之间的权重信息,在之前的工作中,模型允许每个节点都和剩余其他节点有关系,这样就忽略了图的结构信息,因此在本文中,每个节点只和其一阶邻居节点计算权重。
注:这里计算权重的过程可以自行决定,有的论文(Document Modeling with Graph Attention Networks for Multi-grained Machine Reading Comprehension )中采用自注意力机制的方式进行计算,原论文中采用的是乘以权重矩阵,然后经过激活函数的方式。
3、每个节点和其邻居计算出的权重,再在其所有邻居权重上进行归一化,方便计算
4、在实验中,这个计算权重的a用一个全连接层表示
5、这里的alpha叫做注意力系数,其被用作计算节点特征的线性组合,每个节点的输出表示为:
6、这里的attention可以使用多头attention,节点特征的输出表示为:
7、如果是最后一层,对于多头的输出结果,不再进行拼接,而是求平均:
网上也有相关代码实现,原理上比基于谱域和基于空域的GNN容易理解一些,但据我调研(仅是本人观点)使用GCN的比较多,使用GAT的比较少。