Explainable machine learning 可解释的机器学习
摘要:
这节课学习可解释的机器学习,机器学习之所以需要解释,主要是为了使用者的需求,而不是为了完全理解model是如何工作的。
首先将Explainable machine learning分成两类:Local Explainable和Global Explainable。
Local Explainable可以通过遮挡法和梯度计算,画显著图的方法实现。
Global Explainable是通过cnn那节课讲的机器眼中的数字样子进行分析。
之后学习了用线性模型局部模拟,去解释另一个模型的做法,运用lime,以及lime的实际操作
最后学习了在保证决策树模型尽可能简单的前提下,让决策树模型去解释另一个模型的设计思路。
目录
一、Explainable machine learning的分类:
2.Local interpretable Model-Agnostic explanations (lime)
一、Explainable machine learning的分类:
1.Local Explainable
计算机解释为什么觉得这张图片是一只猫
2.Global Explainable
解释在计算机眼中猫是什么样子的
二、先来说说为什么需要Explainable ML
1.需要知道ML判别依据。
2.只有知道ML的结果为什么错了,才能把模型修改好,所以需要ml具有解释的功能。
3.可解释的ML并不等于完全理解ML是如何工作的,实际上,完全理解ML是如何工作是没必要的。可解释的ML的目的是为了满足使用者的需求。
可解释模型与功能强大的模型之间的对比
线性模型是很容易解释的,weight就代表不同特征的重要程度,但是线性模型的功能并不够强大。
DNN是很难去解释的,但是它的功能远胜于线性模型。虽然DNN很难解释,但是我们还是需要去解释它。
功能强大又可以解释的模型:decision tree 决策树
决策树关于生物分类的一个例子
其实复杂的决策树也是很难被解释的,当多个决策树组成一片森林时,这种情况就更复杂了。
三、Local Explainable
(为什么认为看到的图片是一只猫)
1.基本精神:
对于一个x,由N个元素组成,我们想要知道,这N个元素中哪些对于识别图片起到关键作用。
对于图像来说,一个元素就是像素或者图像碎片
对于文章来说,一个元素就是单词
2.实现想法:
删除或者修改其中元素的值,观察结果的变化。
如果变化非常大,说明这个元素对识别图片起到重要作用。
3.具体做法:
1.遮挡法
用灰色方块对图片中的每个部分依次进行遮挡,观察对识别结果的影响
蓝色区域说明此处的图像对图片识别起到重要作用
需要注意的是,要选取适当大小的方块,才能得到比较好的效果
2.梯度计算法
Yk是图片输出概率最大的种类。对输入Xn+△X,观察输出Yk的变化情况。
如果|△Y/△X|很大,说明Xn的变化对结果的影响很大。通过计算Xn对Yk偏微分的绝对值,可以表示|△Y/△X|的大小。
通过计算偏微分可以得到saliency map(显著图),图中点的亮度表示微分的大小
4.这种方法会出现问题:
这样做会出现梯度饱和的情况。
当判断一张图片是不是大象。可能图片中鼻子长度达到某一个值之后,输出是大象的概率已经很高而且不怎么改变了,这时输出对鼻子长度求偏导数结果趋近于0,那么就可能认为:鼻子长度对于图片是不是大象的判断是没有很大影响的。
5.使用Explainable技术时要注意有被攻击的风险
使用两种方法绘制saliency map时,本来结果表现是很好的,但是加了一些noise后,虽然人用肉眼观察没有区别,但是对于计算机来说,识别图片的特征图像已经发生了变化。
四、Global Explainable
(解释在计算机眼中猫是什么样子的)
这里举例讲的是cnn中对数字图像的分类。
Yi是一个数字,求x=argmax yi,得到的x就是计算机眼中yi应该的样子。但是这样的图片看起来和数字完全没关系,所以对上面的式子进行一些处理。
R(x)表示让图片中的亮点尽可能的聚集在一起,这样得到的图片才会更像一个数字
对于复杂的图片,想要得到比较好的结果需要多个正则项,对每个正则项还需要调整不同的weight。
五、利用图像生成器进行正则化(通过GAN,VAE)
训练一个image generator,其输入一个低维度的向量,输出一张图片x。 X=G(z)
如何用图像生成器来限制机器画出来的图片呢?
将x进行图片分类可以得到y。在之前的方法中,想要得到机器眼中y的样子,就是计算X*=argmax Yi,现在增加了图像生成器,就可以计算Z*=argmax Yi.
(找到一个z,这个z代表的图片通过分类后,使yi的概率最大)
将上面的图片生成器和分类器串在一起,就变成一个很深的神经网络。输入就是z,输出就是y。
将找到的z*再带入到image generator,得到的图片就是我们想求的。
因为image generator得到的图片是人可以看得懂 ???
这是通过图片生成器进行正则化,得到机器所认为的图片的样子
六、使用线性模型去解释另一个模型
1.用一个可解释model去模仿另一个不可解释的model
对于一个不可解释的模型,输入为x1,x2,xn,输出为y1,y2,yn
让蓝色的模型去模仿这个黑色的模型,使它们输入相同时,输出尽可能的接近。
蓝色模型是线性模型时,是没办法去模拟整个神经网络,但是可以模拟其中的一部分。
2.Local interpretable Model-Agnostic explanations (lime)
1.选择一个想要解释的点x
2.选取x附近的点 (选取的点不同,得到的结果也不一样)
3.用线性模型对选取的点进行拟合
4.解释线性模型
这样就可以对神经网络中的一部分进行解释。
3.lime对于图像的实际应用
解释这张图片为什么会被认为是一只树蛙
1.选择一个想要解释的数据点
2.选取附近样本:
将图像分割成一个个小块,作为单位进行分析
随机删除一些小块,然后输入到黑盒当中,得到识别出图片是树蛙的可能性。
3用一个线性模型去拟合这个结果
先将图片特征提取成为m维向量,再输入到线性模型中进行拟合
M是指图片分割的块数,根据实际情况进行调整。
4.解释学到的模型
如果Wm≈0,意味着碎片Xm对图片是不是树蛙的影响不太重要。
如果Wm为正数,意味着看到碎片Xm对图片是树蛙有积极的影响。
如果Wm为负数,意味着看到碎片Xm反而会认为图片不是树蛙。
通过LIME,可以知道哪些图片的碎片对于识别是重要的,哪些是不重要的
七、使用决策树去解释另一个模型
要求:希望决策树不要太复杂
O(Tθ):表示Tθ的复杂程度。例如:Tθ的平均深度
想法:训练一个神经网络,这个网络是容易被决策树解释的
对原本的loss函数加上一个正则项 λO(Tθ),也就是在训练的时候就考虑了让决策树尽可能的小。问题来了,这个公式是没办法之间用梯度下降法求微分。
一种解决方法是设计另一个神经网络,输入是神经网络z的参数,输出是z转成决策树之后的平均深度。将这个神经网络用在O(Tθ),这样整个式子就可以用梯度下降法。
训练一个神经网络,将一个神经网络转换成O(Tθ),进而解决O(Tθ)不能用梯度下降的方法。
总结:
这节课主要围绕机器学习的可解释性展开,可解释性的角度有很多,主要是为了满足使用者的具体需求去进行研究。
对于用可解释的模型去模拟解释不可解释的模型,也有很多做法。
最后对决策树函数无法直接进行梯度下降计算,采用训练神经网络去计算神经网络转换成决策树的平均深度,这个想法还是很神奇的,让我体会到神经网络运用是非常灵活的。