「可解释性机器学习系列」2. 可解释性原理介绍(一)
第一时间获取好内容
来源|「Interpretable Machine Learning:A Guide for Making Black Box Models Explainable」
作者 | Christoph Molnar
译者 | 兰宁邪
校对 | gongyouliu
编辑 | auroral-L
可解释性没有严格的数学定义。我更倾向于2017年Miller提出的一个非数学的定义:可解释性是人们可以理解决策原因的程度。另一个定义是:可解释性是人类可以一致地预测模型结果的程度。机器学习模型的可解释性越高,则人们越容易理解做出某些决定或预测的原因。如果一个模型的决策比另一个模型的决策更容易理解,那么第一个模型比另一个模型的可解释性更好。我将交替使用可解释性(interpretable)和可说明(explainable)这两个术语。与2017年Miller提出的理论一样,我认为区分术语可解释性、可说明和解释(explanation)是有意义的。我将使用“解释”来解释单个预测。请参阅有关“可解释性”的章节,了解什么是我们认为的好的解释。
可解释的重要性
如果机器学习模型运行良好, 我们为什么不能够信任该模型, 而不去关注它做出决策的原因呢? “问题在于, 对于像分类准确度之类的单一指标,是大多数现实世界中无法完整描述出来的。” (2017年Doshi-Velez和Kim 提出)
本节我们将深入探讨可解释性为何如此重要。当涉及到预测建模时,你必须进行权衡:你是否只想知道预测结果是什么?例如,客户流失的可能性或某种药物对患者的效果如何。或者你想知道为什么做这种预测,或许为了获得更好的可解释性,你能接受预测准确度下降? 在一些情况下,你其实并不在乎做出这个决定的具体原因,只要知道测试数据集的预测效果良好就足够了。但是在另一些情况,了解“为什么”可以帮助你更好地了解问题、数据以及模型可能失败的原因。有些模型可能不需要可解释性, 因为它们是在低风险的环境中使用的,并且即使模型出错也不会造成严重后果(例如电影推荐系统),或者该方法已经得到广泛研究和评估(例如光学字符识别)。对可解释性的需求源于问题形式的不完整性(2017年Doshi-Velez和Kim 提出),这意味着对于某些问题或任务,仅凭预测结果是不够的。该模型还必须解释进行预测的原因,因为正确的预测仅仅能够解决你最初的部分问题。下文呈现了对可解释性和解释需求的主要原因(2017年Doshi-Velez和Kim提出,2017年Miller提出)。
人类的好奇心和学习能力:人类具有一种心理环境模型,当发生意外情况时,会对模型进行更新。它是通过查找意外事件的可解释性,来执行此更新。例如,一个人突然感到不适,并问道:“为什么我会感到不舒服呢?”。他得知每次吃完这些红色浆果,都会生病。他会更新自己的思维模式,并确定是浆果导致了疾病,因此日后他应该避免食用。在研究中,使用不透明的机器学习模型时,如果模型仅给出预测结果而没有任何解释,那么科学发现任然是完全隐藏起来的。为了促进学习,并满足人们对机器如何进行预测的好奇心,可解释性变得至关重要。当然,人类无须对发生的一切进行解释。对于大多数人来说, 他们不了解机器的工作原理是没问题的,但我们对于突发事件会感到好奇,举例而言:为什么我的计算机会意外关机?
在这个世界上,与学习息息相关的是人们对寻找事情意义的渴望。我们希望协调知识结构要素之间的矛盾。一个人也许会问:“为什么我的狗从来没有咬过我,这次突然咬我?”狗的过去行为表现与近期发生的咬伤事件之间存在矛盾。兽医的解释化解了狗主人内心的矛盾:“狗过去承受着压力,才会导致这次的咬伤事故。”机器的决定对人的生活影响越大,对机器行为的解释就越重要。如果机器学习模型拒绝贷款申请,这件事对于申请人来说也许是完全出乎意料的。他们只能通过某种解释来理解期望与现实之间的矛盾。这些解释实际上不一定要完全解释这种情况,而是应该解释一个主要原因。另一个例子是算法产品推荐。就我个人而言,我一直在想,系统为什么向我推荐某些产品或电影呢。情况一般很清楚:因为我最近购买了一台洗衣机,所以互联网上的广告会不停地向我推荐类似商品。我知道在接下来的日子里,我将被洗衣机的广告环绕着。假如我的购物车中已经有冬帽,系统向我推荐手套是很有意义的。系统算法推荐某个电影,因为和我有相同电影喜好的其他人也喜欢这部电影。互联网公司越来越多地在推荐系统中添加可解释性。较好的例子是亚马逊产品推荐,该推荐系统基于经常一起购买的产品组合来进行推荐:
从亚马逊购买一些涂料后系统推荐的产品组合 (https://www.amazon.com/Colore-Acrylic-Paint- Set-12/dp/B014UMGA5W/).于2012年12月5日访问。
大多数科学学科中,从定性方法到定量方法(例如社会学,心理学)以及到机器学习(生物学,基因组学),都发生了变化。科学的目的是获取知识,但是使用大数据集和黑盒机器学习模型可以解决许多问题。模型本身成为知识的来源,而不是数据。可解释性使得从模型中获取知识成为可能。
机器学习模型解决实际任务前,需要进行安全评估和测试的。想象一下,自动驾驶汽车能够基于深度学习系统,自动检测到骑自行车的人。你想要完全确保系统学到的抽象知识是100%没有错误的,因为如果出错结果会很糟糕。一种可行的解释是,系统需要学习的最重要的特征是识别自行车的两个车轮,这个解释可以帮助你考虑一些特殊情况,比如侧自行车上的侧包挡住了部分车轮。
有时,机器学习模型可能会从训练数据中产生偏差,这会使你的机器学习模型变成歧视受保护群体的种族主义者。可解释性是一种检测机器学习模型中是否存在偏差的有用调试工具。为自动批准或拒绝信用贷款申请而训练的机器学习模型可能会对少数情况区别对待。你的主要目标是向那些具有偿还能力的贷款申请人提供贷款。对于这类情况,问题在于你不仅要最大程度地减少贷款违约,而且不应该基于该地区的人口统计资料而区别对待。这是问题制定中的一个附加约束(以低风险和合规的方式发放贷款),但是机器学习模型所优化的损失函数并未涵盖该约束。
将机器和算法融入到我们的日常生活中,要求机器和算法应当具备可解释性以提高社会认可度。人们将信念、欲望、意图等归因于最终目的。在一项著名的实验中,1944年海德和西梅尔向参与者们展示了包含各种图形的视频,其中一个圆形打开了一个“门”,进入了一个矩形的“房间”。参与者们描述这些形状的动作,就像描述人类行为者的动作一样,在形状中融入了他们的意图、情感和个性特质。机器人就是一个很好的例子,例如我的吸尘器命名为“道奇”。如果道奇被卡住,我想:“道奇想要进行清洁工作,但因为被卡住而向我寻求帮助。”后来,当道奇完成清洁工作并搜寻充电桩去充电的时候,我认为:“道奇想要去充电,并打算寻找充电桩。”我将这些行为归因于人格特质:“道奇有点笨,但这也是一种可爱的方式。” 这些仅仅代表我的想法,特别是当我发现道奇在尽职尽责地给房子吸尘的同时,撞倒了植物。能够解释其预测结果的机器或算法将获得更多认可。另请参阅关于可解释性章节,该章认为解释是一个社会过程。
可解释性用于管理社交互动。通过创建某种事物的共同含义,解释者可以影响被解释者的行为、情感和信念。为了能够让机器与我们互动,机器也许需要塑造我们的情感和信念。机器必须“说服”我们,以便它们可以实现预期目标。如果我的机器人吸尘器没有在某种程度上解释其行为,我将不能完全接受它。真空吸尘器通过解释它被卡住, 而不是简单地无原因停下来,形成了一个可以接受的理由,例如再次卡在浴室地毯上的“事故”。有趣的是,可解释性机器的目标(即建立信任)和接收者的目标(即理解预测或行为)之间可能不一致。也许道奇被卡住的完整解释是电池电量很低,或者是一个轮子不能正常工作,或者存在一个bug使机器人一遍又一遍地到达同一地点,即使在运动过程中有障碍。这些原因或其他原因导致机器人被卡住,这仅仅说明在行驶途中存在障碍,但这足以让我相信它的行为,并能够理解该事故的含义。顺便说一句,道奇再次卡在了浴室。每次让道奇工作之前,我们都必须移开地毯。
道奇,我们的吸尘器,被卡住了。作为对事故的解释,道奇告诉我们,它必须在平坦的表面上工作。
机器学习模型只能在具备可以解释性时,才可以进行调试和检查。即使在类似于电影推荐之类的低风险场景中,可解释性在研发阶段以及完成部署后都很有价值。部署后, 当机器学习模型用于产品的过程中,可能会出错。对错误预测的解释,有助于理解错误发生的原因。它为如何修复系统提供了指导。例如在哈士奇和狼分类器的示例中,该分类器将一些哈士奇犬误分类为狼。使用可解释性机器学习方法, 你会发现分类错误是由于图像上的积雪引起的。分类器学会了使用雪作为将图像分类为“狼”的特征,这在训练数据集中将狼与哈士奇分开可能是有道理的,但在现实世界中却可能会出错。
如果你可以确保机器学习模型可以解释决策, 那么还可以轻易地对如下特性进行检查(2017年Doshi-Velez和Kim提出):
· 公平:确保预测结果没有偏见,并且不会隐式或显式对受保护的群体区别对待。一种可解释性的模型可以告诉你,为什么它决定某个人不应该获得贷款。并且使人们更容易地判断,该决定是否基于学到的人口统计学(例如种族)偏见。
· 隐私:确保数据中的敏感信息受到保护。
· 可靠性或鲁棒性:确保输入中的微小变化不会导致预测的较大变化。
· 因果关系:检查是否只选择了因果关系。
· 信任:与黑盒模型相比,人们更容易信任能够解释其决策的系统。
什么时候不需要可解释性
在以下场景,我们不需要甚至不想要机器学习模型的可解释性。
如果模型不具有重大影响,就不需要可解释性。想象一下,一个名叫迈克的人正在参与一个机器学习方向的项目,根据脸书上的数据预测他朋友下个假期的去向。迈克只是想通过有根据的猜想,猜中朋友们假期的去向,从而让朋友们感到惊讶。即使模型是错误的,也不会出现什么问题(最糟糕的结果是让迈克有点尴尬),就算迈克无法解释模型的输出,也没有问题。在这种情况下,即使不解释也没事。如果迈克开始基于猜测这些度假胜地来开展业务,情况将有所改变。如果该模型是错误的,也许会导致企业蒙受损失。或者模型由于学习到的种族偏见,那么该模型对某些人而言可能会变得更糟。该模型一旦产生重大影响,无论是在财务上还是社会上,可解释性就变得很重要。
对问题进行深入研究后,就不需要解释性了。如果对一些应用场景进行充分研究,那么我们就具备足够多的实践经验,并且随着时间的推移,该模型的很多问题可能都已得到解决了。一个很好的例子是用于光学字符识别的机器学习模型,该模型处理信封中的图像并提取地址。对于这个模型,业界有多年的实践经验,并且确信该模型可以正常工作。除此之外,我们对从当前任务中获得更多的见解并不是真正感兴趣。
也许,可解释性能够让人们或程序操纵(机器学习)系统。对于用户欺诈问题,是由于模型创建者与模型使用者的目标不匹配造成的。银行希望借助征信系统仅仅向具有贷款偿还能力的申请人提供贷款,但对于申请者来说,即使银行不想给为他提供一笔贷款,申请人也希望获得贷款。这种目标之间的不匹配从某种程度上来说激励了申请者, 这些申请者与系统进行斗争与博弈,以增加其获得贷款的机会。如果申请人知道拥有大于两张信用卡,会对他的征信分数产生负面影响,但是他只需要退还第三张信用卡以提高他的分数,并在批准贷款后重新办理一张新卡。虽然他的分数有所提高,但实际偿还贷款的可能性没有改变。只有当输入看起来像是因果特征(可以看成代理),但并不真正导致结果时,系统才可能被申请者欺骗。应当尽可能的避免使用代理特征来构建模型, 因为它们会导致模型被申请人钻空子。例如,谷歌开发了一个名为谷歌流感趋势的系统来预测流感的爆发。该系统建立了谷歌搜索与流感爆发之间的相关关系,但是效果不佳。当搜索查询的分布发生了变化时,谷歌流感趋势系统可能会漏掉预测许多流感爆发。但是,谷歌搜索是不会引起流感的。当人们搜索诸如“发烧”之类的症状时,这仅仅是与实际流感爆发的关联。理想情况下,模型将仅仅使用因果特征,因为它们不具有被操纵性。
可解释性方法分类
可以根据各类标准对机器学习可解释性的方法进行分类。
内在的(intrinsic)还是事后的(post hoc)?
此标准区分是通过限制机器学习模型的复杂性(内在的)或者利用一些方法分析训练好的模型(事后的)来实现可解释性。内在的可解释性是指由于模型简单的结构而被认为是可解释的机器学习模型,例如短决策树或稀疏线性模型。事后的可解释性是指模型训练后利用可解释方法进行解释, 举例而言,排列特征重要性(利用重要的特征进行解释)是事后的可解释性方法。事后方法也可以应用于内在的可解释性的模型。例如,可以为决策树计算特征重要性排序。本书各章的内容按照内在的可解释性模型与事后(与模型无关)可解释性方法之间的差异点来编排。
根据可解释性方法的结果来分。可以粗略地将各种可解释性方法按照结果分类如下。
· 特征概要统计:许多可解释性方法对每个特征进行概要统计。一些方法为每个特征返回一个数字(例如要素重要性)或者返回更复杂的结果(比如,成对交叉特征强度,即每一对特征对用一个数值来描述)。
· 特征概要可视化:大多数特征概要统计也是能可视化的。实际上,某些特征概要也只有进行可视化才有意义,用表格数据描述是不恰当的,特征的部分依赖就属于这种情况。特征的部分依赖图是一条曲线,在这条曲线上描绘该特征和预测结果的平均值。呈现部分依赖的最佳方法是绘制曲线,而不是画出坐标点。
· 模型内在组件(例如,学习到的权重):内在的可解释性模型的解释属于此类。例如线性模型中的权重或决策树的树结构(用于分支的特征和阈值)。例如线性模型中,模型内部特征与概要统计量之间的界限是模糊的,因为特征的权重既是模型内部的属性,也是概要统计量。输出模型内部属性的另一种方法是在卷积神经网络中学习到的特征检测器的可视化。根据定义,输出模型内部属性的可解释性方法是与模型有关的,即依赖于该模型(请参阅下一个标准)。
· 数据点:此类别包括所有的通过返回数据点(已经存在或新创建的)让模型具有可解释性的方法。一种方法称为反事实解释。为了解释数据实例的预测,该方法通过改变一些特征来找到相似的数据点,这些特征的变化导致预测结果做相对应的改变(例如,预测类的反转,比如原来预测是0,现在是1)。另一个例子是识别预测类的原型。为了有所用处,输出新数据点的可解释性方法要求可以解释数据点本身。这对于图像和文本数据效果很好,但是对于具有数百个特征的表格数据则没有太大用处。
· 内在的可解释性模型:解释黑盒模型的一种方案是使用可解释性模型对它们进行全局或局部近似。可解释性模型本身可以通过查看内部模型参数或特征概要统计信息来进行解释。
模型相关的还是模型无关的?模型相关的解释工具仅限于特定的模型类。线性模型中回归权重的可解释性是模型相关的解释,因为根据定义,内在的可解释性模型的解释是模型相关的。仅适用于神经网络解释的工具是模型相关的。与模型无关的工具可以在任何机器学习模型上使用,并且在模型训练后才能使用(事后)。这些模型无关的方法通常通过分析特征输入和结果输出之间的关系获得解释。根据定义,这些方法无法不需要利用模型内部信息,例如权重或模型结构信息。
局部的还是整体的?可解释性方法能够解释单个预测还是整个模型行为?亦或是范围介于两者之间?阅读下一部分中关于范围标准的更多信息。
可解释性范围
算法训练模型产生预测结果,可以根据透明度或可解释性来评估每个步骤。
算法透明度
该算法如何创建模型?
算法透明度是关于算法如何从数据中构建模型,以及可以学习到的各种关系。如果使用卷积神经网络对图像进行分类,那么可以解释该算法是通过在最低层对图像的边缘进行检测和过滤而进行学习的。这是对算法工作原理的一种理解,但不是针对最终习得的模型的理解,也不是针对如何进行个体预测的理解。算法透明度仅仅需要算法知识,而无需了解数据或习得的模型。本书侧重于模型的可解释性,而不是算法的透明度。线性模型的最小二乘法等算法已得到很好的研究和理解,这类算法的特点是具有较高的透明度。深度学习方法(即通过在具有数以百万计的权重的网络中计算梯度)了解的较少,因此它内部工作机制是目前研究的重点,这类算法不太透明。
全局整体模型可解释性
训练好的模型如何做出预测?
如果你可以一次性理解整个模型,那么可以将模型描述为可解释性的(2016年Lipton提出)。为解释全局模型的输出,你需要利用训练好的模型、算法知识和数据。这个级别的可解释性是基于对模型特征和每个习得的组件(如权重,或其他参数和结构)的整体了解,了解模型如何做出决策。哪些特征是重要的?它们之间发生了什么样的相互作用?全局模型的可解释性, 有助于根据特征了解预测结果的分布。在实践中很难实现全局模型的可解释性。任何超出一定参数或权重的模型,都不太可能适合普通人的短期记忆。你可能无法想象具有5个特征的线性模型,因为这将意味着在脑海中绘制5维空间的超平面。对于人类来说,任何超过3维的特征空间都将是无法理解的。人们通常尝试理解模型的时候,只考虑模型的一部分,例如线性模型中的权重。
模块化级别的全局模型可解释性
模型的各个部分是怎样影响预测结果的?
一个拥有数百个特征的贝叶斯模型对于我们来说太大了,我们根本无法在大脑中记住。即使我们设法记住所有的权重,也无法快速预测新的数据点。除此之外,你还需要将所有特征的联合分布记住,才能用来估计每个特征的重要性以及这些特征如何影响预测结果,这是一个不可能完成的任务。但是你可以轻松理解单个权重。d尽管我们通常无法获得全局模型的可解释性,但是在模块化级别上理解一些模型是很有可能的。并非所有模型都可以在参数级别上解释。对于线性模型,可解释性的部分是权重,对于树结构,可解释性的部分是分支(选定特征及分支点)和叶子节点预测。线性模型看起来好像可以在模块级别上完美解释,但是单个权重的解释与其他权重是紧密相连的。对单个权重的解释总是附带一定条件的,也就是说其他输入特征的值需要保持不变,而在许多实际应用中却并非如此。利用房屋大小和房间数量作为特征来预测房屋价值的线性模型,可能房间特征具有负权重。之所以会发生这种情况,是因为已经有高度相关的房屋面积特征了。在人们偏爱较大房间的市场中,如果房屋总面积相同,那么房间数量较少的房子可能会比房间数量更多的房子更有价值。权重仅仅在模型中与其他特征一起考虑才更有意义。但是,线性模型中的权重仍然比深度神经网络的权重更好解释和理解。
单个预测的局部可解释性
模型为什么会对实例做出某种预测?
你可以聚焦单个实例,并检查模型对该输入的预测结果及这样预测的原因。如果你查看单个预测,那么原本复杂的模型的行为可能会更加一目了然。在局部上,预测结果可能仅仅取决于线性或单调性的一些特征,而不是复杂的依赖关系。例如,房屋的价值与房屋的大小具有分线性关系。但是,如果仅分析一栋具体的100平方米的房屋,那么对于该数据,模型预测结果(即房屋价值)可能会与房屋大小线性相关。你可以通过模拟增大或减小10平方米时的预测价格变化,来找出答案。因此,局部解释或许比全局解释更准确。在模型无关的解释方法部分,本书介绍了一些方法让单个预测更具有可解释性。
一组预测的局部可解释性
模型为什么会对一组实例做出特定的预测?
可以使用全局模型的可解释性方法(在模块级别上)或单个实例的可解释性方法来解释多个实例的模型预测结果。可以将一组实例视为完整的数据集,然后利用全局方法对这一组实例进行解释。可以在每个实例上使用单个实例的可解释性方法,然后罗列出或汇总单个实例的解释。
对可解释性进行评估
关于机器学习中的可解释性,还没有达成真正的共识。现有也不清楚怎么评估可解释性。但是人们对此进行了一些初步研究,并尝试制定一些评估方法,如下面所述。
2017年Doshi-Velez和Kim从三个主要层次来评估可解释性:
应用级别评估(实际任务):将可解释性融入产品中,并由最终用户进行测试。想象一下带有机器学习功能的骨折检测软件,该软件可以定位和标记X射线中的裂缝。在应用程序级别,放射科医生会直接测试骨折检测软件以评估模型。这需要良好的实验设置,并且需要了解如何评估质量。人类对同样的决策进行解释的质量总是一个很好的对比基准。
人员级别评估(简单任务):是简化的应用级别评估。不同之处在于,这些实验不是由领域专家进行的,而是由非专业人员进行的。这使实验成本更低(领域专家,特别是放射科医生成本会很高),同时更容易找到更多这样的测试人员。比如,向用户显示不同的解释方案让用户选择最佳的一个,就是这个层面的评估。
功能级别评估(代理任务):是不需要人员参与的。当所使用的模型类别已经被其他人(在人员级别)评估过了,这种方法效果最好。例如,最终用户也许是了解决策树的,在这种情况下,决策树的深度可以作为解释的质量,较短的决策树将获得更好的可解释性得分。加上这样的约束条件可能更有意义:与较大的决策树相比,决策树的预测质量保持良好并不会降低太多。
下一章重点介绍在功能级别上对单个实例预测的可解释性进行评估。我们将在评估中考虑可解释性的相关性质是什么。