茉莉花新闻网

中華青年思想與行動的聚合地

机器学习中的“可解释性”该作何解释?

HeptaAI的回答

泻药。之前做了有关vanilla gradientintegrated gradient这两个可解释性方法的tutorial,总结起来都是用输出对输入的各个特征做梯度,然后求出这个特征对于输出的影响。这一族方法因为都是基于梯度的,所以被称为基于梯度的方法。这个tutorial我们来介绍一下另一族可解释性方法:扰动法

扰动,顾名思义,就是对输入中的某个特征做一些改变 ,然后重新跑一遍模型,观察输出的变化 \Delta y ,然后根据这里的 \Delta 做计算来得出模型的工作原理。因此,基于扰动的方法只要做一遍前向过程即可。改变导致对输出的变化更大的特征,在计算上就是重要性更大的特征。

Occlusion:遮挡法

比较常用的扰动法attribution是遮挡法(occlusion)。这个方法其实之前在很多ML模型上已经用过了,方法很简单,就是将输入像素的一部分 x_0 zero掉(遮挡掉),观察输出的变化 \Delta y 。输出的变化越大,那么这一部分的重要性就越强。

具体这一部分怎么选,文章做了多种尝试,主要是有关用于遮挡的mask的window_size的。从下图可以看出,当size为15*15的时候获得了最好的效果。

v2 cefaaa4d37036619b49ac843bfe10270 1440w

遮挡法的优势是不需要反向传播,所以实现起来比较简单,运行速度也比较快。但是这个mask size的选取很是问题,造成鲁棒性比较差,需要大量engineering work。

如果对文本做Occlusion,方法也是类似的,一个word作为一个特征。在遮挡的时候把一个word的一整条embedding都置0,然后对每一个word都做一次,根据 \Delta y 就能获得相对重要性。

LIME:伴随模型法

有关LIME,很多网上的教程说的非常隐晦,例子也举的一塌糊涂,我在这里仔细讲一下。其实看paper里面的一张图就能理解地差不多了。我们拿下面这张图解释这个算法:

v2 a68437ccacb0f983714154bec60f60af 1440w

这张图显然是一个二维的分类问题,横纵轴为 x_1x_2 ,红色代表正值点,蓝色代表负值点。这里的红色和蓝色组成的就是一个黑盒分类器 f ,交界就是决策边界。红色高亮的+号为LIME算法选择的采样点 x_0 ,LIME希望获得在这个采样点附近 f 的决策边界。为了解释特征,LIME会选取 K 个需要解释的interpretable components作为伴随模型 g 的变量,这个 K 是可以调的。interpretable component就是解释特征用的变量,可以理解成特征的另一种表示。然后LIME会在要解释的采样点 x_0 附近选取 n 个扰动点 [x^p_i]_{i=1}^n ,在图中就是红色加号(值为正)和蓝色圆圈(值为负)。红色加号或蓝色圆圈越大,说明离采样点越近;越小表示离采样点越远(由于越近的扰动点越能代表采样点附近的局部行为,所以越近的点的样本权重越大,画的符号也更大)。最后,只要把这几个扰动点在黑盒分类器 f 上跑,然后把获得的结果集合 [f(x_i^p)]_{i=1}^n 当成训练集去训练可解释的伴随模型 g 即可。

换句话说,给出一个二维黑盒分类器 f ,LIME在尝试学习一个伴随模型 g ,使得这个伴随模型能够在采样点 x_0 附近局部强拟合黑盒分类器 f 的行为。由于这个伴随模型可以解释interpretable components,而interpretable component可以解释特征重要性,所以一个伴随模型可以局部解释黑盒 f 的行为。在日常使用中,我们也往往是对某一个sample进行分析来看看模型有没有问题的,所以局部可解释性其实已经满足了大部分需求。

现在大家肯定理解了,伴随模型的训练集为什么要叫“扰动点”?因为对于一组采样点 (x_1, x_2) ,我们可以获得一些这个点附近的点 (x_1', x_2')\approx (x_1, x_2) 来获得黑盒模型 f 的扰动输出 y' 来让伴随模型 g 学习。这些扰动点是通过扰动interpretable components推出来的。

现在还有最后一个,也是最重要的一个问题,如何获得特征重要性?这里要注意, g 的输入不是采样点 (x_1, x_2) ,而是某个特征是否被更改的表示 x_i'\in\{0, 1\} ,每一个 x_i' 都代表一个“可解释组件”。如果 x_i'=0 ,则这个可解释组件对应的那几个特征会变成一个baseline值(例如采样数据集中这个特征的正态分布);反之不变。因为 g 是一个足够可解释的简单模型(例如查找表、树模型、岭回归等),所以通过 g 表达式中各个可解释组件的系数(重要性),就能很轻松地求出原来的特征重要性。

我自己做了一个总体的流程图如下:

v2 eb72820c2bca6867e6db00ba14ca06c3 1440w
原创图,转载请注明

其实比较一下Occlusion和LIME会发现这俩非常相似,本质上思路是共用的,都是对某一个特定的输入样本,计算某些特征改变(扰动)后输出的变化,从而挖掘这个特征对于输出的重要性

同类信息

查看全部

茉莉花论坛作为一个开放社区,允许您发表任何符合社区规定的文章和评论。

茉莉花新闻网

        中国茉莉花革命网始创于2011年2月20日,受阿拉伯之春的感召,大家共同组织、发起了中国茉莉花革命。后由数名义工无偿坚持至今,并发展成为广受翻墙网民欢迎的新闻聚合网站并提供论坛服务。

新闻汇总

邮件订阅

输入您的邮件地址:

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram