人工智能可解释性分析导论(初稿)

目录

思维导图

1.黑箱所带来的问题

2.从应用面论述为什么要进行可解释性分析

2.1可解释性分析指什么

2.2可解释性分析的必要性

2.3可解释性分析应用实例

2.4 可解释性分析的脑回路(以可视化为例如何)

 3.如何研究可解释性分析

3.1使用好解释的模型

3.2传统机器学习常用的可解释性方法

3.3从预测能力和可解释性两个角度对比常用模型

3.4建模之前的可解释性方法、建立本身具备可解释性的模型和建模后使用可解释性方法

3.4.1建模之前的可解释性方法

3.4.2建立本身具备可解释性的模型

3.4.3建模后使用可解释性方法

4.深度学习可解释性分析(卷积神经网络为例)

4.1为什么人类无法理解深度学习在图像处理领域的应用

4.2卷积神经网络可解释性方法

5.一些综述

参考文献


思维导图

可解释性分析:广义来看就是让人工智能能以人类理解这个世界的方式去理解世界,或者说以它理解世界的方式,带着人类去理解世界。

1.黑箱所带来的问题

 理解这几个问题:我们先看一下,如下图右所示的例子,对熊猫添加了噪声之后,从人类角度看还是熊猫,但计算机竟然识别成长臂猿,这是很可怕的,如果我们不能理解这个模型,当黑客利用模型漏洞攻击时,我们防无可防。再回到上面的问题,总结下来就是,我们希望能以人类的思考方式理解模型的脑回路,比方说,像下图左,在进行目标识别时,模型认为这个图是坦克依据的特征到底是哪部分,如果能清楚理解这个过程,那么模型的决策就有了依据,这个模型也就有了可信度。

再进一步理解:我们把模型比作老师,传统的模型在帮我们解数学题时,只能直接告诉我们答案,但没有答题思路,显然,我们无法通过这样的学习,提高我们自身解决这个问题的能力,但是如果模型有一天可以将它的解题思路以我们可以理解的方式(可解释性分析)告诉我们,那我们就获得了一个无所不能的老师,难以想象有一天人工智能开始以人类理解这个世界的方式去理解世界,甚至说以它理解世界的方式,带着人类去理解世界,是多么不可思议

我们再看一下现阶段人工智能的表现:今年爆火的AI绘画,如下图所示,让AI画一条在水中的三文鱼,但它画了了三文鱼的刺身,这说明它并不是真的理解三文鱼是什么,它只知道三文鱼是人类的食物,再让AI画一张握手的图,下图所示的确是握手,但并不是我们人类所理解的握手,如果一直使用这种知其然,却不知其所以然的模型,长远来看,必将受其乱。这也是人工智能可解释性分析的必要性。

再看一下其他行业:比如生物领域,像在蛋白质结构上,这往往需要足够大的模型,但人类如果人类无法理解这个过程,如何信任得到的分子结构毫无问题,即便这个结构被证实可用。再比如医疗,无人驾驶等领域,一个无法理解的模型,即使能够被广泛应用,但从根本上会有很大隐患。

2.从应用面论述为什么要进行可解释性分析

2.1可解释性分析指什么

我们希望通过可解释性分析,从模型中得到什么信息呢,举例如下:

对于目标检测:我们想知道模型在评判一张图属于什么类别时依据的特征到底是什么。

对于自然语言处理:依据被判定为负面语言的句子,模型到底从那些字或者语言逻辑去判断的。

对于推荐系统:抖音给你推荐的视频,淘宝给你推荐的商品,知乎给你推荐的文章,这些模型背后判断的逻辑到底是什么。

2.2可解释性分析的必要性

教人类下围棋:众所周知,AI在围棋领域已经封神,在用AI教人类下棋的过程中,人们发现AI会下一些无法理解但又能赢的棋,如果能理解AI下棋的思考方式,对人类的提高也是非常关键的。

教人类画画:像用AI教人类画画,如果想让他成为一个好老师,我们就必须理解它的脑回路,比方说,你想提升画画水平,将自己的画作传给AI之后,目前的AI只能直接帮你修改,但它不能给你说明白,为什么这样修改更好,所以只有对模型进行可解释性分析,我们才能理解它。

细粒度图像分类:细粒度图像分类,比方说荔枝有很多种类,如何将荔枝按照不同种类进行分类,这就是细粒度图像分类。对于可解性分析的应用,我们想知道计算机去进行细粒度图像分类时,依据的是什么,这是一个很有趣的工程。

2.3可解释性分析应用实例

