【可解释AI】Alibi explain: 解释机器学习模型的算法
Alibi explain: 解释机器学习模型的算法
- 可解释人工智能简介
- Alibi特点
- 算法
- Library设计
- 展望
- 参考资料
今天介绍Alibi Explain,一个开源Python库,用于解释机器学习模型的预测(https://github.com/SeldonIO/alibi)。该库具有最先进的分类和回归模型可解释性算法。算法涵盖了模型不可知(黑框)和模型特定(白框)设置,满足多种数据类型(表格、文本、图像)和解释范围(局部和全局解释)。该库公开了一个统一的API,使用户能够以一致的方式使用解释。Alibi坚持最佳开发实践,在持续集成环境中广泛测试代码正确性和算法收敛性。该库提供了关于方法的用法和理论背景的大量文档,以及一套端到端的工作用例。Alibi旨在成为一个可生产的工具包,集成到Seldon Core和KFServing等机器学习部署平台,并使用Ray实现分布式解释功能。
可解释人工智能简介
可解释的人工智能,也称为模型可解释性,是指以人类观察者可以理解的格式阐明复杂、不透明的机器学习模型做出的预测背后的原因的技术(Molnar,2019)。 解释预测的能力有助于建立对模型决策过程的信任,因此是强大的机器学习系统不可或缺的一部分(Bhatt 等人,2020;Klaise 等人,2020)。
解释所提供的所需见解在很大程度上取决于解释的使用者,从调试模型的数据科学家到审核模型的监管机构。 因此,需要多种方法来满足目标受众的需求(ICO,2019;Bhatt et al.,2020)。 此外,独立的解释方法可能会产生非信息性甚至误导性的解释(Heo et al., 2019)。 这意味着需要采用整体方法来解释模型。
我们推出 Alibi,旨在弥合快速增长的可解释性研究领域与行业之间的差距。 Alibi 的目标是托管各种可用于生产的模型解释算法的参考实现。 Alibi 包含本地、全局、黑盒和白盒事后解释方法,涵盖各种用例。 虽然有一些同时存在的可解释性库(参见表 1),但 Alibi 唯一专注于提供具有部署平台集成和分布式后端的生产级解释方法。
Alibi特点
- 应用范围。 模型的可解释性通常需要一种整体方法,因为没有一刀切的解决方案。 这反映在当前支持的算法的广度(第 2.1 节)及其适用性指南(表 2)中。
- 建立稳健性。 在各种Python版本下使用pytest对代码正确性和算法收敛性进行广泛的测试。 使用 Github Actions 通过持续集成设置对每个拉取请求执行测试。
- 文档和示例。 该库具有全面的文档和广泛深入的用例示例1。 该文档包括每种方法的用法和理论背景。 此外,所有方法的范围和适用性都有清晰的记录,以帮助从业者快速识别相关算法(表2)。
- 行业相关性。 Alibi 已集成到部署平台 Seldon Core(Cox 等人,2018 年)和 KFServing(KFServing,2019 年)中,以便将解释部署到生产中。 Alibi 还具有使用 Ray 的分布式后端(Moritz et al., 2018)来启用批量解释的大规模并行计算。
我们还提供了与其他积极开发的解释库的更详细的功能比较,请参见表 1。
表1:与相关解释库AIX360(Arya等人,2020)、Interpret(Nori等人,2019)、Captum(Kokhlikyan等人,2020)、iNNvestigate(Alber等人,2019)的比较。 库的选择和比较是基于提供事后、黑盒或白盒、本地或全局解释技术,这些技术是用 Python 实现的,这些技术在过去 12 个月内进行了一些开发活动。
算法
该库的当前版本包括以下解释算法(详细功能参见表 2):
-
Accumulated Local Effects
(ALE),Apley 和 Zhu (2016):计算模型预测的全局特征影响。
-
- Anchor explanations(锚点解释),Ribeiro 等人。 (2018):找到最小的特征子集,以保证(以高概率)相同的预测,而不管其他特征如何。
-
- Contrastive Explanation Methods(对比解释法 , CEM),Dhurandhar 等人。 (2018):找到应该最少且充分存在的特征以及应该必然不存在的特征,以证明对特定的预测是合理的实例。
-
- Counterfactual explanations(反事实解释),Wachter 等人。 (2018):找到接近原始但导致不同预测的合成实例。
-
- Counterfactual explanations with prototypes(原型反事实解释),Van Looveren 和 Klaise (2019):改进反事实解释方法,以产生更多可解释的分布实例。
-
- Integrated Gradients(积分梯度),Sundararajan 等人。 (2017):通过沿着从基线实例到感兴趣实例的路径累积梯度来计算预测的特征属性。
-
- Kernel Shapley Additive Values,Lundberg 和 Lee (2017):通过博弈论方法通过考虑特征组“无信息”来计算预测的特征归因。
-
- Tree Shapley Additive Values,Lundberg 等人。 (2020):树集成模型的 Shapley 加性值的算法改进。
图 1 显示了一系列支持的解释算法的输出:
图 1:支持的解释算法的选择。 左上:图像分类的锚点解释解释了预测“波斯猫”。 右上:情绪预测任务的综合梯度归因解释了预测“积极”。 左下:(a) MNIST 数字分类和 (b) 收入分类的反事实解释。 右下:ALE 特征对 Iris 数据集上逻辑回归模型的影响。
Library设计
Alibi 面向用户的 API 设计为跨算法一致且易于使用(代码片段 1)。 解释算法是通过在黑盒情况下传递预测函数(采用并返回 numpy 数组的 Python Callable)或在白盒情况下传递预训练模型(例如 TreeSHAP 或 TensorFlow 的 xgboost)来初始化的。 如表2所示,对于需要训练数据的方法,必须调用fit方法。 最后,调用解释方法来计算一个实例或一组实例的解释。 这将返回一个 Explanation 对象,其中包含字典元数据和数据,分别具有解释元数据(例如超参数设置、名称)和解释数据。 Explanation 对象的结构可以在生产系统中轻松序列化以进行进一步处理(例如日志记录、可视化)。 元数据捕获用于获取每个解释的设置并充当审计跟踪。
代码片段 1:使用 AnchorTabular 解释算法的 Alibi API 演示。
展望
Alibi 开发的第一阶段重点是创建一组精选的参考解释算法,并对典型用例提供全面指导。 虽然基于白盒梯度的方法的工作重点是支持 TensorFlow 模型,但在不久的将来实现与 PyTorch 模型的功能对等是一个关键目标。 此外,我们计划扩展 Ray 项目的使用,以实现所有解释算法的并行化。 Ray 的选择还可以将解释扩展到单个多核计算节点之外。
补充:
Ray是一个用于扩展AI和Python应用程序的统一框架。Ray由一个核心分布式运行时和一组用于加速ML工作负载的AI库组成。
参考资料
- Alibi explain: algorithms for explaining machine learning models
- Alibi explain
- Ray
相关文章:

【可解释AI】Alibi explain: 解释机器学习模型的算法
Alibi explain: 解释机器学习模型的算法 可解释人工智能简介Alibi特点算法Library设计展望参考资料 今天介绍Alibi Explain,一个开源Python库,用于解释机器学习模型的预测(https://github.com/SeldonIO/alibi)。该库具有最先进的分类和回归模型可解释性算…...

No191.精选前端面试题,享受每天的挑战和学习
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…...
ROS基础—vscode创建工作空间
1、创建ROS工作空间 首先打开ubuntu的终端,接着依次输入如下的命令行; mkdir -p xxx_ws/src(必须得有 src) cd xxx_ws catkin_make当然我一般是新建一个叫做demo的工作空间,如 mkdir -p demo04_ws/src 2、启动vscode cd xxx_ws code . …...
机器学习复习(待更新)
01绪论 (1)机器学习基本分类: 监督学习(有标签)半监督学习(部分标签,找数据结构)无监督学习(无标签,找数据结构)强化学习(不断交互&…...

taro(踩坑) npm run dev:weapp 微信小程序开发者工具预览报错
控制台报错信息: VM72:9 app.js错误: Error: module vendors-node_modules_taro_weapp_prebundle_chunk-JUEIR267_js.js is not defined, require args is ./vendors-node_modules_taro_weapp_prebundle_chunk-JUEIR267_js.js 环境: node 版本&#x…...
3. 深度学习——损失函数
机器学习面试题汇总与解析——损失函数 本章讲解知识点 什么是损失函数?为什么要使用损失函数?详细讲解损失函数本专栏适合于Python已经入门的学生或人士,有一定的编程基础。 本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。 本专栏针对面试题答案进行了优化…...

交叉编译 openssl
要在 x86 平台上编译适用于 aarch64 架构的 OpenSSL 动态库,你需要使用交叉编译工具链。可以按照以下步骤进行: 安装 aarch64 交叉编译工具链: $ sudo apt-get install gcc-aarch64-linux-gnu g-aarch64-linux-gnu 这将安装 aarch64 交叉编…...
C++文件的读取和写入
1、C对txt文件的读,ios::in #include<iostream> #include<fstream> using namespace std;int main() {ifstream ifs;ifs.open("test.txt",ios::in);if(!ifs.is_open()){cout<<"打开文件失败!"<<endl;}char…...
住宅IP、家庭宽带IP以及原生IP,它们有什么区别?谷歌开发者账号应选择哪种IP?
IP地址(Internet Protocol Address)是互联网协议地址的简称,是互联网通信的基础,互联网上每一个网络设备的唯一标识符每个在线的设备都需要一个IP地址,这样才能在网络中找到它们并进行数据交换。 IP地址有很多种类型&…...
Linux内核分析(十三)--内存管理之I/O交换与性能调优
目录 一、引言 二、page cache ------>2.1、file-backed ------>2.2、匿名页(Anonymous page) ------>2.3、读写方式 ------>2.4、常驻内存 三、页面回收 ------>3.1、LRU算法 ------>3.2、嵌入式系统的zRAM 四、内存性能调优 ------>4.1、存储…...
前端使用webscoket
前端 <template><div class"wrap"><button click"socketEmit">连接Socket</button><button click"socketSendmsg">发送数据</button></div> </template><script> export default {data(…...
centos安装Git
一开始使用yum -y install git出来的版本比较低。 1.yum安装gityum -y install git 2.查看git的版本git --version 3.删除git(版本过低)yum remove -y git 后来通过源码编译后安装: 使用安装包安装: 1.下载安装包:h…...

网络编程 初探windows编程
目录 一、什么是Winodws编程 二、开发环境搭建以及如何学习 三、VA助手安装 四、第一个Win32程序 五、窗口类句柄/窗口类对象 六、Winodws消息循环机制 七、Windows数据类型 一、什么是Winodws编程 Windows 编程指的是在 Microsoft Windows 操作系统上进行软件开发的过…...

Vue3 ref函数和reactive函数
一、ref函数 我们在setup函数中导出的属性和方法虽然能够在模板上展示出来,但是并没有给属性添加响应式,因此,我们需要使用ref函数来为我们的数据提供响应式。 (一)引入ref函数 import { ref } from "vue"…...
docker常用命令详解
1. Image常见操作 (1)查看本地image列表 docker images docker image ls (2)获取远端镜像 docker pull (3)删除镜像[注意此镜像如果正在使用,或者有关联的镜像,则需要先处理完] docker image rm imageid docker rmi -f imageid docker rmi -f $(docker …...

采集Prestashop独立站采集Prestashop独立站
import java.net.URL 这一行导入了Java.net包中的URL类,这个类在处理URL链接时非常有用。 import org.jsoup.Jsoup 这一行导入了Jsoup库,它是一个强大的HTML和XML文档解析库,我们可以使用它来解析网页内容。 import org.jsoup.nodes.Docume…...

2023.11-9 hive数据仓库,概念,架构,元数据管理模式
目录 0.数据仓库和数据库 数据仓库和数据库的区别 数据仓库基础三层架构 一.HDFS、HBase、Hive的区别 二.大数据相关软件 三. Hive 的优缺点 1)优点 2)缺点 四. Hive 和数据库比较 1)查询语言 2)数据更新 3)…...

MFC 简单绘图与文本编辑
目录 一.创建单文档项目 二.消息映射机制 三.WM_PAINT消息触发 四.CVIEW类 五.设备上下文 六.资源类和资源的关系 七.画线,矩形 八.画布 九.画笔 十.画刷 十一.利用TRACE打印日志 十二.文本编程 十三.ID号 十四.菜单栏 十五.菜单命令路由 十六.工具…...
C# 中的 SerialPort
简介 C# 中的 SerialPort 类提供了对串行端口(如 COM 端口)进行通信的功能。通过 SerialPort 类,你可以打开、关闭端口,读取和写入数据以及设置通信参数等。下面是对 SerialPort 类的一些详细解释: 创建 SerialPort 对…...

2022年06月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 Python中 print(“八进制{: o}”.format(12)) 正确的输出结果是?( ) A: 八进制:O B: 八进制:O14 C: 八进制14O D: 八进制14 答案:D 字符串的format()格式。 第2题 下列的程…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...