机器学习笔记:可解释机器学习
Posted UQI-LIUWJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习笔记:可解释机器学习相关的知识,希望对你有一定的参考价值。
来自 李宏毅2019-Explainable ML_哔哩哔哩_bilibili
0 前言
深度学习可以做的事情是,比如我们给模型一张猫的照片,模型可以预测:”这是一只猫“
我们现在想知道的是:模型为什么会认为这是一只猫呢?
1 local explanation & global explanation
1.1 local explanation
(why do you think this is a cat?)
比如我们想要知道图片每一个部分对于最终分类决策的重要性,我们可以丢弃掉某一个部分/修改这一个部分的值,观察分类结果的变化程度
如果变化多的话,那么就说明去掉的这一部分对于决策很重要
在实际的例子中,通过用一个灰色的方块遮掉一部分的图像,判断遮掉之后的图像预测ground-truth label的概率(红色表示概率大,蓝色表示概率小)
可以看到不同的区域对于预测 label的影响是不一样的,以左边的小狗为例,把头遮掉了,预测的概率就比遮掉别的区域小多了。
Visualizing and understanding convolutional networks.ECCV 2014
另一种方法是,我修改某一个部分图像的内容,去看修改之后预测概率的变化,变化越大的表示越重要
以上图为例,我们调整某一个部分的x,看相应的label概率y的变化量
这两个变化量的比值就是yk对于特定点的偏导,用saliency map来可视化,越”亮“的点表示影响越大
1.2 global explanation
(what do you think a ”cat“ looks like)
以mnist 为例,我们希望得到不同label对应的图像的模样
理论上我们可以通过argmax(yi)的方式找到标签yi对应的那些image,但是在实操中,结果可能是像上图那样的”雪花图“
于是我们需要加一些正则项,来约束图像的”面目“
一种方法就是添加图下的正则项,使得image长得”像“一个数字
针对不同的dataset,不同的application,我们需要不同的正则项
1.2.1 从generator的角度想global explanation
在上一小节中,不难发现,我们需要人为地设定正则项。但在很多问题中,这个是不太好设计的。于是就有人想到要用生成器来生成image
我们有一个image generator,他的作用是输入一个低维的向量,通过generator(GAN或者VAE这种)生成一张图片
用generator的角度来看global explanation,我们可以将image generator输出的graph再送入一个image classifier(和上一小节的classifier结构就一样了)
此时我们依旧是希望找到argmax yi,不过由于我们事先接了一个image generator,所以此时所有的image x都是合理的graph,不会出现上一小节那样的非数字graph的不合理的”雪花图“,故而不用正则项来约束生成的graph长啥样。
2 使用另外的模型来解释某一黑盒模型
核心思想是,我们希望用一个可解释的模型(比如下图的线性模型)来模拟一个不可解释的模型
从某种意义上和,和知识蒸馏的思路是一样的
但是问题在于,一般的可解释性模型都是比较简单的模型,可能比较复杂的神经网络它模拟不了——>所以我们可能模拟的只是一小块区域附近的神经网络
2.1 LIME local interpretable model-agnostic explanations
用红色的线性模型,模拟一部分蓝色的黑盒模型
注意这里的”nearby“,对nearby定义的不同,会导致不同的结果(比如上图和下图)
2.1.1 决策树 & LIME
理论上讲,如果决策树足够深的话,他一定可以模拟任何一个黑盒模型。但是足够深的决策树就没有很好的解释性了
于是我们就需要对决策树进行一定的约束:
以上是关于机器学习笔记:可解释机器学习的主要内容,如果未能解决你的问题,请参考以下文章
学习打卡07 可解释机器学习笔记之Shape+Lime代码实战
学习打卡07 可解释机器学习笔记之Shape+Lime代码实战
学习打卡07 可解释机器学习笔记之Shape+Lime代码实战