美文网首页
Explainable Machine Learning

Explainable Machine Learning

作者: 单调不减 | 来源:发表于2019-09-29 00:20 被阅读0次

Explainable Machine Learning意为可解释的机器学习。顾名思义,就是说我们的机器学习模型不仅能够给出正确结果,还要给出理由。

这实际上是对我们的模型提出了更高的要求。如deep learning等效果很好但很复杂的模型通常被视作黑箱,现在我们却试图让模型告诉我们黑箱内到底发生了什么,这无疑是困难的。

好在我们要求的也并不多,拿用于图像识别的神经网络模型来说,我们只需要它给出是通过图像的哪个部分得出结论的即可,或者说对于模型来说图像的哪个部分对结果产生了关键的作用。然后我们可以通过人类的经验来检验机器到底有没有真的学到重要的特征,若没有,则可以有针对性地对模型进行修改。

实际上,很多机器学习模型本身就具有良好的可解释性,比如线性模型,其权重就对应了重要性,比如决策树,我们可以直接回溯分支来解释模型是如何一步步将某个样本分类的。然而这些具有良好解释性的模型在很多时候不足以应对复杂的学习任务。相比之下,深度学习模型可以解决非常复杂的问题,但它的可解释性较差。

现在我们希望可以让深度学习这样的复杂模型也具有一定的可解释性,怎么做呢?

以用于图片识别的DNN模型为例:

我们的idea很简单,就是将图片划分为一系列segment,然后改变某个segment看看会对输出产生多大影响,若影响很大,说明这个segment很重要,反之则说明不重要。

于是我们很自然地想到用梯度来衡量这种影响:

第二行的图中亮度较大的部分对应上图中梯度较大的部分,可以看出分类器之所以判定一张图片为dog,确实是因为检测到了dog(的某些特征),因此我们认为机器确实学到了东西。

李宏毅老师还给出了一个令人笑喷的反例——分辨神奇宝贝和数码宝贝。

分辨神奇宝贝和数码宝贝是人类都非常难以做到的事情,但DNN模型却取得了非常好的表现:

我们不禁好奇,机器到底是通过哪些特征分辨神奇宝贝和数码宝贝的呢?

答案就是……背景颜色……

话说回来,以上我们都是利用梯度来判断图像各部分对图像识别的重要程度的,这样做会不会出现问题呢?

是的,基于梯度的方法也有一些限制:

比如我们模型认为大象的一个重要特征是长长的鼻子,那么大象的信心分数随鼻子长度的变化如图,若现在图片中有一只鼻子超长的大象,那么鼻子部分得到的梯度反而是比较小的,这就不太合理。

解决这个问题的方法请参考相关文献……

以上解决的问题是Local Explanation,即分类器为什么认为一张图片中是一只猫

接下来我们想要解决一个更加困难的问题,我们的分类器眼中,猫长什么样子

这就是Global Explanation:

回忆一下介绍CNN的章节,我们试图找出CNN眼中什么样的图片是手写数字,我们使用的方法也很简单,就是让某个输出层神经元的activation之和最大(即这个神经元最大程度被激活),然后固定w调优x,得到的x就是分类器眼中对应这个神经元代表类别的手写数字图片。

左图是雪花,毫无章法,右图加入正则项后稍有好转,大致可以看出各个数字图片的一些特征了。

能不能让模型给出一些它认为是猫的图片呢?要生成逼真的图片,可以使用VAE、GAN等算法。

这个思路把在上述步骤前连接了一个生成器,然后形成一个更深的神经网路,并把最大化y作为目标,对某个低维输入z进行调优,注意这里的生成器是一个通过大量猫和狗和其他动物的图片(也就是用于训练模型的训练集)使用GAN训练好的生成器,在当前训练过程中权重不变(它只负责生成逼真的图片),而我们模型的权重也不发生改变,调优剩下的权重值得到一张逼真的图片输出x,并看一下是不是猫的图片,也可以验证模型有没有真的学到东西。

最后,还有一种很神奇的方法用于解释模型,那就是用可解释的模型去模拟不可解释的模型,然后通过可解释的模型给出解释

具体思路也很简单,就是喂给目标模型一些样本并记录输出作为训练集,然后用这个训练集训练一个解释性良好的模型对目标模型进行解释:

然而可解释性好的模型往往是比较简单的模型,可解释性差的模型往往是比较复杂的模型,用一个简单模型去模拟一个复杂模型无疑是困难的。

上图就是一个示例。用线性模型去模拟一个神经网络效果肯定是很差的,但是我们可以做的事是局部的模拟

也就是说当我们给定一个输入的时候,我们要在这个输入附近找一些数据点,然后用线性模型进行拟合。那么当输入是图片的时候,什么样的数据算是这张图片附近的数据点呢?

我们可以采用和之前一样的思路,将图片划分为一系列的segment,然后在原图基础上删掉一些segment作为原图附近的数据点,然后用这些segment的one-hot表示向量作为线性模型的输入进行训练,得到一个局部模拟神经网络的线性模型

然后我们就可以通过线性模型对原模型进行解释:

不得不说想出这个方法的人真的脑洞很大……

相关文章

网友评论

      本文标题:Explainable Machine Learning

      本文链接:https://www.haomeiwen.com/subject/rmmryctx.html