• 积分梯度是一种神经网络可解释性方法
  • 此方法首先在论文《Gradients of Counterfactuals》中提出,后来 《Axiomatic Attribution for Deep Networks》再次介绍了它,这已经是2016~2017年间的工作了
  • 此方法已得到较多应用,但是也有一些反对者表示其给出的结果对于积分路径敏感,不能给出唯一确切的结果,因此存在争议

文章目录

  • 1. 可解释性
  • 2. 积分梯度
    • 2.1 梯度饱和问题
    • 2.2 积分梯度
  • 3. 参考

1. 可解释性

  • 事实上,很多论文中对于可解释性的定义都不太一样,或者直接对避而不谈,这导致可解释性成为一个大而模糊的领域。一般概念上,可解释性就是我们想要知道模型对未见样本 x\pmb{x}xxx 给出预测 y^=f(x)\hat{y} = f(\pmb{x})y^​=f(xxx) 的原因。有些模型本身就是可解释的,比如线性回归、决策树、朴素贝叶斯等;有些模型则很困难解释,比如神经网络

  • 可解释性总体可以分为 “事前可解释性” 和 “事后可解释性

    • 事前(ante-hoc)可解释性:指通过训练结构简单、可解释性好的模型或将可解释性结合到具体的模型结构中的自解释模型使模型本身具备可解释能力。
    • 事后(post-hoc)可解释性:指通过开发可解释性技术解释已训练好的机器学习模型。根据解释目标和解释对象的不同,post-hoc可解释性又可分为全局可解释性(global interpretability)和局部可解释性(local interpretability)。全局可解释性旨在帮助人们理解复杂模型背后的整体逻辑以及内部的工作机制,局部可解释性旨在帮助人们理解机器学习模型针对每一个输入样本的决策过程和决策依据。

    其中事后可解释性又分为 “全局可解释性” 和 “局部可解释性”

    1. 全局可解释性:一般指模型告诉我们它眼中各类标签对应的样本应该具有什么样的特征。具体来说,可以利用可理解的规则集合对模型生成可解释的符号描述;或从难解释模型中提取一个可解释模型;又或者我们把模型结果定住,反向找哪些输入能使得结果最显著,从而获取机器眼中某类对象的总体特征(对象甚至可以是抽象的概念)。下图是神经网络模型中代表 “happy” 和 “serious” 的图像特征(更多相关图像见 OpenAI Microscope)
    2. 局部可解释性:一般以输入样本为导向,试图分析某个输入样本的每一维特征对模型最终决策结果的贡献。经典的局部解释方法包括敏感性分析解释、局部近似解释、梯度反向传播解释、特征反演解释以及类激活映射解释等
  • 下图给出可解释方法的粗略分类,更多详细说明,请参考:机器学习的可解释性(总结)

2. 积分梯度

  • 本方法思想来自 “事后可解释性 - 局部解释 - 敏感性解释”,有趣的一点在于其给出的解释可以组成一个线性模型,因此其属于 “事后可解释性 - 局部解释 - 局部近似方法”

