能相信模型的预测吗?LIME:一种解释模型预测的方法

人们是否应该相信机器学习模型的预测?本文主要讲述了一种解释模型预测的方法,能让你理解模型预测背后的基本原理,有助于用户决定什么时候可以信任或不可以信任模型的预测

机器学习是近来许多科学和技术进步的核心。随着计算机在围棋等比赛中对人类的超越,许多人开始疑问机器能否成为更好的司机或者说更好的医生。


在机器学习的许多应用中,用户常常被要求信任帮助他们进行决策的模型(model)。一位医生肯定不能只是因为「模型这样说」就给病人动手术。甚至从 Netflix 上选择一部电影观看时,我们在决定将几个小时托付给模型的决策之前也需要给予其特定程度的信任。尽管许多机器学习模型都是黑箱,理解模型预测背后的基本原理将肯定有助于用户决定什么时候可以信任或不可以信任它们的预测。如图 1 给出的例子所示,一个模型预测一位特定病人患有流感。然后该预测被一个解释器(explainer)解读,其突出强调了对模型来说最重要的症状。使用这些关于模型背后的基本原理信息,医生现在就有能力选择信任或不信任这个模型了。


figure1-a9533a3fb9bb9ace6ee96b4cdc9b6bcb.jpg

图 1:为人类决策者解释单个预测


从某种意义上说,工程师每次将一个机器学习模型用于产品时,该工程师都默认信任该模型将能够做出合理的预测。这样的评估通常是通过检查 held-out accuracy 或其它一些聚合指标完成的。但是,任何在实际应用中使用过机器学习的人都知道,这样的标准是非常有误导性的。有时候,不应该使用的数据意外地泄露到了训练过程和 held-out data中。有时候,模型会出一些让人尴尬得难以接受的错误。这些和其它棘手的问题说明理解模型的预测在决定一个模型是否值得信任时可以作为一项格外有用的工具,因为人类常常有很好的直觉和商业智能,这些都难以在评估指标中获得。假设在选择特定待解释的代表性预测中有一个「挑选步骤」,那么这个过程就会和图 2 所示的类似。





figure2-802e0856e423b6bf8862843102243a8b.jpg

图 2:向人类决策者解释一个模型


在  Marco Tulio Ribeiro、Sameer Singh 和 Carlos Guestrin 的发表于 ACM 知识发现的数据挖掘大会(KDD2016)上的合作论文《「为什么我应该相信你?」解释任何分类器的预测》中,我们对信任和解释的问题进行了探索。我们提出了 Local Interpretable Model-Agnostic Explanations(LIME:局部可解读的与模型无关的解释)——一种用于解释任何机器学习分类器的预测的技术,从而可以在各种与信任相关的任务中评估预测的有用性。


LIME 背后的直觉


因为我们想要做到模型无关(model-agnostic),所以为了了解模型的底层行为,我们所能做的是扰乱输入,然后看其预测会怎样变化。事实证明这种做法在可解释性(interpretability)上是有益的,因为我们可以通过改变人类可以理解的组件(比如词和图像的一部分)来扰乱输入,即便该模型的特征使用的是远远更加复杂的组件(比如词嵌入)。


通过扰乱原来的实例(比如移除词和隐藏部分图像)所学习的一个可解读的模型(比如只带有少量非 0 系数的线性模型),我们可以通过逼近底层模型来生成解释。LIME 背后的关键直觉(intuition)是:通过一个简单的模型局部地(在我们想要解释的预测的附近)逼近一个黑箱模型比全局地逼近这个模型要容易得多。这是通过给扰乱图像设定权重的方式实现的,这些权重根据与我们想要解释的实例的相似度取值。回到上面流感预测的例子,其中三个突出的症状可能是被检测病人的黑箱模型的可能逼近,但它们可能并不能代表该模型在所有病人上的行为方式。


图 3 给出的例子说明了 LIME 在图像分类上是如何工作的。假设我们想解释一个可以预测一张图片中是否包含树蛙的分类器,我们可以使用左边的图片并将其分解成可解读的组件(连续超像素(contiguous superpixels))。


figure3-2cea505fe733a4713eeff3b90f696507.jpg

图 3:将一张图片转换成可解读的组件


如图 4 所示,然后我们通过「关闭」一些可解读组件生成一个扰乱实例的数据集(在这个例子中是将它们设置成灰色)。对于每一个被扰乱的实例,该模型都有一定概率将其识别成树蛙。然后我们就在这个局部加权(locally weighted)的数据集上得到了一个简单的(线性)模型——也就是说我们更关心在更接近原始图像的扰乱实例上出现的错误。最后,我们给出带有最高正权重的超像素作为解释,将其它一切都涂成灰色。


