课程笔记
前言
两种可解释性:
局部解释:为什么这种图是猫?
全局解释:猫是什么样子的?
![](https://i-blog.csdnimg.cn/blog_migrate/e8355e2a3143e4f2184e604b88c54135.png)
为什么需要可解释机器学习?(打开黑盒)
![](https://i-blog.csdnimg.cn/blog_migrate/22cd91c4a5695a4ade6dcc21574f792a.png)
一般的提升效果的方法就是一顿暴调参数,可解释性可以帮助我们更好地提升模型性能。
![](https://i-blog.csdnimg.cn/blog_migrate/b7388de812463348c3d70d95d0902570.png)
其实人也是个黑盒(这个观点太6了)。
可解释机器学习的目标,不需要真正知道模型如何工作,只需要给出可信服的解释,让人满意就行。
对此还可以针对不同人的接受能力给出不同层次的解释。
![](https://i-blog.csdnimg.cn/blog_migrate/7406291f42dd39cbdf5ea9ed8780760f.png)
模型的可解释性和模型的能力之间有矛盾。
一些模型,比如线性模型,可解释性很好,但效果不佳。而深度网络,虽然能力一流,但缺乏可解释性。
我们的目标不是直接选择可解释性好的模型,而是让能力强的模型具有更好的解释性。
![](https://i-blog.csdnimg.cn/blog_migrate/48a5f20da63de4427985e1dccbdc1751.png)
同时具有强大能力和可解释性的,是决策树。
但决策树结构如果很复杂,那么可解释性也会很差。(森林)
![](https://i-blog.csdnimg.cn/blog_migrate/bd4ca6912b67a241b1d93b4774073525.png)
![](https://i-blog.csdnimg.cn/blog_migrate/58b748316768e8063e2bb4fc175fcc88.png)
局部解释
一个研究对象可以分成很多个部分,如何判断各部分对于决策的重要性?
可以通过修改或者删除这一部分来看看结果有多大的影响,如果影响很大,则这部分很重要。
![](https://i-blog.csdnimg.cn/blog_migrate/5127f5f45330349480e3d7304c13cf26.png)
举例:
![](https://i-blog.csdnimg.cn/blog_migrate/56cc161ce327397507dfe79b8d79e654.png)
可以用saliency map来可视化,图中的白点就是偏导数的值。
![](https://i-blog.csdnimg.cn/blog_migrate/319b50d20dffd4b946eaf8b4f44c9f58.png)
更多资料:
![](https://i-blog.csdnimg.cn/blog_migrate/4d990bdaa915314a01d2da77c2f73f99.png)
求导的局限性:比如鼻子长到一定程度,就可以确定这是一只大象,但是导数却是0,得出鼻子不重要这样的结论,明显是不对的。
![](https://i-blog.csdnimg.cn/blog_migrate/0a8d6b8d77bd1c8901f0a5ef7848cc84.png)
这个也可以被对抗攻击,
![](https://i-blog.csdnimg.cn/blog_migrate/61e5255b1b0393c2efd5f4bd1fcfb1b4.png)
宝可梦和数码宝贝的例子:
分类的效果太好了,用saliency map分析后发现,关注点在图的边缘,为什么?
![](https://i-blog.csdnimg.cn/blog_migrate/39fe2d076849ce499283270c4417a4d5.png)
因为格式不一样,背景不同。。。其实程序并没有学会分类宝可梦和数码宝贝。
![](https://i-blog.csdnimg.cn/blog_migrate/233a43845c112626b5739be4e3d2f0bc.png)
全局解释
之前讲过,什么样的输入可以得到最好的分类结果,可以看到机器认为的居然是下面这样的一些图。
![](https://i-blog.csdnimg.cn/blog_migrate/d83a8ff63314ee2667b36271212bc324.png)
可以通过加正则项,然后来使图像看起来更像数字。
![](https://i-blog.csdnimg.cn/blog_migrate/2a9c9b9b3549713ff66e9b247c59c422.png)
这样的话就有更多的超参数需要调了。。。。
![](https://i-blog.csdnimg.cn/blog_migrate/126ccdc0c6ed3d721d8013c027732077.png)
如果说输入先经过一个生成器,使得不管什么样的向量,都可以经生成器得到一个合理的图片,然后再对图片分类。
通过图片的类别,反推优化输入,这样会更好一些。
![](https://i-blog.csdnimg.cn/blog_migrate/61fdc5727e3c9d4cdb0d883b21e96c77.png)
得到的结果不错,
![](https://i-blog.csdnimg.cn/blog_migrate/4f1283d4969d9e397cfeed7d9237a3d1.png)
用另一个模型去做解释
可以用一个解释性更好的模型去模拟另一个模型的效果。
虽然线性模型不能完全模拟神经网络,但在局部上,模拟效果还是不错的。(LIME方法)
![](https://i-blog.csdnimg.cn/blog_migrate/c83f0898d92ebfb30096e8ea99549864.png)
这个方法的局限是,选取的局部粒度的大小会影响模拟的效果。
![](https://i-blog.csdnimg.cn/blog_migrate/8b8440e4d73dff36383a916addfedb7d.png)
举例:
![](https://i-blog.csdnimg.cn/blog_migrate/90ec88be59fe5554bf7c2fe109c29849.png)
切分后,可以提取成一个向量,然后可以用线性模型拟合。通过权重的大小,判断各分块的重要性。
![](https://i-blog.csdnimg.cn/blog_migrate/d35d4e9db80e95eac885af5192221535.png)
![](https://i-blog.csdnimg.cn/blog_migrate/206ca2fa4618d6d34d039307f6961da0.png)
如果是决策树模型来模拟的话,我们希望这个树不要太大,那么可以设置一个树的复杂度参数。
![](https://i-blog.csdnimg.cn/blog_migrate/a01c81832132b22d7a7c1296b7244b46.png)
不过这个复杂度参数不能微分。(paper中有一种收集很多复杂度数据,然后求解的方法)
![](https://i-blog.csdnimg.cn/blog_migrate/df2bfbc3fea2468eb177fee14420acef.png)