zoukankan      html  css  js  c++  java
  • 【笔记】机器学习

    课程笔记

    前言

    两种可解释性:
    局部解释:为什么这种图是猫?
    全局解释:猫是什么样子的?

    为什么需要可解释机器学习?(打开黑盒)

    一般的提升效果的方法就是一顿暴调参数,可解释性可以帮助我们更好地提升模型性能。

    其实人也是个黑盒(这个观点太6了)。
    可解释机器学习的目标,不需要真正知道模型如何工作,只需要给出可信服的解释,让人满意就行。
    对此还可以针对不同人的接受能力给出不同层次的解释。

    模型的可解释性和模型的能力之间有矛盾。
    一些模型,比如线性模型,可解释性很好,但效果不佳。而深度网络,虽然能力一流,但缺乏可解释性。
    我们的目标不是直接选择可解释性好的模型,而是让能力强的模型具有更好的解释性。

    同时具有强大能力和可解释性的,是决策树。
    但决策树结构如果很复杂,那么可解释性也会很差。(森林)

    局部解释

    一个研究对象可以分成很多个部分,如何判断各部分对于决策的重要性?
    可以通过修改或者删除这一部分来看看结果有多大的影响,如果影响很大,则这部分很重要。

    举例:

    可以用saliency map来可视化,图中的白点就是偏导数的值。

    更多资料:

    求导的局限性:比如鼻子长到一定程度,就可以确定这是一只大象,但是导数却是0,得出鼻子不重要这样的结论,明显是不对的。

    这个也可以被对抗攻击,

    宝可梦和数码宝贝的例子:

    分类的效果太好了,用saliency map分析后发现,关注点在图的边缘,为什么?

    因为格式不一样,背景不同。。。其实程序并没有学会分类宝可梦和数码宝贝。

    全局解释

    之前讲过,什么样的输入可以得到最好的分类结果,可以看到机器认为的居然是下面这样的一些图。

    可以通过加正则项,然后来使图像看起来更像数字。

    这样的话就有更多的超参数需要调了。。。。

    如果说输入先经过一个生成器,使得不管什么样的向量,都可以经生成器得到一个合理的图片,然后再对图片分类。
    通过图片的类别,反推优化输入,这样会更好一些。

    得到的结果不错,

    用另一个模型去做解释

    可以用一个解释性更好的模型去模拟另一个模型的效果。
    虽然线性模型不能完全模拟神经网络,但在局部上,模拟效果还是不错的。(LIME方法)

    这个方法的局限是,选取的局部粒度的大小会影响模拟的效果。

    举例:

    切分后,可以提取成一个向量,然后可以用线性模型拟合。通过权重的大小,判断各分块的重要性。

    如果是决策树模型来模拟的话,我们希望这个树不要太大,那么可以设置一个树的复杂度参数。

    不过这个复杂度参数不能微分。(paper中有一种收集很多复杂度数据,然后求解的方法)

    课程地址

    Explainable ML

  • 相关阅读:
    zedboard如何从PL端控制DDR读写(四)
    ZC706以太网扩展板接口
    软件测试作业3--Junit、hamcrest、eclemmat的安装和使用
    软件测试作业2
    软件测试作业1--描述Error
    安装Mysql 5.7.1
    Servlet生命周期+工作原理
    VS中工程的“依赖”,“库目录”,“包含目录”
    Linux C 重定向简单范例
    Java中关键字final用法
  • 原文地址:https://www.cnblogs.com/yanqiang/p/12403542.html
Copyright © 2011-2022 走看看