相关博客
【自然语言处理】【可解释性】NKB:用于预训练Transformers的神经知识银行
【自然语言处理】【可解释性】自注意力归因:解释Transformer内部的信息交互
【深度学习】【积分梯度】深度网络的公理归因(Axiomatic Attribution for Deep Networks)
【自然语言处理】【可解释性】Perturbed Masking:分析和解释BERT的无参数探针
【机器学习】【可解释性】LIME
【自然语言处理】【聚类】TELL:可解释神经聚类
【自然语言处理】【Prompt】语言模型即知识库(Language Models as Knowledge Bases)
【自然语言处理】【Prompt】P-tuning

  1. 本文研究的问题是,将深度网络的预测结果归因到输入的特征中。
  2. 本文确定了两条归因的基本公理: Sensitivity Implementation Invariance ,并基于这两个公理设计了一种新的归因方法,称为积分梯度法(Integrated Gradients)。
  3. 该论文之前的许多归因方法并不完全满足这两条公理。
  4. 积分梯度法(Integrated Gradients)使用起来很简单,不需要修改原始模型的结构。
  5. 论文在图像、文本等模型上进行了实验,证明了积分梯度法在debug神经网络并从网络中提取规则的能力。

二、归因的定义及意义

1. 人类怎么做归因

人类做归因通常是依赖于反事实直觉。当人类将某些责任归因到一个原因上,隐含地会将缺失该原因的情况作为比较的基线(baseline)。例如,想睡觉的原因是困了,那么不困的时候就不想睡觉。

2. 深度网络的归因

基于人类归因的原理,深度网络归因也需要一个基线(baseline)输入来模拟原因缺失的情况。在许多深度网络中,输入空间天然存在着一个baseline。例如,在目标识别网络中,纯黑图像就是一个基线。下面给出深度网络归因的正式定义:

定义 1 :假设存在一个函数 F ( x ) 的贡献。

3. 归因的意义

首先,在使用图像神经网络预测病情的场景中,归因能够帮助医生了解是哪部分导致模型认为该患者生病了;其次,可以利用深度网络归因来为基于规则的系统提供洞见;最后,还可以利用归因来为推荐结构提供依据。

三、两个基于公理

1. 公理:Sensitivity(a)

定义 :如果对于所有仅在一个特征上具有不同取值的输入(input)和基线(baseline),并且模型为两者给出了不同的预测。那么,那个不同取值的特征应该被赋予一个非0归因。若一个归因方法满足上面的要求,则称该归因方法满足 Sensitivity(a)

1.1 直接使用梯度(gradients)是一个好的归因方法吗?

在线性模型中,如果要debug预测结果,模型开发人员仅需要检测模型系数和输入特征的乘积即可。对于深度网络来说,梯度可以看做是线性模型系数的类似物。因此,看起来将梯度和输入特征的乘积作为归因方法的起点是一个合理的选择。 但是,梯度违反了Sensitivity。

举例来说,一个单变量 x = 2 处为0。因此,这个例子中梯度违反了 Sensitivity

直觉上解释上面问题的原因就是,预测函数可能在输入处是平坦的,那么不论其与基线有多大的差异,其梯度均为0,这也导致缺乏敏感性。

1.2 一些基于反向传播的其他方法

方法 DeConvNets Guided back-propagation 违反了 Sensitivity(a)

DeepLift LRP(Layer-wise relevance propagation) 则使用基线来解决 Sensitivity 问题,其使用某种意义上的“离散梯度”来代替原始的连续梯度,并通过一个大的、离散的step来避免平坦的区域,从而避免破坏 Sensitivity 。但是, DeepLift LRP 违反了 Implementation Invariance (下一个公理)。

2. 公理:Implementation Invariance

functionally equivalent :如果两个网络对所有的输入均有相同的输出,则称这两个网络functionally equivalent(即忽略了网络的实现)。

Implementation Invariance :一个归因方法对于两个functionally equivalent网络的归因总是一致的,那么称该归因方法满足 Implementation Invariance

2.1 梯度满足Implementation Invariance

梯度的链式法则 \frac{\partial f}{\partial g}=\frac{\partial f}{\partial h}\cdot\frac{\partial h}{\partial g} g f = h f g h 本质上是满足Implementation Invariance。将

2.2 离散梯度不满足Implementation Invariance

DeepLift LRP 使用离散梯度来替代梯度,并使用改进的反向传播来计算归因中的离散梯度。但是,离散梯度通常不满足链式法则,因此这些方法不满足 Implementation Invariance

四、方法:积分梯度法(Integrated Gradients)

1. 积分梯度法

