GNNExplainer: Generating Explanationsfor Graph Neural Networks
最近需要研究代码漏洞相关的可解释性,而许多代码漏洞研究都用到了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},xi∈Rd
- 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(hil−1,hjl−1,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(mijl∣vj∈Nvi) - 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,hil−1)
- 结点 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)={xj∣vj∈Gc(vi)}
- P Φ ( Y ∣ G c , X c ) P_Φ(Y|G_c,X_c) PΦ(Y∣Gc,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={xj∣vj∈GS} 为最相关的结点特征
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) Gs⊆Gc(vi) 以及结点特征 X S = { x j ∣ v j ∈ G S } X_S= \{x_j | v_j \in G_S\} XS={xj∣vj∈GS}
这里通过优化子图 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(Y∣G=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 vj∈Gc(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(Y∣G=GS,X=XS)=−EY∣GS,XS[logPΦ(Y∣G=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(Y∣G=Gs,X=XsT)
包括2个步骤
-
学习特征选择器 T T T
X S T = X s ⊙ T X_S^T = X_s \odot T XST=Xs⊙T, 相当于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为特定的图模式。(具体怎么用数学表示就不太理解了)该任务为基于拓扑学的预测任务。