前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你的模型需要解释(二)

你的模型需要解释(二)

作者头像
小萌哥
发布2020-07-21 11:42:50
8050
发布2020-07-21 11:42:50
举报
文章被收录于专栏:算法研习社
代码语言:javascript
复制
地址:https://www.zhihu.com/people/wang-xiao-jian-38-81
《深度学习的可解释性研究概览》包含3篇内容,作者将用尽可能浅显的语言带领大家了解可解释性的概念与方法以及关于深度学习可解释性工作的研究成果。
深度学习的可解释性研究(一)—— 让模型具备说人话的能力
深度学习的可解释性研究(二)——不如打开箱子看一看
深度学习的可解释性研究(三)——是谁在撩动琴弦

深度学习的可解释性研究(一)—— 让模型具备说人话的能力

1. 可解释性是什么?

广义上的可解释性指在我们需要了解或解决一件事情的时候,我们可以获得我们所需要的足够的可以理解的信息。比如我们在调试bug的时候,需要通过变量审查和日志信息定位到问题出在哪里。比如在科学研究中面临一个新问题的研究时,我们需要查阅一些资料来了解这个新问题的基本概念和研究现状,以获得对研究方向的正确认识。反过来理解,如果在一些情境中我们无法得到相应的足够的信息,那么这些事情对我们来说都是不可解释的。比如刘慈欣的短篇《朝闻道》中霍金提出的“宇宙的目的是什么”这个问题一下子把无所不知的排险者卡住了,因为再高等的文明都没办法理解和掌握造物主创造宇宙时的全部信息,这些终极问题对我们来说永远都是不可解释的。

而具体到机器学习领域来说,以最用户友好的决策树模型为例,模型每作出一个决策都会通过一个决策序列来向我们展示模型的决策依据:比如男性&未婚&博士&秃头的条件对应“不感兴趣”这个决策,而且决策树模型自带的基于信息理论的筛选变量标准也有助于帮助我们理解在模型决策产生的过程中哪些变量起到了显著的作用。所以在一定程度上,我们认为决策树模型是一个具有比较好的可解释性的模型,在以后的介绍中我们也会讲到,以决策树为代表的规则模型在可解释性研究方面起到了非常关键的作用。再以用户最不友好的多层神经网络模型为例,模型产生决策的依据是什么呢?大概是以比如 1/(e^-(2*1/(e^(-(2*x+y))+1) + 3*1/(e^(-(8*x+5*y))+1))+1) 是否大于0.5为标准(这已经是最简单的模型结构了),这一连串的非线性函数的叠加公式让人难以直接理解神经网络的“脑回路”,所以深度神经网络习惯性被大家认为是黑箱模型

17年ICML的Tutorial中给出的一个关于可解释性的定义是:

Interpretation is the process of giving explanations to Human.

总结一下就是“说人话”,“说人话”,“说人话”,不以人类可以理解的方式给出的解释都叫耍流氓,记住这三个字,你就差不多把握了可解释性的精髓所在。

2. 我们为什么需要可解释性?

广义上来说我们对可解释性的需求主要来源于对问题和任务了解得还不够充分。具体到深度学习/机器学习领域,就像我们上文提到的多层神经网络存在的问题,尽管高度的非线性赋予了多层神经网络极高的模型表示能力,配合一些堪称现代炼丹术的调参技术可以在很多问题上达到非常喜人的表现,大家如果经常关注AI的头条新闻,那些机器学习和神经网络不可思议的最新突破甚至经常会让人产生AI马上要取代人类的恐惧和幻觉。但正如近日贝叶斯网络的创始人Pearl所指出的,“几乎所有的深度学习突破性的本质上来说都只是些曲线拟合罢了”,他认为今天人工智能领域的技术水平只不过是上一代机器已有功能的增强版。虽然我们造出了准确度极高的机器,但最后只能得到一堆看上去毫无意义的模型参数和拟合度非常高的判定结果,但实际上模型本身也意味着知识,我们希望知道模型究竟从数据中学到了哪些知识(以人类可以理解的方式表达的)从而产生了最终的决策。从中是不是可以帮助我们发现一些潜在的关联,比如我想基于深度学习模型开发一个帮助医生判定病人风险的应用,除了最终的判定结果之外,我可能还需要了解模型产生这样的判定是基于病人哪些因素的考虑。如果一个模型完全不可解释,那么在很多领域的应用就会因为没办法给出更多可靠的信息而受到限制。这也是为什么在深度学习准确率这么高的情况下,仍然有一大部分人倾向于应用可解释性高的传统统计学模型的原因。

