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

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

一、概述


  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,也就可以进行微分了。

相关文章
|
7天前
|
机器学习/深度学习 人工智能 安全
探索AI的未来:从机器学习到深度学习
【10月更文挑战第28天】本文将带你走进AI的世界,从机器学习的基本概念到深度学习的复杂应用,我们将一起探索AI的未来。你将了解到AI如何改变我们的生活,以及它在未来可能带来的影响。无论你是AI专家还是初学者,这篇文章都将为你提供新的视角和思考。让我们一起探索AI的奥秘,看看它将如何塑造我们的未来。
35 3
|
1月前
|
机器学习/深度学习 并行计算 PyTorch
【机器学习】探索GRU:深度学习中门控循环单元的魅力
【机器学习】探索GRU:深度学习中门控循环单元的魅力
|
25天前
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
59 2
|
26天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
50 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
1月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
21天前
|
机器学习/深度学习 自然语言处理 算法
机器学习和深度学习之间的区别
机器学习和深度学习在实际应用中各有优势和局限性。机器学习适用于一些数据量较小、问题相对简单、对模型解释性要求较高的场景;而深度学习则在处理大规模、复杂的数据和任务时表现出色,但需要更多的计算资源和数据,并且模型的解释性较差。在实际应用中,需要根据具体的问题和需求,结合两者的优势,选择合适的方法来解决问题。
47 0
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
浅谈机器学习与深度学习的区别
浅谈机器学习与深度学习的区别
44 0
|
27天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能的未来:从机器学习到深度学习的演进
【10月更文挑战第8天】人工智能的未来:从机器学习到深度学习的演进
57 0
|
30天前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
18天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)

热门文章

最新文章