\text{IntegratedGrad}_i(x)::=(x_i-x_i')\times \int_{\alpha=0}^{1}\frac{\partial F(x'+\alpha\times(x-x'))}{\partial x_i}d\alpha IntegratedGrad i ( x ) ::= ( x i x i ) × α = 0 1 x i F ( x + α × ( x x )) d α
其中, F ( x ) F ( x ) = 0

积分梯度法是基于网络所表示的函数定义的,而不是具体的网络结构,因此其满足 Implementation Invariance

五、积分梯度法的唯一性

下面通过两步来证明积分梯度法的唯一性。首先,定义了一种称为路径方法(Path Methods)的归因方法,其是积分梯度法的推广,并证明路径方法(Path Methods)是唯一满足既定公理的方法;其次,我们讨论为什么积分梯度法是各种路径方法中的最优选择。

1. 路径方法(Path Methods)

积分梯度法是沿着基线(baseline input)和输入(input)间的直线对梯度进行累计。但是,在这两点间存在着许多的路径,每种路径则对应着不同的归因方法。例如,在输入为2维的例子中,图1中的三条路径分别对应不同的归因方法。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KeidjYUq-1613993740419)(图\深度学习\path_methods.png)]

1.1 定义
\text{PathIntegratedGrad}_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 PathIntegratedGrad i γ ( x ) ::= α = 0 1 γ i ( α ) F ( γ ( α )) α γ i ( α ) d α
其中,

(1) 路径方法满足公理Implementation Invariance

路径方法满足Implementation Invariance,原因同积分梯度法一致。即路径方法是基于网络所表示函数的梯度进行归因,与网络的实现无关。

(2) 路径方法满足公理Completeness
i = 1 n PathIntegratedGrad i γ ( x ) = F ( x ) F ( x )
(3) 路径方法满足公理Sensitivity(b)

公理Sensitivity(b)指的是,由网络实现的函数如果不依赖某些变量,那么这些变量上的归因为0。

基于梯度的方法均满足这个公理,路径方法同样也满足。

(4) 路径方法满足公理Linearity

公理Linearity指的是,如果使用两个深度网络建模的函数 b 进行加权求和。由于路径方法满足Completeness,那么显然满足Linearity。

路径方法(Path Methods)是仅有的始终满足Implementation Invariance、Sensitivity(b)、Linearity和Completeness的方法。 (Paths and consistency in additive cost sharing. Friedman 2004)

本部分解决了积分梯度法为什么是一个最优的选择。首先,其在数学上的定义最简单;其次,该方法满足对称保存。

2.1 对称保持

(1) 如果交换两个输入变量不改变函数的值,那么称 输入变量关于该函数对称 。举例来说,如果对于所有的 F 对称。

(2) 如果输入中的对称变量具有相同的值,并且基线(baseline)在对称变量上也具有相同的值,如果输入中对称变量的归因相同,那么就称这样的归因方法是满足对称保持的。

(3) 举例来说,存在一个逻辑回归模型

积分梯度法是路径方法中唯一满足对称保持的方法。 (证明见原始论文附录A)

如果允许对多条路径的归因进行平均,那么也存在一些其他的方法满足对称保持。但是,多条路径平均的方法在计算成本上太高,不太适合深度网络。

六、应用积分梯度法

1.选择基线

1.1 应用积分梯度法的关键步骤是选择一个好的基线,基线在模型中的得分最好接近0,这样有助于对归因结果的解释。

1.2 基线必须代表一个完全没有信息的样本,这样才能区别出原因是来自输入还是基线。

1.3 在图像任务中可以选择全黑图像,或者由噪音组成的图像。在文本任务中,使用全0的embedding是一个较好的选择。

1.4 图像中的全黑图像也代表着一种有意义的输入,但是文本中的全0向量完全没有任何有效的意义。

2.计算积分梯度