不可解释同样也意味着危险,事实上很多领域对深度学习模型应用的顾虑除了模型本身无法给出足够的信息之外,也有或多或少关于安全性的考虑。比如,下面一个非常经典的关于对抗样本的例子,对于一个CNN模型,在熊猫的图片中添加了一些噪声之后却以99.3%的概率被判定为长臂猿。

在熊猫图片中加入噪声,模型以99.3%的概率将图片识别为长臂猿

事实上其他一些可解释性较好的模型面对的对抗样本问题可能甚至比深度学习模型更多,但具备可解释性的模型在面对这些问题的时候是可以对异常产生的原因进行追踪和定位的,比如线性回归模型中我们可以发现某个输入参数过大/过小导致了最后判别失常。但深度学习模型很难说上面这两幅图到底是因为哪些区别导致了判定结果出现了如此大的偏差。尽管关于对抗样本的研究最近也非常火热,但依然缺乏具备可解释性的关于这类问题的解释。

当然很多学者对可解释性的必要性也存有疑惑,在NIPS 2017会场上,曾进行了一场非常激烈火爆的主题为“可解释性在机器学习中是否必要”的辩论,大家对可解释性的呼声还是非常高的。但人工智能三巨头之一的Yann LeCun却认为:人类大脑是非常有限的,我们没有那么多脑容量去研究所有东西的可解释性。有些东西是需要解释的,比如法律,但大多数情况下,它们并没有你想象中那么重要。比如世界上有那么多应用、网站,你每天用Facebook、Google的时候,你也没想着要寻求它们背后的可解释性。LeCun也举了一个例子:他多年前和一群经济学家也做了一个模型来预测房价。第一个用的简单的线性于猜测模型,经济学家也能解释清楚其中的原理;第二个用的是复杂的神经网络,但效果比第一个好上不少。结果,这群经济学家想要开公司做了。你说他们会选哪个?LeCun表示,任何时候在这两种里面选择都会选效果好的。就像很多年里虽然我们不知道药物里的成分但一直在用一样。

但是不可否认的是,可解释性始终是一个非常好的性质,如果我们能兼顾效率、准确度、说人话这三个方面,具备可解释性模型将在很多应用场景中具有不可替代的优势。

3. 有哪些可解释性方法?

我们之前也提到机器学习的目的是从数据中发现知识或解决问题,那么在这个过程中只要是能够提供给我们关于数据或模型的可以理解的信息,有助于我们更充分地发现知识、理解和解决问题的方法,那么都可以归类为可解释性方法。如果按照可解释性方法进行的过程进行划分的话,大概可以划分为三个大类:

1. 在建模之前的可解释性方法

2. 建立本身具备可解释性的模型

3. 在建模之后使用可解释性方法对模型作出解释

4. 在建模之前的可解释性方法

这一类方法其实主要涉及一些数据预处理或数据展示的方法。机器学习解决的是从数据中发现知识和规律的问题,如果我们对想要处理的数据特征所知甚少,指望对所要解决的问题本身有很好的理解是不现实的,在建模之前的可解释性方法的关键在于帮助我们迅速而全面地了解数据分布的特征,从而帮助我们考虑在建模过程中可能面临的问题并选择一种最合理的模型来逼近问题所能达到的最优解。

数据可视化方法就是一类非常重要的建模前可解释性方法。很多对数据挖掘稍微有些了解的人可能会认为数据可视化是数据挖掘工作的最后一步,大概就是通过设计一些好看又唬人的图表或来展示你的分析挖掘成果。但大多数时候,我们在真正要研究一个数据问题之前,通过建立一系列方方面面的可视化方法来建立我们对数据的直观理解是非常必须的,特别是当数据量非常大或者数据维度非常高的时候,比如一些时空高维数据,如果可以建立一些一些交互式的可视化方法将会极大地帮助我们从各个层次角度理解数据的分布,在这个方面我们实验室也做过一些非常不错的工作。

还有一类比较重要的方法是探索性质的数据分析,可以帮助我们更好地理解数据的分布情况。比如一种称为MMD-critic方法中,可以帮助我们找到数据中一些具有代表性或者不具代表性的样本。

