机器学习(李宏毅)——Explainable AI

server/2025/3/14 11:42:53/

一、前言

本文章作为学习2023年《李宏毅机器学习课程》的笔记,感谢台湾大学李宏毅教授的课程,respect!!!

二、大纲

  1. Why we need Explainable ML?
  2. Interpretable v.s. Powerful
  3. Goal of Explainable ML
  4. Explainable ML

三、Why we need Explainable ML?

一直以来,我们都在学机器学习,最简单的就是图像分类,但是机器(模型)为什么能够work?大家都说它是个黑箱子,它是不是欠我们一个理由呢?

会不会是一种巧合,模型只是巧合地猜对了答案,而不是真的智能呢?如果是在无人车驾驶、医学诊断等领域应用上,那更应该得给出人们可以接受的理由!

所以,这次课就来讨论讨论AI可解释性问题。

四、Interpretable v.s. Powerful

1、简单的模型好解释,但不够powerful。举例而言:线性模型我们可以清楚知道哪些权重是重要的,但不够powerful。

2、复杂的模型powerful,但不好解释。举例而言,深度学习神经网络很难解释,但确实会比线性模型更加powerful。

今天而言,我们人类只是“神识”还没那么强大到能够看透神经网络,但也更不应该说看不透就不用它!

那有没有模型,兼具可解释性和强大能力呢?比如decision tree?
确实决策树很强大,但使用过程,往往也不是只用一棵,而是一片森林(随机森林),也不见得好解释。

在这里插入图片描述

五、Goal of Explainable ML

那对于深度学习神经网络可解释这件事,我们的目标就一定要完完全全搞到它的详细原理吗?人脑这么多神经元错综复杂做出决策,我们不也是相信大脑的决策吗,所以其实我们就是想得到在关注的case上一个有说服力的理由而已!

六、Explainable ML

为了得到上述的理由,我们从对象层面进行划分:

  • 外物(Local Explanation)
  • 本身(Global Explanation)

1、Local Explanation
所谓的外物是相对于模型本身而言,即从输入层面来看。

2、Global Explanation
本身即指模型本身。

如下图所示:
在这里插入图片描述

1、Local Explanation
接下来就仔细研究下Local Explanation。
对于分类器而言,从输入的图片来看,模型真的知道输入的图片是什么类别吗?

  • which component is critical?

有一种做法是:把输入的图片每次遮住一点,看模型输出的变化情况,如下图:
在这里插入图片描述
说明:把输入是猫的图片,一个pixel一个pixel地遮住,看分类器分类结果变化,输出哪些是重要的像素,就能推断模型是否知道哪些特征是重要的。

  • Saliency Map
    另外一种做法是在梯度上做文章,基本思想就是把每个pixel加上一点杂讯,看对loss的影响如何,说白了就是敏不敏感(有没有捅到模型的胳肢窝),越敏感反应就越强烈,图上表现就越白,如下图:
    在这里插入图片描述
    基于这种方法,大家觉得有点毛毛躁噪的,于是多做几次加杂讯的动作,并把结果平均起来,这就是SmoothGrad。
    在这里插入图片描述

但还有一个局限性,意思就是说你要是一直捅胳肢窝,捅多了也就不敏感了呀,举了个大象鼻子长度和是大象的关系:
在这里插入图片描述
所以这里有人提出了另一种方法,叫IG(Integrated gradient)。

  • How a network processes the input data
    这种方法就是直接把输入数据在模型里面是啥样,可视化看看。
    1、Visualization
    可以是纯纯的把每一层的特征可视化出来瞅瞅:
    在这里插入图片描述
    2、Probing
    也可以是像探针一样把某一层的特征丢进去诊断器中看看输出结果。前提是你有一个好的诊断器。诊断器根据具体任务设定,可以是分类器啥的…
    在这里插入图片描述

2、Global Explanation
基本思想就是走入模型的内心,看其所想。
我们知道图像识别中CNN有很多的卷积核filter,其实就是用来侦测特征的,如果相应的特征输入,侦测该特征的卷积核所对应的权重就会越大。

