文章目录

  • 0 前言
  • 1 Introduction of Explainable/ Interpretable ML
    • 1.1 Why we need Explainable ML?
    • 1.2 Interpretable v.s. Powerful
  • 2 Local Explanation
    • 2.1 Introduction of Local Explanation
      • 2.1.1 Removing Way
      • 2.1.2 Modifying Way
      • 2.1.3 Limitation of Gradient based Approaches
    • 2.2 Attack Interpretation
    • 2.3 Help by Saliency Map
  • 3 Global Explanation
    • 3.1 Activation Minimization (review)
    • 3.2 "Regularization" from Generator
  • 4 Using a model to explain another
    • 4.1 Using Linear Model
    • 4.2 Local Interpretable Model-Agnostic Explanations (LIME)
      • 4.2.1 Basic Idea of LIME
      • 4.2.2 LIME-Image
    • 4.3 Using Decision Tree

0 前言

机器学习模型,从简单的LR, Decision Tree到复杂的DNN、CNN、RNN、LSTM等, 整体的趋势是模型越来越复杂,模型的可解释性越来越差。 而我们要求模型不仅可以(分类),还要输出分类的理由是什么(局部),以及某一个分类的判断标准(全局)。本文由整理李宏毅老师视频课笔记和个人理解所得,详细讲述了Explainable/ Interpretable ML的原理及实现方法。有问题欢迎在评论区交流,我会及时回复。

1 Introduction of Explainable/ Interpretable ML

我们期望模型不仅告诉我们结果,还要告诉我们原因。举例来说:

这个原因分为两个层次:

  1. Local explanation:为什么觉得是一只猫?
  2. Global explanation:你觉得猫应该长什么样?

1.1 Why we need Explainable ML?

我们不仅需要机器结果的精确度,还需要进行模型诊断。比如有的任务正确率很高,但是实际上什么都没有学到。还比如有需要我们给出理由的应用场景:

一般如果识别结果很不好,我们第一反应就是调参,改模型,但是我们期待未来模型可以自己诊断:

李宏毅老师认为,可解释机器学习的目标并不是完全了解模型到底是怎么工作的,因为实际上即使是人脑现在也是一个黑匣子,但是模型要给出一个不同的人所需要的所关心的解释:

1.2 Interpretable v.s. Powerful

有些模型本来就很容易理解,比如线性模型,但是就没有神经网络那么强。对于深度学习来说虽然可解释性差,但是也要想办法解释:

也有可解释性也很强的模型,比如决策树和对应的随机森林:

决策树也可以变得很复杂,比如层数很高,而且当树很多时候,随机森林也很复杂,很难解释:

2 Local Explanation

2.1 Introduction of Local Explanation

Local explanation的基本精神是给出一个对象x,这个对象可以图片和文本:
Given Object  x Components:  { x 1 , ⋯ , x n , ⋯ , x N } \begin{aligned} &\text { Given Object } x\\ &\text { Components: }\left\{x_{1}, \cdots, x_{n}, \cdots, x_{N}\right\} \end{aligned} ​ Given Object x Components: {x1​,⋯,xn​,⋯,xN​}​
其中的components可能是像素或者单词,这时模型需要给出这些components对于模型最终决策的重要性:

做法是移除或者修改component的值,观察对于决策的影响。对决策改变大的,那么就是重要的component。

2.1.1 Removing Way

将灰色方框在图片上移动,观察输出为正确的label的概率变化,蓝色代表概率低的位置,红色代表概率高的位置。可见对于结果来说,当灰色移动到了关键位置时,输出概率就会下降:
当然这个方框的颜色和大小也是需要调整的参数。

2.1.2 Modifying Way

