可解释的机器学习|深度学习(李宏毅)(十一)

一、概述

  1. 分类

通常一个深度学习模型是黑盒子的,但我们也希望有一些方法来使得模型是可解释的(Explainable/Interpretable)。可解释的机器学习技术分为Local Explanation和Global Explanation两种。

对于一个图像识别模型来说,Local Explanation指的是:

Why do you think this image is a cat?

Global Explanation指的是:

What do you think a “cat” looks like?

  1. 用途

为什么需要可解释的机器学习技术呢?可以考虑以下例子,也就是说在具体应用的场景中,模型不只需要告诉人们结果,也需要告诉人们为什么会有这样的结果:

①用机器来协助判断履历
具体能力?还是性别?
②用机器来协助判断犯人是否可以假释
具体事证?还是肤色?
③金融相关的决策常常依法需要提供理由
为什么拒绝了这个人的贷款?
④模型诊断:到底机器学到了什么
不能只看正确率吗?想想神马汉斯的故事

我们可以通过可解释的机器学习技术来改善我们的模型,同时可解释的目的并非要使得网络模型完全地可解释,它的主要目的是为了Make people (your customers, your boss, yourself) comfortable。

  1. Interpretable v.s. Powerful

某些模型本质上是Interpretable,比如线性模型,只需要看线性模型的权重大小即可较直观地解释模型的作用,但是这样简单的模型不够Powerful。而有的模型比如深度模型是比较Powerful,但是并不容易被解释,因此我们需要想办法使得深度模型变得可解释。

那么是不是有的模型既Interpretable又是Powerful的呢?可以考虑一下决策树,决策树具备比较强的分类能力,但也容易被解释,比如在下图中,我们可以通过决策树的结构来分析它的运作机理:

决策树

但事实上在使用决策树时,有时候决策树也会过于复杂而不易解释,有时候我们会使用随机森林,也会使模型变得难以解释:

决策树与随机森林

二、Local Explanation

  1. 遮挡组件的方法

Local Explanation回答“Why do you think this image is a cat?”的问题。对于被分类对象来说,我们希望知道组成的众多组件中哪一部分的作用比较大。如果是图像,则组件可能是像素或者片段,如果是文字,则组件可能是词。例如,下图显示了一张图以及组成它的组件:

组件

我们的操作方法就是剔除或者修改某一组件的值,然后来看是否会对分类结果产生影响。例如下图中我们使用灰色框来进行图片的遮挡,最终发现灰色框遮挡住蓝色区域时会使得分类错误,这说明模型的确是关注了图像中正确的地方得出了结论:

Local Explanation

需要注意这里灰色框的大小甚至颜色是需要作为超参数来调试的,这说明使用这种方法需要调试一些参数才会取得比较好的效果。

  1. 显著图的方法

另一种方式是为某一个组件添加微小的扰动,然后观察对应输出类别的变化幅度(分类问题会输出一个类别向量),如果输出的类别变化较大的话则说明这个组件对判定对象的类别有重要的作用:

通过评估来衡量组件的重要性,具体操作时要看的是,最终通过每个组件的梯度就可以获得显著图(Saliency Map),如下所示:

显著图

有时也有可能判定对象类别的特征在计算梯度的时候并不显著,比如下图中,当大象的鼻子作为识别大象的依据时,如果大象的鼻子长到一定的程度即使在唱也不会使得大象更加像一只大象,也就是说,这叫做梯度饱和(Gradient Saturation ):

example

解决这个问题的方法有两个,这里列出两个链接:
①Integrated gradient:https://arxiv.org/abs/1611.02639
②DeepLIFT:https://arxiv.org/abs/1704.02685

要注意的是这种方法也可能会受到攻击,举例来说,在下图中,使用Integrated gradient和DeepLIFT方法都得到了正确的显著图,而如果给图像添加一些噪声(这些噪声对人肉眼观察不会造成影响),就会造成图像分类不变但显著图中显著的位置变成了白云而非卡车的位置,这说明可解释的机器学习技术可以用来进行攻击:

attack

三、Global Explanation

  1. CNN的可视化

Global Explanation回答“What do you think a “cat” looks like?”的问题。在之前CNN的部分曾经提过的可视化方法也是一种可解释机器学习的方法,通过固定神经网络的参数然后通过最大化某一类别来试图得到神经网络模型心中的手写数字的样子。然而事实上通过的方法会得到一些类似杂讯的图:

Global Explanation

我们可以根据实际情况来为优化函数加入一些正则化项,比如我们认为对于手写数字图片来说图片的大部分是白色的,只有数字的位置是黑色的,因此我们可以加入正则化项,即通过优化来查看效果。下图中是根据上述方法得到的结果,可以看到有几个数字已经比较像真实的数字了,但是总体上还是不很清晰:

