互联网技术 / 互联网资讯 · 2023年12月3日 0

图注意力网络的可视化效果展示

最近,一个关于图注意力网络可视化的项目引起了众多研究人员的关注。该项目上线仅一天便获得了200多个星标,内容涉及使用PyTorch实现图注意力网络(GAT),并提供了易于理解的可视化效果。

图注意力网络的可视化效果展示

项目链接为:Github

在深入项目之前,我们先了解一下图神经网络(GNN)。GNN是一种基于深度学习的方法,专门用于处理图形数据。由于其出色的性能和可解释性,GNN近年来已成为图分析中一种重要的工具,广泛应用于计算生物学、计算药理学和推荐系统等领域。

GNN将深度学习技术应用于图结构中,图卷积网络(GCN)能够在图上执行卷积操作,但GCN存在一些局限性。为了解决这些问题,Bengio团队在三年前提出了图注意力网络(GAT),以改进GCN的不足。

GAT作为空间(卷积)GNN的代表,受到计算机视觉领域中卷积神经网络(CNN)成功的启发,研究人员希望将其推广到图数据中,因此GAT应运而生。

现在,有人利用PyTorch实现了GAT的可视化,我们来看看这个项目的具体实现。

图注意力网络的可视化效果展示

CoRa可视化

提到GNN,不能不提到CoRa数据集。CoRa数据集包含许多机器学习论文,是近年来图深度学习中常用的数据集。在CoRa中,节点代表研究论文,而链接则表示论文之间的引用关系。项目作者为可视化CoRa和进行基础网络分析开发了一款实用工具。下图展示了CoRa数据集的可视化效果:

图注意力网络的可视化效果展示

节点大小与其等级(即进出边的数量)成正比,边的粗细则大致反映了边的“流行度”或“连接程度”。以下图展示了CoRa节点等级(进出边数量)的分布情况:

图注意力网络的可视化效果展示

进出等级图是相同的,因为处理的是无向图。在底部的等级分布图中,我们注意到一个有趣的峰值出现在[2,4]范围内,意味着大多数节点的边数量较少,但其中有一个节点的边数达到了169条(绿色大节点)。

注意力可视化

一旦训练出GAT模型,我们就可以将特定节点的注意力可视化。节点通过注意力机制决定如何聚合周围的节点,以下是相应的可视化结果:

图注意力网络的可视化效果展示

这是CoRa中边数最多的节点之一(引用),颜色代表同类型的节点。

熵直方图

另一种理解GAT在CoRa上未学习到注意力模式(即它学习的是常量注意力)的方法是,通过将节点邻域的注意力权重视为概率分布并计算熵,进而在每个节点邻域汇总信息。

我们期望GAT的注意力分布具有偏差。橙色的直方图表示理想的均匀分布,而浅蓝色则为学习后的分布,两者几乎一致。

图注意力网络的可视化效果展示

分析CoRa嵌入空间(t-SNE)

GAT的输出张量形状为(2708,7),其中2708为CoRa中的节点数量,7为类别数。通过t-SNE将这些7维向量投影到2D空间,结果如下:

图注意力网络的可视化效果展示

使用方法

方法1:Jupyter Notebook

只需从Anaconda控制台运行Jupyter Notebook,系统将自动在默认浏览器中打开会话。打开The Annotated GAT.ipynb即可开始使用。

注意,如果遇到“DLL load Failed while importing win32API: The specified Module could not be found”的错误,只需运行,然后再使用进行安装。

方法2:使用您选择的IDE

如果使用自己选择的IDE,只需将Python环境与设置部分连接起来即可。