相关博客
【自然语言处理】【可解释性】NKB:用于预训练Transformers的神经知识银行
【自然语言处理】【可解释性】自注意力归因:解释Transformer内部的信息交互
【深度学习】【积分梯度】深度网络的公理归因(Axiomatic Attribution for Deep Networks)
【自然语言处理】【可解释性】Perturbed Masking:分析和解释BERT的无参数探针
【机器学习】【可解释性】LIME
【自然语言处理】【聚类】TELL:可解释神经聚类
【自然语言处理】【Prompt】语言模型即知识库(Language Models as Knowledge Bases)
【自然语言处理】【Prompt】P-tuning
一、简介
- 本文研究的问题是,将深度网络的预测结果归因到输入的特征中。
- 本文确定了两条归因的基本公理:Sensitivity和Implementation Invariance,并基于这两个公理设计了一种新的归因方法,称为积分梯度法(Integrated Gradients)。
- 该论文之前的许多归因方法并不完全满足这两条公理。
- 积分梯度法(Integrated Gradients)使用起来很简单,不需要修改原始模型的结构。
- 论文在图像、文本等模型上进行了实验,证明了积分梯度法在debug神经网络并从网络中提取规则的能力。
二、归因的定义及意义
1. 人类怎么做归因
人类做归因通常是依赖于反事实直觉。当人类将某些责任归因到一个原因上,隐含地会将缺失该原因的情况作为比较的基线(baseline)。例如,想睡觉的原因是困了,那么不困的时候就不想睡觉。
2. 深度网络的归因
基于人类归因的原理,深度网络归因也需要一个基线(baseline)输入来模拟原因缺失的情况。在许多深度网络中,输入空间天然存在着一个baseline。例如,在目标识别网络中,纯黑图像就是一个基线。下面给出深度网络归因的正式定义:
定义 1:假设存在一个函数 F : R n → [ 0 , 1 ] F:R^n\rightarrow [0,1] F:Rn→[0,1],其表示一个神经网络。该网络的输入是 x = ( x 1 , … , x n ) ∈ R n x=(x_1,\dots,x_n)\in R^n x=(x1,…,xn)∈Rn,那么 x x x相较于基线输入 x ′ ∈ R n x'\in R^n x′∈Rn的归因是一个向量 A F ( x , x ′ ) = ( a 1 , … , a n ) ∈ R n A_F(x,x')=(a_1,\dots,a_n)\in R^n AF(x,x′)=(a1,…,an)∈Rn,其中 a i a_i ai是输入 x i x_i xi对预测结果 F ( x ) F(x) F(x)的贡献。
3. 归因的意义
首先,在使用图像神经网络预测病情的场景中,归因能够帮助医生了解是哪部分导致模型认为该患者生病了;其次,可以利用深度网络归因来为基于规则的系统提供洞见;最后,还可以利用归因来为推荐结构提供依据。
三、两个基于公理
1. 公理:Sensitivity(a)
定义:如果对于所有仅在一个特征上具有不同取值的输入(input)和基线(baseline),并且模型为两者给出了不同的预测。那么,那个不同取值的特征应该被赋予一个非0归因。若一个归因方法满足上面的要求,则称该归因方法满足Sensitivity(a)。
1.1 直接使用梯度(gradients)是一个好的归因方法吗?
在线性模型中,如果要debug预测结果,模型开发人员仅需要检测模型系数和输入特征的乘积即可。对于深度网络来说,梯度可以看做是线性模型系数的类似物。因此,看起来将梯度和输入特征的乘积作为归因方法的起点是一个合理的选择。但是,梯度违反了Sensitivity。
举例来说,一个单变量
ReLU
\text{ReLU}
ReLU网络
f
(
x
)
=
1
−
R
e
L
U
(
1
−
x
)
=
{
x
,
x
<
1
1
,
x
≥
1
f(x)=1-ReLU(1-x)=\begin{cases} x, x<1 \\ 1, x\geq1 \end{cases}
f(x)=1−ReLU(1−x)={x,x<11,x≥1
假设基线(baseline)为
x
=
0
x=0
x=0并且输入
x
=
2
x=2
x=2,那么显然
f
(
0
)
=
0
,
f
(
2
)
=
1
f(0)=0,f(2)=1
f(0)=0,f(2)=1。现在来检测梯度是否违反了Sensitivity。
首先,输入 x = 2 x=2 x=2和基线 x = 0 x=0 x=0不同;其次,输入 f ( x = 2 ) = 1 f(x=2)=1 f(x=2)=1与基线 f ( x = 0 ) = 0 f(x=0)=0 f(x=0)=0也不同;不违反Sensitivity的归因方法应该为输入 x x x归因一个非0值,但是梯度在 x = 2 x=2 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
梯度的链式法则 ∂ 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本质上是满足Implementation Invariance。将 g g g看做是一个网络的输入, f f f是网络的输出, h h h是实现网络的细节,那么 f f f对 g g g的梯度可以直接通过 ∂ f ∂ g \frac{\partial f}{\partial g} ∂g∂f来计算,也可以通过包含 h h h的链式法则来实现。也就是说,最终的梯度结果并不依赖于中间的细节 h h h。
2.2 离散梯度不满足Implementation Invariance
DeepLift和LRP使用离散梯度来替代梯度,并使用改进的反向传播来计算归因中的离散梯度。但是,离散梯度通常不满足链式法则,因此这些方法不满足Implementation Invariance。
四、方法:积分梯度法(Integrated Gradients)
1. 积分梯度法
令函数
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表示基线输入。那么
x
x
x的第
i
i
i个分量的归因,可以看做是基线
x
′
x'
x′到输入
x
x
x的直线路径上所有梯度的累计。即分量
i
i
i的归因是
x
′
x'
x′到
x
x
x直线上的梯度路径积分,正式地定义为
IntegratedGrad
i
(
x
)
:
:
=
(
x
i
−
x
i
′
)
×
∫
α
=
0
1
∂
F
(
x
′
+
α
×
(
x
−
x
′
)
)
∂
x
i
d
α
\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
IntegratedGradi(x)::=(xi−xi′)×∫α=01∂xi∂F(x′+α×(x−x′))dα
其中,
∂
F
(
x
)
∂
x
i
\frac{\partial F(x)}{\partial x_i}
∂xi∂F(x)是
F
(
x
)
F(x)
F(x)在第
i
i
i维度的梯度。
2. 公理:Completeness
公理Completeness指的是所有的归因相加等于 F ( x ) − F ( x ′ ) F(x)-F(x') F(x)−F(x′)。
3. 积分梯度法满足Completeness
如果函数
F
:
R
n
→
R
F:R^n\rightarrow R
F:Rn→R几乎处处可微,那么有
∑
i
=
1
n
IntegratedGrad
i
(
x
)
=
F
(
x
)
−
F
(
x
′
)
\sum_{i=1}^n\text{IntegratedGrad}_i(x)=F(x)-F(x')
i=1∑nIntegratedGradi(x)=F(x)−F(x′)
对于许多深度网络来说,选择一个预测结果接近0的基线是有可能的(
F
(
x
′
)
≈
0
F(x')\approx 0
F(x′)≈0)。这样的话,解释归因结果时就可以忽略基线,仅将归因的结果分配到输入上(不考虑基线)。
4. 积分梯度法满足公理Sensitivity(a)
Sensitivity(a)指的是输入和基线仅在一个变量上不同并导致了预测结果不同,那么这个变量的归因为非0值。公理Completeness是Sensitivity(a)的强化,因此Completeness指明了这个变量的归因等于 F ( x ) − F ( x ′ ) ≠ 0 F(x)-F(x')\neq 0 F(x)−F(x′)=0。
5. 积分梯度法满足公理Implementation Invariance
积分梯度法是基于网络所表示的函数定义的,而不是具体的网络结构,因此其满足Implementation Invariance。
五、积分梯度法的唯一性
下面通过两步来证明积分梯度法的唯一性。首先,定义了一种称为路径方法(Path Methods)的归因方法,其是积分梯度法的推广,并证明路径方法(Path Methods)是唯一满足既定公理的方法;其次,我们讨论为什么积分梯度法是各种路径方法中的最优选择。
1. 路径方法(Path Methods)
积分梯度法是沿着基线(baseline input)和输入(input)间的直线对梯度进行累计。但是,在这两点间存在着许多的路径,每种路径则对应着不同的归因方法。例如,在输入为2维的例子中,图1中的三条路径分别对应不同的归因方法。
1.1 定义
令
γ
=
(
γ
1
,
…
,
γ
n
)
:
[
0
,
1
]
→
R
n
\gamma=(\gamma_1,\dots,\gamma_n):[0,1]\rightarrow R^n
γ=(γ1,…,γn):[0,1]→Rn是
R
n
R^n
Rn上从基线
x
′
x'
x′到输入
x
x
x的任意路径,其中
γ
(
0
)
=
x
′
\gamma(0)=x'
γ(0)=x′并且
γ
(
1
)
=
x
\gamma(1)=x
γ(1)=x。那么给定一个路径函数
γ
\gamma
γ,则路径方法(Path Methods)指的是,沿路径
γ
(
α
)
\gamma(\alpha)
γ(α)对梯度进行积分,其中
α
∈
[
0
,
1
]
\alpha\in[0,1]
α∈[0,1]。更加正式的来说,输入
x
x
x在第
i
i
i维的路径梯度积分(Path Integrated Gradients)为
PathIntegratedGrad
i
γ
(
x
)
:
:
=
∫
α
=
0
1
∂
F
(
γ
(
α
)
)
∂
γ
i
(
α
)
∂
γ
i
(
α
)
∂
α
d
α
\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
PathIntegratedGradiγ(x)::=∫α=01∂γi(α)∂F(γ(α))∂α∂γi(α)dα
其中,
∂
F
(
x
)
∂
x
i
\frac{\partial F(x)}{\partial x_i}
∂xi∂F(x)是函数
F
F
F在
x
x
x处沿维度
i
i
i的梯度。基于路径梯度积分的归因方法统称为路径方法(Path Methods)。
注意:积分梯度法(Integrated Gradients)是路径方法(Path Methods)沿直线方向的一个特例,即 γ ( α ) = x ′ + α × ( x − x ′ ) \gamma(\alpha)=x'+\alpha\times(x-x') γ(α)=x′+α×(x−x′),其中 α ∈ [ 0 , 1 ] \alpha\in[0,1] α∈[0,1]。
1.2 路径方法所满足的公理
(1) 路径方法满足公理Implementation Invariance
路径方法满足Implementation Invariance,原因同积分梯度法一致。即路径方法是基于网络所表示函数的梯度进行归因,与网络的实现无关。
(2) 路径方法满足公理Completeness
∑ i = 1 n PathIntegratedGrad i γ ( x ) = F ( x ) − F ( x ′ ) \sum_{i=1}^n\text{PathIntegratedGrad}_i^{\gamma}(x)=F(x)-F(x') i=1∑nPathIntegratedGradiγ(x)=F(x)−F(x′)
(3) 路径方法满足公理Sensitivity(b)公理Sensitivity(b)指的是,由网络实现的函数如果不依赖某些变量,那么这些变量上的归因为0。
基于梯度的方法均满足这个公理,路径方法同样也满足。
(4) 路径方法满足公理Linearity
公理Linearity指的是,如果使用两个深度网络建模的函数 f 1 f_1 f1和 f 2 f_2 f2线性合并为第三个网络所表示的函数 a × f 1 + b × f 2 a\times f_1 + b\times f_2 a×f1+b×f2,那么网络 a × f 1 + b × f 2 a\times f_1+b\times f_2 a×f1+b×f2的归因应该等于 f 1 f_1 f1和 f 2 f_2 f2归因分别以权重 a a a和 b b b进行加权求和。由于路径方法满足Completeness,那么显然满足Linearity。
路径方法(Path Methods)是仅有的始终满足Implementation Invariance、Sensitivity(b)、Linearity和Completeness的方法。(Paths and consistency in additive cost sharing. Friedman 2004)
2. 积分梯度法满足对称保持(Integrated Gradients is Symmetry-Preserving)
本部分解决了积分梯度法为什么是一个最优的选择。首先,其在数学上的定义最简单;其次,该方法满足对称保存。
2.1 对称保持
(1) 如果交换两个输入变量不改变函数的值,那么称输入变量关于该函数对称。举例来说,如果对于所有的 x x x和 y y y均有 F ( x , y ) = F ( y , x ) F(x,y)=F(y,x) F(x,y)=F(y,x),则称 x x x和 y y y关于函数 F F F对称。
(2) 如果输入中的对称变量具有相同的值,并且基线(baseline)在对称变量上也具有相同的值,如果输入中对称变量的归因相同,那么就称这样的归因方法是满足对称保持的。
(3) 举例来说,存在一个逻辑回归模型 Sigmoid ( x 1 + x 2 + … ) \text{Sigmoid}(x_1+x_2+\dots) Sigmoid(x1+x2+…),其中 x 1 x_1 x1和 x 2 x_2 x2对该模型是对称变量。若输入为 x 1 = x 2 = 1 x_1=x_2=1 x1=x2=1,基线 x 1 = x 2 = 0 x_1=x_2=0 x1=x2=0,那么一个满足对称保持的归因方法必须为 x 1 x_1 x1和 x 2 x_2 x2提供相同的归因。
2.2 积分梯度法与对称保持
积分梯度法是路径方法中唯一满足对称保持的方法。(证明见原始论文附录A)
如果允许对多条路径的归因进行平均,那么也存在一些其他的方法满足对称保持。但是,多条路径平均的方法在计算成本上太高,不太适合深度网络。
六、应用积分梯度法
1.选择基线
1.1 应用积分梯度法的关键步骤是选择一个好的基线,基线在模型中的得分最好接近0,这样有助于对归因结果的解释。
1.2 基线必须代表一个完全没有信息的样本,这样才能区别出原因是来自输入还是基线。
1.3 在图像任务中可以选择全黑图像,或者由噪音组成的图像。在文本任务中,使用全0的embedding是一个较好的选择。
1.4 图像中的全黑图像也代表着一种有意义的输入,但是文本中的全0向量完全没有任何有效的意义。
2.计算积分梯度
积分梯度可以通过求和来高效地做近似计算,只需要将基线
x
′
x'
x′至
x
x
x直线上足够间隔点的梯度相近即可。
IntegratedGrad
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{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}
IntegratedGradiapprox(x)::=(xi−xi′)×k=1∑m∂xi∂F(x′+mk×(x−x′))×m1
其中,
m
m
m是近似的阶数(泰勒展开的阶数),
m
m
m越大则越近似,但计算量也越大。
在实践中, m m m为20到300之间即可。