深度神经网络可解释性方法汇总,附Tensorflow代码实现

作者: 代码医生 2019-11-08 10:17:41

理解神经网络:人们一直觉得深度学习可解释性较弱。然而,理解神经网络的研究一直也没有停止过,本文就来介绍几种神经网络的可解释性方法,并配有能够在Jupyter下运行的代码连接。

Activation Maximization

通过激活最化来解释深度神经网络的方法一共有两种,具体如下:

1.1 Activation Maximization (AM)

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/1.1%20Activation%20Maximization.ipynb 

深度神经网络可解释性方法汇总,附Tensorflow代码实现

1.2 Performing AM in Code Space

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/1.3%20Performing%20AM%20in%20Code%20Space.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

Layer-wise Relevance Propagation

层方向的关联传播,一共有5种可解释方法。Sensitivity Analysis、Simple Taylor Decomposition、Layer-wise Relevance Propagation、Deep Taylor Decomposition、DeepLIFT。它们的处理方法是:先通过敏感性分析引入关联分数的概念,利用简单的Taylor Decomposition探索基本的关联分解,进而建立各种分层的关联传播方法。具体如下:

2.1 Sensitivity Analysis

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/2.1%20Sensitivity%20Analysis.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

2.2 Simple Taylor Decomposition

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/2.2%20Simple%20Taylor%20Decomposition.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

2.3 Layer-wise Relevance Propagation

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/2.3%20Layer-wise%20Relevance%20Propagation%20%281%29.ipynb

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/2.3%20Layer-wise%20Relevance%20Propagation%20%282%29.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

2.4 Deep Taylor Decomposition

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/2.4%20Deep%20Taylor%20Decomposition%20%281%29.ipynb

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/2.4%20Deep%20Taylor%20Decomposition%20%282%29.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

2.5 DeepLIFT

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/2.5%20DeepLIFT.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

Gradient Based Methods

基于梯度的方法有:反卷积、反向传播, 引导反向传播,积分梯度和平滑梯度这几种。具体可以参考如下链接:

https://github.com/1202kbs/Understanding-NN/blob/master/models/grad.py

详细信息如下:

3.1 Deconvolution

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/3.1%20Deconvolution.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

3.2 Backpropagation

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/3.2%20Backpropagation.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

3.3 Guided Backpropagation

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/3.3%20Guided%20Backpropagation.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

3.4 Integrated Gradients

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/3.4%20Integrated%20Gradients.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

3.5 SmoothGrad

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/3.5%20SmoothGrad.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

Class Activation Map

类激活映射的方法有3种,分别为:Class Activation Map、Grad-CAM、 Grad-CAM++。在MNIST上的代码可以参考:

https://github.com/deepmind/mnist-cluttered

每种方法的详细信息如下:

4.1 Class Activation Map

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/4.1%20CAM.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

4.2 Grad-CAM

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/4.2%20Grad-CAM.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

4.3 Grad-CAM++

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/4.3%20Grad-CAM-PP.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

Quantifying Explanation Quality

虽然每一种解释技术都基于其自身的直觉或数学原理,但在更抽象的层次上确定好解释的特征并能够定量地测试这些特征也很重要。这里再推荐两种基于质量和评价的可解释性方法。具体如下:

5.1 Explanation Continuity

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/5.1%20Explanation%20Continuity.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

5.2 Explanation Selectivity

相关代码如下:

https://nbviewer.jupyter.org/github/1202kbs/Understanding-NN/blob/master/5.2%20Explanation%20Selectivity.ipynb

深度神经网络可解释性方法汇总,附Tensorflow代码实现

人工智能 机器学习 技术
上一篇:数据转换率较低将如何严重影响机器学习 下一篇:谷歌升级可在浏览器内运行的免编程AI训练工具
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

MIT提出Liquid机器学习系统,可像液体一样适应动态变化

麻省理工学院(MIT)的研究者开发出了一种新型的神经网络,其不仅能在训练阶段学习,而且还能持续不断地适应。

机器之心 ·  2021-02-21 15:47:47
规划智慧城市时,别忘了无障碍通行

要想成为一个智慧城市甚至一个智慧世界,虽然可能需要时间和有针对性的规划,但我们必须以人为本。

蒙光伟 ·  2021-02-21 10:26:41
2021关于人工智能的五大趋势

数字化变革,比过去10年更多,这主要是由于远程工作的规模,以及企业迅速部署了必要的技术,尤其是与网络安全相关的技术。那,2021关于人工智能的五大趋势会是如何的呢?

Lichu ·  2021-02-21 10:21:01
使数据中心更智能:人工智能如何发挥作用?

随着数据成为维持几乎所有业务运营以获取洞察力和业务成果的先决条件,数据中心正处于这种数字化转型的关键。

Cassie ·  2021-02-21 10:14:59
IBM拟出售Watson Health后,AI医疗还能不能碰

医疗服务仍然是一块商业上尚未被完全发掘的市场,看病难/看病贵、医疗资源紧缺、医疗资源不平均等痛点问题长期存在,对应的市场空间理应是巨大的。而Watson Health作为IBM曾寄予厚望的业务方向,为何要在此时萌生退意?它的故事给业界带来哪些启发?眼下的AI医疗市场,究竟是一副什么样的局面呢?

物联传媒 ·  2021-02-21 08:41:16
抛弃归一化,深度学习模型准确率却达到了前所未有的水平

我们知道,在传递给机器学习模型的数据中,我们需要对数据进行归一化(normalization)处理。

机器之心 ·  2021-02-20 21:09:12
华人博士生首次尝试用两个Transformer构建一个GAN

最近,CV 研究者对 transformer 产生了极大的兴趣并取得了不少突破。这表明,transformer 有可能成为计算机视觉任务(如分类、检测和分割)的强大通用模型。

Yifan Jiang ·  2021-02-20 21:04:53
无监督训练用堆叠自编码器是否落伍?ML博士对比了8个自编码器

柏林工业大学深度学习方向博士生 Tilman Krokotsch 在多项任务中对比了 8 种自编码器的性能。

Tilman Krokotsch ·  2021-02-20 20:57:16
Copyright©2005-2021 51CTO.COM 版权所有 未经许可 请勿转载