作者Toby,原文来源公众号Python风控模型《一种可解释任何机器学习的技术 (LIME,Local Interpretable Model)》
在哲学上,"agnostic"(不可知论者)指的是一种认为人类无法或不应该知道关于神或超自然事物的终极真理的观点。不可知论者相信,关于这些主题的知识超出人类的理解能力。
简单模型,比如线性回归和逻辑回归,它们的内部工作机制很透明,我们很容易理解它们是如何做出预测的。然而,当涉及到实际应用时,这些模型的表现往往不如更复杂的模型,比如梯度提升树和神经网络。这些复杂模型虽然预测效果出色,但它们的决策过程不那么透明,难以解释。
目前,许多互联网公司在建模时倾向于使用这些复杂的模型,尽管它们的性能更好,但解释性差的问题一直困扰着业界。因此,模型的可解释性正逐渐成为大家关注的焦点。
机器学习是许多最新科学和技术进步的核心。随着计算机在 Go 等游戏中击败专业人士,许多人开始问机器是否也能培养出更好的司机甚至更好的医生。
在机器学习的许多应用程序中,用户被要求信任一个模型来帮助他们做出决策。医生肯定不会仅仅因为“模型是这么说的”就给病人做手术。即使在风险较低的情况下,例如从 Netflix 选择要观看的电影时,在我们根据模型放弃数小时的时间之前,也需要一定程度的信任。尽管许多机器学习模型都是黑匣子,但了解模型预测背后的基本原理肯定会帮助用户决定何时信任或不信任他们的预测。图 1 显示了一个示例,其中模型预测某个患者患有流感。然后,“解释器”会解释预测,该解释器会突出显示对模型最重要的症状。有了这些关于模型背后基本原理的信息,医生现在就可以决定信任或不信任该模型。
从某种意义上说,每次工程师将机器学习模型上传到生产环境时,工程师都隐含地相信该模型会做出合理的预测。这种评估通常是通过查看保留的准确性或其他一些总体度量来完成的。然而,任何曾经在实际应用程序中使用过机器学习的人都可以证明,这样的指标可能非常具有误导性。有时,不应该可用的数据会意外泄漏到训练和保留的数据中(例如,展望未来)。有时,模型会犯一些错误,这些错误太尴尬了,以至于无法接受。这些和许多其他棘手的问题表明,在决定模型是否值得信赖时,理解模型的预测可能是一个额外的有用工具,因为人类通常具有良好的直觉和商业智能,而这些很难在评估指标中捕捉。假设一个 “pick 步骤”,其中选择了某些具有代表性的预测来向人类解释,这将使该过程类似于图 2 中所示的过程。
在“为什么我应该信任机器学习模型?AI专家精确地探讨了信任和解释的问题,并提出了本地可解释模型不可知解释解释 (LIME)。这是一种解释任何机器学习分类器预测的技术,并评估其在与信任相关的各种任务中的有用性。
LIME诞生背后的直觉
因为我们希望与模型无关,所以要了解底层模型的行为,我们可以做的是扰动输入并查看预测如何变化。事实证明,这在可解释性方面是一个好处,因为即使模型使用更复杂的组件作为特征(例如,单词嵌入),我们也可以通过更改对人类有意义的组件(例如,单词嵌入)来扰乱输入。
我们通过一个可解释的模型(例如只有几个非零系数的线性模型)来近似底层模型来生成解释,该模型在原始实例的扰动(例如,删除单词或隐藏图像的某些部分)中学习。LIME 背后的关键直觉是,与尝试全局近似模型相比,通过本地简单模型(在我们想要解释的预测附近)来近似黑盒模型要容易得多。这是通过根据它们与我们想要解释的实例的相似性对扰动的图像进行加权来完成的。回到我们的流感预测示例,对于看起来像被检查的患者,这三个突出显示的症状可能是黑盒模型的忠实近似值,但它们可能并不代表模型对所有患者的行为方式。
有关 LIME 如何进行图像分类的示例,请参见图 3。想象一下,我们想要解释一个分类器,该分类器预测图像包含树蛙的可能性。我们获取左侧的图像并将其划分为可解释的组件(连续的超像素)。
如图 4 所示,然后我们通过“关闭”一些可解释组件(在本例中,使它们变为灰色)来生成一个受干扰实例的数据集。对于每个受扰动的实例,我们根据模型获得图像中树蛙的概率。然后,我们在这个数据集上学习一个简单的(线性)模型,该模型是局部加权的,也就是说,我们更关心在与原始图像更相似的扰动实例中犯错。最后,我们提出具有最高正权重的超像素作为解释,将其他所有内容都变灰。
案例
我们使用 LIME 来解释文本和图像域中的无数分类器(例如随机森林、支持向量机 (SVM) 和神经网络)。以下是生成的解释的几个示例。
首先,文本分类的示例。著名的 20 个新闻组数据集是该领域的基准,并已被用于比较多篇论文中的不同模型。我们分为两门很难区分的课,因为它们有很多共同的词:基督教和无神论。训练一个有 500 棵树的随机森林,我们得到的测试集准确率为 92.4%,这出奇地高。如果准确性是我们衡量信任的唯一标准,我们肯定会信任这个分类器。但是,让我们看看图 5 中对测试集中任意实例的解释(Python 中的单行代码,带有我们的开源包):
exp = explainer.explain_instance(test_example, classifier.predict_proba, num_features=6)
在这种情况下,分类器正确地预测了实例,但原因错误。进一步的探索告诉我们,“posting” 这个词(电子邮件标题的一部分)出现在训练集中 21.6% 的示例中,但在 “Christianity” 类中只出现了两次。在测试集中也是如此,这个词几乎出现在 20% 的例子中,但在 “Christianity” 中只出现了两次。数据集中的这种伪影使问题比在现实世界中要容易得多,在现实世界中,我们不会期望这种模式发生。一旦您了解了模型的实际作用,这些见解就变得很容易,这反过来又会导致模型更好地泛化。
作为第二个示例,我们解释了任意图像上的 Google Inception 神经网络。在这种情况下,如图 6 所示,分类器预测 “tree frog” 是最可能的类别,其次是概率较低的 “pool table” 和 “balloon”。该解释揭示了分类器主要关注青蛙的面部,作为对预测类的解释。它还阐明了为什么“台球桌”的概率不为零:青蛙的手和眼睛与台球相似,尤其是在绿色背景上。同样,心形也类似于红色气球。
在我们研究论文的实验中,我们证明机器学习专家和非专业用户都从类似于图 5 和图 6 的解释中受益匪浅,并且能够选择哪些模型更好地泛化,通过更改模型来改进模型,并获得对模型行为的重要见解。
结论
信任对于人类与机器学习系统的有效交互至关重要,我们认为解释个人预测是评估信任的有效方法。LIME 是一种有效的工具,可以促进机器学习从业者的信任,但要更好地解释机器学习模型,还有很多工作要做。我们很高兴看到这个研究方向将引领我们走向何方。更多LIME 的信息请观看下面视频。
相关论文:《"Why Should I Trust You?": Explaining the Predictions of Any Classifier》
下次Toby老师有空再和大家一起分享这篇论文。
版权声明:文章来自公众号(python风控模型),未经许可,不得抄袭。遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。