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

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

一、概述


  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的呢?可以考虑一下决策树,决策树具备比较强的分类能力,但也容易被解释,比如在下图中,我们可以通过决策树的结构来分析它的运作机理:


V4@@AHGD@26%%6%Q$4_BI}6.png

                                                决策树


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


4RWN9PTR73`LA2[I42N~B03.png

                                         决策树与随机森林


二、Local Explanation


  1. 遮挡组件的方法


ESYZSW}`[ZY@V15344NX~@4.png

PRTWIPAUOC[6V{`$@JCTG{X.png

                                                   组件


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


BTU0(G_W(DK]}F6))OH)3OS.png

                                          Local Explanation


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


  1. 显著图的方法


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


_]O7FPTK{F`HMIQCIQ}1)`R.png

)4_YV5}L3{08Z7T3FOMUBOD.png

                                                   显著图


有时也有可能判定对象类别的特征在计算梯度的时候并不显著,比如下图中,当大象的鼻子作为识别大象的依据时,如果大象的鼻子长到一定的程度即使在唱也不会使得大象

更加像一只大象,也就是说PV`%P(9WZZ7B(4$[Q2[T0AG.png,这叫做梯度饱和(Gradient Saturation ):


9J)`)U68ANE0T]MM%P0TIXQ.png

                                               example


解决这个问题的方法有两个,这里列出两个链接:


①Integrated gradient:https://arxiv.org/abs/1611.02639


②DeepLIFT:https://arxiv.org/abs/1704.02685


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


O4I8592VNW0KBO`G9V`A{]5.png

                                                  attack


三、Global Explanation


  1. CNN的可视化


Global Explanation回答“What do you think a “cat” looks like?”的问题。在之前CNN的部分曾经提过的可视化方法也是一种可解释机器学习的方法,通过固定神经网络的参数然后通过最大化某一类别V%$D$J1D4$9M(}~9N$D[W{4.png来试图得到神经网络模型心中的手写数字的样子。然而事实上通过B]YZ4UKW~]L@9Y0ZKH7SC31.png的方法会得到一些类似杂讯的图:


G152}S8P6A(JP`_IZN1C]K0.png

                                                   Global Explanation


(XNHK0G3I[RECKICNOA{~0Y.png

WQWB)G7$7DP]{RH633E66Q6.png

                                            正则化


通过合理地设置正则化项,可以获得比较清晰、适合肉眼观看的5TC31(0YJA$}_OL~[5W7X%7.png,这里提供一个链接供参考:https://arxiv.org/abs/1506.06579,这里有比较好的效果图:


{6GL4]{DK8410BZFU5E9_A2.png

                                                   正则化


  1. 生成器的方法


7DL{ND`{(NJ~9MB1DY_2ITC.png

                                                   Generator


A]OUH798GVZCA3HMM2Q_2_H.png

                                                 生成器


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


(B`7F)O_YTO8XJ[($)V3FJ0.png

                                                           结果


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


  1. LIME


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


3OTBZ0E_J6_K2HXM{8_KWNF.png

                                          用一个模型来解释另一个


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


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


B@U`7QS09(OAVL`389_XBU1.png

                                                      LIME


LIME的具体操作步骤是:


①选取一个想要解释的点;


②在这个点附近取样;


③使用线性模型(或者其他易于解释的模型)来进行拟合;


④解释线性模型(或者其他易于解释的模型)。


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


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


(]B{G5DR7ITXVQS@]9YD7`N.png

                                         取样范围过大


  1. LIME举例


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

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


8ENY}[X@_]}4@334UDN2@6E.png

                         待解释图片


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


PUY4`XK6]@X{)JLEAS%}PNE.png

                                            取样


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


]{6}0JZ5QR)IA)5KDW1W[U3.png

                                                 计算输出


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


G%XG]C~5H{2R(S6V_L%UZNU.png

                                                        拟合


G%A]2Z]X0TA(`2[2AVZ8R3M.png

%M1J0~G75D8%`KVT2@6WA5G.png

                                                       解释


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


RDCFY5PCJMSQ6(8TU32@FFP.png


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


`9@V`H2TZNOYT4AY09BP`2J.png

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


JKM`%J]4~7V}ESV@$$CL9$A.png


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

相关文章
|
3天前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
85 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 一文看懂人工智能、机器学习、深度学习是什么、有什么区别!
**摘要:** 了解AI、ML和DL的旅程。AI是模拟人类智能的科学,ML是其分支,让机器从数据中学习。DL是ML的深化,利用多层神经网络处理复杂数据。AI应用广泛,包括医疗诊断、金融服务、自动驾驶等。ML助力个性化推荐和疾病预测。DL推动计算机视觉和自然语言处理的进步。从基础到实践,这些技术正改变我们的生活。想要深入学习,可参考《人工智能:一种现代的方法》和《深度学习》。一起探索智能的乐趣!
37 1
算法金 | 一文看懂人工智能、机器学习、深度学习是什么、有什么区别!
|
13天前
|
机器学习/深度学习 人工智能 PyTorch
深度学习长文|使用 JAX 进行 AI 模型训练
深度学习长文|使用 JAX 进行 AI 模型训练
24 2
|
6天前
|
机器学习/深度学习 自然语言处理 算法
机器学习和深度学习的区别
机器学习和深度学习的区别
19 1
|
9天前
|
机器学习/深度学习 人工智能 监控
【机器学习】Python与深度学习的完美结合——深度学习在医学影像诊断中的惊人表现
【机器学习】Python与深度学习的完美结合——深度学习在医学影像诊断中的惊人表现
22 3
|
9天前
|
机器学习/深度学习 人工智能 算法
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
17 3
|
8天前
|
机器学习/深度学习 人工智能 算法
人工智能(AI)、机器学习(ML)和深度学习(DL)
人工智能(AI)、机器学习(ML)和深度学习(DL)
100 1
|
13天前
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】45. Pytorch迁移学习微调方法实战:使用微调技术进行2分类图片热狗识别模型训练【含源码与数据集】
【从零开始学习深度学习】45. Pytorch迁移学习微调方法实战:使用微调技术进行2分类图片热狗识别模型训练【含源码与数据集】
|
1天前
|
机器学习/深度学习 自然语言处理 算法
深度学习在自然语言处理中的进展与应用
本文探讨了深度学习技术在自然语言处理领域的最新进展和应用。通过分析深度学习模型的发展历程及其在文本分类、情感分析、语义理解等任务中的成功案例,展示了这些技术如何推动了自然语言处理的前沿应用。同时,文章还讨论了当前技术面临的挑战以及未来发展的趋势。
24 11
|
3天前
|
机器学习/深度学习 人工智能 数据可视化
深度学习在图像识别中的应用与挑战
【6月更文挑战第22天】本文将深入探讨深度学习技术在图像识别领域的应用及其面临的挑战。首先,我们将介绍深度学习的基本概念和关键技术,然后详细解析其在图像识别中的具体应用,包括卷积神经网络(CNN)的工作原理和实例。最后,我们将讨论深度学习在图像识别领域面临的主要挑战,如过拟合、数据需求大和模型解释性差等问题,并提出可能的解决方案。