本文主要是介绍Axiomatic Attribution for Deep Networks (Integrated Gradients) 论文阅读笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Axiomatic Attribution for Deep Networks
会议:ICLR
时间:2017年
本文首先提出两个可解释性模型的基本公理(fundamental axioms),敏感性(Sensitivity)和实现不变性(Implementation Invariance)。之后提出一个全新的可解释性算法积分梯度(Integrated Gradients),能有效解决现有梯度的可解释方法仅对单个图像进行解释,存在梯度饱和的问题。
1. Motivation and Summary of Results
本文主要研究将深度网络的预测归因于其输入特征的问题,对归因的定义如下:
定义1:假设用公式 F : R n → [ 0 , 1 ] F: R^n \rarr [0, 1] F:Rn→[0,1]表示一个分类神经网络,且输入为 x = ( x 1 , … , x n ) ∈ R n x=(x_1,\ldots,x_n)\in\mathbb{R}^n x=(x1,…,xn)∈Rn。输入 x x x的预测相对于baseline输入 x ′ x' x′的归因可以用向量 A F ( x , x ′ ) = ( a 1 , … , a n ) ∈ R n A_F(x,x')=(a_1,\ldots,a_n)\in\mathbb{R}^n AF(x,x′)=(a1,…,an)∈Rn表示,其中 a i a_i ai表示维度 x i x_i xi对预测分数 F ( x ) F(x) F(x)的贡献度。
例如对于一个目标识别网络,归因方法可以告诉我们,模型在预测时对输入图像关注的部分。
然而基于归因方法的一个重要难题是其难以通过实验来评估。例如,我们很难将模型的错误与归因方法的错误区分开来,也就是我们不知道到底是模型的问题还是归因算法的问题,产生最后得到的结果。因此本文采用了一种公理化方法,根据一些基本原则来构建新的归因方法,以弥补以前方法的不足。这种方法有助于确保新的归因方法更符合理论要求。
而在后面章节也会对该可解释模型的实际应用进行讨论。
基线值问题:当我们想要将一件事的产生归因于哪些原因时,通常会生成一个基线值作为参考标准。比如一个我们看到桌子上有一个水杯(存在),那么没有水杯的桌子就是一个作为参考的基线值(不存在)。这也是为什么DeepLIFT等可解释模型要引入基线值的想法。其实我的理解还是需要考虑某个过程,因为当仅参考某单个样本(比如传统基于某张图象进行泰勒展开的梯度方式)时,归因的结果往往会受限于当前时刻的特性。
2. Two Fundamental Axioms
这里讨论两个基于归因方法的公理。这里将讨论一些主流基于归因的方法包括DeepLIFT,LRP,Deconv-net,Guided Back-propagation等。
2.1 Axiom:Sensitivity(a)
首先介绍公理敏感性,定义如下:如果对于每个输入和baseline在一个特征上的值不同并且预测的结果也不同,那么该特征对应的归因值就不应该为0。也就是一个输入特征发生变化进而引起结果发生改变,那么这个特征就应该有归因值。(实际上就是梯度饱和问题)
而基于梯度的方法违反了这一公理。假设有一个变量和一个带有ReLU的模型: f ( x ) = 1 − R e L U ( 1 − x ) f(x) = 1 - ReLU(1-x) f(x)=1−ReLU(1−x)。假设baseline为 x = 0 x=0 x=0,输入 x = 2 x=2 x=2。此时模型结果从0变为1,但因为模型 f f f在 x = 1 x=1 x=1处变得平坦,其梯度为0。根据基于梯度的方法,此部分的归因结果为0,因此违反了敏感性。这里主要的原因还是模型梯度饱和引起的。
这里引用[1]博客中的内容进一步解释一下:
敏感性准则要求归因技术在模型函数上梯度处处存在,本质上由于模型函数往往是一个非线性函数不可避免的存在梯度饱和的区域,当处于梯度饱和阶段时有效特征往往被无效归因,为此才要求梯度处处存在。比如在一个动物分类系统中,模型对大象进行学习时可能会以大象的鼻子作为判别依据(因为大象相对于其他种类的动物,鼻子格外的长),对一张大象图像进行识别的时候,在图像中大象的鼻子在初期相较于大象身高比值为0.2的时候,系统对该类别的置信度随着比值的增长逐渐提高(梯度存在),但鼻子到达足够长的时候(可能是0.5比例)系统对大象类别的置信度随比值增长而不再显著提高甚至停滞(梯度饱和),此时利用直接梯度的归因技术得到的结果在鼻子这个特征上将是不显著的,但是我们知道事实并非如此。因此,敏感性公理就是要求归因技术在面对梯度饱和的时候能够在辨识性特征上保留有效梯度,以致于合理归因。
**其他基于反向传播的方法。**此外,另一些方法通过反向传播的方式或通过贡献度分配,对图像进行归因,如DeepLIFT,LRP,Deconv-net,Guided Back-propagation。但Deconv-net,Guided Back-propagation算法违反了敏感性公理,因为仅当 ReLU 在输入处打开时,这些方法才会通过 ReLU 节点进行反向传播。这里举一个简单的例子,假设存在如下的一个网络:
首先我们固定输入 x 1 x_1 x1为一个大于1的值。之后改变 x 2 x_2 x2的值,可以发现输出结果随着 x 2 x_2 x2从0增加到 x 1 x_1 x1-1而逐渐减小,根据敏感性定理, x 2 x_2 x2应该被分配一个归因值。但根据back-propagated算法, x 2 x_2 x2的梯度在 R e L U ( z 1 − 1 − z 2 ) ReLU(z_1 - 1 - z_2) ReLU(z1−1−z2)中为一个负值(因为 z 2 z_2 z2前面是负号),因此无法通过 R e L U ( x 2 ) ReLU(x_2) ReLU(x2)(在back-propagated算法中会过通过一个ReLU滤掉负值),进而证明Deconv-net,Guided Back-propagation算法违反了敏感性公理。
而DeepLIFT和LRP算法通过baseline的方法解决敏感度问题,并且在某种意义上通过计算”离散梯度“代替连续梯度作为输入,而两个方法最主要的区别就在于如何计算离散梯度。
下面是对离散梯度的理解:"离散梯度"指的是相对于输入的分段(或间断的)梯度。通常,神经网络中使用的梯度是瞬时梯度,它表示对输入微小变化的响应,即在输入的连续范围内微小变化的情况下的梯度。我的理解DeepLIFT就是通过计算输入于baseline之间的差距,计算贡献度,而LRP中虽然没有明说,但其也算是针对全0的baseline计算差距。
这种方式的优势我们以一个带有sigmoid的神经元为例:当x值特别大的时候,神经元的输出接近于1,此时的梯度近似为0。也就表明虽然该输入x对此神经元有最大的激活(也就是有用的),但其计算的归因为0。而如LRP中,当我们直接考虑根据神经元的输出值计算分配贡献度,就不会受到梯度为0的影响,因此归因的值也不会是0。
2.2 Axiom:Implementation Invariance
实现不变性的定义如下:如果两个网络对于所有的输入均有相同的输出,那么即使他们的实现方式不同,但这两个网络在功能上是等价的。归因方法应满足特征不变性,即在等价的网络上具有相同归因。(实际上就是不满足链式法则,同一结果有不同的模型对应)
这里接着借用[1]中提到的例子加深对特征不变性的理解:
当 F 1 F_1 F1和 F 2 F_2 F2的内部实现不一致但满足 F 1 ( x ) = F 2 ( x ) F_1(x) = F_2(x) F1(x)=F2(x)时,称为这两个函数是功能等效的,此时若针对一个相同的输出值对这两个函数进行归因分析理应得到相同的归因结果,就称这个归因技术是满足实现不变性的。
然而DeepLIFT和LRP却违反了特征不变性,例子如下:
上图表示两个不同的模型 f f f和 g g g,能输出相同的结果,但其计算的归因结果却完全不同。
而基于梯度的方法在实现上是不变的,其主要是由于链式法则: ∂ f ∂ g = ∂ f ∂ h ⋅ ∂ h ∂ g \frac{\partial f}{\partial g}=\frac{\partial f}{\partial h}\cdot\frac{\partial h}{\partial g} ∂g∂f=∂h∂f⋅∂g∂h。比如 f f f对 g g g的梯度可以直接根据 ∂ f ∂ g \frac{\partial f}{\partial g} ∂g∂f或根据链式法则计算,而不需要考虑中间 h h h的实现细节。但对于反向传播进行修改的LRP和DeepLIFT算法将连续梯度替换为离散梯度,不满足链式法则。即: f ( x 1 ) − f ( x 0 ) g ( x 1 ) − g ( x 0 ) ≠ f ( x 1 ) − f ( x 0 ) h ( x 1 ) − h ( x 0 ) ⋅ h ( x 1 ) − h ( x 0 ) g ( x 1 ) − g ( x 0 ) \frac{f(x_1)-f(x_0)}{g(x_1)-g(x_0)}\neq\frac{f(x_1)-f(x_0)}{h(x_1)-h(x_0)}\cdot \frac{h(x_1)-h(x_0)}{g(x_1)-g(x_0)} g(x1)−g(x0)f(x1)−f(x0)=h(x1)−h(x0)f(x1)−f(x0)⋅g(x1)−g(x0)h(x1)−h(x0)。
至于为什么不相等,举个例子: f ( x ) = 2 x , g ( x ) = x 2 , h ( x ) = x 3 f(x) = 2x, g(x)=x^2, h(x)=x^3 f(x)=2x,g(x)=x2,h(x)=x3,当 x 0 = 1 , x 1 = 2 x_0 = 1, x_1 = 2 x0=1,x1=2时结果不同。
3. Our Method:Integrated Gradients
假设存在一个神经网络 F : R n → [ 0 , 1 ] F:R^n \rightarrow [0,1] F:Rn→[0,1]。令 x ∈ R n x \in R^n x∈Rn表示真实输入, x ′ ∈ R n x' \in R^n x′∈Rn表示基线输入,在图像模型中,其一般表示为全黑的输入。
这里考虑 R n R^n Rn中的一条从 x ′ x' x′到 x x x的直线路径(straightline path),并计算路径上每个点对应梯度。积分梯度定义为梯度沿从基线 x ′ x' x′到输入 x x x的直线路径的路径积分。
输入 x x x和基线 x ′ x' x′沿第 i i i维的积分梯度定义如下,其中 ∂ F ( x ) ∂ x i \frac{\partial F(x)}{\partial x_{i}} ∂xi∂F(x)表示 F ( x ) F(x) F(x)沿第 i i i维度的梯度。
IntegratedGrads i ( x ) : : = ( x i − x i ′ ) × ∫ α = 0 1 ∂ F ( x ′ + α × ( x − x ′ ) ) ∂ x i d α \text{IntegratedGrads}_i(x)::=(x_i-x_i^{\prime})\times\int_{\alpha=0}^1\frac{\partial F(x^{\prime}+\alpha\times(x-x^{\prime}))}{\partial x_i}d\alpha IntegratedGradsi(x)::=(xi−xi′)×∫α=01∂xi∂F(x′+α×(x−x′))dα
其主要思想就是,当我们仅输入一张图像并对其进行泰勒展开计算梯度,会受到梯度饱和问题的影响。而通过这种方法,我们通过α控制图像像素值,从小到大,这样对应的激活值也不会一开始就处于饱和状态。此时将不同位置的梯度累加,即使某些像素在最后饱和了,但积分过程中会存在一些比较大的梯度,因此还是能有效识别部分饱和位置的梯度。可以用Sigmoid类似的函数理解。
但注意一点,这里的公式在求偏导时候用的是 x i x_i xi而不是 x i ′ x'_i xi′,为什么可以这么写还没理解明白
此处,本文发现积分梯度满足一个全新的公理,**完备性Completeness,**即归因相加等于输入 x x x的结果 F F F与基线 x ′ x′ x′作为输入得到的结果之间的差值,如下所示:
命题1:如果 F : R n → R F:R^n \rightarrow R F:Rn→R几乎处处可微,则:
Σ i = 1 n IntegratedGrads i ( x ) = F ( x ) − F ( x ′ ) \Sigma_{i=1}^n\text{IntegratedGrads}_i(x)=F(x)-F(x^{\prime}) Σi=1nIntegratedGradsi(x)=F(x)−F(x′)
由于baseline的结果约等于0,因此可得 Σ i = 1 n IntegratedGrads i ( x ) = F ( x ) \Sigma_{i=1}^n\text{IntegratedGrads}_i(x)=F(x) Σi=1nIntegratedGradsi(x)=F(x),满足完备性。
下面将说明此算法为何满足第二节的公理:
**实现不变性:**由于本方法是基于梯度的方法,无需考虑中间实现过程,因此满足实现不变性。
**敏感性:**由于本方法满足完备性,而完备性是敏感性的更高实现,因此本方法必定满足敏感性。而完备性之所以是敏感性的更高实现,我的理解是如果一个像素的改变导致 F ( x ) F(x) F(x)改变,那么其对应的归因值也一定应该发生改变,否则公式 Σ i = 1 n IntegratedGrads i ( x ) = F ( x ) \Sigma_{i=1}^n\text{IntegratedGrads}_i(x)=F(x) Σi=1nIntegratedGradsi(x)=F(x)则不能成立。
综上,本文提出的方法能同时满足实现不变性和敏感性。
4. Uniqueness of Integrated Gradients
目前存在许多评估可解释模型可信度的方法。如在目标检测任务的背景下,通常会选择 k k k个解释分数最大的像素,改变这些像素的值后查看预测分数的下降程度。如果分数有较大下降则表示这 k k k个像素的解释是有意义的。但像素扰动产生的图像可能不自然,并且分数下降可能只是因为网络在训练中从未见过类似的情况。
另有一些方法通过人工构建目标box,并计算框内解释像素的百分比。然而在一些情况下,背景中的上下文也会对预测做出贡献。下图中的菜粉蝶图像就是一个很好的例子,其中叶子上的像素也通过积分梯度呈现出来。
但发现这些方法无法有效区分解释图像的差异是由哪种问题导致的:扰动数据引起的问题、模型不正常行为引起的问题,以及解释方法本身存在问题。
由于经验评估方法无法清晰区分这些问题的根本原因,研究者决定采用一种公理化的方法来设计一个好的解释方法,即依赖于一组公理或原则来构建解释方法。这种方法的设计基于数学公理,确保解释方法满足一些重要性质(如"敏感性"和"实现不变性"),从而提高解释方法的质量和可信度。研究者认为,通过采用公理化的方法,他们可以更清晰地定义什么样的解释方法被视为"好",并且能够确保所设计的解释方法满足一些基本原则。这种方法帮助他们提高了对解释方法性能的理论理解,从而更可靠地解决了问题。
下面包括一部分讨论梯度积分的合理性,但这里就不展开介绍了,该部分主要是丰富论文内容的,实际学习意义感觉并不大,这里只简单介绍以下路径积分梯度。
4.1 Path Methods
本文提出的积分梯度方法提出通过直线的路径计算输入与baseline的积分梯度。而实际上,在两点之间可以由很多不同的路径,而不同的路径构成了不同的归因方法。如下图所示:
下面对路径积分梯度给出一个标准公式,其中 γ = ( γ 1 , … , γ n ) : [ 0 , 1 ] → R n \gamma=(\gamma_1,\ldots,\gamma_n):[0,1]\to\mathbb{R}^n γ=(γ1,…,γn):[0,1]→Rn为 x ′ x' x′到 x x x的一条路径, γ ( 0 ) = x ′ \gamma(0)=x' γ(0)=x′, γ ( 1 ) = x \gamma(1)=x γ(1)=x。此路径函数 γ ( α ) \gamma(\alpha ) γ(α)的定义如下:
γ ( α ) = x ′ + α × ( x − x ′ ) , α ∈ [ 0 , 1 ] \gamma(\alpha)=x^{\prime}+\alpha\times(x-x^{\prime}),\alpha\in[0,1] γ(α)=x′+α×(x−x′),α∈[0,1]
其表示 α \alpha α下的输入图像 γ ( α ) \gamma(\alpha ) γ(α)。想要选择不同的路径,只需要设置不同的 α \alpha α即可。对于输入 x x x的第 i i i维特征,沿着路径梯度积分的定义如下:
P a t h I n t e g r a t e d G r a d s i γ ( x ) : : = ∫ α = 0 1 ∂ F ( γ ( α ) ) ∂ γ i ( α ) ∂ γ i ( α ) ∂ α d α \mathsf{PathIntegratedGrads}_i^\gamma(x)::=\int_{\alpha=0}^1\frac{\partial F(\gamma(\alpha))}{\partial\gamma_i(\alpha)}\frac{\partial\gamma_i(\alpha)}{\partial\alpha}d\alpha PathIntegratedGradsiγ(x)::=∫α=01∂γi(α)∂F(γ(α))∂α∂γi(α)dα
注意与梯度积分的差别,这里不是对 x i x_i xi求偏导,而是对输入图像 γ i ( α ) \gamma_i(\alpha ) γi(α)求偏导。理论上这里的解释更正确。
这里的重点是不同的路径构成了不同的归因方法,我们可以通过选择一些特殊的路径进行归因,以得到更准确的效果,但本文还是主要讨论使用直线作为路径的合理性。
5. Applying Integrated Gradients
5.1 Selecting a Benchmark
应用积分梯度的一个关键就是选择一个好的baseline,通常情况下我们希望选择的baseline的分数应尽可能为0(不包含任何信号),这样才能将归因结果仅归结于输入值。
在目标识别模型中,通常使用全黑的输入图像作为baseline。然而,一些全噪声合成图像同样可能输出值为0,可以作为baseline。但全黑图像得到的归因结果在视觉上具有清晰的边缘。而在自然语言处理中,通常使用全0的参考embedding vector。
5.2 Computing Integrated Gradients
在实际运算中,通常通过求和的方式逼近积分,公式如下:
IntegratedGrads i a p p r o x ( x ) : : = ( x i − x i ′ ) × Σ k = 1 m ∂ F ( x ′ + k m × ( x − x ′ ) ) ) ∂ x i × 1 m \text{IntegratedGrads}_i^{approx}(x)::=(x_i-x_i')\times\Sigma_{k=1}^m\frac{\partial F(x'+\frac km\times(x-x')))}{\partial x_i}\times\frac1m IntegratedGradsiapprox(x)::=(xi−xi′)×Σk=1m∂xi∂F(x′+mk×(x−x′)))×m1
其中m为积分的黎曼和近似的步值,在实际测试中,当选取20到300步值足以在5%的偏差内近似积分。
Reference
[1]. https://zhuanlan.zhihu.com/p/428131762
这篇关于Axiomatic Attribution for Deep Networks (Integrated Gradients) 论文阅读笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!