教人类学习工艺参数:让人工智能教人类学习,德国一个激光加工企业博士,发现利用激光加工过程中,有些参数会发生变化,这会影响加工质量,而想要得到这些参数,必须停机才可以,但停机的成本又太高,于是他用神经网络训练了可以实时预测参数的模型,准确率很高,然后他用可解释性分析,可视化的分析了如何获得这个参数,工人根据可视化过程去学习推算参数,竟然真的提高了很多,这个方法很简单,但这个应用场景下却从未有人成果尝试,于是这个博士,横扫了改领域的论文。

医学应用:如下图对肺炎的辨识,人工智能可以直接用色彩表示它认为可能出现问题的区域,这对医学新人水平的提高,甚至说病人的理解有很大帮助,但如果没有这个可视化的解释,人们只能到得到一个你生没生病的结果。

损伤检测应用( layerCAM):这里应用到了损伤检测,可以明显看到颜色深浅标注不一,这就是可视化解释性分析的应用。 这可以说用图像分类问题,解决了图像定位问题,本身分类对于有没有损失问题,回答的是有或者没有的答案,而这里直接把损伤位置都做了标注,可见可视化解释的用处。有没有可能用这个方法,解决一些情况下,数据集难以标注的问题,对数据集进行标注,但问题是既然能进行标注,说明已经可以识别,那标注的意义又在哪,需要思考。

2.4 可解释性分析的脑回路(以可视化为例如何)

识别螺丝刀:如下图所示,识别一个螺丝刀,红色区域表示识别贡献最大区域,这符合人类的理解。 

识别建筑:从下图可以看出,AI识别福建土楼,是因为它有洞状结构,识别吊脚楼是因为它有棍状结构。这就是在告诉人类它的脑回路。

 3.如何研究可解释性分析

3.1使用好解释的模型

例如:KNN,逻辑回归,线性回归。贝叶斯,树模型是最具解释性的。

树模型:下图是一个判断是否人得病的模型,每一个节点都很清晰。是因为年龄,生活习惯,日常作息,还是其他原因,清清楚楚。

3.2传统机器学习常用的可解释性方法

算法自带可视化:像上面图像分类中可视化分析的色彩标注。

算法自带的特征权重:比方说随机森林,能够直观得出每一个特征对最后结果的重要程度的权重。

置换重要度:就是改变一些特征的位置,看其对结果的影响。

PDP,ICE图:如下图右所示,就是通过曲线表示特征对结果的影响。PDP比方说年龄这一个特征对心脏病的影响,ICE比方说,年龄和生活作息等多个特征对心脏病的影响。

shapley:直接列出每一个特征对结果的影响程度。

LIME:就是把复杂问题简单化,比方说,一个高维数据集,是用深度神经网络,非线性曲线拟合,这很难解释,但我们可以选取一些局部数据,用线性模型解释,进而解释整个模型。

3.3从预测能力和可解释性两个角度对比常用模型

从图中可以看出,NN神经网络模型预测效果最好,但可解释性也最差,线性回归模型,可解释性最好,但预测效果最差,LIME的思路就是,用可解性最好的模型,解释可解释最差的模型。

3.4建模之前的可解释性方法、建立本身具备可解释性的模型和建模后使用可解释性方法

3.4.1建模之前的可解释性方法

在建模之前的可解释性方法主要涉及一些数据预处理或数据展示的方法。

      数据可视化就是一类非常重要的建模前可解释性方法。很多对数据挖掘稍微有些了解的人可能会认为数据可视化是数据挖掘工作的最后一步,大概就是通过设计一些好看又唬人的图表或来展示你的分析挖掘成果。但实际上真正要研究一个数据问题之前,通过建立一系列方方面面的可视化方法来建立我们对数据的直观理解是非常必须的,特别是当数据量非常大或者数据维度非常高的时候,比如一些时空高维数据,如果可以建立一些一些交互式的可视化方法将会极大地帮助我们从各个层次角度理解数据的分布。

3.4.2建立本身具备可解释性的模型

这是最关键的一类可解释性方法,常用的有:基于规则的模型,基于单个特征的方法, 基于实例的方法,基于稀疏性的方法,基于单调性的方法。具体解释看人工智能算法的可解释性方法研究

3.4.3建模后使用可解释性方法

建模后的可解释性方法主要是针对具有黑箱性质的深度学习模型而言的, 深度学习的黑箱性主要来源于其高度非线性性质,每个神经元都是由上一层的线性组合再加上一个非线性函数的得到,人们无法像理解线性回归的参数那样通过统计学基础假设来理解神经网络中的参数含义及其重要程度、波动范围。但实际上我们是知道这些参数的具体值以及整个训练过程的,所以神经网络模型本身其实并不是一个黑箱,其黑箱性在于我们没办法用人类可以理解的方式理解模型的具体含义和行为,而神经网络的一个非常好的性质在于神经元的分层组合形式,这让我们可以用物质组成的视角来理解神经网络的运作方式。主要分为以下几类的工作:隐层分析方法、模拟/代理模型、敏感性分析方法

