转载 纪厚业
本文由斯坦福Jure组发表在NeurIPS2019上. 一作Rex Ying也是著名的GraphSAGE的作者. 代码和数据 https://github.com/RexYing/gnn-model-explainer
目录
1.Introduction
2.Model
2.1Explanation via Structural Information
2.2Explanation via Feature Information
2.3 Multi-instance explanations through graph prototypes
3. Experiments
4. Conclusion
图神经网络(Graph Neural Network), 作为深度学习领域最热门的方向之一,相关论文在各大顶会层出不穷. 但是,图神经网络的解释性问题没有得到较多的关注.图神经网络的解释性是非常有必要的:(1) 提升了GNN的可信程度. (2) 在一些注重公平性,隐私性和安全性的决策应用,可以提升决策的透明度. (3)可以更好的理解图本身的特性.
虽然一些基于Attention机制的模型(如Graph Attention Network)可以一定程度上对GNN进行解释. 但是,作者认为它们有两个问题: (1)GAT可以学习节点之间关系的权重,但是其只能实现对结构的进行解释而无法通过特征的角度进行解释. (2) 节点的1-hop邻居和2-hop邻居可能有重叠,GAT会学习到同一对节点之间的不同权重.这时候到底该用那个无法抉择.
因此, 本文提出了GNNExplainer可以从网络结构和节点属性的角度来对任意图神经网络和任意图挖掘任务生成解释. GNNExplainer旨在探寻与预测结果最相关的子图结构来实现对结果的解释,其中Graph Mask和Feature Mask可以分别对实现对结构和特征的筛选.
上图给了一个如何对GNN预测的节点分类(Basketball和Sailing)的结果进行解释.针对节点 及其label篮球,其邻居中很多人都喜欢球类也有一些喜欢非球类, GNNExplainer可以自动的找到邻居中都喜欢球类的这些人. 同样的,针对节点 ,GNNExplainer也可以发现其好友中同样喜欢水上/沙滩类运动的好友.
作者首先归纳了GNN的三个步骤: (1)MSG, 构建节点之间需要传递的消息. (2)AGG,收集节点相关的消息. (3)UPDATE, 更新节点表示. 下图解释了GNNExplainer要做的事情: 自动发现重要的消息和特征.
上面都是对单个节点进行解释,但是很多时候我们更关注:如何对一类节点的预测进行解释? 本文把这个叫做multi-instance explanations,其主要包含两步
作者在合成/真实数据集上验证了GNNExplainer在多种任务上的解释能力.
下图是在合成数据集上的结果.可以看出相对于Grad和Att, GNNExplainer可以更好的抽取出与Ground Truth相似的结构.
作者随后在真实数据集上,从结构和特征两个方面对图分类和节点分类任务进行了解释. 与合成数据集上类似,GNNExplainer可以更好抽取出于Ground Truth相似的的结构. 即使Ground Truth存在多个复杂结构的时候,GNNExplainer依然可以抽取出最具有解释性的结构.
除了从结构的角度对GNN进行解释之外,GNNExplainer也可以抽取出最重要的特征来实现更好的解释.从下图可以看出,在molecule中含有多种原子中,有部分原子对预测mutagenicity有重要作用, 而GNNExplainer可以非常好的识别出来. Grad的方法一定程度上可以识别特征的重要性,但是不够明确.
神经网络包括图神经网络在很多领域都得到了应用也取得了很好的效果.但是如何对神经网络的预测结果进行解释是一个问题.很多工作尝试利用注意力机制来对模型预测结果进行解释.本文针对GNN的特点,从结构和特征的角度来对任意GNN在任意任务上的结果进行了解释.