深度神经网络可解释性方法汇总,附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训练工具
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

什么是持续智能?对物联网有什么影响?

物联网世界将迎来充满希望的2020年。5G公司一再声称,2020年是5G在公共领域站稳脚跟,并普及的一年。

iothome ·  12h前
AI战“疫”,偶尔小尴尬背后,终极护城河现形

人类与新型冠状病毒的战“疫”仍然在进行中,在这期间,也催生出各类“人工智能+”应用,人工智能技术在此期间迎来大爆发。

张书乐 ·  1天前
意料之外 情理之中:解读Gartner 2020年数据科学和机器学习平台魔力象限

最近Gartner发布了数据科学和机器学习(DSML)平台魔力象限报告。数据科学、机器学习和人工智能的市场格局极为分散,竞争激烈且难以理解。Gartner尝试根据明确定义的标准对厂商进行了排名。

佚名 ·  1天前
DeepMind发布神经网络、强化学习库,网友:推动JAX发展

JAX由谷歌提出,是TensorFlow的简化库。结合了针对线性代数的编译器XLA,和自动区分本地 Python 和 Numpy 代码的库Autograd,在高性能的机器学习研究中使用。

十三 ·  1天前
谷歌透露:正在内部尝试用AI开发计算机芯片

据谷歌人工智能研究负责人Jeff Dean透露,谷歌正在尝试通过人工智能程序推进专用芯片的内部开发,以加速其软件。在旧金山举行的International Solid State Circuits Conference会上Dean表示:“我们内部正在将人工智能技术用于一系列芯片设计项目中。”

佚名 ·  1天前
4个步骤成功构建出一个机器学习团队

对一个公司来说,如何从0到1构建一个机器学习团队,是很多公司非常头疼的问题,这篇文章给出了一些建议,对求职者来说,同样具有参考价值。

AI公园 ·  1天前
人工智能带领人类从信息社会迈向智能社会

人工智能(AI)是指在机器上实现类似乃至超越人类的感知、认知、行为等智能的系统。与人类历史上其他技术革命相比,人工智能对人类社会发展的影响可能位居前列。

新华网客户端 ·  2天前
复工如何避免间接接触?人脸识别门禁实现硬核防控

随着返工日的临近,全国各地陆续恢复生产和工作,与此同时,疫情预防的工作也不可松懈。据悉,新型冠状病毒的传播方式主要为飞沫传播和间接接触,当下,人人出门都会佩戴口罩,并且经常洗手,可以有效预防飞沫传播,而接触公共设施的间接传播方式不容忽视。

佚名 ·  2天前
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载