正则化

通过合理地设置正则化项,可以获得比较清晰、适合肉眼观看的,这里提供一个链接供参考:https://arxiv.org/abs/1506.06579,这里有比较好的效果图:

正则化
  1. 生成器的方法
Generator

生成器会输入一个低维的向量,然后生成一张图像。如果我们有一个训练好的生成器(无论是GAN还是VAE等等),我们就可以使用这个生成器来对解释分类器做出一些限制,具体操作是将生成器与分类器连接到一起,并且在优化过程中固定生成器和分类器的参数。如下图所示,我们现在不再寻找一个最佳的,而是要寻找一个最佳的,然后通过生成器产生的图像就会是一张人类可以看的图像,同时它也可以使得分类器对应的类别的值达到最大:

生成器

以下是生成器生成的结果:

结果

四、用一个模型来解释另一个

  1. LIME

我们试图用一个容易解释的模型来解释另一个,被解释的模型相当于一个黑盒子。具体的操作方法是使得容易解释的模型拥有与被解释的模型同样的输入,然后通过使容易解释的模型尽量输出与被解释的模型同样的输出来训练它。在下图中,我们试图使用线性模型来解释深度模型:

用一个模型来解释另一个

但是这种方法的局限性在于线性模型的容量(capacity)太小而不足以解释深度模型,但是我们可以尝试用线性模型来解释深度模型的局部区域,这也就是LIME(Local Interpretable Model-Agnostic Explanations)技术的思想。

例如在下图中(以一维为例),我们采样了一些样本点然后使用线性模型来解释黑盒子的局部:

LIME

LIME的具体操作步骤是:
①选取一个想要解释的点;
②在这个点附近取样;
③使用线性模型(或者其他易于解释的模型)来进行拟合;
④解释线性模型(或者其他易于解释的模型)。

不应该认为LIME的方法就是在计算梯度,可以看到上述直线的斜率并不等于中间的样本点处的梯度。

需要注意第②步中,我们要在取样的点的周围进行取样,如果取样范围过大的话可能会造成下图中的问题,解释的效果就不会太好:

取样范围过大
  1. LIME举例

我们试图用一个线性模型来解释图片分类器中的一张图片。这里的步骤如下:

①选取一张需要解释的图片,比如我们使用一张跳蛙的图片:

待解释图片

②在这张图片附近取样,取样的方法是将这张图片分成多个区块:

取样

然后随机拿掉一部分片段从而获得这张图片“附近”的多个样本,然后计算模型对每张图片的“frog”这一类的输出:

计算输出

③使用线性模型来拟合,这里往往直接将图片转换成向量然后用线性模型来拟合是不现实的,通常我们需要将图片转换为一个低维的向量,比如转换成一个维度为分成的区块的数量的向量,每一维取值为0或1,0表示该区块被删除,1表示被保留,然后再使用线性模型进行拟合:

拟合

④最终我们可以根据每个区块的权重的大小来确定各个区块对于判定这张图片属于“frog”这一类别的作用:如果说明这个区块对于判定是无关的;如果说明这个区块表明图片属于“frog”;如果说明这个区块表明图片不属于“frog”。

解释
  1. 使用决策树来解释另一个模型
使用决策树来解释另一个模型

如上图,我们希望使用决策树来解释另一个模型,假设要解释的模型的参数为,用来解释它的决策树是,我们使用(举例来说使用平均深度)来度量决策树的复杂度。我们希望用来解释的决策树的复杂度不要太高,因为我们使用一个很复杂的决策树来解释神经网络模型的话,就可能使得决策树因为过于复杂而没有较强的解释能力。

我们使用的方法是树正则化(Tree regularization)的方式,即在训练被解释的模型时,要将用来解释它的决策树的复杂度作为一个正则化项来进行优化,也就是说在训练被解释的模型的同时也要保证解释它的决策树尽可能地不复杂。其优化函数如下:

我们面临的问题是使用平均深度无法做微分,因此这里提出一种有效的解决方案,也就是我们训练一个另外的神经网络(前馈网络即可),这个网络的输入是一个神经网络的参数,然后可以预测这个输入的神经网络转换成决策树后的平均深度。训练这个网络的方式是收集一些神经网络然后将它们转换成决策树获得其平均深度,然后就有了这个网络的一些输入和输出,也就可以训练这个网络了。有了这个网络以后我们就可以通过这个网络来获得,也就可以进行微分了。

你可能感兴趣的:(可解释的机器学习|深度学习(李宏毅)(十一))