ICLR 2021 | 自解释神经网络—Shapley Explanation Networks
点击上方“CVer”,选择加"星标"置顶
重磅干货,第一时间送达
本文作者:王睿 | 来源:知乎(已授权)
https://zhuanlan.zhihu.com/p/345265507
TL;DR:我们将特征的重要值直接写进神经网络,作为层间特征,这样的神经网络模型有了新的功能:
1. 层间特征重要值解释(因此模型测试时也可做instance-based的剪枝),
2. 常数复杂度的Shapley值逼近,
3. (因而能够)根据Shapley值对模型进行改进。
来介绍一下自己本科在普渡大学做的工作,最近也被ICLR 2021录用了:
题目:Shapley Explanation Networks
论文:https://openreview.net/forum?id=vsU0efpivw
代码链接:
https://github.com/RuiWang1998/ShapleyExplanationNetworks
PC评价:
the paper yields an innovation to a widely-used approach to one of the most pressing current research problems.
简介
深度神经网络的可解释性是一个非常重要的问题,而知道各个特征的重要性是解决这个问题过程中非常重要的一环。Shapley值给了一个理论基础扎实的重要性定义,但是Shapley值的计算一直是一个很大的问题(指数级复杂度),这也带来了很大的限制。我们通过将Shapley值直接作为神经网络的中层特征表达,有效地缓解了Shapley值计算量巨大的问题,同时也带来了几个新的功能。(with compromise of course)
Shapley值
这个谈到有点复杂了,具体看我之前的回答:
https://www.zhihu.com/question/310837513/answer/1281609735
或者 @Qs.Zhang张拳石老师写的一系列文章:
https://zhuanlan.zhihu.com/p/264871522
总而言之,Shapley值是
相对而言,理论基础非常扎实的一种特征重要性的估值,
但是计算复杂度是指数,所以有很多的近似算法。
有几个性质,其中在这里跟我们实际有关的有俩:
线性:如果你计算了某一个函数的Shapley值,而这个函数在后面又进行了线性变换生成了新的函数,那么你只需要将得到的Shapley值进行相同的线性变换,即可获得新函数的Shapley值
missingness:一个特征输入的时候如果已经为其参考值,则这个特征的重要性为0
下面部分可能会(非常)难读,同一个东西我们完全重写了至少三遍,因为总共10个reviewer里面3个完全没看懂(NeurIPS的reviewer说的就是你们)剩下7个里面有5个说真的很难读懂。哪里没写清楚求一定在评论里提出来,看见我就试着改改。
以及下面所有edge的weight都是这样:
Shapley Explanation Networks
Idea说起来也简单(在三次投稿,重写了三次之后能不简单吗):多层神经网络 可以表示为
对于任意输入,我们依次计算 的输出,此时 的输入,即为 的输出。而我们选择将 的Shapley值作为下一层 的输入。
如果将第 层输出特征用 表示,对于普通正常神经网络:
而我们的ShapNet则:
其中
而 表示求函数 关于输入 的Shapley值(们,毕竟有很多input features)。
运算量怎么办?
Shapley Module:
如图所示:
我们可以给模型内的函数 限制,使它只取决于一小部分输入feature,这样运算量也算可控。
Shallow ShapNet
如下图所示,我们通过对函数的线性变换,来达到同时
每一个Shapley值的运算只取决于一小部分输入feature
最终输出取决于所有feature。
Deep ShapNet,
这个其实就是把Shallow ShapNets摞起来,项目一开始的时候我们以为最终算出来的 是准确的Shapley值,结果合作者Xiaoqian (Joy) Wang教授抬手一个证明,把这玩意儿证否了,但是实验上看,其实近似的效果还不错。这里的Deep ShapNet也就是最终模型
模型就讲完了,其实还有几个quirk可能需要有心人去翻论文或者代码了,high-level的idea就是每一层用Shapley值作为inter-layer representation,然后用Shapley Module来压运算量。
模型验证
最终的representation接近真正的Shapley值吗?
接近,但是不是准确的,但是相比Deep SHAP,它更准确,相比Kernel SHAP,它更快。
数据集上表现呢?
还行,但是距离SOTA有(很大)距离,下图表格中的Deep ShapNet for images也是我花了很久很久才做出来的,一开始试Cifar-10的时候准确率只有30%
听说这模型有新功能?
快速Shapley值近似
这个很明显我们只用一个forward pass就能算出Shapley值(虽然每一个module要算几遍)
根据explanation来改变模型性质
如我在
https://www.zhihu.com/question/310837513/answer/1281609735
里所说,之前所有方法,都不能做到根据Shapley值来改变模型性质,而我们因为(强行)常数的时间复杂度,可以进行这样的操作。大概就如下图:
是加入稀疏度,而 是把每个feature的重要性扩散开(2021年了还在用MNIST发paper)。值得一提的是,之前的近似算法计算一张MNIST图片都需要几十分钟甚至几个小时的时间。
每一层的输出都是这一层自己的解释
这里联系上Shapley值的missingness(这个missingness在提出的paper里面只是可有可无的[1],但是我们还是用到了):
一个特征输入的时候如果已经为其参考值,则这个特征的重要性为0
这里的missingness是Shapley值的,但是我们模型
每一层的输出都是这一层自己的解释
这就意味着,如果在某一层,一个feature的重要性变成了0,那么接下来所有层,它都不再重要(对应值为0)。如果有一个Shapley Module的所有input feature都不重要了,那它的计算就可以完全省过去。这样的剪枝是instance-based的,比普通的剪枝更能剪。
剪枝+
我们可以对每一层的representation都进行 ,这样的话我们甚至可以剪更多。
这个想法是ICLR的rebuttal阶段想出来的,所以也没有时间做实验来验证这玩意儿,感觉挺有意思,可能之后的工作会跟进吧。详细的还是看openreview上的rebuttal:
https://openreview.net/forum?id=vsU0efpivw
Misc:
上次回答的时候买了个关子,说自己当时投了ICML 2020,是的它真的经历了ICML/NeurIPS/ICLR三大顶会才被发表出来,项目开始的时候我大三才开始两个月,到ICLR录用,我大学都毕业8个月了:
https://www.zhihu.com/question/310837513/answer/1281609735
参考
^Scott M Lundberg and Su-In Lee.A Unified Approach to Interpreting Model Predic-tions.In I. Guyon, U. V. Luxburg, S. Bengio, H. Wallach, R. Fergus, S. Vish-wanathan, and R. Garnett (eds.),Advances in Neural Information Processing Systems 30,pp. 4765–4774. Curran Associates, Inc., 2017. http://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model-predictions
CV资源下载
后台回复:CVPR2020,即可下载代码开源的论文合集
后台回复:ECCV2020,即可下载代码开源的论文合集
后台回复:YOLO,即可下载YOLOv4论文和代码
后台回复:Trasnformer综述,即可下载两个最新的视觉Transformer综述PDF,肝起来!
重磅!CVer-细分垂直交流群成立
扫码添加CVer助手,可申请加入CVer-细分垂直方向 微信交流群,也可申请加入CVer大群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、Transformer、PyTorch和TensorFlow等群。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡),根据格式备注,才能通过且邀请进群
▲长按加微信群
▲长按关注CVer公众号
整理不易,请给CVer点赞和在看!
ICLR 2021 | 自解释神经网络—Shapley Explanation Networks相关推荐
- 【论文解读】ICLR 2021丨当梯度提升遇到图神经网络,“鱼和熊掌”皆可兼得
论文:https://arxiv.org/pdf/2101.08543.pdf 代码:https://github.com/nd7141/bgnn 无论是分子设计.计算机视觉,还是组合优化和推荐系统等 ...
- 论文阅读:(ICLR 2021) MULTIPLICATIVE FILTER NETWORKS
论文阅读:ICLR 2021 MULTIPLICATIVE FILTER NETWORKS Code:https://github.com/boschresearch/multiplicative-f ...
- ICLR 2021 | 美团AutoML论文:鲁棒的神经网络架构搜索 DARTS-
高质量模型的设计和更新迭代是当前 AI 生产开发的痛点和难点,在这种背景下,自动化机器学习(AutoML)应运而生.2017年,谷歌正式提出神经网络架构搜索(Neural Architecture S ...
- 【代码阅读】Multiplicative Filter Networks (ICLR 2021)
Multiplicative Filter Networks 2022/7/9:今天从双人间搬到了单人间,整理完了寝室,稍微整理一下MFN的代码. 之前论文阅读的链接是论文阅读:(ICLR 2021) ...
- ICLR 2021初审结果公布,高分论文有这些!
作者 | 陈大鑫 今日凌晨,ICLR 2021初审结果在官网公布,没有论文拿到满分10分,论文想被接收平均分大概要6分以上. 本次ICLR 2021一共有3013篇论文提交,其中有856篇论文是来自N ...
- ICLR 2021投稿中值得一读的NLP相关论文
我们从 ICLR 2021开放投稿的3000篇论文中,粗略筛选了近100篇与自然语言处理领域中也许值得一读的论文,供大家查阅. 理论.模型与经验性分析:38篇 问答与阅读理解:4篇 知识图谱:4篇 文 ...
- 百里挑一:ICLR 2021杰出论文奖出炉!
北京时间 2021年4月1日,ICLR 2021 杰出论文新鲜出炉了!在本届 ICLR 上被接收的 860 篇高质量论文中,有 8 篇论文脱颖而出,被授予 ICLR 2021 杰出论文奖. 本次杰出论 ...
- ICLR 2021杰出论文奖公布,DeepMind是最大赢家
萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI ICLR 2021杰出论文奖出炉! 今年共有2997篇投稿,接收860篇,最后共有8篇获得杰出论文奖. 这8篇论文中,谷歌成最大赢家,共有4 ...
- ICLR 2021杰出论文公布:清华、上财校友一作获奖
来源:机器之心 ICLR 2021 距正式召开还有一个月的时间,今日公布了八篇杰出论文,主题涵盖复杂查询应答.图网络网格模拟以及基于随机微分方程的分数生成式建模等.此外,这八篇杰出论文中也有多位华人学 ...
- ICLR 2021 | 基于自监督学习的小样本分类,代码已开源
作者 | 张曼黎 编辑 | 陈大鑫 深度神经网络往往要求为每个新任务收集大量标记训练数据,实用性也因此受到限制.给定来自一组源任务的数据,有两种迁移学习方法可以克服这种限制:小样本学习 (FSL) 和 ...
最新文章
- 解决android 编译失败 Unexpected scopes found in folder
- unity, eulerAngle
- webservice和socket服务的区别
- python初级语法_python语法基础
- springboot 注解动态赋值_SpringBoot 使用 @Value 注解读取配置文件给静态变量赋值
- 外部依赖项很多未定义标识符_从日本编程书籍《我的第一本编程书》中译版看中文例程如何扬长避短——标识符(一)
- 知乎搜索框背后的Query理解和语义召回技术
- Mac安装prometheus+grafana监控
- 国产平板面临变局挑战,谁能撑起民族大旗?
- origin使用指导。pdf_获取所有的最高法指导性案例并保存为pdf
- 用HTML+css制作一个简单的三级导航
- 软件著作权在开发完成时就自动享有了还有必要申请软件著作权登记么?
- Python版本切换与虚拟环境管理
- 电力表采集的参数有哪些
- 计算机教子好考吗,考进985的孩子:父母都是这样教育孩子,这些方法比刷题管用...
- 网页设计初了解-基础知识篇
- html5 we3c,TWDDMM8DRT供应
- 向表插入记录的顺序和读取记录的次序一样吗??
- 工业控制系统的安全建议
- PS2251-68-25+MLC黑片 U盘修复
热门文章
- make 与makefile(会不会写 makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。)...
- 即席查询—Presto
- SICK CLV650-6000固定式扫码枪参数配置
- java判断字符串长度_JAVA 判断字符长度
- 用VBA代码打开xls文件时,判断被打开的xls文件是否含VBA代码并禁止其运行
- Windows编程语言VBA学习(四)——VBA代码调试
- 计算机的软键盘在哪里,Win8软键盘在哪 Win8.1屏幕键盘打开方法图解
- php数字转成字符串的函数,php怎么将数字转成字符串?
- ghost系统好,还是原版安装的好!!!!????????????
- 小程序 微信小商店 获取商品列表