使用MMD-critic从Imagenet数据集中学到的代表性样本和非代表性样本(以两种狗为例)

5. 建立本身具备可解释性的模型

建立本身具备可解释性的模型是我个人觉得是最关键的一类可解释性方法,同样也是一类要求和限定很高的方法,具备“说人话”能力的可解释性模型大概可以分为以下几种:

1. 基于规则的方法(Rule-based)

2. 基于单个特征的方法(Per-feature-based)

3. 基于实例的方法(Case-based)

4. 稀疏性方法(Sparsity)

5. 单调性方法(Monotonicity)

基于规则的方法比如我们提到的非常经典的决策树模型。这类模型中任何的一个决策都可以对应到一个逻辑规则表示。但当规则表示过多或者原始的特征本身就不是特别好解释的时候,基于规则的方法有时候也不太适用。

基于单个特征的方法主要是一些非常经典的线性模型,比如线性回归、逻辑回归、广义线性回归、广义加性模型等,这类模型可以说是现在可解释性最高的方法,可能学习机器学习或计算机相关专业的朋友会认为线性回归是最基本最低级的模型,但如果大家学过计量经济学,就会发现大半本书都在讨论线性模型,包括经济学及相关领域的论文其实大多数也都是使用线性回归作为方法来进行研究。这种非常经典的模型全世界每秒都会被用到大概800多万次。为什么大家这么青睐这个模型呢?除了模型的结构比较简单之外,更重要的是线性回归模型及其一些变种拥有非常solid的统计学基础,统计学可以说是最看重可解释性的一门学科了,上百年来无数数学家统计学家探讨了在各种不同情况下的模型的参数估计、参数修正、假设检验、边界条件等等问题,目的就是为了使得在各种不同情况下都能使模型具有有非常好的可解释性,如果大家有时间有兴趣的话,除了学习机器学习深度模型模型之外还可以尽量多了解一些统计学的知识,可能对一些问题会获得完全不一样的思考和理解。

基于实例的方法主要是通过一些代表性的样本来解释聚类/分类结果的方法。比如下图所展示的贝叶斯实例模型(Bayesian Case Model,BCM),我们将样本分成三个组团,可以分别找出每个组团中具有的代表性样例和重要的子空间。比如对于下面第一类聚类来说,绿脸是具有代表性的样本,而绿色、方块是具有代表性的特征子空间。

使用BCM学到的分类及其对应的代表性样本和代表性特征子空间

基于实例的方法的一些局限在于可能挑出来的样本不具有代表性或者人们可能会有过度泛化的倾向。

基于稀疏性的方法主要是利用信息的稀疏性特质,将模型尽可能地简化表示。比如如下图的一种图稀疏性的LDA方法,根据层次性的单词信息形成了层次性的主题表达,这样一些小的主题就可以被更泛化的主题所概括,从而可以使我们更容易理解特定主题所代表的含义。

Graph-based LDA 中的主题层次结构

基于单调性的方法:在很多机器学习问题中,有一些输入和输出之间存在正相关/负相关关系,如果在模型训练中我们可以找出这种单调性的关系就可以让模型具有更高的可解释性。比如医生对患特定疾病的概率的估计主要由一些跟该疾病相关联的高风险因素决定,找出单调性关系就可以帮助我们识别这些高风险因素。

6. 在建模之后使用可解释性性方法作出解释

建模后的可解释性方法主要是针对具有黑箱性质的深度学习模型而言的,主要分为以下几类的工作:

1. 隐层分析方法

2. 模拟/代理模型

3. 敏感性分析方法

这部分是我们接下来介绍和研究的重点,因此主要放在后续的文章中进行讲解,在本篇中不作过多介绍。

除了对深度学习模型本身进行解释的方法之外,也有一部分工作旨在建立本身具有可解释性的深度学习模型,这和我们前面介绍通用的可解释性模型有区别也有联系,也放到后面的文章中进行介绍。

参考文献

[1] Google Brain, Interpretable Machine Learning: The fuss, the concrete and the questions.

[2] Kim B, Koyejo O, Khanna R, et al. Examples are not enough, learn to criticize! Criticism for Interpretability[C]. neural information processing systems, 2016: 2280-2288.