figure4-99d9ea184dd35876e0dbae81f6fce038.jpg

图 4:使用 LIME 解释一个预测


样例


我们使用 LIME 解释了文本和图像领域内的大量分类器(比如随机森林、支持向量机和神经网络)。下面是一些生成解释的样例。


首先是一个来自文本分类的样例。20 newsgroups 数据集是该领域的一个知名的基准,该基准在多篇论文中被用于对比不同模型。我们选取两个难以区分的类别,因为它们共享很多词汇:基督教(Christianity)和无神论(Atheism)。训练一个有 500 树的随机森林,我们在测试集上的准确率为 92.4%,高得惊人。如果准确率是我们能够取信的唯一测量标准,我们能完全信任这一分类器。然而,让我们来看一下图 5 中对测试集中的一个任意例子的解释(我们的开源软件包(https://github.com/marcotcr/lime )中一句 Python 代码):


exp = explainer.explain_instance(test_example, classifier.predict_proba, num_features=6)


figure5-cd7d3c5128549df1e957bf8f9f93bb2b.jpg

图5:对 20 newsgroups 数据集中预测的解释


这是一个分类器准确预测样本的案例,但却是因为错误的原因。额外的解释让我们看到「posting(邮件标头的一部分)」一词出现在训练集中 21.6% 的样本上,但在「Christianity」一类中只出现了两次。这也是测试集中的案例,该词在 20% 的样本中出现,但在「Christianity」类别中仅出现了两次。数据集中的此类人工标样(artifact)使得该问题要比真实世界的简单得多,但在现实世界我们不希望产生这样的模式。一旦你理解了这些模型真的在做什么,这些见解就变得很简单了,而且也能使得模型的泛化能力变得更好。


第二个样例是我们在任意图像上解释了谷歌的 Inception 神经网络。在此例中,就像图 6 中展示的那样,分类器预测「树蛙(tree frog)」是最有可能的类别,接下来是更低概率的「台球」和 「气球」。我们的解释揭示该分类器主要专注于蛙的面部作为此预测分类的解释。它也阐明了为什么「pool table」有非零概率:青蛙的爪子和眼与台球非常地相似,特别在绿色背景下。同样,心脏也和红气球类似。


Figure-6-c8db425eefec7cff5a3cf035a40d8841.jpg

图 6:解释来自 Inception 的预测。顶部的三个预测类是「树蛙」、「台球」、「气球」。


在我们研究论文的实验中,我们证明机器学习专家和门外汉用户都能从类似于图 5、图 6 这样的解释中获益,而且能够选择哪个模型泛化的更好、通过改变模型进行改进、以及获得模型行为的关键见解。


结论

在人类与机器学习系统进行有效交互中,信任是非常重要的。我们认为解释每个预测是获取信任的一个有效方式。LIME 是一个为机器学习实践者促进这样的信任度的有效工具,也是一个值得加入他们的工具包的好选择。但在更好地解释机器学习模型方面,还有很多工作可以做。我们期待看到这个方向上有更多的研究成果出现。


论文:「为什么该相信你?」解释任意分类器的预测


google-brain-data2-ss-1920.jpg

摘要:机器学习模型尽管已经得到了广泛采用,但大部分仍旧是黑箱。然而,理解预测背后的原因在评估该预测是否可信上是相当重要的,这是人们计划基于预测采取行动或选择是否需要部署一个新模型时的基础。这样的理解也能提供对模型的见解(insight),其可被用于将不值得信任的模型或预测转化得可信任。在本论文中,我们提出了 LIME——一种可通过围绕预测局部地学习一个可解读的模型,从而以一种可解读的和可信的方式解释任何分类器的预测的全新解释技术。我们还提出了一种以非冗余方式通过给出代表性的单个预测及其解释来对模型进行解释的方法,这种方法将这一任务视作是一个子模块的优化问题(submodular optimization problem)。我们通过解释用于文本(如随机森林)和图像分类(如神经网络)的不同模型而证明了这些方法的灵活性。我们通过在多种需要信任的情形上进行了模拟的和以人类为对象的全新实验,从而展示了解释的实用性——这些任务需要一个人决定是否相信一个预测、在模型之间做出选择、改进不值得信任的分类器和确定一个分类器不应该被信任的原因。


论文地址:"Why Should I Trust You?": Explaining the Predictions of Any Classifier

入门理论论文KDDKDD 2016预测器
暂无评论
暂无评论~