GNNExplainer: Generating Explanations for Graph Neural Networks论文阅读笔记

发布时间 2023-10-08 15:58:39作者: ANewPro

GNNExplainer: Generating Explanations for Graph Neural Networks论文阅读笔记

摘要

​ 因为结合图结构和特征信息会导致复杂的模型,解释GNN的预测没有得到解决,所有提出了一个GNNExplainer,是第一个通用的,与模型无关的方法,可以为任何基于图的机器学习任务上的任何基于GNN的模型预测提供可解释的解释。给定一个实例,GNNExplainer识别出一个紧凑的子图结构和一个小的节点特征子集。这些节点特征在GNN的预测中起到了关键的作用。GNNExplainer可以为整个类的实例生成一致和简明的解释。我们将GNNExplainer定义为一个优化任务,使GNN的预测和可能的子图结构的互信息最大化。在合成图和真实图上的实验表明,该方法可以识别重要的图结构和节点特征,并且精度比较高。GNNExplainer提供了各种各样的好处,从可视化语义相关结构的能力到可解释性,再到洞察faulty GNN的错误

介绍

理解GNN的预测能力非常重要

  • 可以增加GNN模型的信任
  • 在越来越多的与公平性、隐私性和其他安全挑战相关的决策关键型应用程序中提高模型的透明度
  • 提高开发者对网络特征的理解、认知,并且减少模型出现系统性错误的风险。

解释其他神经网络的两个主流方式是

  • 为整个网格构建简单的替代模型
  • 仔细检查模型的相关特征并且找到高级特征的良好定性解释或者识别有影响的输入实例

​ 但是这两种方法都缺乏整合关系信息的能力,对GNN预测的解释应该利用图提供的丰富的关系信息以及节点特征

​ 所以这里提出了GNNExplainer,采用一个训练过的GNN及其预测,它返回输入图的小子图形式的解释以及对预测影响最大的节点特征的小子集。该方法是模型无关的。

pPj2ByF.md.png

​ 这个图就显示出了一个大图的小子图,发现vi的许多朋友都喜欢球类,所以预测vi喜欢球类。vj的朋友喜欢水上和沙滩运动,所以预测vi喜欢航行运动

​ GNNExplainer指定一个训练好的GNN的一个丰富子图的解释。使得子图和GNN的预测结果的互信息最大化。在这个过程中,学习了一个图掩码来挑选重要的子图。以及学习了一个特征掩码来掩盖不重要的节点特征。

相关工作

​ 可以将非图神经网络的可解释方法分为两类

​ 第一类方法就是建立全图神经网络的简单代理模型,通过与模型无关的方式来实现。

​ 第二类方法就是识别计算的重要方面,比如特征梯度等。因为这些方法产生容易出现梯度饱和等问题。因此这种方法不适用于解释神经网络在图上的预测。

pPjWDa9.png

​ GNNExplainer的目标就是识别一种对预测来说重要的预测特征和路径。B是勇敢学习特征掩码来识别节点的哪些特征维数对预测是重要的

图神经网络的解释

​ G代表图,E代表边,V代表节点,节点的特征有d维。考虑节点分类任务的问题。f表示函数将节点V映射到C类中。训练好的GNN模型用\(\Phi\)来表示

问题定义

​ 重要的一点就是得到节点v的计算图。聚合邻居节点的信息来决定GNN用在节点v上产生的预测\(\hat{y}\)。v的计算图表示了GNN如何产生v的嵌入z。\(G_c(v)\)是计算图,\(X_c(v)\)是关联特征集

​ GNN的预测就是给定\(\hat{y}=\Phi(G_c(v),X_c(v))\)。意味着我们需要考虑\(G_c(v)\)和节点特征\(X_c(v)\)来解释\(\hat{y}\)。GNNExplainer将预测\(\hat{y}\)解释为\((G_S,X_S^F)\)。其中\(G_S\)是计算图的一个小的子图。\(X_S\)是关联子图的一个特征。\(X_S^F\)是经过mask F的特征。

​ 也就是说要根据预测结果\(\hat{y}\)来找到解释\((G_S,X_S^F)\)

GNNExplainer的模型

​ 给定一个训练好的GNN模型\(\Phi\)和一个预测或一组预测。GNNExplainer将通过识别对模型预测最有影响力的计算图的子图和节点特征的子集来生成一个解释

单节点的解释

​ 对于节点v,我们的目标是对预测结果\(\hat{y}\)来找到子图\(G_S\)和重要的特征子集\(X_S\),然后利用互信息(mutual information MI),互信息的公式如下:

pPj5By6.md.png

其中H是熵。

​ 对于节点v,MI确定了预测\(\hat{y}=\Phi(G_c,X_c)\)的概率变化当v的子图仅限于\(G_S\)以及节点的特征仅限于\(X_S\)

​ 如果从\(G_c(v_i)\)中去除\(v_j\)会大大降低预测\(\hat{y_i}\)的概率,那么节点\(v_j\)\(v_i\)的一个反事实解释。边也是同理。

​ 因为H(Y)是常数,所以最大化\(\hat{y}\)等效于最小化\(H(Y|G=G_S,X=X_S)\)

​ 通过对上面的熵的展开项分析,GNNExplainer的目标就是通过取得与预测得到的有最高互信息的\(K_M\)条边来去噪

优化思路

不能直接优化,因为\(G_c\)有指数级的子图。

总之,经过了一系列数学推导和优化,最终变成了学习一个掩码来生成子图

pPjIdAg.md.png

通过阈值来去除M中的低值

图结构与节点特征的联合学习

​ 为了识别哪些特征对于预测\(\hat{y}\)最重要,GNNExplainer会学习一个特征选择器F,其实就是多加了一层掩码。

​ 最终要优化的就变成了

pPjo4Z8.md.png

多实例或单类别解释

​ 目标是找到一个与图结构相关的特定节点的子图,来解释一整个类。

​ 可以分为两个步骤

​ 第一步:首先,对于给定的一个类,选定一个参考节点vc,例如,通过计算分配给c的所有节点的平均嵌入。然后将\(G_S(v_c)\)作为参考节点\(v_c\)的解释,并将其分配给c类的其他节点作为解释。

​ 第二步:将邻接矩阵聚合到一起,然后研究特定节点的预测。也就是用4.2的方法来看哪些特征更重要

GNNExplainer的一些扩展

​ 在图分类中,对于节点嵌入的聚合,解释\(G_S\)不再必然是一个连接子图

总结

​ 提出了一种新的解释方法,可以解释在任何基于图形的机器学习任务上的任何GNN的预测,而不需要修改底层的GNN架构或重新训练。展示了GNNExplainer利用图神经网络的递归领域聚合方案来识别重要的图路径,并且突出显示了沿着路径的边缘传递的相关节点特征信息。这篇文章的工作是独特的,因为它提出了一种操作关系结构的方法-graph with rich node features。并且提供了一个直接的页面来理解GNN的预测,调试GNN模型,并且识别错误的系统模式。