可解释性研究(一)- GNNExplainer


最近需要研究代码漏洞相关的可解释性,而许多代码漏洞研究都用到了GNN,因此熟悉GNN有关的可解释性也很有必要。这篇paper发表于2019年,这里我也只是列出了相对好理解的部分,具体的很多计算细节就没列出来了。

对GNN进行可解释性研究可以:

  • 提升了GNN的可信程度.
  • 在一些注重公平性,隐私性和安全性的决策应用,可以提升决策的透明度.
  • 可以更好的理解图本身的特性.

作者提出GNNExplainer,这里针对的是结点分类任务(node classification)。相关的实验:GNNExplainer-Experiments

1.问题描述

G = ( V , E ) G = (V, E) G=(V,E) 为要分析的图, E E E 为边集合, V V V 为结点集合。其中

  • 结点个数为 n n n
  • V V V 的特征向量表示为 X = { x 1 , . . . , x n } , x i ∈ R d X = \{x_1, ..., x_n\}, x_i \in R^d X={x1,...,xn},xiRd
  • f f f 为映射函数 f : V → { 1 , . . . , C } f:V \rightarrow \{1,...,C\} f:V{1,...,C} 将图中每个结点分类为 C C C类中的一类
  • GNN模型 Φ \Phi Φ 用来近似函数 f f f 的分类功能

1.1. GNN背景

GNN模型 Φ \Phi Φ 的计算包括 M S G , A G G , U P D A T E MSG, AGG, UPDATE MSG,AGG,UPDATE 3个关键计算过程(GNN计算过程稍后再补):

  • 计算结点 i i i 和结点 j j j 的互信息, m i j l = M S G ( h i l − 1 , h j l − 1 , r i j ) m_{ij}^l = MSG(h_i^{l - 1}, h_j^{l - 1}, r_{ij}) mijl=MSG(hil1,hjl1,rij) M S G MSG MSG是计算互信息的函数
  • 聚合结点 v i v_i vi 的所有邻居结点 N v i N_{v_i} Nvi 信息,
    M i l = A G G ( m i j l ∣ v j ∈ N v i ) M_i^l = AGG({m_{ij}^l | v_j \in N_{v_i}}) Mil=AGG(mijlvjNvi)
  • h i l = U P D A T E ( M i l , h i l − 1 ) h_i^l = UPDATE(M_i^l, h_i^{l - 1}) hil=UPDATE(Mil,hil1)
  • 结点 i i i 最终向量表示 z i = h i L , L 为 网 络 层 数 z_i = h_i^L, L为网络层数 zi=hiL,L

任何GNN,只要计算过程可以归纳为 M S G , A G G , U P D A T E MSG, AGG, UPDATE MSG,AGG,UPDATE , 便可以使用GNNExplainer来解释。

1.2. GNNExplainer:问题描述

这里,图 G G G 的属性有:

  • 邻接矩阵 A c ∈ { 0 , 1 } n × n A_c \in \{0,1\}^{n \times n} Ac{0,1}n×n
  • v i v_i vi 的邻居结点集合为 G c ( v i ) G_c(v_i) Gc(vi)
  • 邻居结点特征集合为 X c ( v i ) = { x j ∣ v j ∈ G c ( v i ) } X_c(v_i) = \{x_j | v_j \in G_c(v_i)\} Xc(vi)={xjvjGc(vi)}
  • P Φ ( Y ∣ G c , X c ) P_Φ(Y|G_c,X_c) PΦ(YGc,Xc) 为结点 v v v 的类别概率分布

这里只需要考虑 G c G_c Gc 中的结构信息和 X c X_c Xc 中的特征信息来进行解释分类结果。这里GNNExplainer通过二元组 ( G s G_s Gs, X s X_s Xs) 来解释

  • G s G_s Gs 为一个子图
  • X s = { x j ∣ v j ∈ G S } X_s = \{x_j|v_j \in G_S\} Xs={xjvjGS} 为最相关的结点特征

2.GNNExplainer

给定训练好的GNN模型 Φ \Phi Φ 和一个预测结果。GNNExplainer会识别出对分类结果影响最大的子图 G s G_s Gs 和子结点特征向量 X s X_s Xs 。被解释的GNN会应用在如下场景

2.1. Single-instance explanations

未完全看懂

对于结点 v i v_i vi 的预测,GNNExplainer的目标是选出包含 v i v_i vi 的子图 G s ⊆ G c ( v i ) G_s \subseteq G_c(v_i) GsGc(vi) 以及结点特征 X S = { x j ∣ v j ∈ G S } X_S= \{x_j | v_j \in G_S\} XS={xjvjGS}

这里通过优化子图 G s G_s Gs 最大互信息来实现

max ⁡ G s M I ( Y , ( G S , X S ) ) = H ( Y ) − H ( Y ∣ G = G s , X = X s ) \max\limits_{G_s}MI(Y,(G_S,X_S)) = H(Y) - H(Y|G = G_s, X = X_s) GsmaxMI(Y,(GS,XS))=H(Y)H(YG=Gs,X=Xs)

