Life sucks, but you're gonna love it.

0%

Machine Learning-2019| 3 Explainable Machine Learning 可解释机器学习

Chapter 3. Explainable Machine Learning

之前我们讲到了,如何机器知道 自己是”不知道”的, 以及如何 “骗” 过机器。那么这部分要探究的是,机器是否知道自己为什么知道,即机器是否知道自己给出某种决策的原因,以及决策的依据是否合理。

Introduction

在训练和应用机器学习的模型时,我们往往会考虑一个问题:这训练出来的模型虽然效率很高,但是这模型究竟是什么?我们能了解到里面每一个参数或者结构的意义吗?李宏毅老师的观点是,我们不需要去理解。虽然我们都认为机器学习的模型是黑盒,得出的模型很难说明白,但我们也该想想,人类的大脑也是一个黑盒。有时候我们并不知道里面运作的机制是怎样的,所以要求对机器学习的模型进行解释,其实更多的为了满足那些对机器学习有质疑的人的要求。不过,对机器学习的模型进行解释 和 Explainable ML 并不完全相同,这里我们更多的是希望机器知道自己为什么做出这样的决策,一方面来看这样的决策是否合理。另一方面为了搞清做决策的依据是否正确。

对于Explainable ML 可以分为两种,一种是 Local Explainable, 另一种是Global Explaination

Local Explanation 就是针对于某一个输入来讲,解释模型给出相应决策的原因。那么这种Explainable的机器学习模型可以解释很多问题:

  • 判别简历的时候,机器在决定该简历通过时的依据是什么?是性别还是阅历?
  • 作为辅助模型判刑的时候,机器给出的建议依据是什么,是否会有偏差?
  • 辅助金融决策时,机器必须要给出作出决定的原因,比如为什么不进行贷款?
  • 通过查看决策的原因进行机器的自我改进。

Global Explanation 就是针对于模型来讲,希望宏观上来说明机器模型会将怎样的一类输入判别为某个输出。

Interpretable vs. Powerful

  • Interpretable 指的是模型的可解读性
  • Powerful 指的是模型的模型的应用能力

总的来说可解读性越强的模型,它越简单。比如说我们一般用到的线性模型Linear Model,很容易我们就可以根据模型中的weight来判别哪一项的比重比较高,因此来解释模型在干什么。反言之,我们看到的神经网络模型的可解读性就比较弱,总的来说,我们很难根据神经网络中的各个参数来解释他和输入数据之间的关系。

但是,相对于简单的Linear Model来说,神经网络的能力是远远更高的。

因此,Interpretable 和 Poweful之间就形成了一个此消彼长的关系。

那么有人说到,我用Decision Tree可以做到既可解释,又有很强大的功能。但实际上,简单的Decision Tree 还是很有局限性的,真正比较强大的是Random Forest。

Local Explanation

“你为什么觉得,你看到的是一只猫呢?”

这是我们对一个网络模型提出的最为根本也最朴实的提问。我们想知道如果输入图片是一直猫,这个网络模型是根据什么判断这个图片是一只猫的。

假设我们的训练/ 测试数据可以表示成 $X(i) = {x_1, x_2, …, x_N}$, 这里的 $x_i$ 表示的是数据 $X(i)$ 的某一部分。作为一张图片来讲,这里可以是图片中的某一个pixel,也可以是某一个segment;作为一段文字来讲,这里的$x_i$ 可以使一个word 也可以是一个分段。总之,我们希望将输入的数据分为不同的部分,因此来判断究竟模型做出判断是受输入数据哪一部分的影响。

Remove component

第一种判断机器模型做出结论的方法是,依次去除一个部分,再将它pass到模型中,来观察输出的结果是否有大的变化。产生的变化越大,说明缺失的那部分越重要。

但是这种方法有一个问题,就是如何选取去除的部分的大小以及颜色。即,如果我们的输入是一个图片,那么我们每次去除图片中多大的部分呢?(对于pixel为基础单元的,我们每次该去除多大的pixel范围?对于segment为基础单元的,我们每次改去除多大的范围?)另一个问题是,对于去除的部分,我们应该将去除的部分设置为什么样色,才能让他尽量小的影响模型的判定结果。

Take small difference to one part

第二种方法和第一种方法类似,但这里并不是将某一个部分拿掉(删除),而是在某一个部分上加上一个增量。然后观察对应输出结果的增量。

假设输入数据 $X(i) = {x_1, x_2, …, x_n}$ 通过黑盒后,输出数据是 $y_k$。 我们要做的是在输入数据 $X(i) = {x_1, x_2, …, x_n+\Delta x, …,x_N}$ 的某一部分加上一个增量,如, $X(i) = {x_1, x_2, …, x_n}$, 之后观察新得到的输出数据 $y_k + \Delta y$. 如果这里的 $\Delta y$ 的值也很大,那么就说明增量 $\Delta x$ 对结果的影响很大,反之,则说明增量 $\Delta x$对结果的影响并不大。其实这里我们就是在求 ${\frac{\Delta y}{\Delta x}} \longrightarrow \frac{\part y_k}{\part x_n}$. 根据这个公式,我们可以画出对应输出图片的saliency map。这里图片的梯度越大,说明这部分对于结果的影响越大。

