输入单元重要性归因,即计算输入中各个单元的重要性(Importance)。重要性能够反映该输入单元对于神经网络的影响大小,重要性越高,表明影响越大。为输入单元的重要性进行量化和分析,能够帮助人们理解是哪些输入变量促使神经网络得到了当前的结果,从而对神经网络的特征建模有一个初步的认识。
在某些研究中,人们会使用归因值(Attribution)或显著性(Saliency)描述某个输入单元对神经网络的影响,而重要性、归因值和显著性的含义非常相似。因此在下面的讨论中将统一采用重要性这一说法。
Shapley Value是联盟博弈论(cooperative game theory)的一种方法,是一种根据 玩家(特征) 对 总支出(预测) 的贡献 来给玩家分配总支出的方法。玩家在联盟中进行合作,并从合作中获得一定的收益。
Shapley Value 是对所有可能联盟(coalition) 的 所有边际贡献的 平均值。可以这样来直观理解Shapley Value:特征值以随机顺序进入房间,房间中的所有特征值都参与游戏(相当于有助于预测)。特征值的 Shapley值是当该特征值加入它们时,已经存在于房间中的联盟所收到的预测值的平均变化。
例如:三个玩家合作完成一个项目(制作500个零件)。
每个玩家可以独立制作的零件数量:v({1})=100,v({2})=125,v({3})=50;
如果合作:v({1,2})=270,v({1,3})=375,v({2,1})=270,v({2,3})=350,v({3,1})=375,v({3,2})=350,v({1,2,3})=500
则在{1,2}的合作中,玩家2的边际贡献=v({1,2})-v({1})=270-100=175
在{1,2,3}的合作中,玩家3的边际贡献=v({1,2,3})-v({1,2})=500-270=230
概率 玩家加入顺序 玩家1的边际贡献 玩家2的边际贡献 玩家3的边际贡献 1 6 \frac{1}{6} 61 1,2,3 100 170 230 1 6 \frac{1}{6} 61 1,3,2 100 125 275 1 6 \frac{1}{6} 61 2,1,3 145 125 230 1 6 \frac{1}{6} 61 2,3,1 150 125 225 1 6 \frac{1}{6} 61 3,1,2 325 125 50 1 6 \frac{1}{6} 61 3,2,1 150 300 50 那么,每个玩家的Shapley Value为:
玩家 Shapley Value 1 1 6 ( 100 + 100 + 145 + 150 + 325 + 150 ) = 970 6 \frac{1}{6}(100+100+145+150+325+150)=\frac{970}{6} 61(100+100+145+150+325+150)=6970 2 1 6 ( 170 + 125 + 125 + 125 + 125 + 300 ) = 970 6 \frac{1}{6}(170+125+125+125+125+300)=\frac{970}{6} 61(170+125+125+125+125+300)=6970 3 1 6 ( 230 + 275 + 230 + 225 + 50 + 50 ) = 1060 6 \frac{1}{6}(230+275+230+225+50+50)=\frac{1060}{6} 61(230+275+230+225+50+50)=61060 因此,按照比例来分奖金的话,玩家1分配的奖金为总奖金的32.3%,玩家2分配的奖金为总奖金的32.3%,玩家3分配的奖金为总奖金的35.3% 。
那么在机器学习中,我们怎么控制某一个玩家(特征) 有没有 参与游戏呢?
如果某个玩家不参与游戏的话,我们就给这个特征一个随机值,这个随机值来自 训练数据集中特征的分布。被赋予随机值的特征是没有预测能力的,这样的话我们就认为该特征没有参与游戏(预测)。
Shapley Value 存在的缺陷:
考虑到Shapley Value的计算需要非常高的计算复杂度,2017年,Lundberg与Lee提出了Shapley可加性解释(SHapley Additive exPlanations, SHAP)算法 [ 2 ] ^{[2]} [2],对输入单元的Shapley Value进行高效近似,目标是通过计算每个特征对预测的贡献来解释实例 x x x的预测。将模型的预测值解释为二元变量的线性函数:
g ( z ′ ) = ϕ 0 + ∑ i = 1 M ϕ i z i ′ g(z') = \phi_0 + \sum\limits^M_{i=1}\phi_iz'_i g(z′)=ϕ0+i=1∑Mϕizi′其中, g g g是解释模型; z ′ ∈ { 0 , 1 } M z'\in\{0,1\}^M z′∈{0,1}M 是联盟向量(也称“简化特征”,1-present, 0-obsent); M M M是最大联盟的大小; ϕ i ∈ R \phi_i \in R ϕi∈R是特征 i i i的特征归因Shapley值。
SHAP描述了以下三个理想的性质:
- 局部准确度(Local Accuracy):特征归因的总和等于要解释的模型的输出。即 f ^ ( x ) = g ( x ′ ) = ϕ 0 + ∑ i = 1 M ϕ i x i ′ \widehat{f}(x) = g(x') = \phi_0 + \sum\limits^M_{i=1}\phi_ix'_i f (x)=g(x′)=ϕ0+i=1∑Mϕixi′
- 缺失性(Missingness):要解释的实例的所有特征值 x i ′ x'_i xi′均应为“1”,如果为“0”则表示要解释的实例缺少这个特征值。
- 一致性(Consistency):如果模型发生变化使得特征值的边际贡献增加或保持不变(不考虑其他特征),则Shapley值也会相应地增加或保持不变。
计算重要性:
KernelSHAP为一个实例 x x x估算每个特征值对预测的贡献。
回想一下SHAP:SHAP 将解释定义为: g ( z ′ ) = ϕ 0 + ∑ j = 1 M ϕ j z j ′ = f ^ ( z ) g(z') = \phi_0 + \sum\limits^M_{j=1} \phi_j z'_j = \widehat{f}(z) g(z′)=ϕ0+j=1∑Mϕjzj′=f (z) ,即SHAP想要训练一个回归模型来在局部拟合要解释的模型输出。(等等,这不是LIME模型要做的事吗?!)在这里我们想要看到每个特征对应的Shapley值(每个特征对预测的贡献),即 ϕ j \phi_j ϕj 。
KernelSHAP 与 LIME 最大的不同就在于 回归模型中实例的权重。
LIME 根据实例与原始实例的接近程度对其进行加权;
SHAP 根据联盟在 Shapley值估计中 获得的权重 对采样实例进行加权。
为了达到 Shapley标准 的加权,Lundberg 等提出了 SHAP核:( π x ( z ′ ) \pi_x(z') πx(z′) 即表示 实例 z ′ z' z′ 对应的权重)
π x ( z ′ ) = ( M − 1 ) ( M ∣ z ′ ∣ ) ∣ z ′ ∣ ( M − ∣ z ′ ∣ ) \pi_x(z') = \frac{(M-1)}{(\begin{matrix}M\\|z'|\\ \end{matrix})|z'|(M - |z'|)} πx(z′)=(M∣z′∣)∣z′∣(M−∣z′∣)(M−1)其中, M M M是最大联盟大小; ∣ z ′ ∣ |z'| ∣z′∣ 是实例 z ′ z' z′ 中当前特征的数量。
KernelSHAP 的计算主要包含以下5个步骤: [ 10 ] ^{[10]} [10]
DeepSHAP 使用 DeepLIFT方法来估算每个特征对应的 Shapley Value。
LIME [ 9 ] ^{[9]} [9]全称是:Local Interpretable Model-agnostic Explanations,局部代理模型(即 专注于训练局部代理模型以解释单个预测)。local - 局部(样本空间的局部),model-agnostic - 与模型无关。
这种方法把原始模型看作一个黑盒子,可以在其中输入数据点并获得模型的预测。可以随时探测黑盒,LIME模型的目标是 了解该黑盒模型为何做出特定的预测。
LIME生成一个新的数据集,然后在这个新的数据集上,LIME训练了一个 可解释的模型(例如,线性模型、决策树 等),该模型根据新样本 与 目标实例 的接近度(可以理解为是距离)(Proximity) 进行加权。所学习的模型应该是 机器学习模型 局部预测 的良好近似,但不一定是良好的全局近似。
e x p l a n a t i o n ( x ) = a r g m i n g ∈ G L ( f ^ , g , π x ) + Ω ( g ) explanation(x) = argmin_{g \in G} L(\widehat{f}, g, \pi_x) + \Omega(g) explanation(x)=argming∈GL(f ,g,πx)+Ω(g)
式中, g g g 是对 x x x 的解释模型, f ^ \widehat f f 表示原始模型,最小化损失 L L L 测量了 解释模型 g g g 与 原始模型 f ^ \widehat f f 的预测的接近程度,接近度 π x \pi_x πx 定义了 考虑解释时 实例 x x x 附近的邻域大小,模型复杂度 Ω ( g ) \Omega(g) Ω(g) 保持较低水平(例如:对于决策树, Ω ( g ) \Omega(g) Ω(g) 可能是树的深度)。在实际运算过程中,LIME 仅优化损失部分,用户必须确定复杂度。
左边是一个用来解决分类问题的复杂模型,针对某一个样本,我们想知道是哪些因子影响了该样本的分类。
我们把这个局部区域取出来,用一个线性模型来拟合决策边界。我们是怎么做的呢?
通过上面的介绍我们知道LIME训练了一个可解释模型(线性模型、决策树等),该模型是 针对目标实例 与原机器学习模型的局部良好近似。训练得到的可解释模型为每个输入单元分配的权重,即为这些输入单元的重要性。
在可解释性方法中,有一大类方法基于反向传播,计算各个输入单元的梯度,并且将梯度作为该输入单元的重要性。如下图所示,基于反向传播的可解释性方法会为神经网络中的卷积层、池化层、非线性激活层等每层设计反向传播的规则,使得其在反向传播的过程中,能够更为公平合理地分配重要性的数值,最终为各个输入单元求得的梯度值能够很好地反映这一输入单元的重要程度。
这里我们需要理解 反卷积(deconvnet) 、反向传播(backpropagation) 和 导向反向传播(guided backpropagation) 三个概念。
在Visualizing and Understanding Convolutional Networks这篇论文中,反卷积(deconvnet)被用来对CNN的中间层进行可视化。一般的卷积神经网络的基本构成块是卷积层 + ReLU激活函数 + 最大池化
,deconvnet就是执行这三个过程的逆向操作,即反最大池化 + 反ReLU + 反卷积操作
。详见这篇文章。
参考文章1
参考文章2
在导向反向传播(Guided-Backpropagation, GBP)算法 [ 5 ] ^{[5]} [5] 中,除ReLU层之外的其他层,包括卷积层、池化层等,在反向传播时都会采用传统的反向传播计算规则。而对于ReLU层,GBP算法会将小于0的梯度值置为0,然后再继续进行梯度的传播,并将最终每个输入样本得到的梯度作为其重要性的解释结果。
GBP算法相当于对普通的反向传播加了指导,限制了小于0的梯度的回传,而梯度小于0的部分对应了原图中削弱了我们想要可视化的特征的部分,这些部分正是我们不想要的。
基于反向传播来计算梯度的可解释性方法很直观,可以利用为各个输入单元求得的梯度值来表征这一输入单元的重要程度。但是该方法存在的局限性在于Gradient Saturation(梯度饱和)问题,即加入某个因素对图片的预测起到了推进作用,但是这个作用是有限的,超过了一定程度后就不再增加预测的几率了,此时在超过这个程度之后的地段会出现梯度为0的情况。 梯度为0时就揭示不出什么有效信息了。如下图:
针对 Gradient-based 方法存在的缺陷,2017年 Sundararajan等人提出了积分梯度(IntegralGradient, IG)算法 [ 8 ] ^{[8]} [8]。该方法对各输入变量的梯度值进行积分,以此来表征输入变量的重要程度。即:
逐层相关性传播(Layer-wise Relevance Propagation, LRP)算法假设神经网络各层的神经元与神经网络的输出之间存在一定的相关性(Relevance),相关性越大的神经元对于神经网络的输出影响越大,重要性也就越高。
还没完全看明白,感觉有点像LSTM的门控机制,选择性的保留上一层神经元的内容。
参考:
[1] 可解释人工智能导论
[2] Lundberg S M, Lee S I. A unified approach to interpreting model predictions[J]. Advances in neural information processing systems, 2017, 30.
[3] Fernando Z T, Singh J, Anand A. A study on the Interpretability of Neural Retrieval Models using DeepSHAP[C]//Proceedings of the 42nd International ACM SIGIR Conference on Research and Development in Information Retrieval. 2019: 1005-1008.
[4] Shrikumar A, Greenside P, Kundaje A. Learning important features through propagating activation differences[C]//International conference on machine learning. PMLR, 2017: 3145-3153.
[5] Springenberg J T, Dosovitskiy A, Brox T, et al. Striving for simplicity: The all convolutional net[J]. arXiv preprint arXiv:1412.6806, 2014.
[6] “直观理解”卷积神经网络(二):导向反向传播(Guided-Backpropagation)
[7] 直观理解深度学习中的反卷积、导向反向传播
[8] Sundararajan M, Taly A, Yan Q. Axiomatic attribution for deep networks[C]//International conference on machine learning. PMLR, 2017: 3319-3328.
[9] Ribeiro M T, Singh S, Guestrin C. " Why should i trust you?" Explaining the predictions of any classifier[C]//Proceedings of the 22nd ACM SIGKDD international conference on knowledge discovery and data mining. 2016: 1135-1144.
[10] KernelSHAP & TreeSHAP