最近对可解释性平台Captum进行了实际操作。这是Facebook 发布的一个基于 Pytorch 的模型解释库。该库为许多新的算法(如:ResNet、BERT、一些语义分割网络等)提供了解释性,帮助大家更好地理解对模型预测结果产生作用的具体特征、神经元及神经网络层。针对图像分类问题,其可以快速定位影响结果的一些像素点,并进行可视化展现;而对于文本翻译等问题,能够可视化标注出不同单词的重要性,以及利用heatmap展示单词之间的相关性等。


1. 安装

首先是安装,其实只要电脑符合前置要求,安装起来非常简单。

  • Python >= 3.6
  • PyTorch >= 1.2

Conda的安装方法:

conda install captum -c pytorch

Pip的安装方法:

pip install captum

上面两种方法直接在命令行中运行即可。下面我们分别从结构化数据、非结构化数据(图像与文本)来看看目前的一些工作如何说明可解释性问题。本博客主要内容来源于官方教程(Captum Tutorials)。


2. 结构化数据

以泰坦尼克号数据集(titanic3.csv)为例,因变量为是否死亡。

模型使用两层带sigmoid激活函数的神经网络结构(第一层有12个隐藏节点,第二层为8个)。为了探寻模型的可解释性,我们首先利用Integrated Gradients 方法看数据的变量重要性(未来会将此方法介绍的具体论文写在博客中)。


由上图可以看出,年龄与性别对泰坦尼克号上的乘客生存情况有比较显著的影响,其中年龄越大,生存下来的概率越低,并且男性会更不容易生存下来。而对于其他变量,变量的重要性则相对没有这么大。

下面我们进一步探究神经网络每个神经元的可解释性,下图为第一层网络中每个神经元对结局的平均贡献:

可以看出,神经元10对结果有比较大的贡献,而神经元7与9基本没有贡献。而后我们关注两个对结果几乎没有贡献的神经元内样本的分布情况,发现基本集中在0附近,因此对是否生存这一结果的预测,没有太大的意义:

接着我们再关注与生存有强负相关的两个神经元,可以发现这两个神经元的样本结果主要都是为负数,并且分得也比较散:

为了进一步解释每个神经元的具体情况,我们展示神经元0与神经元10的具体输入特征对其的影响,发现对神经元0,影响最大的为年龄,并且也是负效应;对神经元10影响最大的则为男性这一哑变量,同样也为负相关,这从某种程度上解释了这两个变量最终的变量重要性比较高。


3. 图像数据

下面我们关注Captum上关于图像的一些可解释性的应用。注意,这里在运行的时候需要额外的下载权重,可能要稍微花费比较久的时间。

首先以一个城市交通图为例,介绍在图像上,Captum能做哪些事情。(本周只学了与重现了很少一部分,以后每周会实践一些可解释性的具体案例)
下图表示应用一个比较先进的语义分割网络的结果。

而后我们可以看分割网络中,具体一些特征图对结果的具体贡献情况,下图表示我们选择“bus”类别,看整体最后一层feature map对bus分割的贡献情况。可以发现,自行车对bus的分割基本没有贡献,而人与道路会对bus的分割有负贡献(这表示相对应的像素点更不可能被判为公交车)。

而后我们用另一种思路来展现可视化的情况,用的方法称为:Feature ablation(去年也有一篇文章利用此方法来考虑特征的重要性),其思想为将原本的某类我们关注的标签(特征)消去(对应像素点的值设置为0,看起来如同被黑色区域遮盖),而后看遮盖前与遮盖后的其他区域预测类别的差异。我们分别探究的遮盖火车与遮盖巴士后,其他标签的预测情况,为了更明显的看出遮盖label与其他label的相关情况,我们将遮盖的label置为0,也就是右图中的白色区域。

从第一行图中可以看出,公交车区域对火车的分割有着积极的贡献;第二行图中可看出背景和人对公交的预测有积极的贡献。而自行车区域对公交车与火车的预测几乎都没有影响。

下面用另外一张跳舞的图片,来复现上述模型的分割可解释性。由于图中只有分割类别中的“person”,因此只针对图中的人进行分割。

下图表示人的区域对其分割有积极影响(绿色区域),而背景与灯光对人物的分割有着抑制效应(红色区域)。

而由于只有两个类别(人物与背景),因此使用Feature ablation看不出效果。


4. 文本数据

最后介绍文本可解释性的一些应用,本次是进行Sentiment Analysis 的探究。

注意在运行代码前需要提前用pip安装好spacy库,以及配置好英文语言相关的文件:

python -m spacy download en

上面的代码,在Windows上需要在对应python.exe 的路径上打开命令行窗口(或者先cd到python.exe的路径上)进行相应代码的运行。(找不到的话推荐使用 everything 工具进行全电脑范围的搜索)

示例结果如下:

由于目前成熟的模型权重很大,而且需要下载很久,因此只使用网上找的一个训练比较差的权重进行测试(这里我们附在文章的附件中),结果如上图所示。模型可以关注每个单词对最终情感的贡献,绿色表示积极的贡献,红色表示消极词汇的贡献。有一些句子中表现的不是很好,比如有将the归为非常消极的词汇,但这种文本的可视化展现手段可以值得借鉴学习。