[3] Kim B, Rudin C, Shah J. The Bayesian Case Model: A Generative Approach for Case-Based Reasoning and Prototype Classification[J]. Computer Science, 2015, 3:1952-1960.

[4] Doshi-Velez F, Wallace B C, Adams R. Graph-sparse LDA: a topic model with structured sparsity[J]. Computer Science, 2014.

深度学习的可解释性研究(二)——不如打开箱子看一看

在上一节中我们介绍了深度学习可解释性的三种方法:1. 隐层分析法,2. 敏感性分析法 3. 代理/替代模型法。在这一节中我们主要介绍第一种方法:隐层分析法

1. 黑箱真的是黑箱吗?——深度学习的物质组成视角

通过上一节的介绍我们也了解到,深度学习的黑箱性主要来源于其高度非线性性质,每个神经元都是由上一层的线性组合再加上一个非线性函数的得到,我们无法像理解线性回归的参数那样通过非常solid的统计学基础假设来理解神经网络中的参数含义及其重要程度、波动范围。但实际上我们是知道这些参数的具体值以及整个训练过程的,所以神经网络模型本身其实并不是一个黑箱,其黑箱性在于我们没办法用人类可以理解的方式理解模型的具体含义和行为,而神经网络的一个非常好的性质在于神经元的分层组合形式,这让我们可以用物质组成的视角来理解神经网络的运作方式。比如如下图所示,人体的组成过程是从分子-细胞-组织-器官-系统-人体:

人体的组成结构示意

而通过一些对神经网络隐层的可视化我们也发现:比如下图的一个人脸识别的例子,神经网络在这个过程中先学到了边角的概念,之后学到了五官,最后学到了整个面部的特征。

(以上内容参考了@YJango在如何简单形象又有趣地讲解神经网络是什么?中的回答,侵删)

如果我们能够用一些方法来帮助我们理解这个从低级概念到高级概念的生成过程,那么就离理解神经网络的具体结构就近了很多。而这也可以逐渐帮助我们完成一个“祛魅”的过程,将调参的魔法真正变成一项可控、可解释的过程。

要理解这个概念的生成过程很重要的一点就是要研究隐层的概念表示,在接下来的部分中我将给大家介绍业界关于隐层分析方法的几个研究工作。

2. 模型学到了哪些概念?

要理解神经网络中每层都学到了哪些概念一个非常直观的方法就是通过对隐层运用一些可视化方法来将其转化成人类可以理解的有实际含义的图像,这方面一个非常具有代表性的一个工作就是14年ECCV的一篇经典之作:《Visualizing and Understanding Convolutional Networks》,这篇文章主要利用了反卷积的相关思想实现了特征可视化来帮助我们理解CNN的每一层究竟学到了什么东西。我们都知道典型的CNN模型的一个完整卷积过程是由卷积-激活-池化(pooling)三个步骤组成的。而如果想把一个CNN的中间层转化成原始输入空间呢?我们就需要经过反池化-反激活-反卷积这样的一个逆过程。整个模型的结构如下图所示:

3. 反池化:

反池化其实很好理解,以下面的图片为例,左图可以表示是池化(pooling)过程,右图表示反池化(unpooling)过程,池化过程中我们将3*3的一个pooling块中的最大值取出,而反池化则是将pooling后的值恢复成3*3的像素单元,由于我们现在只有一个激活值, 所以只将该激活值对应原pooling块中位置的值还原回去,其他的值设定成0。所以在max-pooling的时候,我们不光要知道pooling值,同时也要记录下pooling值的对应位置,比如下图pooling值的位置就是(0,1)。

反池化过程

反激活:

在典型的CNN模型中,我们一般使用Relu作为激活函数,而反激活的值和实际的激活值没有任何区别:只保留正数,其余值为0即可。

4. 反卷积:

反卷积是个上采样过程

通过上面的介绍我们其实可以明白,这个反卷积的方法之所以能够成功地将CNN的隐层可视化出来,一个关键就在于通过反激活-反池化的过程,我们屏蔽掉了很多对当前层的激活值没有实际作用的输入层的影响将其归为0,通过反卷积操作就得到了仅对当前层有实际贡献的输入层的数值——将其作为该层的特征表示。因为我们最后得到的这个特征表示和原输入空间的大小是一致的,其数值表示也对应着原始空间的像素点,所以在一定程度上,这是我们可以理解的一个特征表示。