4.深度学习可解释性分析(卷积神经网络为例)

4.1为什么人类无法理解深度学习在图像处理领域的应用

从下图可以很明显看出,从第3.4层开始人类已经无法理解计算机提取的特征了。

4.2卷积神经网络可解释性方法

不管哪一种方法就是想知道对于分类结果,模型依据的特征是什么,反向理解就是我们想用一种方法知道,模型在分类时是否学到,像人类一样在识别一个东西时所依据的特征,比方说人类在识别一个狗时依据的是体型,毛发,五官等特点,那么模型依据的是不是这些特征呢,或者它分类依据的特征是什么,这是可解释性分析的目的。任何方法只要能实现这个目的,就是可解释性分析

 

可视化卷积核和特征图:就是得到卷积核参数,和其对应的特征图,卷积核又分浅层,中层,高层,不同层提取的特征不同。AlexNet这篇论文第一次对图像处理进行了可视化。但也有个问题,对于深层的网络,所表示出来的特征完全无法理解,可能因为维度过高,不能用RGB形式表示出来,让人类理解。

遮挡,缩放,平移,旋转:如下图所示对狗眼睛进行遮挡,如果对结果有影响,就证明网络学习到了眼睛的特征。

 找到能使某个神经元激活的原图像素,或者小图(就是反卷积):下图1表示神经元,2就是原图像素,说明该神经元关注该条纹特征。

 基于热力图(CAM)的可视化:如下图所示,就是用颜色标注网络关注的特征部分,

         进一步阐述为什么,CAM可以让我们理解网络的脑回路:比方说下图右,1表示需要识别的图,如果基于2的特征,识别为火山,如果基于3的特征,识别为后视镜。

       

      在进一步理解GAM:如下图所示,第二张,第三张图都认为第一张图是医生,但很明显它们依据的特征不同。

语义编码降维可视化:就是网络最后一层,全连接层输出的数据带有输入的语义特征,对其进行降维让人类理解。下图就是对三维建筑风格进行降维处理,在二维空间内展示其区别。

 

生成满足某些要求的图像:大致意思是,强化图中某个类别的像素,让该像素的特征更加明显

 对抗样本:待补充

5.一些综述

参考文献

1.机器学习可解释性一(LIME)_可解释机器学习_chj65的博客-CSDN博客

2.【精读AI论文】LIME机器学习可解释性分析_哔哩哔哩_bilibili

3.(重点)https://github.com/TommyZihao/zihao_course/blob/main/XAI 

4.(重点)https://github.com/TommyZihao/TommyZihao

5.人工智能算法的可解释性方法研究_人工智能学家的博客-CSDN博客 

6.(很全)趣味科普|可解释性人工智能_数据派THU的博客-CSDN博客

7.可解释人工智能XAI_小粒子学code的博客-CSDN博客 

8.人工智能系统的可解释性研究:挑战与解决方案_禅与计算机程序设计艺术的博客-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/23090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ClickHouse SQL与引擎--基本使用(一)

1.查看所有的数据库 show databases; 2.创建库 CREATE DATABASE zabbix ENGINE Ordinary; ATTACH DATABASE ck_test ENGINE Ordinary;3.创建本地表 CREATE TABLE IF NOT EXISTS test01(id UInt64,name String,time UInt64,age UInt8,flag UInt8 ) ENGINE MergeTree PARTI…

mysql高级(尚硅谷-夏磊)

目录 内容介绍 Linux下MySQL的安装与使用 Mysql逻辑架构 Mysql存储引擎 Sql预热 索引简介 内容介绍 1、Linux下MySQL的安装与使用 2、逻辑架构 3、sql预热 Linux下MySQL的安装与使用 1、docker安装docker run -d \-p 3309:3306 \-v /atguigu/mysql/mysql8/conf:/etc/my…

VGG卷积神经网络-笔记

VGG卷积神经网络-笔记 VGG是当前最流行的CNN模型之一, 2014年由Simonyan和Zisserman提出, 其命名来源于论文作者所在的实验室Visual Geometry Group。 测试结果为: 通过运行结果可以发现,在眼疾筛查数据集iChallenge-PM上使用VGG…

[LeetCode]链表相关题目(c语言实现)

文章目录 LeetCode 203. 移除链表元素LeetCode 237. 删除链表中的节点LeetCode 206. 反转链表ⅠLeetCode 92. 反转链表 II思路 1思路 2 LeetCode 876. 链表的中间结点剑指 Offer 22. 链表中倒数第k个节点LeetCode 21. 合并两个有序链表LeetCode 86. 分隔链表LeetCode 234. 回文…

flask-----蓝图