2.1 梯度饱和问题

  • 先说明一下 “敏感性解释” 的思想。我们知道每个样本由多个特征组成,记作 x={x1,x2,...,xn}\pmb{x} = \{x_1,x_2,...,x_n\}xxx={x1​,x2​,...,xn​},这里特征的选取是多种多样的

    1. 对于传统ML方法,特征通常是直接给定的。比如西瓜书例子中,西瓜的 “色泽”、“敲声”…
    2. 在CV领域,特征可以是图像中的一个像素、一块区域…
    3. 在NLP领域,特征可以是句子中的一个单词、一个词组…
  • 现在想要知道某个特征对做预测的重要程度,最简单的想法就是修改它的值或直接拿掉它,看看预测结果变化有多大,变化越大就越重要。看下面这个图像分类任务的例子,在测试图片的任意位置贴一个固定大小的灰色方块,看看方块贴各个位置时对于预测结果的影响,把综合结果显示为热力图(越偏蓝影响越大),如图可见这种方法找到的关键特征是比较合理的

    这个方法中,方块的大小和颜色都是需要调整的超参数,而且解释结果对于这些超参数是敏感的

  • 上面这个方法显然有些粗糙了,为了得到更精确的结果,做两个改动

    1. 方格尺寸缩小到一个像素
    2. 评估重要程度时,对某个方块(像素)施加微小扰动 △x\triangle x△x,观察结果变化 △y\triangle y△y,以 ∣△y△x∣|\frac{\triangle y}{\triangle x}|∣△x△y​∣ 作为重要程度。假设某图像预测标签为 yky_kyk​,那么第 nnn 个像素 xnx_nxn​ 的重要程度为梯度 ∣∂yk∂xn∣|\frac{\partial y_k}{\partial x_n}|∣∂xn​∂yk​​∣

    让越重要的像素越亮,这样就能绘制出一张显示了关键区域的 saliency map,可见也是比较合理的

  • 梯度饱和 gradient saturation 是上述 gradient based 方法的一个重要问题。假设我们要判读某张图片是否为大象的图片,显然鼻子长度是一个重要的指标。但是对于已经有长鼻子的大象来说,对其鼻子长度增长或缩短一点对于预测结果而言已经意义不大了。设模型为 fff,输入图像为 x={x1,x2,...,xn}\pmb{x} =\{x_1,x_2,...,x_n\}xxx={x1​,x2​,...,xn​},鼻子是第 iii 个属性 xix_ixi​,如下图所示

    纵轴是模型将图像分类为大象的概率 f(x)f(\pmb{x})f(xxx) ,横轴是大象鼻子长度,黄色线代表随着鼻子长度增大,分类为大象的概率不断上升并收敛到1;蓝色线为黄色线的梯度 ∂f(x)∂xi\frac{\partial f(\mathbf{x})}{\partial x_i}∂xi​∂f(x)​。可见,当黄线处于饱和区,其对应的梯度接近于 0,如果只看梯度,这种情况下会得出鼻子长度无关紧要的错误结论

