LIME(局部可解释模型无关解释)
/ lime (like the fruit) /
LIME解释单次预测的办法,是搭一个小巧、简单的模型去模仿那个庞大复杂的模型——但只在这一个个案的紧邻处模仿。直觉是这样:一条弯弯的路,你若只盯着其中几英尺看,它看上去是直的。一个复杂模型的决策曲面是一条扭动的曲线,可就在某个特定输入的周围,一条简单的直线就能把它近似得足够好,好到能读出:对这次预测,哪些特征要紧。
操作上,LIME拿你的输入,反复抖动它,造出许多略加改动的版本,再去问那个黑箱模型对每一个的预测,然后用这些局部答案去拟合一个易读的模型(通常是线性的),并给离得近的变体最大的权重。结果是一份简短的清单,比如:「这封邮件被标为垃圾,主要因为出现了『中奖』和『免费』,尽管它也出现了『会议』一词。」关键在于:LIME完全不需要知道模型的任何内部构造——它适用于任何模型,把模型当成一个你只能查询的盒子。
LIME的馈赠是「易懂」:一个清晰、局部、与模型无关、人人都能领会的解释。它诚实的弱点也实打实。解释取决于你如何定义「近邻」、如何生成那些抖动的样本,所以把LIME跑两遍,可能给出不一样的答案——它默认并不确定。而且,和一切事后方法一样,它解释的是一个局部的近似,而非模型真正的推理;拿它来获取直觉、来调试,可以;把它当成一纸保证,不行。
一个经典的演示:某个模型能高准确率地区分狼与哈士奇。LIME标出了驱动每次判定的图像区域,结果揭示:模型主要在看背景里的雪——狼的照片碰巧多是雪景。它压根没在认狼;它是一个「雪检测器」。
LIME最著名的一次擒获:一个其实在检测雪的「狼检测器」。
LIME和SHAP常被混用,但二者有别:SHAP立足于博弈论的保证与「加性」;LIME则拟合一个快速的局部替身,更快,却更不稳定,重复跑时有时会给出不同的解释。当这样两个工具对同一次预测各执一词时,这种分歧本身,就是一条值得去查的信息。