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

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

一、概述


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

相关文章
|
18天前
|
机器学习/深度学习 算法 TensorFlow
机器学习算法简介:从线性回归到深度学习
【5月更文挑战第30天】本文概述了6种基本机器学习算法:线性回归、逻辑回归、决策树、支持向量机、随机森林和深度学习。通过Python示例代码展示了如何使用Scikit-learn、statsmodels、TensorFlow库进行实现。这些算法在不同场景下各有优势,如线性回归处理连续值,逻辑回归用于二分类,决策树适用于规则提取,支持向量机最大化类别间隔,随机森林集成多个决策树提升性能,而深度学习利用神经网络解决复杂模式识别问题。理解并选择合适算法对提升模型效果至关重要。
185 4
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 一文看懂人工智能、机器学习、深度学习是什么、有什么区别!
**摘要:** 了解AI、ML和DL的旅程。AI是模拟人类智能的科学,ML是其分支,让机器从数据中学习。DL是ML的深化,利用多层神经网络处理复杂数据。AI应用广泛,包括医疗诊断、金融服务、自动驾驶等。ML助力个性化推荐和疾病预测。DL推动计算机视觉和自然语言处理的进步。从基础到实践,这些技术正改变我们的生活。想要深入学习,可参考《人工智能:一种现代的方法》和《深度学习》。一起探索智能的乐趣!
11 1
算法金 | 一文看懂人工智能、机器学习、深度学习是什么、有什么区别!
|
4天前
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】45. Pytorch迁移学习微调方法实战:使用微调技术进行2分类图片热狗识别模型训练【含源码与数据集】
【从零开始学习深度学习】45. Pytorch迁移学习微调方法实战:使用微调技术进行2分类图片热狗识别模型训练【含源码与数据集】
|
4天前
|
机器学习/深度学习 人工智能 PyTorch
深度学习长文|使用 JAX 进行 AI 模型训练
深度学习长文|使用 JAX 进行 AI 模型训练
12 2
|
5天前
|
机器学习/深度学习 人工智能 PyTorch
PyTorch快速入门与深度学习模型训练
这篇文章是PyTorch的入门指南,介绍了PyTorch作为深度学习框架的基本概念和使用方法。内容包括PyTorch的背景、基础操作如张量创建、运算、自动微分,以及如何构建和训练简单的全连接神经网络模型进行MNIST手写数字识别。通过这篇文章,读者可以快速了解如何在PyTorch中搭建和训练深度学习模型。
19 4
|
7天前
|
机器学习/深度学习 数据采集 TensorFlow
【机器学习】Python与深度学习的完美结合——深度学习在医学影像诊断中的惊人表现
【6月更文挑战第10天】Python和深度学习驱动的医学影像诊断正在革新医疗行业。借助TensorFlow等库,开发人员能轻松构建CNN等模型,自动提取影像特征,提升疾病诊断准确性。已在肿瘤检测等领域取得显著成果,但也面临数据质量和模型解释性等挑战。随着技术进步,深度学习有望在医学影像诊断中发挥更大作用。
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI的无限可能:从机器学习到深度学习
【5月更文挑战第31天】本文旨在深入探讨人工智能(AI)的核心技术,包括机器学习和深度学习。我们将通过实例和案例研究,揭示这些技术如何改变我们的生活和工作方式。此外,我们还将讨论AI的未来发展趋势,以及它可能带来的挑战和机遇。
|
19天前
|
机器学习/深度学习 数据采集 传感器
深度学习在图像识别中的应用进展构建高效机器学习模型:从数据预处理到模型优化的洞见
【5月更文挑战第29天】 在人工智能领域,深度学习技术已经成为推动图像识别进步的核心动力。随着卷积神经网络(CNN)的不断发展和优化,以及大数据和计算能力的显著提升,图像识别的准确性和效率得到了极大增强。本文将探讨深度学习技术在图像识别领域的最新应用,分析其关键技术创新点,并讨论未来可能的发展趋势。 【5月更文挑战第29天】 在探索数据科学与机器学习的融合艺术中,本文将引导读者穿越数据处理的迷宫,解锁特征工程的秘密,并最终在模型优化的顶峰俯瞰效率与准确性的壮丽景色。我们将通过一系列经过实战验证的技术感悟,展现如何打造一个既健壮又灵敏的机器学习模型。文章不仅聚焦于技术细节,更注重于概念理解与实
|
21天前
|
机器学习/深度学习 人工智能 算法
机器学习和深度学习有啥区别?一看就懂
深度学习与机器学习是相关但不同的概念,深度学习是机器学习的一个分支。机器学习侧重于让计算机在无明确编程情况下学习,包括决策树、SVM等算法;而深度学习主要依赖深层神经网络,如CNN、RNN。机器学习对数据需求较小,广泛应用于各领域;深度学习则需要大量数据,擅长图像和语音处理。机器学习模型可简可繁,计算资源需求较低;深度学习模型复杂,常需GPU支持
22 0
|
4天前
|
机器学习/深度学习 数据采集 算法
未来研究将深入探索深度学习的应用及数据质量与安全问题
【6月更文挑战第13天】本文探讨了使用Python和机器学习预测股票价格的方法,包括数据收集与预处理(填充缺失值、处理异常值、标准化)、特征选择(技术指标、基本面指标、市场情绪)、模型选择与训练(线性回归、SVM、神经网络等)、模型评估与调优。尽管股票价格受多重因素影响,通过不断优化,可构建预测模型。未来研究将深入探索深度学习的应用及数据质量与安全问题。
23 5