explainable machine learning

type
status
date
slug
summary
tags
category
icon
password
给模型输入一个图片,机器可以判断图片是猫还是狗,但是这样是不够的,我们需要模型给出这个判断的理由,这就叫做explainable machine learning。
explainable是指模型本身是一个黑箱不具备解释的能力,但是想办法赋予模型解释的能力。
interpretable是指模型本身不是一个黑箱,具备解释的能力。
好的explainable不是解释出机器一步一步的运行过程,直白的给出机器的运行过程是人可能不理解的,给人能理解的解释方式才是好的explainable。
 
假如有一张图片,机器判断出图片中的生物是狗,那么如何解释机器真的知道图片中的狗,而不是看到图片中的其他部分确认这是一只狗呢?
对初始图片的每个pixel做一个loss,改变其中的某个pixel的值,如果loss的变化不大,则说明这个pixel对图片的影响不大,如果loss的变化很大,则说明这个pixel对图片的影响很大,对图片中的每个pixel做一次这样的处理,就可以的到对于图片来说重要的pixel,这个技术就叫做saliency map。
notion image
 
针对某一张图片的分析叫做local explainable,而不针对任何一张指定的图片,而是去观察模型中的参数,找到模型真正关注的特征,叫做global explainable。
notion image
假设filter1输出的feature map中的element是,就需要找到一张图片x使所有的之和是最大的,这样就能知道filter1关注的是什么特征。由于是要求x的最大值,因此可以采用和gradient decent类似的方法叫做gradient ascent。
notion image
针对一个手写识别的模型,每一张图片都是对应一个filter中一个最大的x,可以看到在12个filter中,每个filter尝试去侦测不同的类似于笔画的东西。
notion image
如果不去看每个filter的输出,而是去看最后结果的output,假设这个手写识别的模型是识别0~9个数字,那么对于0~9,每个图片能够让模型认为x是最大的图片就是上述的样子。比如,模型检测到第0张图片,对于模型来说这样的图片是最像数字0的。那么为什么当x最大的时候,模型输出的图片不是0~9数字本身,而是看起来像一堆噪音的图片呢?
参考,adversarial attack的原理,对于模型来说,只要在原本的图片上加入一些噪音就可以让原本识别不出来数字的模型识别出这个图片。所以实际上,对于机器来说,不需要真的看到很像0的图片才认为某张图片是0,即使输入一张乱七八糟的噪音,模型也会认为这样图片是数字0,所以如果想利用这种方式让模型真的输出最像0的照片,其实是做不到的。那么如何找到这样的图片呢?
notion image
之前只考虑让x的分数是最大,现在给一个限制R(x),R(x)是衡量某张图片多像一个数字的值,现在需要让x和R(x)同时最大。比如,R(x)可以是数字中笔画占整张照片的占比,笔画一般是有颜色的,有颜色的部分占整张图片的占比应该是比较少的,利用这种思想可以去掉一些噪音,在图片中就是希望白色的点越少越好。
假设现在有一堆图片作为训练资料,用这些资料去训练一个image generator,可以使用GAN、VAE或者别的很多的方法去训练一个image generator,image generator的输入是采样出来的低维向量,输出是一张图片,image generator用G表示。
notion image
现在不去找一个X让它最大,现在找一个Z,输出一张图片X,图片X对应的类别是y,现在要让y的信心分数是最大的,然后根据这个Z生成X,那么这个X会是跟之前一样是一堆噪音吗?
notion image
可以看到,现在生成的X就是真的蚂蚁或者火山。
 
Prev
命令行执行提示自定义module不存在,但是目录中存在
Next
auto-encoder
Loading...
Catalog