局部可理解的与模型无关的解释(LIME)技术介绍
发布日期:2021-11-09 06:55:39 浏览次数:4 分类:技术文章

本文共 3244 字,大约阅读时间需要 10 分钟。

机器学习是近来许多科学和技术进步的核心。随着计算机在诸如等案例里所展现出的进步,许多人开始思考机器能否成为更好的或更好的医生。

在机器学习的许多应用中,用户常常被要求信任那些帮助他们进行决策的模型。但医生肯定不能仅仅依据“模型就是这样说的”来给病人动手术。即使是在低风险的场景里,比如在 Netflix 上选择一部电影观看,我们也需要某种程度的信任来决定将几个小时时间交付给模型的决策。尽管许多机器学习模型都是黑箱,理解模型预测背后的基本原理将肯定有助于帮助用户决定什么时候可以信任模型的预测或是不信任。如图1所示,模型预测某个病人患有流感。然后该预测由一个解释器来解释,强调了对模型来说最重要的症状。基于这些模型背后的推理信息,医生现在就有能力选择是否信任这个模型了。

图1:向人类决策者解释单个预测。图片来源:Marco Tulio Ribeiro

从某种意义上说,工程师每次将一个机器学习模型应用于生产系统时,他或她都隐含地表示信任模型将能够做出合理的预测。这样的信心通常是通过评估保留数据验证的准确性或其它一些聚合评测来获得的。但是,任何实践过机器学习应用的人都知道,这些指标有时是非常有误导性的。有时候,不应该使用的数据意外地混入了训练数据和验证数据中。有时候,模型会给出一些尴尬得难以接受的错误。这些和其它的问题说明,在决定一个模型是否值得信任时,能理解模型的预测可以成为一个有用的工具。这是因为人类通常有较好的直觉和商业智慧,而这些都难以在评估指标中获得。如果在机器学习过程中有一个“挑选步骤”,即可以选择某些典型的预测去解释给人来听,那么这个过程就会类似于图2。

图2:向人类决策者解释一个模型。图片来源:Marco Tulio Ribeiro

在由,和合作发表于 (KDD2016)上的论文《“》中,我们对信任和解释的问题进行了精细地探索。我们提出了局部可理解的与模型无关的解释技术(Local Interpretable Model-Agnostic Explanations: LIME),一种用于解释任何机器学习分类器的预测的技术,并在多种与信任相关的任务中评估了它的可用性。

LIME 背后的直觉

因为我们希望能做到与预测模型无关,所以为了能理解模型内部的行为,我们所能做的是去干涉输入,然后观察预测结果会怎样变化。实验表明这种做法在可解释性上是有用的,这是因为我们可以通过改变人类可以理解的组件(比如单词或图像的一部分)来改变输入,即使模型使用的是更加复杂的组件(比如词向量)作为输入的特征。

改变原有实例数据(比如移除部分单词或隐藏图像的一部分)去学到的一个可解读的模型(比如只带有少量非零系数的线性模型),并用它来近似原有的底层模型。通过这个方法我们就得到了一个对原有模型的解释。LIME 背后的关键直觉就是,通过一个简单的模型来局部地(在我们想要解释的预测的附近)逼近一个黑箱模型会比全局性地去逼近这个模型要容易得多。这个思想可以通过给改变后的输入图像设定权重的方式来实现,而权重的值是改变后的图形和我们想要解释的实例的相似度的值。上面流感预测的例子里,那三个强调的症状就可能是预测这种类型病人的黑箱模型的准确近似,但它们可能并不能代表该模型在所有病人上的行为方式。

图 3 所示的例子说明了LIME在图像分类上是如何工作的。假设我们想解释一个可以预测图片中是否包含树蛙的分类器,我们可以借助左边被分解成可解读的组件(连续超像素)的图像。

图3:将一张图片转换成可理解的多个组件。图片来源:Marco Tulio Ribeiro和Pixabay

如图 4 所示,我们通过“隐藏”一些可解读组件生成一个修改过的实例的数据集(在这个例子中是将隐藏的组件都设置成灰色)。对于每一个被修改过的实例,模型都会以一定概率判断图像实例是否包含树蛙。然后我们就在这个局部加权的数据集上得到了一个简单的(线性)回归模型,而我们更关心在更接近原始图像的修改过的实例上出现的错误。最后,我们给出带有最高正权重的超像素作为解释,将其它部分都改成灰色。

图4:用LIME解释一个预测。图片来源:Marco Tulio Ribeiro和Pixabay

例子

我们使用 LIME 解释了文本和图像领域内的大量分类器(比如、和)。下面是一些由它所生成的解释的例子。

首先是一个本分类器的例子。是此领域里一个有名的基准数据,多篇论文中描述了使用这个数据集的不同模型。从中我们选取两个比较难区分的分类,基督教(Christianity)和无神论(atheism),它们之间有很多相同的词汇。训练一个有 500 树的随机森林,我们在测试集上得到的准确率为 92.4%,高得惊人。如果准确率是我们能够取信的唯一标准,我们能完全信任这个模型。然而,让我们来看一下图 5 所示的对测试集中的一个例子的解释(使用中的一句 Python 代码即可实现):

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

图5:20 newsgroups数据集上预测的解释。图片来源:Marco Tulio Ribeiro