对于输入的某一个维度的值 x n x_n xn​加一个扰动 Δ x \Delta x Δx,然后观察 y k y_k yk​输出变化是多少 Δ y \Delta y Δy,可以求 ∣ Δ y Δ x ∣ \left|\frac{\Delta y}{\Delta x}\right| ∣∣∣​ΔxΔy​∣∣∣​,进一步求这个 ∣ ∂ y k ∂ x n ∣ \left|\frac{\partial y_{k}}{\partial x_{n}}\right| ∣∣∣​∂xn​∂yk​​∣∣∣​偏微分的绝对值,也就是这个 x n x_n xn​对 y k y_k yk​而言是重要的还是不重要的。

Saliency Map(显著图):图中亮度越大,代表数值越大。也就是说表示了模型是真的获得了狗的信息才判断这是一条狗,而不是根据环境或者其他对象来判断的。

2.1.3 Limitation of Gradient based Approaches

到那时使用偏微分的方法有一定限制,会出现如下图的梯度饱和现象:

大象鼻子长到一定程度之后,那么对模型判断是大象的概率就不会增加了,此时算偏微分就接近0,那么根据上面的方法,会得出“大象鼻子不重要“的结论。

2.2 Attack Interpretation

但是实际上这种解释是可以被攻击的,例如下图的货车,在两种方法的saliency map里都识别出左边的区域重要,但是也可以通过一些几乎不可见的噪声,使得saliency map将云朵识别为重要的区域,但实际上模型的输出还是货车。 也就是输出和解释并不匹配。

2.3 Help by Saliency Map

举一个实际的例子展示saliency map有什么帮助,比如解释数码宝贝和神奇宝贝的差别:

这是两群不同的生物,但普通人很难区别。下载了两种卡通的数据集:

人眼观察的话可能很难分辨出其中的区别,然后李弘毅老师写了一个CNN测试了一下,识别的结果却很好:

所以他想看看对于模型来说怎么识别的,画了两者的saliency map,觉得识别的重点并没有落在生物的本体而是落在生物的边缘上:


究其原因发现,因为Pokemon和Digimon数据集的图片格式是不一样的,机器只需要读背景颜色就能判别了,其实什么都没有学到:

所以这也显示了可解释性学习的必要性。

3 Global Explanation

假设机器看见了猫,那么机器到底认为猫长什么样呢?

3.1 Activation Minimization (review)


先回顾一下,让某一个神经网络的output可以最大化。假设有一个网络可以识别手写数字,那我们现在希望这个网络能输出它认为的典型数字。

怎么做?首先确定哪个一种数字是我们想看的,比如 y i y_i yi​位置所对应的数字,现在找要一张图片 x x x,能够使得 y i y_i yi​的值最大

但实际我们可能得到 x x x是左边雪花的结果,人眼很难辨识,所以为了好看,需要在后面加一个项 R ( x ) R(x) R(x):

R ( x ) R(x) R(x)可以有不同的定义,这里是用所有的强度加起来,因为实际上的手写图片的多数区域都没有数值,减去强度之后或许会有帮助。

以下这个结果算是很好的,但是已经用了很多调参的技术了:

3.2 “Regularization” from Generator

但是现在我们可以做的更好,现在有一些Generator(生成模型),事先给出一堆图片,就可以教机器产生图片。给机器看一个低维度的向量 z z z,然后经过生成模型,就可以得到图片。

原来的方法是找一张图片,通过使得输出 y y y最大,现在可以在输入图片环境用生成器的结果代替,那么现在变成了找一个 z z z使得 y y y最大了。训练的话也是梯度下降,只需要将这两个网络接起来就可以了。

这样通过在输入端加了一个图片生成器的限制,因为这个生成器总是能输出人类能看懂的图片,那么最终可以使得最好的结果是人类能辨别的。如下图:
这两个模型实际上是固定的是训练好的,我们只是想看一下结果。因为今天的目标不是训练生成器和分类器。

4 Using a model to explain another

4.1 Using Linear Model

用一个可以被解释的模型解释另外一个不可以被解释的模型。做法是用一个可解释的模型模仿不可解释的模型,在训练的时候输入相同的样本,让模仿模型的输出接近黑色模型的输出:

4.2 Local Interpretable Model-Agnostic Explanations (LIME)

