一、深度学习为什么需要可解释性?(动机)
-
模型改进:理解指标特征、分类、预测,进而理解为什么一个模型会做出这样的决定、什么特征在决定中起最重要作用,能让我们判断模型是否符合常理。一个深度的神经网络来学习区分狼和哈士奇的图像。模型使用大量图像训练,并使用另外的一些图像进行测试。90%的图像被准确预测,这值得我们高兴。但是在没有计算解释函数(explainer function)时,我们不知道该模型主要基于背景:狼图像通常有一个下雪的背景,而哈士奇的图像很少有。所以我们不知不觉地做了一个雪地探测器,如果只看准确率这样的指标,我们就不会看到这一点。知道了模型是如何使用特征进行预测的,我们就能直觉地判断我们的模型是否抓住了有意义的特征,模型是或否能泛化到其他样本的预测上。
-
模型可信性与透明度:理解机器学习模型在提高模型可信度和提供审视预测结果透明度上是非常必要的,让黑箱模型来决定人们的生活是不现实的,比如贷款和监狱刑法。另一个对机器学习结果可信度提出质疑的领域是药品,模型结果会直接决定病人的生与死。机器学习模型在区分恶性肿瘤和不同类型的良性肿瘤方面是非常准确的,但是我们依然需要专家对诊断结果进行解释,解释为什么一个机器学习模型将某个患者的肿瘤归类为良性或恶性将大大帮助医生信任和使用机器学习模型来支持他们工作。长久来看,更好地理解机器学习模型可以节省大量时间、防止收入损失。如果一个模型没有做出合理的决定,在应用这个模型并造成不良影响之前,我们就可以发现这一点。
-
识别和防止偏差:方差和偏差是机器学习中广泛讨论的话题。有偏差的模型经常由有偏见的事实导致,如果数据包含微妙的偏差,模型就会学习下来并认为拟合很好。一个有名的例子是,用机器学习模型来为囚犯建议定罪量刑,这显然反映了司法体系在种族不平等上的内在偏差。其他例子比如用于招聘的机器学习模型,揭示了在特定职位上的性别偏差,比如男性软件工程师和女性护士。机器学习模型在我们生活的各个层面上都是强有力的工具,而且它也会变得越来越流行。所以作为数据科学家和决策制定者来说,理解我们训练和发布的模型如何做出决策,让我们可以事先预防偏差的增大以及消除他们,是我们的责任。
二、深度学习需要解释什么?(深度学习可解释性是什么?)
模型解释作为一个概念仍然主要是理论和主观的。可解释性的基本概念是在我们需要了解或解决一件事情的时候,我们可以获得我们所需要的足够的可以理解的信息。任何机器学习模型的核心都有一个响应函数,它试图映射和解释独立(输入)自变量和(目标或响应)因变量之间的关系和模式。当模型预测或寻找见解时,需要做出某些决定和选择。模型解释试图理解和解释响应函数所做出的这些决定,即what,why以及how。模型解释的关键是透明度,质疑能力以及人类理解模型决策的难易程度。
- 是什么驱动了模型的预测?我们应该能够查询我们的模型并找出潜在的特征交互,以了解哪些特征在模型的决策策略中可能是重要的。这确保了模型的公平性。
- 为什么模型会做出某个决定?我们还应该能够验证并证明为什么某些关键特征在预测期间驱动模型所做出的某些决策时负有责任。这确保了模型的可靠性。
- 我们如何信任模型预测?我们应该能够评估和验证任何数据点以及模型如何对其进行决策。对于模型按预期工作的关键利益相关者而言,这应该是可证明且易于理解的。这确保了模型的透明度。
三、可解释性的分类
1、内在还是事后?
内在可解释性就是利用机器学习模型,该模型本质上是可解释的(如线性模型,参数模型或基于树的模型)。事后可解释性意味着选择和训练黑匣子模型(集合方法或神经网络)并在训练后应用可解释性方法(特征重要性,部分依赖性图)。我们将更多地关注我们系列文章中的事后模型可解释方法。
2、模型特定或模型不可知?
特定于模型的解释工具非常特定于内在模型解释方法,这些方法完全依赖于每个模型的功能和特征。这可以是系数,p值,与回归模型有关的AIC分数,来自决策树的规则等等。与模型无关的工具与事后方法更相关,可用于任何机器学习模型。这些不可知方法通常通过分析(和输入的扰动)特征输入和输出对来操作。根据定义,这些方法无法访问任何模型内部,如权重,约束或假设。
3、本地还是全局?
- 全局可解释:就是试图理解“模型如何进行预测?”和“模型的子集如何影响模型决策?”。要立即理解和解释整个模型,我们需要全局可解释性。全局可解释性是指能够基于完整数据集上的依赖(响应)变量和独立(预测变量)特征之间的条件交互来解释和理解模型决策。尝试理解特征交互和重要性始终是理解全球解释的一个很好的一步。当然,在尝试分析交互时,在超过两维或三维之后可视化特征变得非常困难。因此,经常查看可能影响全局知识模型预测的模块化部分和特征子集会有所帮助。全局解释需要完整的模型结构,假设和约束知识。
- 局部可解释:试图理解“为什么模型为单个实例做出具体决策?”和“为什么模型为一组实例做出具体决策?”。对于本地可解释性,我们不关心模型的固有结构或假设,我们将其视为黑盒子。为了理解单个数据点的预测决策,我们专注于该数据点并查看该点周围的特征空间中的局部子区域,并尝试基于该局部区域理解该点的模型决策。本地数据分布和特征空间可能表现完全不同,并提供更准确的解释而不是全局解释。局部可解释模型 - 不可知解释(LIME)框架是一种很好的方法,可用于模型不可知的局部解释。我们可以结合使用全局和局部解释来解释一组实例的模型决策。
四、可解释性的应用
-
调试模型用:一般的真实业务场景会有很多不可信赖的,没有组织好的脏数据。你在预处理数据时就有可能加进来了潜在的错误,或者不小心泄露了预测目标的信息等,考虑各种潜在的灾难性后果,debug的思路就尤其重要了。当你遇到了用现有业务知识无法解释的数据的时候,了解模型预测的模式,可以帮助你快速定位问题。
-
指导工程师做特征工程:特征工程通常是提升模型准确率最有效的方法。特征工程通常涉及到到反复的操作原始数据(或者之前的简单特征),用不同的方法来得到新的特征。有时候你完成FE的过程只用到了自己的直觉。这其实还不够,当你有上百个原始特征的时候,或者当你缺乏业务背景知识的时候,你将会需要更多的指导方向。如何创造出这样优秀的特征呢?如何找到最重要的特征的方法,并且可以发现两个特别相关的特征,当面对越来越多的特征的时候,这些方法就会很重要啦。
-
指导数据采集的方向:对于网上下载的数据集你完全控制不了。不过很多公司和机构用数据科学来指导他们从更多方面收集数据。一般来说,收集新数据很可能花费比较高或者不是很容易,所以大家很想要知道哪些数据是值得收集的。基于模型的洞察力分析可以教你很好的理解已有的特征,这将会帮助你推断什么样子的新特征是有用的。
-
指导人们做决策:一些决策是模型自动做出来的,虽然亚马逊不会用人工来决定展示给你网页上的商品,但是很多重要的决策是由人来做出的,而对于这些决定,模型的洞察力会比模型的预测结果更有价值。
-
建立模型和人之间的信任:很多人在做重要决策的时候不会轻易的相信模型,除非他们验证过模型的一些基本特性,这当然是合理的。实际上,把模型的可解释性展示出来,如果可以匹配上人们对问题的理解,那么这将会建立起大家对模型的信任,即使是在那些没有数据科学知识的人群中。
四、机器学习模型演进与可解释性
最早的人工智能系统,如线性模型,其实是很容易解释的。因为线性模型本身涉及的权重很少,而且非常直观,每个权重的大小就意味着对应的特征可以对最后的结果产生多大的贡献。
但是过去几年我们见证了不透明决策系统的兴起,比如深度神经网络(DNNs)。深度学习模型(如 RNN、BERT)的成功源于高效的学习算法及其巨大的参数空间的结合,一个参数空间可能由数百层和数百万个参数组成,这使得 DNNs 被认为是复杂的黑盒模型。随着算力越来越强,算法模型变得越来越复杂、体积也越来越大,我们已经很难解释这些模型了,虽然它的能力确实很强,能够帮我们做越来越多的事情,甚至在很多特定任务上表现超过人类,但是我们越来越无法理解这些模型了,这是一个很棘手的问题。所谓的可解释性,就是希望 寻求对模型工作机理的直接理解,打破人工智能的黑盒子。
五、可解释人工智能技术研究现状
六、基于数据的可解释性
这一类方法其实主要涉及一些数据预处理或数据展示的方法。机器学习解决的是从数据中发现知识和规律的问题,如果我们对想要处理的数据特征所知甚少,指望对所要解决的问题本身有很好的理解是不现实的。因此,在建模之前的可解释性方法的关键在于帮助我们迅速而全面地了解数据分布的特征,从而帮助我们考虑在建模过程中可能面临的问题并选择一种合理的模型来逼近问题所能达到的最优解。
1、数据可视化方法
这是一类非常重要的建模前可解释性方法。大多数时候,我们在真正要研究一个数据问题之前,通过建立一系列方方面面的可视化方法来建立我们对数据的直观理解是非常必须的,特别是当数据量非常大或者数据维度非常高的时候,比如一些时空高维数据,如果可以建立一些一些交互式的可视化方法将会极大地帮助我们从各个层次角度理解数据的分布。
2、样本数据探索方法
一类比较重要的方法是探索性质的数据分析,可以帮助我们更好地理解数据的分布情况。比如一种称为 MMD-critic 方法中,可以帮助我们找到数据中一些具有代表性或者不具代表性的样本。
3、特征重要性探索
特征重要性是解释模型的一种基本方法,比较常用的如PCA、SAM等,对应的是图中的可解释性特征工程。(特征工程算是一个如何展示和表现数据的问题,在实际工作中需要把数据以一种良好的方式展现出来,使得能够使用各种各样的机器学习模型来得到更好的效果。如何从原始数据中去除不佳的数据,展示合适的数据就成为了特征工程的关键问题)
七、基于模型内在的可解释性(建立本身具备可解释性的模型)
何为模型自身的可解释性?即把模型本身变成一个可解释的模型,它自己能说话,不只是给出单纯的答案,还能给出得到这个答案的理由,可以让研究人员对模型本身有更多的把握。其中的两个典型方法,Explanation Generation 和 Prototype Network,前者是让模型自己产生可解释的输出,后者则是让模型的思考方式跟人类更接近。
1、Explanation Generation
典型的例子是 VQA explanation,即在训练模型的同时训练一个语言的解释器。我们向模型提问,并给模型提供一些多模态的输入(比如图像或视频),模型给出输出结果的同时,让模型对给出的输出结果做进一步的解释,以帮助我们更好地了解模型是否真的理解了我们的意思,而不是怀疑模型恰好“猜”对了答案。
VQA explanation 要求模型不仅输出 Answer,还要输出一个 Explanation,比如模型给出这么一个解释 Because the man is riding a wave on a surfboard,因为这个人站在冲浪板上冲浪,所以这张图片上的运动是 Surfing。这跟我们自身对于这个图片的理解就是吻合的,同时模型还能把具体的实体跟图像里面的像素区域做高亮显示,说明它确实理解了图像中的人和冲浪板,并把这些实体结合起来,以及连贯整个行为之后推理出来说,这个图片上的运动应该理解成 Surfing。通过应用 VQA explanation 的方法,我们可以将模型变得更可靠,即使模型推理错了,我们也能知道为什么出错。
2、Prototype Network
Prototype Network 的思路是,在模型设计的时候,就让模型的构造出的数据处理加工的方式和人类的思考方式相似,这样它产生结果之后,我们反过来去看这个模型的工作方式,就能很好地理解为什么给出了这么一个结果。
我们以 《This Looks Like That: Deep Learning for Interpretable Image Recognition》 这项工作为例,来简单地解释一下实现的过程。这篇论文中核心的任务目标是对鸟类图像做分类。那么人是怎么对鸟类做分类的呢?我们会有一些特定的方法论,比如要看它的嘴是什么样子的,它的爪子是什么样子的,它的羽毛是什么样子的,它的翅膀是什么样子的,我们通过把这几个特征组合起来去判断这属于什么鸟类。论文提出了原型的概念,把对图像的判断机制拆解为人类思维方式中的各种原子能力,根据人判断的机理来分类图像。在设计模型的时候,让它用跟人类思考类似的方式,通过分解图像得到不同的原型部分,比如先对鸟的嘴、爪子、羽毛逐一判断,再通过组成这些信息最终得到正确的分类。
原文:https://arxiv.org/abs/1806.10574
八、基于结果的可解释性
它指的是模型已经是训练好的成品了,事后尝试解释为什么这个模型是这样工作的。这个流派的思路是,我们仍然把深度模型看成是一个黑盒子,不去打开它,或者说不会去显式地做拆解,而是通过假设和检验去观察这个模型,再去推测这个模型可能是怎么工作的。通过不断地假设检验给出结论,这个结论会慢慢变得越来越符合模型实际的工作方式,通过不断地逼近,最终给出一个合理的解释。这种做法的好处是跟模型无关,适合于任意模型。
1、LIME 算法(代理模型的方法(surrogate model))
LIME 算法的思路可以简化理解成:尝试用一个比较容易解释的简单的模型(比如线性模型)去逼近、拟合原来比较复杂且不好理解的深度模型,如果能产生一个跟原来的复杂模型结果近似的模型,那这个简单模型的表征状态,就可以用来解释原来的模型。当然 LIME 算法不会把整个模型进行线性的降维,因为这样做不现实,它是假设局部可线性化,把一个模型做无限的拆解,拆解到每个局部点,再对每个点用一个局部的线性模型或简单模型进行近似,一旦局部跟一个简单的线性模型之间产生了近似的拟合关系,就可以用简单模型去解释这个局部,局部得到解释之后,整体也就可以解释了。
2、SHAP算法(代理模型的方法(surrogate model))
Shaply值由美国洛杉矶加州大学教授罗伊德·夏普利(Lloyd Shapley)提出,用于解决合作博弈的贡献和收益分配问题。N人合作中,单个成员的贡献不一样,收益分配也应该不一样。理想的分配方式是:贡献=收益,一个特征的shapley value是该特征在所有的特征序列中的平均边际贡献。基于Shap值的模型解释是一种和模型无关的方法。如图,模型预测和Shap值解释是两个并行流程,Shap对模型预测的结果进行解释。