2.2 积分梯度

  • 积分梯度法的思想很简单,既然鼻子太长时梯度饱和了,那我就从当前长度开始减短,每减短一点求一次梯度,直到减短到某个称为baseline的最小值(确保在非饱和区,这里设为鼻子长度为0),最后把所有梯度全部加起来就好了,当然这个求和还要乘上一个间隔 △xi\triangle x_i△xi​,否则无限细分后求和会变成 ∞\infin∞。简单说,就是要用微元法求上图中蓝色线和横轴围成的面积。设baseline图像中的鼻子长度为0,记为 x′={x1′,x2′,...,xn′}\pmb{x}' =\{x_1',x_2',...,x_n'\}xxx′={x1′​,x2′​,...,xn′​},线性插值数为 nnn,则特征 xix_ixi​ 的重要性为
    ϕiIG(f,x,x′)=∑k=0n∂f(x′+kn(x−x′))∂xi△xi=∑k=0n∂f(x′+kn(x−x′))∂xi1n(xi−xi′)\begin{aligned} \phi_i^{IG}(f,\pmb{x},\pmb{x}') &= \sum_{k=0}^{n}\frac{\partial f(\pmb{x}'+\frac{k}{n}(\pmb{x}-\pmb{x}'))}{\partial x_i}\triangle x_i \\ &= \sum_{k=0}^{n}\frac{\partial f(\pmb{x}'+\frac{k}{n}(\pmb{x}-\pmb{x}'))}{\partial x_i}\frac{1}{n}(x_i-x_i')\\ \end{aligned} ϕiIG​(f,xxx,xxx′)​=k=0∑n​∂xi​∂f(xxx′+nk​(xxx−xxx′))​△xi​=k=0∑n​∂xi​∂f(xxx′+nk​(xxx−xxx′))​n1​(xi​−xi′​)​ 再取个极限 lim⁡n→∞\lim_{n\to \infin}limn→∞​,上式就变成了积分形式
    ϕiIG(f,x,x′)=∫01δf(x′+α(x−x′))δxidα(xi−xi′)=(xi−xi′)∫01δf(x′+α(x−x′))δxidα\begin{aligned} \phi_i^{IG}(f,\pmb{x},\pmb{x}') &= \int_0^1\frac{\delta f(\pmb{x}'+\alpha(\pmb{x}-\pmb{x}'))}{\delta x_i}d\alpha(x_i-x_i') \\ &= (x_i-x_i') \int_0^1\frac{\delta f(\pmb{x}'+\alpha(\pmb{x}-\pmb{x}'))}{\delta x_i}d\alpha \end{aligned} ϕiIG​(f,xxx,xxx′)​=∫01​δxi​δf(xxx′+α(xxx−xxx′))​dα(xi​−xi′​)=(xi​−xi′​)∫01​δxi​δf(xxx′+α(xxx−xxx′))​dα​ 注意,虽然通常和上面一样选择 γ(α)=x′+kn(x−x′)\gamma(\alpha) = \pmb{x}'+\frac{k}{n}(\pmb{x}-\pmb{x}')γ(α)=xxx′+nk​(xxx−xxx′) 的线性插值作为插值路径,但实际上可选的插值路径并不唯一,因此这个积分是一个泛函,相应的偏导数也变成变分形式。近年有文章说明选择不同的插值路径时,求出的积分梯度结果也可能不同,导致此方法的有效性出现争议
  • 我们上面的操作本质是在求 x\pmb{x}xxx 到 x′\pmb{x}'xxx′ 之间梯度曲线(蓝色线)围成的面积,因此它代表着 x\pmb{x}xxx 到 x′\pmb{x}'xxx′ 间的差(类似速度和距离的关系),即 f(xi)−f(xi′)=ϕiIG(f,x,x′)f(x_i)-f(x_i') = \phi_i^{IG}(f,\pmb{x},\pmb{x}')f(xi​)−f(xi′​)=ϕiIG​(f,xxx,xxx′),此式对每一维特征都成立,因此积分梯度具有完备性(Completeness),即
    f(x)−f(x′)=∑iϕiIG(f,x,x′)=ϕIG(f,x,x′)f(\pmb{x})-f(\pmb{x}') = \sum_i \phi_i^{IG}(f,\pmb{x},\pmb{x}') =\boldsymbol{\phi}^{IG}(f,\pmb{x},\pmb{x}') f(xxx)−f(xxx′)=i∑​ϕiIG​(f,xxx,xxx′)=ϕIG(f,xxx,xxx′) 更重要的是,设 θi(f,x,x′)=∫01δf(x′+α(x−x′))δxidα\theta_i (f,\pmb{x},\pmb{x}')= \int_0^1\frac{\delta f(\mathbf{x}'+\alpha(\mathbf{x}-\mathbf{x}'))}{\delta x_i}d\alphaθi​(f,xxx,xxx′)=∫01​δxi​δf(x′+α(x−x′))​dα,有
    f(x)−f(x′)=ϕIG(f,x,x′)=<(x−x′),θ(f,x,x′)>f(\pmb{x})-f(\pmb{x}') = \boldsymbol{\phi}^{IG}(f,\pmb{x},\pmb{x}') =\big< (\pmb{x}-\pmb{x}'),\boldsymbol{\theta}(f,\pmb{x},\pmb{x}')\big> f(xxx)−f(xxx′)=ϕIG(f,xxx,xxx′)=⟨(xxx−xxx′),θ(f,xxx,xxx′)⟩
    因此,任意样本相对于 Baseline 的相对重要程度,可以由特征之差 x−x′\pmb{x}-\pmb{x}'xxx−xxx′ 和变分路径积分结果 θ(f,x,x′)\boldsymbol{\theta} (f,\pmb{x},\pmb{x}')θ(f,xxx,xxx′) 线性表示,相当于是找了一个线性模型对样本 x\pmb{x}xxx 的预测进行了解释。因此前面提到积分梯度也属于 “事后可解释性 - 局部解释 - 局部近似方法”

3. 参考

  1. 机器学习的可解释性(总结)
  2. [distill] Visualizing the Impact of Feature Attribution Baselines (这一篇distill文章给出了很多可视化,另外深入讨论了Baseline的选择问题)
  3. 李宏毅课程
  4. 积分梯度 – 神经网络可解释性的另一种方法(这一篇和我的思路差不多,但我觉得他没讲清楚。另外评论区有人提出了关于此方法的争议)
  5. 积分梯度:一种新颖的神经网络可视化方法(这一篇写的不错,如果说我是从前往后说明,这篇就是从后往前说明,两个角度可以结合着看)

可解释性与积分梯度 Integrated Gradients相关推荐

  1. 神经网络可解释性的另一种方法:积分梯度,解决梯度饱和缺陷

    作者|hahakity,https://zhuanlan.zhihu.com/p/148105536 本文已获作者授权,不得二次转载 今天介绍一种特定的神经网络可解释性方法 -- 积分梯度法 (Int ...

  2. 【深度学习】【积分梯度】深度网络的公理归因(Axiomatic Attribution for Deep Networks)

    深度网络的公理归因 Axiomatic Attribution for Deep Networks 相关博客 [自然语言处理][可解释性]NKB:用于预训练Transformers的神经知识银行 [自 ...

  3. 对抗样本:ICLR 2022 基于积分梯度的对抗攻击(可迁移的黑盒攻击)Transferable Attack based on Integrated Gradients (TAIG)

    文章目录 代码 感受:该论文提出的攻击算法,在实验中特别费时间,每一次迭代需要循环N次(N为batch_size的大小),因此需要消耗大量的时间去生成对抗样本.此外,用该论文的方法与2022年几篇顶会 ...

  4. 笔记:Visualizing Deep Networks by Optimizing with Integrated Gradients

    原文:https://www.researchgate.net/publication/332873867_Visualizing_Deep_Networks_by_Optimizing_with_I ...

  5. 积分梯度:一种新颖的神经网络可视化方法

    ©PaperWeekly 原创 · 作者|苏剑林 单位|追一科技 研究方向|NLP.神经网络 本文介绍一种神经网络的可视化方法:积分梯度(Integrated Gradients),它首先在论文 Gr ...

  6. ​ICLR 2022 | 基于积分梯度的迁移对抗攻击

    ©PaperWeekly 原创 · 作者 | 鬼谷子 引言 该论文是关于黑盒对抗攻击的工作.论文中作者提出了一种基于积分梯度的可迁移性攻击算法(TAIG),该算法可以生成高可迁移性的对抗样本.作者将三 ...

  7. AAAI 2021最佳论文亚军:Attention+积分梯度=归因解释新方法

    ©PaperWeekly 原创 · 作者|李泺秋 学校|浙江大学硕士生 研究方向|自然语言处理.知识图谱 本文是对 AAAI 2021 最佳论文亚军得主<Self-Attention Attri ...

  8. 【深度强化学习】策略梯度 Policy Gradients

    文章目录 前言 values 和 policy 策略的表示 策略梯度 REINFORCE method 实例:CartPole 前言 重读<Deep Reinforcemnet Learning ...

  9. ICLR2022:基于积分梯度的迁移对抗攻击

    1 引言  该论文是关于黑盒对抗攻击的工作.论文中作者提出了一种基于积分梯度的可迁移性攻击算法(TAIG),该算法可以生成高可迁移性的对抗样本.作者将三种方法分别是优化标准目标函数.注意力图和平滑决策 ...

最新文章

  1. Android Studio下的目录结构
  2. IC/FPGA笔试/面试题分析(十一)基础概念(三态门等)
  3. 【Flutter】Image 组件 ( 加载网络图片 | 加载静态图片 | 加载本地图片 | path_provider 插件 )
  4. android 打卡app,日常小打卡app
  5. matlab在统计学中的简单应用
  6. docker查看容器ip地址
  7. go mysql 多并发_MySQL并发处理-Go语言中文社区
  8. symbian使用活动对象时返回-2147483647错误值的解决办法
  9. VueRouter基础知识记录1
  10. [下载]北京新版小学英语五年级上册mp3点读APP
  11. 电商系统设计之商品 (上)
  12. Spring的注解和装配实现IOC
  13. 企业级 布署 vmvare Esxi 5.0.0 从零开始教程 (二) vSphere clinet 安装
  14. 58同城智能推荐系统的演进与实践
  15. 软件工程 实践者的研究方法 中文题答案
  16. Java 从入门到放弃?
  17. office2019 完美卸载
  18. 点云配准icp算法推导
  19. Docker 学习新手笔记:从入门到放弃
  20. 计算机固态加机械硬盘,在台式机中添加固态/机械硬盘驱动器,让我与这篇文章一起教你...

热门文章

  1. Git版本控制管理——简介
  2. C10k破局(一)——线程池和消息队列实现高并发服务器
  3. Linux(Centos7)安装tomcat8
  4. 使用poi进行excel比对程序
  5. 霍金逝世一周年,英国皇家铸币厂发售“黑洞”纪念币
  6. xgboost入门与实战(原理篇)
  7. asp.net954-少儿英语图书销售与评价系统
  8. FP6291 输出5V1A,12V0.4A升压芯片
  9. 蓝桥杯单片机按键模块化编程
  10. DataFun:知识图谱构建与应用