4.2.1 Basic Idea of LIME

虽然线性模型可解释强,但是性能太差了,很难模仿。但是如果只专注于一部分表现,那还是可以模仿的。比如只模仿一部分区域的行为:

  1. 假设想要解释黑盒子的输出的某个点。
  2. 在该点附近采样。
  3. 用线性的模型拟合neural network在这个区域的行为。
  4. 最终可以用这个线性模型解释这个区域了。

对于采样区域范围的选择不同,那么最后的结果也会不一样。比如下图如果采样很稀疏的情况:

这个方法只能用在local的explanation上,因为用的线性模型,没办法fit整个模型。

4.2.2 LIME-Image

第一步,给出你想解释的数据
第二步,在附件进行采样,但是这里的采样需要是按照图片分割进行的,将图片分成若干区域,每次随机选取一些区域使用,其他区域则为单色。然后输入到模型中,模型输出一个识别为正确标签“frog”的概率:

第三步,找一个可解释的模型,使得输入图片之后,也能输出同样的结果。

但是实际上如果按每一个像素来输入的话,对于线性模型来说还是需要太多的参数了,所以提出在输入前,将特征进行一些提取:

构造一个M维的向量,M是分割段的个数。以分割的整段为单位来记录,这个段使用了则该维度为1,否则为0。

