PyTorch图神经网络(三)

PyTorch图神经网络(三)

1.图注意力网络(GAT)

​ 之前提到的图卷积网络其实已经包含了图注意力网络的思想,他用节点的度来衡量节点的重要性,这样就会使得邻居较少的节点比其他节点更加重要。图注意力网络解决了这种方法的局限性,他把归一化矩阵拓展成注意力矩阵,得到的公式为(写成单个嵌入的形式,便于后文解释):

\[h_i=∑α_{ij}Wx_j \]

​ 其中,\(α_{ij}\)表示的是节点i和节点j之间的注意力分数,具体数值是根据输入的相互比较隐式计算得到的(自注意力)。

​ 这里的\(α_{ij}\)计算方法为:

​ 1.将节点i和节点j的特征拼接

​ 2.将拼接得到的特征乘上一个共享权重矩阵W(可学习)

​ 3.对第二部的结果应用Leaky ReLU

​ 3.将得到的所有结果归一化作为注意力分数

​ 这一步就和我们所熟知的transformer一样了,通过共享的权重矩阵来计算注意力分数,只不过这里只有一个矩阵。

​ 文中的多头注意力机制和tramsformer中的multi-head机制是类似的,也是拆分成多个相互独立的注意力机制,最终可以通过合适的方法将结果融合起来。文中说的是求平均,应该也可以像multi-head一样设立一个权重矩阵来融合所有结果。

注意:这里可以发现原书在前面写的式子中,都没有提到图的邻接矩阵,实际上在最终实现的时候,还是会用到邻接矩阵的,文中在pytorch实现的时候,也把公式修改为了:

\[H=A^TW_αXW^T \]

posted @ 2025-09-23 14:39  爱露查  阅读(21)  评论(0)    收藏  举报