积分梯度可以通过求和来高效地做近似计算,只需要将基线 \text{IntegratedGrad}_i^{approx}(x)::=(x_i-x'_i)\times \sum_{k=1}^m\frac{\partial F(x'+\frac{k}{m}\times (x-x'))}{\partial x_i}\times \frac{1}{m} IntegratedGrad i a pp ro x ( x ) ::= ( x i x i ) × k = 1 m x i F ( x + m k × ( x x )) × m 1
其中, 深度网络的公理归因Axiomatic Attribution for Deep Networks一、简介本文研究的问题是,将深度网络的预测结果归因到输入的特征中。本文确定了两条归因的基本公理:Sensitivity和Implementation Invariance,并基于这两个公理设计了一种新的归因方法,称为积分梯度法(Integrated Gradients)。该论文之前的许多归因方法并不完全满足这两条公理。积分梯度法(Integrated Gradients)使用起来很简单,不需要修改原

积分 梯度 是一种 神经网络 解释性 方法 此方法首先在论文《Gradients of Counterfactuals》中提出,后来 《 Axio mat ic Attribut ion for Deep Networks 》再次介绍了它,这已经是2016~2017年间的工作了 此方法已得到较多应用,但是也有一些反对者表示其给出的结果对于 积分 路径敏感,不能给出唯一确切的结果,因此存在争议 1. 可 解释性 事实上,很多论文中对于可 解释性 的定义都不太一样,或者直接对避而不谈,这导致可 解释性 成为一个大而模糊的领域。一般概.
论文—— Axio mat ic Attribut ion for Deep Networks 1. 介绍 Axio mat ic Attribut ion for Deep Networks , IC ML 2017 1. 介绍 这是一篇关于模型可 解释性 的论文,研究了将深层 网络 的预测 归因 于其输入特征的问题, 简单的说就是通过研究输入与输出的关系,去理解模型的输入-输出行为。 We study the problem of attribut ing the pre-d ic t ion of a deep network to
Axio mat ic Attribut ion for Deep Networks , IC ML 2017 研究了将深层 网络 的预测 归因 于其输入特征的问题, 简单的说就是通过研究输入与输出的关系,去理解模型的输入-输出行为。 并定义 归因 应该满足的2个基本 公理 ,敏感性和实现不变性 作者发现其他关于特征 归因 方法的文献中,对于2条 公理 ,至少有一条是不满足的。 这些文献包括 Deep Lift (Shrikumar et al., 2016; 2017), Layer-wise relevance propagat ion (
θt+1=θt−αt∇f(θt)(1) \theta _{t+1}=\theta _t-\alpha _t\nabla f\left( \theta _t \right) \tag{1} θt+1​=θt​−αt​∇f(θt​)(1) Example Funct ion : J(θ1,θ2)=θ12+θ12(2) J\left( \theta _1,\theta _2 \right) =\theta _{1}^{2}+\theta _{1}^{2}\tag{2}
Axio mat ic Solut ion s推出1.3.8版 Axio mat ic 多平台C(AMPC)。AMPC是一种可产生Java Bytecode的C语言编译器,相应的可执行文件可在任意Java虚拟机(JVM)上运行。AMPC包括一个图形用户接口,可用作集成开发环境,能加速软件开发。      AMPC便于程序员使用C语言开发新程序,可在JVM上运行。AMPC还可将C语言编写的程序移植到任何支持JVM的设备上运行,而与平台无关。这样有助于用户改造现有程序,迅速开发新应用程序。      目前市场上大多数程序均是用C编写的,因此将JVM与C语言结合起来将会迅速获得业界支持,既可用于台式机,也可用于嵌入
Semant ic s will have an important role to play in the future development of software systems and domain specif ic languages, and there is a real need for an introductory book that presents the fundamental ideas behind these approaches; stresses their relat ion ship by formulating and proving the relevant theorems; and illustrates the appl ic at ion s of semant ic s in computer science. Written out a tradit ion that places special emphasis on operat ion al semant ic s, denotat ion al semant ic s and axio mat ic semant ic s, this book investigates the relat ion ship between the various methods and describes some of the main ideas used, illustrating these via interesting appl ic at ion s. Histor ic ally important appl ic at ion areas are used together with some exciting potential appl ic at ion s including: Validating prototype implementat ion s of programming languages Verifying program analyses that are part of more advanced implementat ion s of programming languages Verifying security analyses Verifying useful program properties including infor mat ion about execut ion time. This is an introductory text that should serve as an appetizer to the whole area of semant ic s with appl ic at ion s.
一个用于使用路径 归因 方法解释 深度 神经网络 中的特征重要性和特征交互作用的存储库。 该存储库包含使用“和“解释和解释机器学习模型的工具。 此外,它包含用于解释使用Integrated Hessians和Expected Hessians在深层 网络 中进行交互的代码-我们在最新论文中介绍的方法:“解释说明:深层 网络 公理 特征交互”( )。 如果您使用我们的工作来解释您的 网络 ,请引用本文。 @misc{janizek2020explaining, title={Explaining Explanat ion s: Axio mat ic Feature Interact ion s for Deep Networks }, author={Joseph D. Janizek and Pascal Sturmfels and Su-In Lee}, year={2020},
深度学习 中,特征的归一化起到至关重要的作用,甚至比本身所提出的方法更重要。比如相关滤波(Correlat ion Filters)的输出结果,协方差矩阵等,若不经过合适的归一化方法,其作为特征表示的最终结果(Performance)将会很差。 下面介绍在 深度学习 中常用的特征归一化(Normalized Features)方法如下: 按照大类划分的话可大致分为如下两类: 1. Soft Nor...
【铁树开花】: 作者您好 我在使用你的代码时发生了报错 ,AttributeError: 'LlamaForCausalLM' object has no attribute 'transformer'[code=python]模型加载至设备cuda:0 Traceback (most recent call last): File "/home/suser/models/DeepSpeed-Inference.py", line 27, in <module> assert isinstance(ds_model.module.transformer.h[0], DeepSpeedTransformerInference) == True, "Model not sucessfully initalized" File "/home/suser/anaconda3/envs/ds/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1207, in __getattr__ raise AttributeError("'{}' object has no attribute '{}'".format( AttributeError: 'LlamaForCausalLM' object has no attribute 'transformer' [2023-08-31 16:54:01,659] [INFO] [launch.py:315:sigkill_handler] Killing subprocess 85133 [2023-08-31 16:54:01,659] [ERROR] [launch.py:321:sigkill_handler] ['/home/suser/anaconda3/envs/ds/bin/python', '-u', 'DeepSpeed-Inference.py', '--local_rank=0'] exits with return code = 1 [/code] 【Megatron-DeepSpeed】张量并行工具代码mpu详解(一):并行环境初始化 科皮子菊:

2. 积分梯度法满足对称保持(Integrated Gradients is Symmetry-Preserving)

5. 积分梯度法满足公理Implementation Invariance