最终对于线性模型来说就是以下这个式子:
y = w 1 x 1 + ⋯ + w m x m + ⋯ + w M x M x m = { 0 Segment  m is deleted  & 1 Segment  m exists.  \begin{aligned} &y=w_{1} x_{1}+\cdots+w_{m} x_{m}+\cdots+w_{M} x_{M} \\ &x_{m}= \begin{cases}0 & \text { Segment } \mathrm{m} \text { is deleted } \\ \& 1 & \text { Segment } \mathrm{m} \text { exists. }\end{cases} \end{aligned} ​y=w1​x1​+⋯+wm​xm​+⋯+wM​xM​xm​={0&1​ Segment m is deleted  Segment m exists. ​​
此时 w w w的值有三种结果,对应着三种情况:

李宏毅老师做了一个实验,然后将机器判断的依据的段拼接起来之后,有了以下的结果:

4.3 Using Decision Tree

刚才讲的用的线性模型,决策树解释性也很强,可以用决策树 T θ T_\theta Tθ​来模拟黑盒子的参数 θ \theta θ:
当然也不希望决策树过于深,不然也就失去了可解释性,所以定义了一个决策树的复杂度 O ( T θ ) O\left(T_{\theta}\right) O(Tθ​),这里可以使用平均深度,目标是复杂度越低越好。

怎么做呢?假设训练一个特别的网络,这个网络在训练的时候就考虑之后会被决策树分析,训练的参数容易被决策树分析:
一般的神经网络是就一个损失函数就行,但是我们同时加上一个决策树复杂度函数的正则项,也是越小越好。

右边那一项能够做微分吗?实际上不能解。但是有人提出了一个想法,就是又找一个网络,这个网络可以将输入的参数转换成决策树复杂度的值。这样就能解了。

可解释机器学习(Explainable/ Interpretable Machine Learning)的原理和应用(李宏毅视频课笔记)相关推荐

  1. 【机器学习笔记】可解释机器学习-学习笔记 Interpretable Machine Learning (Deep Learning)

    [机器学习笔记]可解释机器学习-学习笔记 Interpretable Machine Learning (Deep Learning) 目录 [机器学习笔记]可解释机器学习-学习笔记 Interpre ...

  2. zz[读书笔记]《Interpretable Machine Learning》

    [读书笔记]<Interpretable Machine Learning> Jul 19, 2019 看到这本书,特意翻了下微博妖僧老冯_之前的一条微博,这样写道:"在机器学习 ...

  3. 对抗机器学习(Adversarial Machine Learning)发展现状

    目录 1. 了解对手 1. 1 攻击目标(Goal) 1. 2 知识储备(Knowledge) 1.3 能力限制(Capability) 1.4 攻击策略(Strategy) 2. 学会主动 2.1 ...

  4. 机器学习概要(MACHINE LEARNING SUMMARY)

    机器学习概要(MACHINE LEARNING SUMMARY) 监督学习 回归分析与线性回归 1.例如营业额预测,传统算法必须知道计算公式,机器学习可以帮你找到核心的函数关系式,利用它推算未来预测结 ...

  5. Kaggle课程 — 机器学习进阶 Intermediate Machine Learning

    Kaggle课程 - 机器学习进阶 Intermediate Machine Learning 1.简介 1.1 先决条件 2.缺失值 2.1 简介 2.2 三种方法 2.3 一个例子 2.3.1 定 ...

  6. 图机器学习(Graph Machine Learning)- 第二章 图机器学习简介 Graph Machine Learning

    第二章 图机器学习简介 Graph Machine Learning 文章目录 第二章 图机器学习简介 Graph Machine Learning 前言 1. 环境要求Technical requi ...

  7. 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记...

    机器学习实战(Machine Learning in Action)学习笔记----06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习 作者:米仓山下 时 ...

  8. 林轩田机器学习技法(Machine Learning Techniques)笔记(一)

    终于到机器学习技法了,接下来还是尽量保持每章完结就立刻更吧..基石没有保持写完就更,现在回头不知道自己在写啥,看笔记感觉写得一塌糊涂,感觉翻车了.慢慢改进吧. 听说技法挺难的,贴一下大神博客来加持一发 ...

  9. 机器学习肝炎预测模型machine learning for hepatitis prediction model

    作者Toby,来自机器学习肝炎预测模型 肝炎是由细菌.病毒.寄生虫.酒精.药物.化学物质.自身免疫等多种致病因素引起的肝脏炎症的统称.儿童及成年人均可患病,病毒感染导致的病毒性肝炎较为常见. 由于过度 ...

最新文章

  1. 大专计算机学语数英理化生吗,学考11-13号报名啦!你知道语数英和政史地/物化生成绩有什么作用嘛?不懂你会后悔的!!...
  2. tcp三次握手四次挥手(及原因)详解
  3. 在IDEA连接MySql数据库时报错: [08001] CLIENT_PLUGIN_AUTH is required com.mysql.cj.exceptions.
  4. 《30天自制操作系统》前言、目录、样章欢迎阅读!
  5. tps协议和onvif协议_做监控的你,应该了解的ONVIF协议!
  6. (转)光照图的理论和实践
  7. 成立仅8个月的个人网站,月收入几十万美金
  8. java+long是什么_Java中long的模运算符是什么? - java
  9. OpenShift:外国的免费云平台
  10. apache2.4.18中启用h2c
  11. Redis介绍及常用命令【转载】
  12. 微信也QQ服务器,妄想山海QQ区还是微信区好 平民服务器选择推荐
  13. html生物代码,方舟生存进化全生物代码
  14. 路飞学城mysql练习
  15. 台式计算机如何设置无线网络,台式电脑怎么设置无线网络
  16. android console服务,如何使能和关闭android设备上的console功能
  17. Android http请求 工具类
  18. iOS GitHub Top 100 简介
  19. hadoop是什么?新手自学hadoop教程(一)
  20. 网站备案其实是服务器备案,国内服务器为什么需要备案?国外服务器备案吗?

热门文章

  1. 玩转Jetson AGX Orin—— Quick Start
  2. 存储虚拟化的特性和优势
  3. 【汇正财经】电网设备,享受改革的硕果
  4. 华为云在Linux ECS上使用obsutil通过内网访问OBS
  5. 【mixly】APDS9960第三方库开发
  6. python request 报错 #No JSON object could be decoded
  7. 途志:新主播让自己的直播热起来有什么技巧?
  8. 层次分析法 你真的懂了吗?(完更)
  9. 部分选主元matlab,部分选主元的Doolittle分解 | 学步园
  10. LCD vs LED vs OLED