其中

  • 由于 Φ \Phi Φ 是一个训练好的GNN模型,H(Y) 是常量。
  • 结点 v j ∈ G c ( v i ) , v j ≠ v i v_j \in G_c(v_i), v_j \neq v_i vjGc(vi),vj=vi ,这时从 G c ( v i ) G_c(v_i) Gc(vi) 中删除 v j v_j vj 会大幅影响 v i v_i vi 的预测结果。那么 v j v_j vj 就具备很好的解释性
  • ( v j , v k ) ∈ G c ( v i ) , v j , v k ≠ v i (v_j,v_k) \in G_c(v_i), v_j,v_k \neq v_i (vj,vk)Gc(vi),vj,vk=vi ,这时从 G c ( v i ) G_c(v_i) Gc(vi) 删除 v j v_j vj 会大幅影响 v i v_i vi 的预测结果。那么边 ( v j , v k ) (v_j,v_k) (vj,vk) 具备很好的解释性

展开上式第2项
H ( Y ∣ G = G S , X = X S ) = − E Y ∣ G S , X S [ l o g P Φ ( Y ∣ G = G S , X = X S ) ] . H(Y|G=G_S,X=X_S) = −E_{Y|G_S,X_S}[logP_{\Phi}(Y|G=G_S,X=X_S)]. H(YG=GS,X=XS)=EYGS,XS[logPΦ(YG=GS,X=XS)].

这里,作者限制了 G s G_s Gs 的结点个数小于等于 K m K_m Km 个。

下面的我就不展开了,很多大佬也详细的说明了。

2.2. Joint consideration of structural and node feature information

这里,作者训练了一个特征选择器从解释子图 G s G_s Gs 中选择对预测结果影响最大的几个结点。这里 GNNExplainer 考虑的是特征集合 X s X_s Xs 中的一个子集 X s T X_s^T XsT 而不是整个 X s X_s Xs。特征选择器实际就是一个掩码表示 T = { 0 , 1 } d T = \{0,1\}^d T={0,1}d, 最终优化的目标也变成了

max ⁡ G s , T M I ( Y , ( G S , T ) ) = H ( Y ) − H ( Y ∣ G = G s , X = X s T ) \max\limits_{G_s, T}MI(Y,(G_S,T)) = H(Y) - H(Y|G = G_s, X = X_s^T) Gs,TmaxMI(Y,(GS,T))=H(Y)H(YG=Gs,X=XsT)

包括2个步骤

  • 学习特征选择器 T T T
    X S T = X s ⊙ T X_S^T = X_s \odot T XST=XsT, 相当于mask

  • 将附加约束整合到解释中

此外,除却上述目标函数外,解释器还加入若干正则项限制,如

  • element-wise entropy,鼓励掩码离散
  • 惩罚过多非零项的掩码

2.3. Multi-instance explanations through graph prototypes

前面2个任务可以解释为什么一个结点 v v v 会被预测为 c c c 类。现在需要解释 给定一个全部属于 c c c 类的结点集合,GNN如何将它们全部预测为 c c c 类。

  • 给定节点类别 c c c, 作者通过对该类的所有结点的Embedding进行平均得到了参考节点 v c v_c vc​.然后转化为对 v c v_c vc进行单例(single-instance)解释得到子图 G S ( v c ) G_S(v_c) GS(vc).
  • 聚集邻居矩阵得到 Graph Prototype A p r o t o A_{proto} Aproto​,即:同类节点之间共享的图模式.(这里还不太理解)

2.4. GNNExplainer model extensions

2.4.1. Any machine learning task on graphs

除了结点预测,GNNExplainer还可以解释针对边预测图预测的任务。

2.4.2. Any GNN model

GNNExplainer可以应用于(不限于)如下图模型

  • Graph Convolutional Networks
  • Gated Graph Sequence Neural Networks
  • Jumping Knowledge Networks
  • Graph attention networks
  • Line-Graph NNs
  • Position-aware GNN

2.4.3. Computational complexity

即使输入图很大,GNNExplaner依然可以有效地生成解释。

3.实验

实验针对结点分类和图分类来进行解释

3.1.数据集

  • 合成数据集
    构造了4种结点分类数据集:BA-SHAPES, BA-COMMUNITY,TREE-CYCLES,TREE-GRID。过程简化为下图,详细参考论文

在这里插入图片描述

  • 现实数据集
    2个图分类数据集:
    • MUTAG是一个由4337个化学分子图组成的数据集,这些分子图是根据它们对革兰氏阴性细菌S的诱变效应标记的。
    • REDDIT-BINARY是一个由2000个图形组成的数据集,每个图形表示Reddit上的一个在线讨论过程。用户为节点,用户间评论为边, label为Q&A和discussion(问答式和讨论式)。

3.2.结果

3.2.1.定量分析

针对结点分类的合成数据集中有explanation ground truth。可以用来为解释算法计算explanation accuracy。这里将解释问题看作二分类问题,预测的对象是图的。好的解释方法对ground-truth中的边分类score很高。

对比结果
在这里插入图片描述

3.2.2.定性分析

结点分类解释可视化
在这里插入图片描述
图分类解释可视化
在这里插入图片描述 可以看到ground-truth为特定的图模式。(具体怎么用数学表示就不太理解了)该任务为基于拓扑学的预测任务。

参考文献

[1] Ying R , Bourgeois D , You J , et al. GNNExplainer: Generating Explanations for Graph Neural Networks[J]. Advances in neural information processing systems, 2019, 32:9240-9251.

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值