外贸移动商城网站开发,机械设备如何做网站,如何向雅虎提交网站,价格套餐网站在这篇文章中#xff1a;可解释性是什么#xff1f;我们为什么需要可解释性#xff1f;有哪些可解释性方法#xff1f;在建模之前的可解释性方法建立本身具备可解释性的模型在建模之后使用可解释性性方法作出解释关于 BIGSCity参考文献不以人类可以理解的方式给出的解释都叫…在这篇文章中可解释性是什么我们为什么需要可解释性有哪些可解释性方法在建模之前的可解释性方法建立本身具备可解释性的模型在建模之后使用可解释性性方法作出解释关于 BIGSCity参考文献不以人类可以理解的方式给出的解释都叫耍流氓因此我们要让模型「说人话」。只要记住这三个字你就差不多把握了可解释性的精髓所在。AI 科技评论按本文为 BIGSCity 的知乎专栏内容作者王小贱。北航智慧城市兴趣组 BIGSCITY是隶属于北京航空航天大学计算机学院的一个学术研究小组小组致力于研究机器学习与数据挖掘在城市科学、社会科学等领域的交叉应用技术。AI 科技评论获得 BIGSCity 授权转载敬请期待更多后续内容。 非常开心本文成为 BIGSCity 兴趣组的第一篇投稿《深度学习的可解释性研究》系列预计包含 3-4 篇内容用尽可能浅显的语言带领大家了解可解释性的概念与方法以及关于深度学习可解释性工作的研究成果不定期更新内容欢迎催更。可解释性是什么广义上的可解释性指在我们需要了解或解决一件事情的时候我们可以获得我们所需要的足够的可以理解的信息。比如我们在调试 bug 的时候需要通过变量审查和日志信息定位到问题出在哪里。比如在科学研究中面临一个新问题的研究时我们需要查阅一些资料来了解这个新问题的基本概念和研究现状以获得对研究方向的正确认识。反过来理解如果在一些情境中我们无法得到相应的足够的信息那么这些事情对我们来说都是不可解释的。比如刘慈欣的短篇《朝闻道》中霍金提出的「宇宙的目的是什么」这个问题一下子把无所不知的排险者卡住了因为再高等的文明都没办法理解和掌握造物主创造宇宙时的全部信息这些终极问题对我们来说永远都是不可解释的。而具体到机器学习领域来说以最用户友好的决策树模型为例模型每作出一个决策都会通过一个决策序列来向我们展示模型的决策依据比如男性未婚博士秃头的条件对应「不感兴趣」这个决策而且决策树模型自带的基于信息理论的筛选变量标准也有助于帮助我们理解在模型决策产生的过程中哪些变量起到了显著的作用。所以在一定程度上我们认为决策树模型是一个具有比较好的可解释性的模型在以后的介绍中我们也会讲到以决策树为代表的规则模型在可解释性研究方面起到了非常关键的作用。再以用户最不友好的多层神经网络模型为例模型产生决策的依据是什么呢大概是以比如 1/(e^-(2*1/(e^(-(2*xy))1) 3*1/(e^(-(8*x5*y))1))1) 是否大于 0.5 为标准这已经是最简单的模型结构了这一连串的非线性函数的叠加公式让人难以直接理解神经网络的「脑回路」所以深度神经网络习惯性被大家认为是黑箱模型。17 年 ICML 的 Tutorial 中给出的一个关于可解释性的定义是Interpretation is the process of giving explanations to Human.总结一下就是「说人话」「说人话」「说人话」不以人类可以理解的方式给出的解释都叫耍流氓记住这三个字你就差不多把握了可解释性的精髓所在。我们为什么需要可解释性广义上来说我们对可解释性的需求主要来源于对问题和任务了解得还不够充分。具体到深度学习/机器学习领域就像我们上文提到的多层神经网络存在的问题尽管高度的非线性赋予了多层神经网络极高的模型表示能力配合一些堪称现代炼丹术的调参技术可以在很多问题上达到非常喜人的表现大家如果经常关注 AI 的头条新闻那些机器学习和神经网络不可思议的最新突破甚至经常会让人产生 AI 马上要取代人类的恐惧和幻觉。但正如近日贝叶斯网络的创始人 Pearl 所指出的「几乎所有的深度学习突破性的本质上来说都只是些曲线拟合罢了」他认为今天人工智能领域的技术水平只不过是上一代机器已有功能的增强版。虽然我们造出了准确度极高的机器但最后只能得到一堆看上去毫无意义的模型参数和拟合度非常高的判定结果但实际上模型本身也意味着知识我们希望知道模型究竟从数据中学到了哪些知识以人类可以理解的方式表达的从而产生了最终的决策。从中是不是可以帮助我们发现一些潜在的关联比如我想基于深度学习模型开发一个帮助医生判定病人风险的应用除了最终的判定结果之外我可能还需要了解模型产生这样的判定是基于病人哪些因素的考虑。如果一个模型完全不可解释那么在很多领域的应用就会因为没办法给出更多可靠的信息而受到限制。这也是为什么在深度学习准确率这么高的情况下仍然有一大部分人倾向于应用可解释性高的传统统计学模型的原因。不可解释同样也意味着危险事实上很多领域对深度学习模型应用的顾虑除了模型本身无法给出足够的信息之外也有或多或少关于安全性的考虑。比如下面一个非常经典的关于对抗样本的例子对于一个 CNN 模型在熊猫的图片中添加了一些噪声之后却以 99.3% 的概率被判定为长臂猿。在熊猫图片中加入噪声模型以 99.3% 的概率将图片识别为长臂猿事实上其他一些可解释性较好的模型面对的对抗样本问题可能甚至比深度学习模型更多但具备可解释性的模型在面对这些问题的时候是可以对异常产生的原因进行追踪和定位的比如线性回归模型中我们可以发现某个输入参数过大/过小导致了最后判别失常。但深度学习模型很难说上面这两幅图到底是因为哪些区别导致了判定结果出现了如此大的偏差。尽管关于对抗样本的研究最近也非常火热但依然缺乏具备可解释性的关于这类问题的解释。当然很多学者对可解释性的必要性也存有疑惑在 NIPS 2017 会场上曾进行了一场非常激烈火爆的主题为「可解释性在机器学习中是否必要」的辩论大家对可解释性的呼声还是非常高的。但人工智能三巨头之一的 Yann LeCun 却认为人类大脑是非常有限的我们没有那么多脑容量去研究所有东西的可解释性。有些东西是需要解释的比如法律但大多数情况下它们并没有你想象中那么重要。比如世界上有那么多应用、网站你每天用 Facebook、Google 的时候你也没想着要寻求它们背后的可解释性。LeCun 也举了一个例子他多年前和一群经济学家也做了一个模型来预测房价。第一个用的简单的线性于猜测模型经济学家也能解释清楚其中的原理第二个用的是复杂的神经网络但效果比第一个好上不少。结果这群经济学家想要开公司做了。你说他们会选哪个LeCun 表示任何时候在这两种里面选择都会选效果好的。就像很多年里虽然我们不知道药物里的成分但一直在用一样。但是不可否认的是可解释性始终是一个非常好的性质如果我们能兼顾效率、准确度、说人话这三个方面具备可解释性模型将在很多应用场景中具有不可替代的优势。有哪些可解释性方法我们之前也提到机器学习的目的是从数据中发现知识或解决问题那么在这个过程中只要是能够提供给我们关于数据或模型的可以理解的信息有助于我们更充分地发现知识、理解和解决问题的方法那么都可以归类为可解释性方法。如果按照可解释性方法进行的过程进行划分的话大概可以划分为三个大类1. 在建模之前的可解释性方法2. 建立本身具备可解释性的模型3. 在建模之后使用可解释性方法对模型作出解释在建模之前的可解释性方法这一类方法其实主要涉及一些数据预处理或数据展示的方法。机器学习解决的是从数据中发现知识和规律的问题如果我们对想要处理的数据特征所知甚少指望对所要解决的问题本身有很好的理解是不现实的在建模之前的可解释性方法的关键在于帮助我们迅速而全面地了解数据分布的特征从而帮助我们考虑在建模过程中可能面临的问题并选择一种最合理的模型来逼近问题所能达到的最优解。数据可视化方法就是一类非常重要的建模前可解释性方法。很多对数据挖掘稍微有些了解的人可能会认为数据可视化是数据挖掘工作的最后一步大概就是通过设计一些好看又唬人的图表或来展示你的分析挖掘成果。但大多数时候我们在真正要研究一个数据问题之前通过建立一系列方方面面的可视化方法来建立我们对数据的直观理解是非常必须的特别是当数据量非常大或者数据维度非常高的时候比如一些时空高维数据如果可以建立一些一些交互式的可视化方法将会极大地帮助我们从各个层次角度理解数据的分布在这个方面我们实验室也做过一些非常不错的工作。还有一类比较重要的方法是探索性质的数据分析可以帮助我们更好地理解数据的分布情况。比如一种称为 MMD-critic 方法中可以帮助我们找到数据中一些具有代表性或者不具代表性的样本。使用 MMD-critic 从 Imagenet 数据集中学到的代表性样本和非代表性样本以两种狗为例建立本身具备可解释性的模型建立本身具备可解释性的模型是我个人觉得是最关键的一类可解释性方法同样也是一类要求和限定很高的方法具备「说人话」能力的可解释性模型大概可以分为以下几种1. 基于规则的方法Rule-based2. 基于单个特征的方法Per-feature-based3. 基于实例的方法Case-based4. 稀疏性方法Sparsity5. 单调性方法Monotonicity基于规则的方法比如我们提到的非常经典的决策树模型。这类模型中任何的一个决策都可以对应到一个逻辑规则表示。但当规则表示过多或者原始的特征本身就不是特别好解释的时候基于规则的方法有时候也不太适用。基于单个特征的方法主要是一些非常经典的线性模型比如线性回归、逻辑回归、广义线性回归、广义加性模型等这类模型可以说是现在可解释性最高的方法可能学习机器学习或计算机相关专业的朋友会认为线性回归是最基本最低级的模型但如果大家学过计量经济学就会发现大半本书都在讨论线性模型包括经济学及相关领域的论文其实大多数也都是使用线性回归作为方法来进行研究。这种非常经典的模型全世界每秒都会被用到大概 800 多万次。为什么大家这么青睐这个模型呢除了模型的结构比较简单之外更重要的是线性回归模型及其一些变种拥有非常 solid 的统计学基础统计学可以说是最看重可解释性的一门学科了上百年来无数数学家统计学家探讨了在各种不同情况下的模型的参数估计、参数修正、假设检验、边界条件等等问题目的就是为了使得在各种不同情况下都能使模型具有有非常好的可解释性如果大家有时间有兴趣的话除了学习机器学习深度模型模型之外还可以尽量多了解一些统计学的知识可能对一些问题会获得完全不一样的思考和理解。基于实例的方法主要是通过一些代表性的样本来解释聚类/分类结果的方法。比如下图所展示的贝叶斯实例模型Bayesian Case ModelBCM我们将样本分成三个组团可以分别找出每个组团中具有的代表性样例和重要的子空间。比如对于下面第一类聚类来说绿脸是具有代表性的样本而绿色、方块是具有代表性的特征子空间。使用 BCM 学到的分类及其对应的代表性样本和代表性特征子空间基于实例的方法的一些局限在于可能挑出来的样本不具有代表性或者人们可能会有过度泛化的倾向。基于稀疏性的方法主要是利用信息的稀疏性特质将模型尽可能地简化表示。比如如下图的一种图稀疏性的 LDA 方法根据层次性的单词信息形成了层次性的主题表达这样一些小的主题就可以被更泛化的主题所概括从而可以使我们更容易理解特定主题所代表的含义。Graph-based LDA 中的主题层次结构基于单调性的方法在很多机器学习问题中有一些输入和输出之间存在正相关/负相关关系如果在模型训练中我们可以找出这种单调性的关系就可以让模型具有更高的可解释性。比如医生对患特定疾病的概率的估计主要由一些跟该疾病相关联的高风险因素决定找出单调性关系就可以帮助我们识别这些高风险因素。在建模之后使用可解释性性方法作出解释建模后的可解释性方法主要是针对具有黑箱性质的深度学习模型而言的主要分为以下几类的工作1. 隐层分析方法2. 模拟/代理模型3. 敏感性分析方法这部分是我们接下来介绍和研究的重点因此主要放在后续的文章中进行讲解在本篇中不作过多介绍。除了对深度学习模型本身进行解释的方法之外也有一部分工作旨在建立本身具有可解释性的深度学习模型这和我们前面介绍通用的可解释性模型有区别也有联系也放到以后的文章中进行介绍。如果对本系列感兴趣或有疑问欢迎私信交流。关于 BIGSCity北航智慧城市兴趣组 BIGSCITY 是隶属于北京航空航天大学计算机学院的一个学术研究小组小组致力于研究机器学习与数据挖掘在城市科学、社会科学等领域的交叉应用技术。BIGSCITY 的研究兴趣包括城市计算时空数据挖掘机器学习可解释性以及 AI 在交通、健康、金融等领域的应用等。本专栏将介绍 BIGSCITY 的一些研究成果不定期更新与课题组研究相关的研究工作介绍以及介绍与 BIGSCITY 相关的一切有趣的内容。关于 BIGSCITY 的详细情况参见研究组主页https://www.bigscity.com/参考文献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]. 随着深度神经网络DNN变得越来越强大它们的复杂性也会增加。这种复杂性带来了新的挑战包括模型的可解释性。 可解释性对于构建更强大且能抵抗对抗攻击的模型至关重要。此外为一个新的未经过深入研究的领域设计模型具有挑战性而能够解释模型正在做什么可以帮助我们完成这个过程。 模特可解释性的重要性使研究人员开发出多种方法并在去年的NIPS会议上专门讨论了这个主题。这些方法包括 LIME通过局部线性逼近解释模型预测的方法https://arxiv.org/abs/1602.04938 激活最大化了解哪种输入模式产生最大的模型响应https://pdfs.semanticscholar.org/65d9/94fb778a8d9e0f632659fb33a082949a50d3.pdf特征可视化https://distill.pub/2017/feature-visualization/将DNN层嵌入到低维可解释的空间中http://www.interpretable-ml.org/nips2017workshop/papers/04.pdf采用认知心理学的方法https://deepmind.com/blog/cognitive-psychology/不确定性估计方法 在我们深入研究如何使用不确定性来调试和解释模型之前首先让我们了解为什么不确定性很重要。 为什么要关心不确定性 比较典型的例子是高风险应用。假设你正在建立一个模型帮助医生决定患者的首选治疗方案。在这种情况下我们不仅要关心模型的准确性还要关注模型对预测的确定程度。如果不确定性太高医生应该将此考虑在内。 自驾车也是一个例子。当模型不确定道路上是否有行人时我们可以使用此信息来减慢车速或触发警报以使驾驶员接手。 不确定性也可以帮助我们摆脱数据实例。如果模型没有使用类似于手边样本的实例进行训练那么如果它能够说“抱歉我不知道”可能会更好。这可以避免谷歌在将非洲裔美国人误认为大猩猩时这样的尴尬错误。这种错误有时是由于训练集不够多样化产生的。 最后一次使用不确定性也是本文的目标是从业者调试模型的工具。我们稍后会深入研究这个问题但首先让我们谈谈不同类型的不确定性。 不确定性类型 有不同类型的不确定性和建模每种都有用于不同的目的。 模型不确定性AKA认知不确定性假设有一个数据点想知道哪种线性模型最能解释您的数据。没有好的方法可以在图片中不同的线之间进行选择 – 我们需要更多数据 左侧没有足够的数据导致高度不确定性。右边给定更多数据不确定性降低 认知不确定性解释模型参数的不确定性。我们不确定哪种模型权重最好地描述数据但是给定更多数据我们的不确定性会降低。这种不确定性在高风险应用和处理小型稀疏数据时非常重要。 举个例子假设你想要建立一个能够获得动物图片的模型并预测该动物是否会尝试吃掉你。假设你用狮子和长颈鹿的图片训练模型现在它看到了一个僵尸。由于该模型没有在僵尸图片上进行过训练因此不确定性很高。这种不确定性就是模型的结果如果给出僵尸图片够多不确定性就会减少。 数据不确定性或者说偶发不确定性捕获观察中固有的噪声。有时世界本身就是随机的。在这种情况下获取更多数据对我们没有帮助因为噪声是数据固有的。 要理解这一点让我们继续思考食肉动物模型。我们的模型可以识别图像中有狮子因此你可能会被吃掉。但是如果狮子现在不饿了怎么办这种不确定性来自数据。另外两条看起来相同的蛇但其中一条是可能有毒另一条则没有。 偶发不确定性分为两种类型 同理不确定性所有输入的不确定性都是相同的。异方差的不确定性不确定性取决于目前的具体输入。例如对于预测图像“深度”的模型预测无特征墙比具有强消失线的图像更高的不确定性。 测量的不确定性另一个不确定性来源是测量本身。当测量结果有噪声时不确定性会增加。在动物示例中如果使用质量差的相机拍摄照片则可能会损害模型的置信度或者如果我们正逃离一只发狂的河马我们只能处理模糊的图像。 有噪声的标签通过监督学习我们使用标签来训练模型。如果标签有噪音则不确定性会增加。 有各种方法来模拟每种不确定性。这些我以后会介绍。现在让我们假设我们有一个黑盒模型它暴露了对预测的不确定性。我们如何使用它来调试模型 让我们思考Taboola中的一个模型它被用于预测用户点击内容推荐的可能性也称为CTRClick Through Rate。 使用不确定性来调试模型 该模型具有许多由嵌入向量表示的分类特征。它可能难以学习稀有值的通用嵌入。解决此问题的常用方法是使用特殊的OOVOut of Vocabulary嵌入。 想想某个物品的广告商。所有罕见的广告商都共享相同的OOV嵌入因此从模型的角度来看他们本质上就是一个广告商。这个OOV广告商有许多不同的商品每个商品都有不同的CTR。如果我们仅使用广告商作为CTR的预测我们就会得到OOV的高不确定性。 为了验证模型对OOV输出的高不确定性我们取一个验证集并转换所有广告商嵌入到OOV。接下来我们检查了转换前后的不确定性。正如预期的那样不确定性增加了。该模型能够了解到如果给予信息丰富的广告商它应该减少不确定性。 我们可以针对不同的特征重复这一点并寻找在被OOV嵌入替换时导致低不确定性的特征。这些特征要么是无信息性的要么是我们将它们提供给模型的方式并不理想。 我们甚至可以继续细分某些广告商在不同商品的CTR之间存在较高的可变性而另一些则有大致相同的CTR。我们希望该模型对第一类广告商具有更高的不确定性。因此比较有用的分析是关注广告商中不确定性和CTR变异性之间的相关性。如果相关性不是正的则意味着模型未能了解与每个广告商相关的不确定性。这个工具允许我们了解训练过程或模型架构中是否出现问题这表明我们应该进一步调试它。 我们可以执行类似的分析看看与特定项目相关的不确定性是否会减少了更多的我们展示它的次数即向更多用户或更多地方显示。同样我们希望模型变得更加确定如果不是 – 我们将进行调试 另一个很酷的例子是标题特征带有罕见词汇的独特标题应该会带来很高的模型不确定性。这是模型没有从那个领域所有可能标题看到很多例子的结果。然后我们使用其中一种标题对模型进行再训练看看是否降低了整体的不确定性。然后我们将使用其中一个标题重新训练模型并查看整个组的不确定性是否已降低。我们可以看到发生了什么 等一下……通过将模型暴露给某些标题它能够变得更好对一些新标题更加确定。也许我们可以用它来某种方式鼓励探索新的物品是的我们可以我们后续会出