点击我爱计算机视觉标星,更快获取CVML新技术


本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载。

选自arXiv

者:Harsha Nori等

机器之心编译

参与:Panda

起初,机器于黑暗之中学习,为解释它们,数据科学家于虚空之中挣扎。

然后,要有光。

微软在可解释机器学习项目 InterpretML 的 GitHub 页面上这样写到。很显然,他们相信 InterpretML 会是打开机器学习黑箱的钥匙。

在机器学习领域,可解释性(interpretability)至少在以下几个方面至关重要:

  • 调试模型——为什么我的模型会这样出错?

  • 检测偏见——我的模型会区别对待目标吗?

  • 人与人工智能合作——我怎样才能理解和信任模型的决策?

  • 合规性——我的模型符合法律规定吗?

  • 高风险应用——医疗保健、金融、司法……

过去,最好理解的模型往往非常不准,而最准确的模型又无法被我们理解。微软研究院之前已经开发了一个名为「可解释 Boosting 机(EBM:Explainable Boosting Machine)」的算法,可以在实现高准确度的同时具备可理解性。EBM 通过 bagging 和 boosting 等现代机器学习技术为传统的 GAM(广义可加模型)注入了新生命。这使得它们能像随机森林和梯度提升树一样准确,同时其可理解性和可编辑性也得到了增强。

现在,微软研究院更进一步,在 EBM 的基础上扩展并开源了一个用于机器学习可解释性的统一框架 InterpretML,该框架基于 Python,可用于训练可解释模型和解释黑箱系统。

InterpretML 是一个为实践者和研究者提供机器学习可解释性算法的开源 Python 软件包。InterpretML 能提供两种类型的可解释性:(1)明箱(glassbox),这是针对可解释性设计的机器学习模型(比如线性模型、规则列表、广义加性模型);(2)黑箱(blackbox)可解释技术,用于解释已有的系统(比如部分依赖、LIME)。这个软件包可让实践者通过在一个统一的 API 下,借助内置的可扩展可视化平台,使用多种方法来轻松地比较可解释性算法。InterpretML 也包含了可解释 Boosting 机(EBM)的首个实现,这是一种强大的可解释明箱模型,可以做到与许多黑箱模型同等准确。

InterpretML 是什么?

随着机器学习日益成熟,应用愈渐广泛,构建能让用户理解的模型也正变得越来越重要。在医疗、金融和司法等高风险应用中,这一点尤其显著。可解释性在模型调试、合规性和人机交互等一般应用的机器学习问题方面也很重要。

InterpretML 正是为解决这些需求而生的,其将很多当前最先进的可解释性算法纳入到了一个统一的 API 下。这个 API 包含两种主要的可解释性形式:明箱模型,即让用户能够理解以及向用户解释;黑箱可解释性,即能为任何机器学习流程(不管多么不透明)生成解释的方法。其还开发了进一步的功能,支持交互式可视化,还有一个为可解释性算法比较而设计的内置仪表盘。InterpretML 使用了 MIT 许可,并重点关注可扩展性以及与 scikit-learn 和 Jupyter Notebook 环境等常见开源项目的兼容性。

软件包的设计

InterpretML 的架构和 API 设计遵循四个关键设计原则。

易于比较。使多个算法的比较尽可能地容易。机器学习可解释性还处于发展早期,不同的研究创造了很多不同的算法方法,每一种都各有优劣。比较能让用户找到最适合自身需求的算法。InterpretML 实现了这一点,其做法是采用了一种 scikit-learn 风格的统一 API,另外其还提供了一个以算法比较为中心的可视化平台。

忠于来源。尽可能地使用参照算法和可视化。InterpretML 的目标是以最准确的形式为世界提供可解释性算法。

能与其它方法很好协同。利用开源生态系统,不重复发明轮子。InterpretML 与 Jupyter Notebook 和 scikit-learn 等常用项目高度兼容,并且其构建过程也使用了很多库,比如 plotly、lime、shap 和 SALib。

按需使用。能使用和扩展 InterpretML 的任意组件,而无需引入整个框架。比如可以在服务器上得到计算密集型的解释,无需 InterpretML 的可视化及其它相关依赖。

图 1 展示了 InterpretML 的代码架构和统一 API,其中提供了整体的概况以及相关的代码示例。

图 1:API 架构和代码示例

可解释 Boosting 机

