AI可解释性 II | Saliency Maps-based 归因方法(Attribution)论文导读(持续更新)

导言

本文作为AI可解释性系列的第二部分,旨在以汉语整理并阅读归因方法(Attribution)相关的论文,并持续更新。

归因方法主要研究如何解释深度神经网络的决策过程,通过识别输入特征对模型输出的贡献程度,对模型的决策过程输出为人类可以理解的图像或者量化指标,帮助我们理解模型的决策依据。

Saliency Maps-based的归因方法给定一个大小为CxWxH的图像输入,通过反向传播等方法找出原图每一个像素在模型最后的输出中贡献的比重,最后输出一张和原图大小为CxWxH一样的Saliency Maps

Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps(Apr 2014)

作者:Karen Simonyan, Andrea Vedaldi, Andrew Zisserman

简介

本文乃是Saliency Maps-based归因方法领域的奠基性工作之一,提出了三种可视化的模型解释方法:

  1. 类别模型可视化(Class Model Visualization):通过优化输入图像使得特定类别的分类分数最大化,从而生成能代表该类别的合成图像。
  2. 指定图片的类别显著可视化(Image-Specific Class Saliency Visualisation):通过计算类别得分对输入图像的梯度,生成显示每个像素对分类决策重要性的热力图。(Saliency Map归因方法)
  3. 反卷积的特征可视化(Feature Visualization):使用反卷积网络将深层特征映射回输入空间,以可视化网络在不同层级学到的特征。

相关工作

“activation maximization”

作者受到了文章Visualizing Higher-Layer Features of a Deep Network的启发,该篇文章给出了一个对神经网络中某一个具体神经元的可视化方法称为“activation maximization”。其原理非常简单,从已经训练好的网络抽出一个神经元,然后通过梯度下降的方法,找到一个输入图像 \(x\) 使得该神经元的激活值最大化:

\[x^* = \arg\max_x h_{ij}(\theta, x) \quad \text{s.t.} \quad \|x\| = \rho
\]

其中 \(h_{ij}(\theta, x)\) 是第 \(i\) 层第 \(j\) 个神经元的激活值,\(\theta\) 是网络参数(冻结),\(\rho\) 是约束输入图像范数的常数。通过这种方式不断优化\(x\),我们可以得到一个能够最大程度激活该神经元的图像,从而理解这个神经元学到了什么样的特征。通过实验可以看到这种方法确实解释了神经元(左侧),并且通过九种随机初始化验证这种解释是收敛的(右侧)。

类别模型可视化(Class Model Visualization)

作者将"activation maximization"的思想扩展到了类别可视化上。对于一个已经训练好的分类卷积网络,我们可以通过优化输入图像来最大化某个类别的分类分数,从而生成能代表该类别的合成图像。

具体来说,给定一个类别c,我们要找到一个输入图像x使得该类别的分类分数Sc(x)最大化:

\[I^* = \arg\max_I (S_c(I) - \lambda \|I\|_2^2)
\]

其中Sc(x)是类别c的分类分数,λ是正则化系数。通过梯度上升的方法不断优化x,最终得到的图像x*就是该类别的可视化结果。

值得注意的是:

  1. 初始化图像是全零的图像(因为用于训练的训练集是已经中心化的)
  2. \(S_c\)是\(c\)类未经归一化的分类分数,而非softmax分数,以降低其他类别的干扰

作者展示了通过在ILSVRC-2013上训练的卷积神经网络学习到的类别外观模型。注意到在单一图像中捕捉到的类别外观的不同方面。

特定图片类别的显著性可视化(Image-Specific Class Saliency Visualisation)

首先我们定义是如何查询给定图片对于某个类别的空间贡献:

In this section we describe how a classification ConvNet can be queried about the spatial support of a particular class in a given image.

给定图片\(I_0\),类别\(c\),以及一个分类卷积网络,其分类分数的函数为\(S_c(I)\),我们希望衡量\(I_0\)中每个像素对分类分数\(S_c(I)\)的贡献。

我们首先给出一个线性例子来理解显著性可视化的原理。假设我们有一个简单的线性分类器,其分类分数可以表示为:

\[S_c(I) = w_c^T I + b_c
\]

其中\(w_c\)是类别\(c\)的权重向量,\(b_c\)是偏置项。在这种情况下,输入\(I\)中每个像素对于输出的重要程度可以直接由权重向量\(w_c\)的对应分量的绝对值来衡量。这是因为每个输入像素都与权重向量的对应分量进行线性组合,权重的绝对值越大,说明该像素对最终分类分数的影响越大。

这意味着权重的绝对值直接反映了每个输入维度对分类决策的重要性。这个简单的线性例子帮助我们理解了在深度神经网络中使用梯度来衡量输入特征重要性的基本原理。

接下来,我们将模型换成深层的卷积网络,其分类分数\(S_c(I)\)将变为高度非线性的函数。但是给定\(I_0\),我们可以通过一阶泰勒近似来线性化这个函数,得到:

\[S_c(I) \approx w^TI+b
\]

其中\(w\)是分类分数\(S_c(I)\)在\(I_0\)点的导数。

\[w= \frac{\partial S_c}{\partial I}|_{I_0}
\]

除此以外,\(w= \frac{\partial S_c}{\partial I}|_{I_0}\)还可以被解释为在这个方向上扰动样本使其对分类分数的影响最大,文章How to Explain Individual Classification Decisions在贝叶斯分类器中采用过类似的方法。