从实验结果可以看出来,第二层对应着一些边角或色彩特征,第三层对应着纹理特征,第四层对应着一些如狗脸、车轮这样的局部部位,第五层则对整体的物体有较强的识别能力。

通过上面这篇论文的工作,我们可以大致地用肉眼来判断神经网络学到的概念类型,但如果能识别一些语义概念的话对我们来说可能更有意义,在这方面一个非常有代表性的工作是在CVPR 2017上发表《Network Dissection: Quantifying Interpretability of Deep Visual Representations》,这篇文章提出了一种网络切割(Network Dissection)的方法来提取CNN的概念表示。

所谓的网络切割(Network Dissection)方法其实分为三个步骤:

1. 识别一个范围很广的人工标注的视觉语义概念数据集

2. 将隐层变量对应到这些概念表示上

3. 量化这些隐层-概念对的匹配程度

为了获得大量的视觉语义概念数据,研究人员收集了来自不同数据源的分层语义标注数据(包括颜色、材质、材料、部分、物体、场景这几个层次),如下图所示

可以发现如果匹配度高的话,那么分子就比较大(交叉范围大),分母就比较小(合并范围小),我们通过和颜色、材质、材料、部分、物体、场景不同层次的概念作匹配就能得到隐层学到的概念层次了,这个模型的结构如下图所示:

Network Dissection的模型结构

模型在AlexNet上的实验结果

从实验结果中我们也可以发现随着层数的增加,神经网络学到的概念类型也逐渐变得高级,比如在AlexNet中,前面的卷积层对颜色、材质的识别力较强,后面的卷积层对物体、场景的识别力较强。特别是对物体的识别上,后面的卷积层有突出的优势。

5. 低级到高级=泛化到特化?

当然从低级概念到高级概念的一个过程中总是会伴随着一个非常有意思的现象:泛化性逐渐降低,特化性逐渐升高。比如在细胞层次上,人类和其他动物的区别比较小,这个层次的泛化性就高,但到组织器官层次区别就比较大,这个层次的特化性就高。Bengio团队在2014年发表的一篇工作《How transferable are features in deep neural networks》就是通过研究特征的可迁移性来对这个从泛化的特化的过程进行评估。

特征在迁移任务上的表现往往是评价特征泛化性能的一个非常好的依据。在迁移学习中,我们首先基于基础数据训练一个基础网络,然后将特征改换到另一个任务上,如果特征是具备泛化性的,那么其在迁移任务中应该也是适用的。在这个工作中,作者将1000个ImageNet的分类分成了两个组,每个组个包含大约500个分类和645000个样本。然后利用这两组数据各训练一个八层的卷积网络baseA和baseB,然后分别取第1到第7个卷积层训练几个新的网络,以第3层为例:

自我复制网络(selffer network)B3B,前三层从baseB上复制并冻结。剩余的5个卷积层随机初始化并在数据集B上训练,这个网络作为控制组

一个迁移网络(transfer network)A3B:前三层从baseA上复制并冻结。剩余的5个卷积层随机初始化并在数据集B上训练。如果A3B的任务表现和baseB一样好,那么就说明第三层的特征至少对于B任务来讲是泛化的,如果不如baseB,那么说明第三层特征就是特化的。

一个自我复制网络B3B+,网络结构和B3B一样,但所有层都是可学习的

一个迁移网络A3B+,网络结构和A3B一样,但所有层都是可学习的

这些网络的结构图如下图所示:

而从实验结果来看,transferAnB的随着层数的增加性能在不断下降(泛化降低,特化提升,这印证了我们对泛化特化性质随层数变化的基本判断),而控制组的selfferBnB的性能出现了先下降后上升的现象(泛化和特化都不足够的中间层既缺乏可学习性,特征的描述性又不够强,因而出现了性能下降的现象),transferBnB+和transferAnB+一直维持着比较好的性能,但其中transferAnB+的性能确是最好的,特征在迁移任务上表现出来的优势其实也对应了我们在上一节中讲的模型本身也意味着知识

6. 真的需要那么多层吗?