InterpretML 框架还包含一种新的可解释算法——可解释 Boosting 机(EBM)。

相关论文:https://www.microsoft.com/en-us/research/wp-content/uploads/2017/06/KDD2015FinalDraftIntelligibleModels4HealthCare_igt143e-caruanaA.pdf

EBM 是一种明箱模型,是为与随机森林和提升树等当前最佳机器学习方法比较准确度而设计的。EBM 是一种广义加性模型(GAM),其形式为:

其中 g 是将 GAM 适配于回归或分类等不同设置的链接函数。EBM 相比于传统 GAM(Hastie and Tibshirani, 1987)有几项重大改进。第一,EBM 使用 bagging 和梯度提升等现代机器学习技术来学习每个特征函数 f_j。boosting 流程使用非常低的学习率以轮询方式非常慎重地限定为一次训练一个特征,这样特征顺序就不重要了。它在特征中轮询循环,以减缓共线性的影响以及学习每个特征的最佳特征函数 f_j,从而展示每个特征对模型的预测的贡献量。第二,EBM 可以按以下形式自动检测和囊括成对的交互项:

这能在维持可理解性的同时进一步提升准确度。EBM 是 GA²M 算法(Lou et al., 2013)的一种快速实现,使用 C++ 和 Python 写成。这个实现是可并行的,并利用了 joblib 来提供多核和多机并行。该算法在训练流程和成对交互项选择方面的细节以及案例研究请见(Lou et al., 2012, 2013; Caruana et al., 2015)。

EBM 是高度可理解的,因为每个特征对最终预测的贡献都可以通过绘制 f_j 的图来可视化和理解。因为 EBM 是一种加性模型,所以每个特征对预测的贡献都是模块化的,因此可以很简单地推理每个特征对预测的贡献。

图 2:左:函数 f_Age。随着 Age 从 20 增长到 50,p(1) 增长显著。右:单个预测,其中 CapitalGain 特征占主导地位。

为了进行单个预测,每个函数 f_j 都可作为每个特征的查找表,可返回项贡献。只需要简单地将这些项贡献加起来,然后通过链接函数 g 来计算最终预测。因为模块化的特性(加性),可以对项贡献进行分类和可视化,从而可展现哪些特征对任意的单个预测的影响最大。

表 3:不同模型在不同数据集上的分类性能(行,列)

图 4:不同模型在不同数据集上的计算性能(行,列)

就预测能力而言,EBM 的表现常常出奇地好,而且能与随机森林和 XGBoost 等当前最佳方法媲美。为了保证各个项的加性,EBM 要付出额外的训练成本,因此会比表现相近的其它方法慢一些。但是,由于预测仅涉及到在特征函数 f_j 中进行查找和简单的加法,所以 EBM 在预测时是执行最快速的模型之一。EBM 的轻量级内存使用和快速预测时间使其尤其适合模型的生产部署。

论文地址:

https://arxiv.org/abs/1909.09223v1

开源代码:

https://github.com/microsoft/interpret


CV细分方向交流群

52CV已经建立多个CV专业交流群,包括:目标跟踪、目标检测、语义分割、姿态估计、人脸识别检测、医学影像处理、超分辨率、神经架构搜索、GAN、强化学习等,扫码添加CV君拉你入群,如已经为CV君其他账号好友请直接私信,