Another interpretation of computing the image-specific class saliency using the class score derivative (4) is that the magnitude of the derivative indicates which pixels need to be changed the least to affect the class score the most. ... We note that a similar technique has been previously applied by [1] in the context of Bayesian classification.

作者展示了针对ILSVRC-2013测试图像中预测的Top-1类别生成的特定图像类别显著性图,这些图通过对分类卷积网络进行一次反向传播提取。

AI可解释性 II | Saliency Maps-based 归因方法(Attribution)论文导读(持续更新)的更多相关文章

  1. Saliency maps

    目录 问题 细节 变量 扩展 代码 Deep Inside Convolutional Networks: Visualising Image Classification Models and Sal ...

  2. win10安装PS和AI后报代码为16的错误解决方法

    win10安装PS和AI后报代码为16的错误解决方法 一.总结 一句话总结:修改兼容性和以管理员方式运行就可以了 修改兼容性 以管理员身份运行 二.PS和AI安装后报代码为16的错误解决方法介绍(转) ...

  3. Adobe Illustrator CS6 界面文字按钮太小,高分屏win10PS/AI等软件界面字太小解决方法

    Adobe Illustrator CS6 界面文字按钮太小,高分屏win10PS/AI等软件界面字太小解决方法 Adobe App Scaling on High DPI Displays (FIX ...

  4. 星际争霸2 AI开发(持续更新)

    准备 我的环境是python3.6,sc2包0.11.1 机器学习包下载链接:pysc2 地图下载链接maps pysc2是DeepMind开发的星际争霸Ⅱ学习环境. 它是封装星际争霸Ⅱ机器学习API ...

  5. LeetCode: Spiral Matrix II 解题报告-三种方法解决旋转矩阵问题

    Spiral Matrix IIGiven an integer n, generate a square matrix filled with elements from 1 to n2 in sp ...

  6. 白嫖百度 Tesla V100 笔记(在 AI Studio 上使用 tensorflow 和 pytorch 的方法)

    登陆百度 AI Studio 并按照教程创建新项目 启动项目并进入控制台 下载 Anaconda3/Miniconda3 安装脚本 安装在 ~/work/*conda3 目录 输入命令 source ...

  7. Salesforce Integration 概览(六) UI Update Based on Data Changes(UI自动更新基于数据变更)

    Salesforce用户界面必须由于Salesforce数据的更改而自动更新.这个场景其实在我所经历的项目中用到的不是特别多,因为客户可能直接点击刷新按钮就直接看到了最新的数据,而不是那种一直不刷新然 ...

  8. leetCode 90.Subsets II(子集II) 解题思路和方法

    Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...

  9. leetCode 81.Search in Rotated Sorted Array II (旋转数组的搜索II) 解题思路和方法

    Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...

  10. leetCode 82.Remove Duplicates from Sorted List II (删除排序链表的反复II) 解题思路和方法

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

随机推荐

  1. java代码之美(3)

    Map中的computeIfAbsent方法 Map接口的实现类如HashMap,ConcurrentHashMap,HashTable等继承了此方法,通过此方法可以在特定需求下,让你的代码更加简洁. ...

  2. 218:解释LINUX文件系统权限

  3. ReentrantLock实现机制

    掌握Reentrantlock 具体结构 下文Reentrantlock简称RL,阅读之前强烈建议读一下AQS源码解析: https://www.cnblogs.com/seamount3/p/186 ...

  4. redis 过期监听配置

    package org.jeecg.config; import java.lang.reflect.Method; import java.time.Duration; import java.ut ...

  5. 洛谷P2789 直线交点数 题解

    解题思路 考虑将直线分组,每组内直线互相平行,任意两组直线间交点数量等于两组内直线数量乘积. 分组操作使用dfs,求出交点数量后加入set去重,输出set大小. 时间复杂度O(2NN2)有点鬼畜但是可 ...

  6. 【COM3D2Mod 制作教程(2)】Mod 底层原理

    [COM3D2Mod 制作教程(2)]Mod 底层原理 Mod 是什么? Mod 一词想必你已经听过很多次了,因为很多游戏都可以装 Mod,而 Mod 可以为游戏增添一些额外的乐趣.但在 COM3D2 ...

  7. clickhouse--数据类型

    数据类型 整型 固定长度的整型,包括有符号整型或无符号整型. 整型范围(-2n-1~2n-1-1): Int8 - [-128 : 127] Int16 - [-32768 : 32767] Int3 ...

  8. C#中的StreamWriter和"谁创建谁释放"原则

    C# 类库中的 StreamWriter 类在释放时会同时关闭其所依赖的基础流对象,这是为了确保所有缓冲数据都被写入基础流中,并且在不再需要 StreamWriter 对象时,基础流对象也能够被及时释 ...

  9. 解决 Dell PowerEdge T630 增加第三方 PCIe 设备后制冷系统异常

    博客链接:解决 Dell PowerEdge T630 增加第三方 PCIe 设备后制冷系统异常 配置 Device: Dell PowerEdge T630 CPU: Intel(R) Xeon(R ...

  10. centos 8 编译*.cpp文件

    1.安装g++ yum -y install gcc-c++ 2.编译*.cpp文件 g++ -o test_app_name test_source_file.cpp 3.运行编译结果 ./test ...