Integrated Gradients(IG)

近些年,人工智能机器学习在很多领域取得了成功,但如何对人工智能模型的结果进行解释仍然是一个很大的问题,而模型的计算梯度是一个很好的突破口。本文简单介绍了在可解释人工智能(Explainable AI)领域中比较常用的IG算法。

梯度Gradient

解释模型的数学机理

对于一个预测的人工智能模型,我们可以将其看成一个复杂的函数F(x),对于任意一个输入,都能通过模型计算得到一个输出,当输入的第i个参数变化了后,输出由y变为。如果我们想知道哪一个输入参数对结果影响更大,那么只需要看输出变化量相对于对于的输入变化量的比值,也即对于的偏微分梯度 所以梯度直接反映了各个输入参数对结果的影响,因此可以帮助我们分析解释各个输入参数的重要程度。

局限性

我们想利用梯度的计算来分析哪些输入参数对结果的影响比较大,但是在梯度的计算中,我们的计算结果依赖于输入的值,如果输入的值处在一个不合适的区间,那么梯度就可能难以给出有效的结果。这里有一个直观的例子,鼻子长度对于判断是否是大象的影响,鼻子长度是重要影响因素,但超过一定长度后,梯度几乎就变为了0,已经很长的鼻子再增长不会对判断是不是大象有影响。

为解决这个问题,人们提出来了不同的改进算法,比如常用的IG。

Integrated Gradients(IG)1

考虑到直接计算梯度未必能衡量x的某个分量准确的重要性信息,所以我们可以选取一个平均下来的参考背景(很多场景下,为了简便我们直接选取,但是这未必是最优解)。我们期望会给出一个平凡普通的结果(以分类问题为例,各个类别概率相同),然后我们分析也即输入从变到x带来的影响。

由于x和未必很接近,所以直接利用梯度计算会带来较大误差(类似泰勒展开只保留了一阶项),所以我们使用参数方程来表示计算,设是连接x和的一条曲线,其中,那么: 从上式我们可以看出,利用可以表示第i个输入对于最终结果的贡献,这也就是积分梯度(Integrated Gradients简称IG)。具体使用时,我们常采用最简单的方案,也即将取成直线,即: 这时,积分梯度可以化为: 此表达式考虑了路径上所有点的信息,但是由于积分计算比较困难,所以最终算法将积分变成了n项求和来近似逼近积分的值。 回看上面的公式,我们可以发现整个公式本质上是从x到上每一个点的梯度平均,这样就避免了只使用单点梯度带来的问题。

代码使用

作为一种常用的可解释人工智能方法,IG算法被广泛集成到了各种代码库中,比如pytorch官方的explainable AI仓库captum中就提供了包括IG在内的多种可解释人工智能方法。

1
2
3
4
5
from captum.attr import IntegratedGradients

ig = IntegratedGradients(model)

ig_attr_test = ig.attribute(X_test, n_steps=50)

官方文档也提供了一个使用IG分析结果的详细示例,可以帮助新手入门使用。


  1. IG算法的原始论文:https://arxiv.org/abs/1611.02639https://arxiv.org/abs/1703.01365

正在加载今日诗词....