对于神经网络来说,隐层的数量永远都是一个玄学,我们如何理解隐层的数量和模型性能之间的关系呢?Bengio在2016年还做过一个工作《Understanding intermediate layers using linear classifier probes》。这篇文章的思路非常简单,就是通过在每个隐层中添加一个线性探针来测试隐层的表征性能。什么是线性探针呢?也很简单,就是以每个隐藏层为输入,判别的label为输出建立一个逻辑回归模型,通过评估模型的准确率我们就能得到隐层在整个训练过程中以及训练结束之后表征性能的变化。

通过32个隐层在二分数据上的实验我们可以发现随着隐层的增加表征性能不断提高,但提高的比率也逐渐趋于缓慢。

在基于Minist数据训练的CNN模型上,经过10个周期的训练,第一个卷积层的表征性能提升非常明显,但之后的卷积层并没有很明显的提升。

小结

本文中我们主要介绍了四个在隐层分析上有代表性的工作,这类方法在神经网络可解释性的研究中向我们揭示了隐层性质的变化和概念生成的过程,在之后要讲到的敏感性分析方法中,也会不可避免地涉及对隐层的分析。如果大家对这几个工作感兴趣,可以找到相关的文献做更深入的阅读。

参考文献

[1] Matthew D. Zeiler, Rob Fergus. Visualizing and Understanding Convolutional Networks[J]. 2013, 8689:818-833.

[2] David Bau, Bolei Zhou, Aditya Khosla, et al. Network Dissection: Quantifying Interpretability of Deep Visual Representations[J]. 2017:3319-3327.

[3] Yosinski J, Clune J, Bengio Y, et al. How transferable are features in deep neural networks?[J]. Eprint Arxiv, 2014, 27:3320-3328.

[4] Alain G, Bengio Y. Understanding intermediate layers using linear classifier probes[J]. 2016.

深度学习的可解释性研究(三)——是谁在撩动琴弦

在上一节中我们介绍了建模后深度学习可解释性方法之一:隐层分析法,但我们也会发现隐层分析法的一个问题在于,通过端到端训练的隐层很多时候并没有什么特定的含义,多数依赖我们的主观判断。但是深度学习模型中往往只有输入层对我们来说才是有意义的,所以了解深度学习模型的一个更直观的方法是通过研究输入层的变化对结果的影响来判断输入变量或输入样本的重要性,这也是通常所说的敏感性分析方法

敏感性分析(Sensitivity Analysis)是一类非常重要的,用于定量描述模型输入变量对输出变量的重要性程度的方法,在经济、生态、化学、控制等领域都已经有了非常成熟的应用。假设模型表示为

敏感性分析就是令每个属性在可能的范围变动,研究和预测这些属性的变化对模型输出值的影响程度。我们将影响程度的大小称为该属性的敏感性系数,敏感性系数越大,就说明属性对模型输出的影响越大。一般来讲对于神经网络的敏感性分析方法可以分为变量敏感性分析、样本敏感性分析两种,变量敏感性分析用来检验输入属性变量对模型的影响程度,样本敏感性分析用来研究具体样本对模型的重要程度,也是敏感性分析研究的一个新方向。

1. 变量敏感性分析

神经网络中的变量敏感性分析方法大概有以下几种:基于连接权的敏感性方法,基于偏导的敏感性分析方法、通过改变输入变量观察其影响的方法和与统计方法结合的敏感性分析方法。

基于连接权的敏感性分析方法

当然这种方法存在的问题就不用我多说了,放到一个两个隐层的网络可能还适用,放到深度网络中由于忽略了非线性激活函数误差会一步一步积累,所以慢慢也就被大家抛弃了。

基于统计方法的敏感性分析方法

基于统计方法的敏感性分析方法中一个比较有代表性的工作是Olden等人2002年在Elsevier上发表的《Illuminating the “black box”: a randomization approach for understanding variable contributions in artificial neural networks》,虽然也是来自于“远古时期”的智慧,却是我个人非常欣赏的一个工作,现在看来依然觉得非常牛逼。这个工作的步骤如下:

基于偏导的敏感性分析方法

基于偏导的敏感性分析方法主要是利用偏导数来评估输入变量对输出的影响,比如Dimoponlos等人在《Use of some sensitivity criteria for choosing networks with good generalization ability》中提出的敏感性方法,除了考虑偏导以外,作者也考虑了曲率(也就是二阶导数)的影响,因为神经网络在激活函数处的非线性导致了虽然导数绝对值较小,但有可能因为曲率较大导致敏感性高的情况,某个变量j的敏感性可以由所有样本在变量j处的导数和曲率乘积的平方和度量:

基于输入变量扰动的敏感性分析方法

基于输入变量扰动的敏感性分析方法是在前向网络中最为常用的一种敏感性分析方法,可以用于评估变量的重要性从而达到变量筛选的目的,比如Dombi等人提出的平均影响值(MIV,Mean Impact Value)方法就是一种被广泛应用的评估方法,MIV方法的计算过程如下:

  1. 在网络训练终止后,将训练样本P中每一自变量特征在原值的基础上分别加/减10%后成两个训练样本P1和P2
  2. 将P1和P2分别作为仿真样本利用已建成的网络进行仿真,得到两个仿真结果A1和A2
  3. 求出A1和A2的差值,即为变动该自变量后对输出产生的影响变化值
  4. 最后将IV按观测样本数平均得到该自变量对应变量——网络输出的MIV。

按照MIV的绝对值排序即可得到各个自变量对网络输出影响的重要性排序,从而完成变量筛选的目的。

2. 样本敏感性分析

这个也就是影响力函数的表达式,根据这个定义,作者推导出了提升某个训练样本的权重或者对训练样本施加轻微扰动之后对特定测试样本损失函数的影响:

当然由于在影响力的计算中涉及到Hessian矩阵的求逆问题,作者也提出了一种简便计算的方法来迅速计算影响力函数的近似值,具体在这里就不介绍了,想了解的可以阅读原文以备参考。

通过影响力函数的计算可以发现,对下图的测试样本7来说,右边的训练样本的存在对该样本的判定是有害的。

而由于计算出了对训练样本施加轻微扰动之后对特定测试样本损失函数的影响,所以这个方法也可以应用到对抗样本的生成中,只需要在一部分影响力函数较大的样本中添加一些肉眼不可见的扰动,就足以干扰其他样本的判定结果。

小结

在本节中我们介绍了建模后深度学习可解释性方法之一——敏感性分析方法,敏感性方法的主要用途是衡量变量/样本的重要性,优点是把解释性归于输入特征或样本使得更容易被理解。不过敏感性方法不如隐层分析法的一点在于基本上完全忽视了对隐层结构的研究,在接下来我们将介绍第三类方法:代理/替代模型方法,欢迎继续关注。

参考文献

[1] Garson G D. Interpreting neural-network connection weights[M]. Miller Freeman, Inc. 1991.

[2] Olden J D, Jackson D A. Illuminating the “black box”: a randomization approach for understanding variable contributions in artificial neural networks[J]. Ecological Modelling, 2002, 154(1–2):135-150.

[3] Dimopoulos Y, Bourret P, Lek S. Use of some sensitivity criteria for choosing networks with good generalization ability[J]. Neural Processing Letters, 1995, 2(6):1-4.

[4] Koh P W, Liang P. Understanding Black-box Predictions via Influence Functions[J]. 2017.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020/06/08 09:09:02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 可解释性是什么?
  • 2. 我们为什么需要可解释性?
  • 3. 有哪些可解释性方法?
  • 4. 在建模之前的可解释性方法
  • 5. 建立本身具备可解释性的模型
  • 6. 在建模之后使用可解释性性方法作出解释
  • 参考文献
  • 1. 黑箱真的是黑箱吗?——深度学习的物质组成视角
  • 2. 模型学到了哪些概念?
  • 3. 反池化:
  • 4. 反卷积:
  • 5. 低级到高级=泛化到特化?
  • 6. 真的需要那么多层吗?
  • 小结
  • 参考文献
  • 1. 变量敏感性分析
  • 2. 样本敏感性分析
  • 小结
  • 参考文献
相关产品与服务
腾讯云 TI 平台
腾讯云 TI 平台(TencentCloud TI Platform)是基于腾讯先进 AI 能力和多年技术经验,面向开发者、政企提供的全栈式人工智能开发服务平台,致力于打通包含从数据获取、数据处理、算法构建、模型训练、模型评估、模型部署、到 AI 应用开发的产业 + AI 落地全流程链路,帮助用户快速创建和部署 AI 应用,管理全周期 AI 解决方案,从而助力政企单位加速数字化转型并促进 AI 行业生态共建。腾讯云 TI 平台系列产品支持公有云访问、私有化部署以及专属云部署。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档