当然,这个方法同样也有一些局限性。

Attack Interpretation

我们在前一章学到,说,可以对原图加上一些杂序,使得分类器无法对一张类似原图的图做出准确的判断。这种方法也可以用在 “欺骗” 模型解释上,我们可以增加杂序,让原本影响输出结果的部分变得不那么重要。

Case Study

这里李宏毅老师举例辨别神奇宝贝和数码宝贝,他发现训练一个简单的四层的卷积神经网络可以将辨别神奇宝贝和数码宝贝的分类器的效率提高至98%。

但是进一步做模型的explaination后发现,其实决定图片为数码宝贝的部分大多集中在图片人物的周围,也就是背景处。从而进一步发现,两种类别的训练图片的格式是不同的,作为数码宝贝的png图片,输入之后背景是透明黑色的,而神奇宝贝则是jpeg图片。因此,背景的颜色起到了决定性的作用

Global Explaination

“你觉得,一只猫该长什么样子呢?”

这部分主要是在说,当没有特定输入的时候,机器给出的猫的条件是什么呢,或者机器心目中的猫该长什么样子。

Activation Maximization

既然我们想对机器的某个分类进行解释,那么我们就将机器的某个分类值 $y_i$ 拿出来,要找的是使 $y_i$输 最大的输入值 $x$,即:

但,直接用这种方法也会带来一个问题,那就是拟合出的 $x^*$ 特别像一张杂图。这并不奇怪,因为我们在做图片攻击的时候,加上一个杂序,一张图片就会变成了另一个分类。所以需要做的是给这个优化函数加上一些限制(regulariztion),让它看起来更像一个数字:

这里我们定义 $R(x)$ 为所有pixel的和,因为我们知道对于一张digital的图片,大部分的区域是黑色的,除了数字的部分是白色的。所以我们的限制函数就是让一张图片上的pixel的和尽量小。

但是这种限制函数在不同的任务下有不同的定义,需要我们自己去想。

Regularization from generation

之前提到了这种限制函数需要我们去猜,去想。这部分就是介绍如何用一个generator来代替限制函数 $R(x)$。

对于图片来讲,我们现在遇到的问题是,求出的 $x^*$ 并不像一张图片,为了让它像一张图片,我们用一个限制函数来代替。现在我们可以结合image generator 的思想来生成图片。

首先,什么是image generator呢?image generator 希望我们训练一个模块$G(\cdot)$,使得一个一维随机数 $z$ 通过该模块后得到一张图片$x = G(z)$,类似于真实的图片。

其次,我们如何利用image generator来做限制呢?既然我们现在已经知道,对于image generator 来讲,任何一个通过generator的随机数数列都可以生成一张图片,那么我们就可以将我们这里的输入图片 $x$ 当做是 随机数列 $z$ 经过image generator之后生成的图片,而 $x^ = arg \max \limits_{x} y_i$ 也可以转化为 $z^ = arg \max \limits_{z} y_i$. 在求出 $z^$ 之后,我们再将它放进image generator之后,得到的 $G(z^)$ 就会更接近于一张真实的照片。

Using a model to Explain another

这部分其实很好理解,如果我们用interpretable的模型可以模仿出来一个un-interpretable模型的结果,那么我们就认为这个interpretable的模型和我们无法解释的黑盒模型做了同样的事,有同样的运作机理。

假设我们的输入数据是 ${X^{(1)}, X^{(2)}, …, X^{N}}$, 该数据通过黑盒模型的输出tag分别是 ${y^1, y^2,…,y^N}$, 我们写昂找到一个interpretable的模型,同样的输入数据${X^{(1)}, X^{(2)}, …, X^{N}}$ 通过这个模型的输出 ${\tilde y^1, \tilde y^2,…,\tilde y^N}$ 与黑盒模型输出相近,这样我们就认为,我们找到的可解释的模型可以完成和黑盒模型同样的工作,因而来解释黑盒模型。

但有一个问题是,如果黑盒模型过于复杂,那么可能很难找到一个和黑盒模型能做到同样的工作,同时又很好解释的模型。在这个情况下,我们提出,那这个模型可以解释黑盒的一部就可以了。

LIME (Local Interpretable Model agnostic Explainations)

这个解决方法在局部解释了黑盒模型,以达到解释相应输出下的部分决策理解。主要步骤是:

  1. 首先给一个指定点 datapoint
  2. 在这个指定点的周围取一些sample作为参考
  3. 根据这个区域的sample进行linear model的拟合

这个方法有一个局限性就是sample的取值范围,不同sample的取值范围会影响最终拟合的linear model,从而影响解释结果。

LIME 举例

  • 首先给出一个想要解释的datapoint(因为我们想要解释的是,针对于某个特定的图,模型为何会做出这样的判断);
  • 其次在这个模型周围作采样,对于一张图片来讲在周围进行采样可以等效为在图片上加上杂序,或者随机去除某个pixel(segment);
  • 依次将这些图片输入黑盒模型中,得到关于每张图片的分数;
  • 依次这些图片输入模拟的模型中,(可以在输入模型前做降维处理),是的输出的分数接近黑盒输出的分数;