这是一个分类器因为错误的原因却准确地预测了样本的分类的例子。额外的解释显示出“posting(邮件标头的一部分)”一词出现在无神论分类的训练集中21.6% 的样本上,但在基督教分类中只出现了两次。测试数据集中的情况类似,该词在 20% 的无神论样本中出现,但在基督教分类中仅出现了两次。数据集中的这种情况使得(这个数据集上的)分类问题要比真实世界的问题简单得多,但在实际应用里我们并不期待会有类似的模式出现。一旦你理解了这些模型实际是如何工作的,获得这些洞察就变得很简单,相应的也会促进模型的泛化能力更好。

第二个例子是解释模型对图像做的分类。如图 6所示,分类器预测这个图像是“树蛙”类的概率最高,而“台球”和“气球”的概率低一些。我们的解释揭示该分类器主要专注于蛙的面部作为此预测分类的依据。它也说明了为什么“台球桌”有非零概率,因为青蛙的爪子和眼与台球非常地相似,特别是在绿色背景下。同样,红色的心脏也和红气球类似。

图6:解释Inception神经网络模型生成的预测。头三名预测结果是“树蛙”、“台球桌”和“气球”。图片来源:Marco Tulio Ribeiro和Pixabay提供的树蛙、台球和热气球图片。

所述的实验表明机器学习专家和普通人都能从类似于图5和图6 这样的解释中获益。能够选择哪个模型泛化的更好,能够通过改变模型对模型进行改进,以及获得模型行为的关键洞察。

结论

为了有好地与机器学习系统进行交互,信任是非常重要的。我们认为能解释每个预测是获取信任的一个有效方式。LIME是一个方便机器学习实践者获得这样的信任的有效工具,也是一个值得加入他们的工具包的好选择(说了我们已经提供了了吗?)。但在更好地解释机器学习模型方面还有很多工作可以做。我们期待看到这个方向上有更多的研究成果出现。下面的视频里概况地介绍了LIME。在里有更多的细节。

Marco Tulio Ribeiro是华盛顿大学的一名博士生,与Carlos Guestrin一起工作。他的主要研究方向是让人去理解模型和与机器学习模型的交互更加容易。

Sameer Singh博士是加州大学欧文分校的助理教授。他主要从事大规模、交互式机器学习和自然语言处理方面的研究。

Carlos Guestrin是Turi公司的CEO和华盛顿大学计算机科学与工程系的机器学习亚马逊教授。他是全球知名的机器学习领域的领导者。卡洛斯在2008年被《流行科学杂志》评为“最杰出的10人”之一。因为人工智能领域的杰出贡献,他在2009年获得年度IJCAI计算机与思维奖,和美国青年科学家与工程师总统奖。

转载地址:https://blog.csdn.net/zkh880loLh3h21AJTH/article/details/78100487 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:无人驾驶汽车背后的技术
下一篇:使用Spark MLlib训练和提供自然语言处理模型

发表评论

最新留言

做的很好,不错不错
[***.249.68.14]2022年05月24日 18时16分00秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章

c语言投票程序设计,C语言课程设计-投票程序设计.doc 2019-06-17 01:25:43
中国海洋大学c语言上机作业,2014级中国海洋大学C语言上机题库及答案.docx 2019-06-17 01:25:43
debian linux 7 安装,Debian 7安装设置教程 2019-06-17 01:25:42
linux鼠标手势,Linux 系统中全能的鼠标手势——Easystroke.docx 2019-06-17 01:25:42
linux亮度调节指令,Linux Mint 亮度调节——xrandr命令学习 2019-06-17 01:25:41
linux猜拳游戏代码,在Linux下通过gtk做一个简单的小游戏(猜拳) 2019-06-17 01:25:40
linux变量默认值,使用bash中的单个命令为shell变量分配默认值 2019-06-17 01:25:40
linux统计数据为未知的行数,Linux统计行数命令wc(转) 2019-06-17 01:25:39
linux系统中启动火狐浏览器提示选择配置文件,为 Firefox Beta 设置专用配置文件... 2019-06-17 01:25:39
linux网络接入控制,PacketFence v7.0发布,网络接入控制 2019-06-17 01:25:38
linux 网络负载,一台Linux服务器可以负载多少个连接? 2019-06-17 01:25:38
linux6右键终端单词,shell脚本--for循环打印下面这句话中字母数不大于6的单词 2019-06-17 01:25:37
linux扩容脚本,读书笔记--101个shell脚本 之#9 2019-06-17 01:25:37
linux 统计多少列命令,Linux shell命令统计某列去重后的值 2019-06-17 01:25:36
oracle拓展磁盘空间,OracleVM扩容磁盘空间-Oracle 2019-06-17 01:25:35
oracle远程监听配置文件,CentOS6.5 Oracle 远程监听配置 2019-06-17 01:25:35
matlab用RBF预测的程序,【求助】RBF数据预测建模仿真 2019-06-17 01:25:35
oracle v tempfile,找到正在使用temp file的session 2019-06-17 01:25:34
fdfs php client 实战,fdfs_client-py 2019-06-17 01:25:34
php 访问视图文件,视图文件的 PHP 替代语法 2019-06-17 01:25:33