1.引入蓝图 flask都写在一个文件中,项目这样肯定不行,会导致循环导入的问题,分目录,分包,使用蓝图划分目录。 2.使用蓝图 步骤如下: -1 实例化得到一个蓝图对象-order_blueBlueprint(order,__name__,tem…

Pytorch入门学习——快速搭建神经网络、优化器、梯度计算

我的代码可以在我的Github找到 GIthub地址 https://github.com/QinghongShao-sqh/Pytorch_Study 因为最近有同学问我如何Nerf入门,这里就简单给出一些我的建议: (1)基本的pytorch,机器学习,深度学习知识&a…

C语言----字节对齐

一:字节对齐的概念 针对字节对齐,百度百科的解释如下: 字节对齐是字节按照一定规则在空间上排列,字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,一个字节等于8位二进制数,在UTF-8编…

ChatGPT在工作中的七种用途

1. 用 ChatGPT 替代谷歌搜索引擎 工作时,你一天会访问几次搜索引擎?有了 ChatGPT,使用搜索引擎的频率可能大大下降。 据报道,谷歌这样的搜索引擎巨头,实际上很担心用户最终会把自己的搜索工具换成 ChatGPT。该公司针对…

首批获得金融级行业云平台认证,天翼云深耕行业云

云计算下半场看什么? 无疑是金融、政务、制造等传统政企用户的上云与用云。随着数字经济发展和产业数字化的提速,上云已是政企用户推动其数字化转型不断深入的重要抓手,成为不可阻挡的趋势。 与互联网用户相比,政企用户上云极为…

数据库的约束 详解

一、约束的概述 1.概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 2.目的:保证数据库中数据的正确、有效性和完整性。 3.分类: 约束描述关键字非空约束限制该字段的数据不能为nullNOT NULL唯一约束保证该字段的所有数据都是唯一、不…

Mybatis实现JsonObject对象与JSON之间交互

项目中使用PostGresql数据库进行数据存储,表中某字段为Json类型,用于存储Json格式数据。PG数据库能够直接存储Json算是一大特色,很多特定情境下使用直接存储Json字段数据能够大量节省开发时间,提高后台数据查询和转换效率。 1、基…

微信小程序如何引入Iconfont

在小程序中引入 Iconfont 可以通过以下步骤进行操作: 打开 Iconfont 网站(https://www.iconfont.cn/)并登录账号,创建一个项目并添加所需的图标到项目中。 在项目中选中需要使用的图标,点击右上角的 “下载代码” 按钮…

Spring Boot 中自动装配机制的原理

问题描述 自动装配,简单来说就是自动把第三方组件的 Bean 装载到 Spring IOC 器里面,不需 要开发人员再去写 Bean 的装配配置。 在 Spring Boot 应用里面,只需要在启动类加上SpringBootApplication 注解就可以实现自动装配。 SpringBootAppli…

【机器学习】对 MLOps 的友好的介绍(MLOps1)

一、说明 我对 MLOps 感兴趣已经有一段时间了。我第一次从机器学习工程师那里了解到它,由于我当时还是一名博士生,我并不知道它的存在。然而,我的好奇心被激起了,我开始了解它。回想起来,我很后悔没有早点了解它&#…

云原生应用里的服务发现

服务定义: 服务定义是声明给定服务如何被消费者/客户端使用的方式。在建立服务之间的同步通信通道之前,它会与消费者共享。 同步通信中的服务定义: 微服务可以将其服务定义发布到服务注册表(或由微服务所有者手动发布)…

视频添加字幕

1、依靠ffmpeg 命令 package zimu;import java.io.IOException;public class TestSrt {public static void main(String[] args) {String videoFile "/test/test1.mp4";String subtitleFile "/test/test1.SRT";String outputFile "/test/testout13…

Redis入门

0目录 1.Redis入门 2.Redis定义;特点及数据类型 3.Value为List类型 4.Value值类型为Set 5.Value值类型为Hash 6.Value值类型为Zset 1.Redis入门 Redis入门 解压包,运行redis-server.exe 安装可视化软件测试链接 命名测试链接 点击确定 2.Redis…

ResNet50卷积神经网络输出数据形参分析-笔记

ResNet50卷积神经网络输出数据形参分析-笔记 ResNet50包含多个模块,其中第2到第5个模块分别包含3、4、6、3个残差块 5049个卷积(3463)*31和一个全连接层 分析结果为: 输入数据形状:[10, 3, 224, 224] 最后输出结果:linear_0 [10,…

java使用openOffice将excel转换pdf时,将所有列显示在一页

1.接上文,格式转换的基础问题已解决,但还有些细节问题需要单独处理,如excel转换至pdf时,如何将所有列显示在一页的问题,此问题大家都有遇到,解决方案也比较多,我也尝试过重写某类,来…

Java基础面试题1

Java基础面试题 一、面向对象和集合专题 1. 面向对象和面向过程的区别 面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程…