可解释的ML
Introduction
要求机器不仅要告诉我们结果是cat,还要告诉我们为什么
Why we need Explainable ML?
我们不仅需要机器结果的精确度,还需要进行模型诊断,看机器学习得怎么样;有的任务精确度很高,但实际上机器什么都没学到
有模型诊断后,我们就可以根据模型诊断的结果再来调整我们的模型
Interpretable v.s. Powerful
决策树可以interpretable,也是比较powerful的
但当分支特别多的时候,决策树的表现也会很差
Local Explanation
Basic Idea
对于输入的x,我们将其分成各个components,每个component由一个像素,或者一小块组成
我们现在的目标是知道每个component对making the decision的重要性有多少,那么我们可以通过remove或者modify其中一个component的值,看此时的decision会有什么变化
把灰色方块放到图像中,覆盖图像的一小部分;如果我们把灰色方块放到下图中的红色区域,那么对解释的结果影响不大,第一幅图还是一只狗
还有另一种方法
在上图中,下半部分由3幅图saliency map,亮度越大,绝对值就越大,亮度越大的地方就表示该pixel对结果的影响越大
Limitation of Gradient based Approaches
Attack Interpretation
Global Explanation
Activation Minimization (review)
之前我们的目标是找到一个image,使得输出的y达到最大值;现在我们的目标不仅是找到x使输出y达到最大值,还需要把image变得更像是一个digit,不像左边那个图,几乎全部的像素点都是白色,右边的图只有和输出的digit相关的pixel才是白色
这里我们通过加入了一个新的限制
R
(
x
)
R(x)
R(x)来实现,可以表示图像和digit的相似度
Constraint from Generator
如下图所示,我们输入一个低维的vector z到generator里面,输出Image x;
现在我们将生成的Image x再输入Image classifier,输出分类结果 y i y_i yi,那么我们现在的目标就是找到 z ∗ z^* z∗,使得属于那个类别的可能性 y i y_i yi最大
找到最好的
z
∗
z^*
z∗,再输入Generator,得出
x
∗
x^*
x∗,产生一个好的Image
结果展示。现在你问机器蚂蚁长什么样子呢?机器就会给你画一堆蚂蚁的图片出来,再放到classifier里面,得出分类结果到底是火山还是蚂蚁
Using a model to explain another
现在我们使用一个interpretable model来模仿另外一个uninterpretable model;下图中的Black Box为uninterpretable model,比如Neural Network,蓝色方框是一个interpretable model,比如Linear model;现在我们的目标是使用相同的输入,使linear model和Neural Network有相近的输出
实际上并不能使用linear model来模拟整个neural network,但可以用来模拟其中一个local region
Local Interpretable Model-Agnostic Explanations (LIME)
下图中input为x,output为y,都是一维的,表示Black Box中x和y的关系,由于我们并不能用linear model来模拟整个neural network,但可以用来模拟其中一个local region
- 首先给出要explain的point,代入black box里面
- 在第三个蓝色point(我们想要模拟的区域)周围sample附近的point,nearby的区域不同,结果也会不同
- 使用linear model来模拟neural network在这个区域的行为
- 得知了该区域的linear model之后,我们就可以知道在该区域x和y的关系,即x越大,y越小,也就interpret了原来的neural network在这部分区域的行为
Decision Tree
如果我们用不限制深度的decision tree,那么我们就可以使用decision tree来模拟black box(neural network),使两者的输出相近,但decision tree的深度不可能是没有限制的。
我们设neural network的参数为
θ
\theta
θ,decision tree的参数为
T
θ
T_\theta
Tθ,使用
O
(
T
θ
)
O(T_\theta)
O(Tθ)来表示
T
θ
T_\theta
Tθ的复杂度,复杂度可以用
T
θ
T_\theta
Tθ的深度来表示,也可以用neural的个数来表示;现在我们的目标不仅是使两者输出相近,还需要使
O
(
T
θ
)
O(T_\theta)
O(Tθ)的值最小化
使
O
(
T
θ
)
O(T_\theta)
O(Tθ)的值最小化的方法如下图所示
本文图片来自李宏毅老师课程PPT,文字是对李宏毅老师上课内容的笔记或者原话复述,在此感谢李宏毅老师的教导。