反过来推导,假设此时此刻某个卷积核权重很大,那应该对应什么样的图片输入呢?(你动了我的心,那你应该是啥样的)

在这里插入图片描述

上图就是在求最大化卷积核特征所对应的输入图片。最大化问题,用gradient ascent。

以MNIST为例,如下图:
在这里插入图片描述
上图确实是求出来输入图片长啥样,但你可别期待和数字长得一样,明显就是经过拆解的,还是可以看出是在检测笔画笔顺。

如果你从输出结果反向求是输入,那可能求得输入就是一堆杂讯:
在这里插入图片描述

其实这就是机器心中所想,但人类还是傻眼了,看不懂呀,所以需要做个转换映射,让求得的输入图片要越像数字越好,那这件事情怎么做呢,就是加入限制条件约束它(强迫它)。

在这里插入图片描述

还有一种方法就是用GAN!
在这里插入图片描述


http://www.ppmy.cn/server/174871.html

相关文章

STM32-Unix时间戳

一:什么是时间戳 Unix时间戳(Unix Timestamp)是一个计数器数值,这个数值表示的是一个从1970年1月1日0时0分0秒开始到现在所经过的秒数,不考虑闰秒。 时间戳存储在一个秒计数器里,秒计数器为32位/64位的整…

星越L_导航功能使用讲解

目录 1.导航方法 2.左上方输入目的地和起始位置进行搜索导航。 3.下方可以查看我们的搜索记录及选择目的地。 4,点击返回之后,可以看到有加油站、洗车、美食、停车场、收藏地点等等。 5.设置家和公司的地址 6.可以设置音量及播报模式 7.导航设置 1.导航方法 中控屏打开…

深入探讨PHP的协程:实现高并发的编程模型

深入探讨PHP的协程:实现高并发的编程模型 引言 在现代Web开发中,高并发处理能力是衡量一个系统性能的重要指标。传统的同步阻塞I/O模型在处理大量并发请求时,往往会导致资源浪费和性能瓶颈。为了解决这一问题,协程(C…

C++ Primer Plus 编程练习题 第四章 复合类型

1.字符数组 #include <iostream> using namespace std;int main() {char first_name[15];cout << "what is your first name?";cin.getline(first_name,15);cout << "what is your last name?";char last_name[15];cin.getline(last…

【深度学习】参数管理

参数管理 在选择了架构并设置了超参数后&#xff0c;我们就进入了训练阶段。 此时&#xff0c;我们的目标是找到使损失函数最小化的模型参数值。 经过训练后&#xff0c;我们将需要使用这些参数来做出未来的预测。 此外&#xff0c;有时我们希望提取参数&#xff0c;以便在其他…

Python中很常用的100个函数整理

Python 内置函数提供了强大的工具&#xff0c;涵盖数据处理、数学运算、迭代控制、类型转换等。本文总结了 100 个常用内置函数&#xff0c;并配备示例代码&#xff0c;提高编程效率。 1. abs() 取绝对值 print(abs(-10)) # 10 2. all() 判断所有元素是否为真 print(all([…

网络_面试_HTTP请求报文和HTTP响应报文

简介&#xff1a; HTTP报文是面向文本的&#xff0c;报文中的每一个字段都是一些ASCII码串&#xff0c;各个字段的长度是不确定的。HTTP有两类报文&#xff1a;请求报文和响应报文。 HTTP请求报文 一个HTTP请求报文由请求行&#xff08;request line&#xff09;、请求头部&…

Mermaid 子图 + 拖拽缩放:让流程图支持无限细节展示

在技术文档、项目管理和可视化分析中&#xff0c;流程图是传递复杂逻辑的核心工具。传统流程图往往静态且难以适应细节展示&#xff0c;而 Mermaid 与 svg-pan-zoom 的结合&#xff0c;则为这一痛点提供了完美解决方案。本文将深入解析如何通过 Mermaid 的子图&#xff08;subg…