李宏毅机器学习笔记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的,但事实上不是这样。

相关推荐
开发者小天7 小时前
调整为 dart-sass 支持的语法,将深度选择器/deep/调整为::v-deep
开发语言·前端·javascript·vue.js·uni-app·sass·1024程序员节
fruge7 小时前
前端Sass完全指南:从入门到精通
1024程序员节
小超爱编程8 小时前
MyBatis 动态 SQL
1024程序员节
Leinwin8 小时前
借助智能 GitHub Copilot 副驾驶 的 Agent Mode 升级 Java 项目
1024程序员节
chenchihwen8 小时前
AI代码开发宝库系列:Function Call
人工智能·python·1024程序员节·dashscope
黑翼杰克斯8 小时前
如何裁剪u-boot,保留其必要功能,使体积尽可能小
linux·1024程序员节
.格子衫.9 小时前
022数据结构之树状数组——算法备赛
数据结构·算法·1024程序员节
lpfasd1239 小时前
第十章-Tomcat性能测试与实战案例
1024程序员节
lpfasd1239 小时前
第二章-Tomcat核心架构拆解
1024程序员节