(请务必注明相关方向,比如:目标检测

喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。

(不会时时在线,如果没能及时通过验证还请见谅)


长按关注我爱计算机视觉

微软开源可解释机器学习框架InterpretML相关推荐

  1. 干货|全面介绍微软开源可解释机器学习框架InterpretML

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 转自:机器之心 起初,机器于黑暗之中学习,为解释它们,数据科学家于虚空之中挣扎. 然后, ...

  2. 微软开源可解释机器学习工具包lnterpretML

    https://mp.weixin.qq.com/s?__biz=MzI5NTIxNTg0OA==&mid=2247495335&idx=3&sn=26200d9a952fd8 ...

  3. 微软又开源了一个机器学习框架,这次是核心产品的机器学习引擎infer.NET

    乾明 整理编译自 Microsoft Research Blog 量子位 报道 | 公众号 QbitAI 感觉微软对开源上瘾了. 在开源了跨平台机器学习框架ML.NET之后,微软又开源了一个非常重要的 ...

  4. 微软开源的自动机器学习工具上新了:NNI概览及新功能详解

    作者 | 宋驰 来源 | 微软研究院AI头条(ID: MSRAsia) 2018年9月,微软亚洲研究院发布了第一版 NNI (Neural Network Intelligence) ,目前已在 Gi ...

  5. 最牛逼的开源机器学习框架,你知道几个

    最牛逼的开源机器学习框架,你知道几个 作者 大白鲸团队 关注 2015.12.29 20:16 字数 1829 阅读 3689评论 0喜欢 7 机器学习毫无疑问是当今最热的话题,它已经渗透到生活的方方 ...

  6. 开源的,跨平台的.NET机器学习框架ML.NET

    微软在Build 2018大会上推出的一款面向.NET开发人员的开源,跨平台机器学习框架ML.NET. ML.NET将允许.NET开发人员开发他们自己的模型,并将自定义ML集成到他们的应用程序中,而无 ...

  7. 微软开源自动机器学习工具 – NNI安装与使用

    微软开源自动机器学习工具 – NNI安装与使用 NNI的众多特点 开启你的第一次NNI之旅 · 安装 · 三步准备实验 (1) 准备搜索空间 (2) 准备实验代码 (3)定义实验配置 · 一行命令开始 ...

  8. 微软nni_微软开源自动机器学习工具NNI安装与使用

    微软开源自动机器学习工具NNI安装与使用 发布时间:2018-12-29 11:51, 浏览次数:951 , 标签: NNI 微软开源自动机器学习工具 – NNI安装与使用 在机器学习建模时,除了准备 ...

  9. ML.NET 1.4 发布,跨平台机器学习框架

    ML.NET 是一个面向 .NET 开发人员的开源和跨平台机器学习框架,它包括 Model Builder 和 CLI(命令行接口),让使用自动机器学习(AutoML)构建自定义机器学习模型变得更容易 ...

最新文章

  1. 程序员心中都有一个江湖,java世界,就是一个江湖!
  2. mysql集群session_集群/分布式环境下5种session处理策略
  3. [SCOI2007]降雨量
  4. 1-1 什么是微信小程序
  5. 详细分析Memcached缓存与Mongodb数据库的优点与作用
  6. 每日程序C语言14-小球反弹高度问题
  7. AC自动机:多模式串匹配实现敏感词过滤
  8. 初中数学分几个模块_北京版初中数学:8大模块,59个必考易错知识点大集合,一定要注意!...
  9. Week04《Java程序设计》第四周学习总结
  10. insert into select from 部分字段插入_MySQL的故障分析,Insert 加锁与死锁分析-爱可生
  11. 下拉框怎么获取label_拼多多-「关键词自然流量快速获取」访客暴涨秘诀
  12. SpringBoot之接收url参数
  13. 参加Oracle OCP和MySQL OCP考试的学员怎样在VUE预约考试
  14. 电脑用来测试网段信号的软件,WiFi信号分析仪PC版
  15. c语言程序中延时函数作用,51单片机C语言延时函数怎么定义和使用 - 全文
  16. 适合高要求应用的高性能MEMS IMU解决方案
  17. 云计算、大数据、人工智能三者究竟有什么关系
  18. 3-23 实对称矩阵知识补充
  19. 计算计算机系统包括哪些内容,什么是MIPS计算机系统的运算器
  20. [碎碎念]祝我的董小姐生日快乐~

热门文章

  1. python staticmethod规范_Python Staticmethod可以调用另一个本地方法吗?
  2. linux内核oops错误码说明,调试 – 了解内核oops错误代码
  3. java 静态变量的使用_java的static静态变量是不是不安全的?应该如何正确的使用他呢...
  4. python编程实现撤销上一步操作_78行Python代码实现现微信撤回消息功能
  5. php.exe不是内部或外部命令,“php.exe”不被识别为内部或外部命令,可操作程序或batch file...
  6. java utf8转iso8859-1_Java字符编码处理(UTF-8/ISO-8859-1)之一 –读文本文件乱码问题 | 学步园...
  7. oracle创建job一年执行,Oracle快速创建定时job执行批量转储过程脚本参考案例
  8. 大数据:技术与应用实践指南_大数据技术与应用社团 社会实践总结篇
  9. android 获取4g信号_5G与1G、2G、3G、4G有何不同
  10. php验证支付回调,php对微信支付回调处理的方法(合集)