GNNExplainer

GNNExplainer
foresta.yangGNNExplainer: Generating Explanations for Graph Neural Networks
1. Contribution 本文贡献
- 提出第一款通用,模型无关的(model-agnostic)对于GNN模型的解释器GNNEXPLAINER
- 形式化描述GNNEXPLAINER为最大化互信息的优化任务
- 抽取重要的子图结构及节点特征子集,作为模型解释。

2. Background 背景信息
对于非图结构的神经网络,解释方法主要有如下两个方向:
1.为整个网络构建简单的代替模型
常为模型无关的(model-agnostic),在待解释样本点的局部建立可信的估计。
E.g., 线性模型如LIME,规则集合如ANN_DT
2.识别模型计算过程中的重要层面
E.g. 关注特征梯度(feature gradients)等。
对于图神经网络设计解释方法,除去节点特征外,还需要结合考虑图的结构特征。
3. Problem Formulation 问题定义
3.1 GNN回顾
抽象GNN基本操作如下:
给定GNN模型 , 对于 层节点的特征表达求取,共经过如下3步。
-
与其邻居节点进行信息传递:

-
聚合邻居节点信息:
- 结合自身节点上层表达,生成本层节点表达
3.2 GNNEXPLAINER: Problem formulation
摘要
三段话总结 gnn-explainer 做了什么。
- 背景是:针对同质图的可解释性操作,和GNN模型结构无关,主要是分析 node feature 和节点信息聚合过程链路对模型预测的影响。模型支持单点解释和群体解释。
- 模型的输入输出:以节点预测为例,单点解释也就是输入一个node,返回预测该node任务中贡献最大的子图+子图中节点特征,也就是可解释性输出的内容。群体解释就是输入一类节点,同样还是返回可解释性输出的内容。模型优化函数:优化整个 graph 的预测结果和 subgraph 的预测差,找到预测差最大的subgraph,即是解释出来的重要子图。
- 评估:最终在合成数据集/真实数据集上进行评估,这里的评估方式是通过挖掘出和groundtruth类似的子图结构用于计算准确率。

举个实例,上图这个同质图分类任务,如果预测的人群类别是左图左上的篮球,那么GNN-explainer会抓出对打篮球这个预测结果贡献度最高的红色子图,也就是红色标明的球类运动,诸如排球/足球等;如果预测的人群类别是左图右下的航行,GNN-explainer会抓出对航行这个预测结果贡献度最高的绿色子图,也就是绿色标明的海边运动,诸如皮划艇/沙滩排球等。
问题定义


GNNExplainer
单例解释

后续还可以根据预测任务的不同类别,修改为条件期望
结合节点特征的单例解释

单类群体解释

实验结果分析
所有论文的实验过程和结果分析还是非常值得一看的,毕竟这是吹牛逼的核心区域,也是用来检验吹的好不好的唯一标准。 - 鲁迅
图可解释的方向,如何量化可解释性的效果是一个大难题。
本篇作为图可解释性的开篇之作,使用的评估方式是在合成数据集和真实数据集上,和attention类/grad梯度类的解释工作对比解释的子图结构的准确率。
终于到了讲解封面图的时候了!!!!!
如下图的合成数据集上,这里主要对比的是子图的结构,直接看下面A|B的实例说明,可以看到最右边的groundtruth给出的图结构中,仅有本篇论文做到了结构的完全解释,而grad/att得方法都是不全甚至完全不同结构的,自然得到的准确率非常低。

在真实数据集上,就没有量化指标惹,只能直接看实例,可以看到和合成数据集类似,本方法把groundtruth得结构都完整顺利得识别出来了。

在节点特征维度实例分析来看,可以看到att方法没有给出对应的节点特征维度,本篇方法同样是最佳的。同样,这里没有给出量化指标说明。

结论与延伸
作为开篇之作还是提供了非常完善的可解释性思路,并且拥有扩展性可以复用到不同的图任务图结构上。
可以改进的点粗略看下来有几条:
- 首先,全篇看下来应该是在同质图上的可解释性方法,可以转化到异质图上尝试效果。
- 其次,优化函数仅考虑到了结构的差异,可以尝试引入 attention 结构进行辅助优化。
- 最后,评估部分有缺陷,目前只在合成数据集上给出了量化指标,且评估方式仅是通过比较结构的相似性。
