李宏毅机器学习笔记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 天前
ClickHouse system.query_log 字段详解与排障实践
后端·clickhouse·1024程序员节
比奥利奥还傲.19 天前
哪吒监控面板实战:部署 Dashboard、接入 Agent、钉钉告警,再配置固定公网访问
网络·人工智能·分布式·1024程序员节
默 语21 天前
Java新手入门:从零开始安装JDK并配置环境变量
java·开发语言·python·mysql·group by·1024程序员节·数据去重
学传打活1 个月前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续3)
微信公众平台·1024程序员节·汉字·昆仑正义文化
学传打活1 个月前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng1682 个月前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心2 个月前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u0103055272 个月前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u0103055272 个月前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝2 个月前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节