李宏毅机器学习笔记31

目录

摘要

Abstract

[1.explainable machine learning重要性](#1.explainable machine learning重要性)

[2.local explanation](#2.local explanation)

[local explanation](#local explanation)

[saliency map](#saliency map)

smoothgrad


摘要

本篇文章继续学习李宏毅老师2025春季机器学习课程,学习内容是explainable machine learning的重要性,以及explainable machine learning分类中的local explanation及基本判断方法。

1.explainable machine learning重要性

为什么需要可解释的机器学习?一个本质上的原因是就算机器可以得到正确答案但并不代表它非常聪明。在很多真实的应用中explainable machine learning往往是必须的,举例来说,银行可能会用机器学习的模型判断要不要贷款给某一个客户,但是法律规定银行用机器学习的模型自动判断必须要有一个理由,此时我们并不是只训练机器模型就好,我们还需要机器学习的模型是有解释力的。或者是未来用在医疗诊断上,这样关乎人身安全的问题,如果机器学习不会给出理由的话,我们无法相信它做出的是正确的判断。所以我们需要机器学习不只给我们答案,还要给我们得到答案的理由。

更进一步,如果机器学习的模型具有解释力的话,我们可以凭借解释的结果去调整我们的模型

2.local explanation

explainable machine learning分为两大类,一种是local explanation,一种是global explanation。假设有一张图片,里面是一只猫,那么我们的问题是:为什么会认为这张图片是一只猫。根据一张图片来回答问题,这叫作local explanation。而global explanation是现在没有给图片,而是问它上面样的图片叫做猫,它并不针对任何一张特定图片分析。

local explanation

对local explanation来说,我们可以把问题问的更具体一些,它知道这个图片是一只猫时,到底是图片中的什么东西让他觉得是一只猫。假设输入为x,可能是一张图片,一段文字。可以把x拆分为多个部分。那现在要问的问题就是,这些拆分的部分哪一个对机器现在做出的最终决断是最重要的。那我们如何知道哪个部分最重要?我们将某个部分拿出来改造或者是删除,如果我们改造或删除某个部分后,输出发生巨大的变化,就说明这个部分很重要。

举个例子,在一个图片中想要知道每一个区域的重要性时,有一个很简单的方法,在图片不同的位置放上一个灰色的方块,输出的是相应位置被灰色色块遮挡时,正确输出的几率,蓝色部分代表输出正确几率是低的,红色部分代表输出正确几率是高的。

saliency map

还有一种方法是计算gradient,假设有一张图,写作X1-Xn,每个X代表一个部分(pixels),计算这张图片的loss,即图片输入模型中,输出与正确答案的差距,用e表示。想知道某个pixel对这张图片的重要性,就把某个pixel的值做一个小小的变化,接下来看loss的值会有什么变化。如果loss变化很大,则代表这个pixel对这张图片很重要。我们把变化的e和变化的X作比值来代表pixel的重要性,比值越大,就代表越重要。把图中每一个比值计算出来就得到一个叫做saliency map的图,在saliency map上越偏白色代表比值越大,也就是这个部分越重要。

smoothgrad

我们可以用smoothgrad让saliency map画的更好,在下图中直接画出来的的saliency map并不是很理想,但是用smoothgrad会让saliency map的白色部分集中在动物附近。具体的做法就是在原有的图片上加上不同的杂讯,每个都计算saliency map最后平均起来就可以得到更好的效果。

光看gradient并不能完全反应一个部分的重要性。举一个例子,下图中横轴表示某种生物鼻子的长度,纵轴表示生物是大象的可能性。不难看出,在鼻子长度到一个限度之后,即使鼻子更长也不会更像大象,在限度附近会让我们计算的gradient为0。这就可能导致我们得出鼻子长度对是不是大象这件事情不重要,因为鼻子长度变化对是大象的可能性的变化是趋近于0的,但事实上不是这样。

相关推荐
zhippt_10142 小时前
AI生成PPT工具推荐:图转PPT与一键生成实测对比
人工智能·1024程序员节
鬼手点金3 小时前
KV Cache 未必是一次性的:可编辑、可组合的“笔记”
java·人工智能·笔记·学习·自动化·1024程序员节
深圳光特通信豆子3 小时前
使用光特通信光模块构建核心-分布-接入三层园区网络
1024程序员节
喜欢猪猪4 小时前
把记忆搬出显存:DeepSeek-V4.1-Flash Engram 与“第二稀疏轴“的架构革命
1024程序员节
4SAPI5 小时前
多模态 AI 应用统一接入网关生产选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
大数据·人工智能·架构·php·1024程序员节
程序猿乐锅10 小时前
面向对象练习:图书借阅系统里的封装、抽象类与多态
开发语言·前端·数据库·后端·python·学习·1024程序员节
云和数据.ChenGuang10 小时前
项目打开后没有主类
开发语言·人工智能·langchain·1024程序员节
叼烟扛炮10 小时前
Linux 学习笔记(三十四):线程同步——条件变量与生产消费者模型
linux·运维·服务器·笔记·学习·1024程序员节
艾莉丝努力练剑11 小时前
【AI大模型接入SDK】Trae生成main方法
网络·人工智能·网络协议·http·架构·1024程序员节
CappuccinoRose11 小时前
拖拽交互体系
前端·javascript·css·html·交互·1024程序员节