参考

  • Captum Tutorials
  • Captum - github
  • Captum——新的人工智能可解释性工具

可解释性深度学习工具Captum轻度体验相关推荐

  1. halcon 深度学习标注_HALCON深度学习工具0.4 早鸟版发布了

    原标题:HALCON深度学习工具0.4 早鸟版发布了 HALOCN深度学习工具在整个深度学习过程中扮演着重要的作用,而且在将来将扮演更重要的辅助作用,大大加快深度学习的开发流程,目前发布版本工具的主要 ...

  2. halcon显示坐标_HALCON深度学习工具0.4 早鸟版发布了

    HALOCN深度学习工具在整个深度学习过程中扮演着重要的作用,而且在将来将扮演更重要的辅助作用,大大加快深度学习的开发流程,目前发布版本工具的主要作用是图像数据处理和目标检测和分类中的标注. 标注训练 ...

  3. (翻译)60分钟入门深度学习工具-PyTorch

    60分钟入门深度学习工具-PyTorch 作者:Soumith Chintala 原文翻译自: https://pytorch.org/tutorials/beginner/deep_learning ...

  4. 实录分享 | 计算未来轻沙龙:深度学习工具专场(PPT下载)

    12 月 2 日(周日)下午,PaperWeekly 携手清华大学计算机系推出了计算未来轻沙龙第六期线下活动--深度学习工具专场.来自亚马逊 AWS.谷歌.英伟达.百度 PaddlePaddle 以及 ...

  5. 深度学习工具caffe详细安装指南

    转载自 深度学习工具caffe详细安装指南 前言: 在一台系统环境较好的linux机器上可以很容易的安装caffe,但是如果系统本身很旧,又没有GPU的话,安装就太麻烦了,所有都得从头做起,本文档旨在 ...

  6. 基于PyTorch、易上手,细粒度图像识别深度学习工具库Hawkeye开源

    转载自丨机器之心 鉴于当前领域内尚缺乏该方面的深度学习开源工具库,南京理工大学魏秀参教授团队用时近一年时间,开发.打磨.完成了 Hawkeye--细粒度图像识别深度学习开源工具库,供相关领域研究人员和 ...

  7. (Halcon深度学习)安装深度学习工具(DLT)

    0.软件说明: 标记训练数据是迈向任何深度学习应用的第一个关键步骤.当涉及到应用程序的性能.准确性和健壮性时,这些标记数据的质量起着重要作用. 借助DLT,您可以通过直观的用户界面轻松标记数据,而无需 ...

  8. (转)Matlab深度学习工具试玩手册一:基本操作与迁移学习

    原贴博客:https://blog.csdn.net/zfrycw/article/details/80633979 目录 前言 一.利用现成网络进行分类 二.构建简单的分类网络 三.迁移学习 前言 ...

  9. 基于OpenCL的深度学习工具:AMD MLP及其使用详解

    from:http://www.csdn.net/article/2015-08-05/2825390 [编者按]深度学习是近年来迅速发展和突破的机器学习领域,具有非常广泛的应用前景.将服务器GPU应 ...

最新文章

  1. 你不知道的阿里人工智能:618机器人客服帮单店挣1亿
  2. 强大的Vivado IP工具——自定义IP的使用
  3. 淘宝直播的电商互动之路
  4. java中的jre里面有什么_Java中JRE介绍,JRE是什么
  5. python中等高线填充颜色_Python matplotlib等高线图对数颜色
  6. Qt工作笔记-QML中TextInput设置默认值,以及使用正则表达式只能输入整数
  7. 互联网应用开发架构的演进历程--单体应用->集群->分布式->微服务->ServiceMesh
  8. Win7 下替代NetMeeting的屏幕共享工具 InletexEMC
  9. java 服务器程序部署环境搭建
  10. 超全必看!开源时间序列数据集整理
  11. 修改mysql的authen_关于MySQL连接抛出Authentication Failed错误分析
  12. c++工程师历年企业笔试真题汇总
  13. 特殊符号大全(无穷的想象力)
  14. BPM管理系统解决方案
  15. java 将html转为word导出 (富文本内容导出word)
  16. 如何用自己的笔记本建wifi热点~~~
  17. 1688图片搜索淘宝商品接口
  18. android订餐系统app、android购物商城系统app 手机端+服务器端 mysql数据库,界面简单,功能齐全 安卓购物商城 安卓在线订餐系统
  19. 堪称最好最全的A*算法详解(译文)
  20. 从flw中提取mp3

热门文章

  1. 如何设计一张高品位高水准的海报?
  2. 基于Yolov5的吸烟行为识别检测
  3. 移动端开发之APP消息推送
  4. python爬虫qq好友信息,GitHub - equationl/QQzone_crawler: QQ 空间动态爬虫,利用cookie登录获取所有可访问好友空间的动态保存到本地...
  5. 抽象代数 01.03 子群与商群
  6. Ubuntu上查崩溃办法
  7. 递归折半查找法 c语言程序,折半查找法的递归和非递归形式
  8. 分子量 Molar Mass
  9. 使用github仓库
  10. 安装Itunes提示“此windows installer软件包有一个问题”