面向图像分类的深度模型可解释性研究综述

源自:软件学报      

作者:杨朋波 桑基韬  张彪 冯耀功  于剑

摘 要

关键词

深度学习    可解释性    图像分类    特征

 引 言

图像分类任务是计算机视觉中较为基础的任务, 其核心是根据图像中的信息对不同类别的目标进行分类, 并实现最小的分类误差. 深度学习最早在图像分类任务上展现了巨大的潜力, 卷积网络[3-5]的局部连接性和平移不变性完美契合了图像数据的特征. 随着图像分类精度的不断提升, 研究者在图像任务上发现深度学习存在许多问题, 如对抗鲁棒性、泛化性、公平性等问题. 解释性研究为打开深度学习的黑箱和解决深度学习当前存在的问题提供了可能. 一方面图像上的特征是我们比较容易理解的, 另一方面其他领域的可解释性研究工作和图像分类领域具有相似性, 因此本文在图像分类任务场景下总结了当前深度学习的可解释性研究进展.

根据建模过程, 可解释性研究工作可分为建模前的可解释性研究、建模中的可解释性研究以及建模后的可解释性研究3个方面. 建模前的可解释性研究主要包括数据的预处理和可视化分析, 可以帮助我们充分了解数据的分布特征[26, 27]. 建模中的可解释性研究需要我们在解决问题的过程中, 选择人类可理解的特征并采用具备良好解释性的模型进行建模, 如基于规则的模型[28-30]、线性模型[31, 32]等. 建模后的可解释性研究主要针对黑箱模型, 通过各种算法如可视化分析、重要性分析等手段对模型进行分析. 作为端到端的黑箱模型, 当前围绕深度模型的可解释性研究工作主要以建模后的解释性算法为主.

本文将深度模型的可解释性算法分为全局可解释性算法和局部可解释性算法[21, 33, 34], 全局可解释性算法关注模型内部的知识表达, 而局部可解释性算法关注模型对输入样本决策过程的解释性. 在此分类基础上, 通过分析解释性算法之间的关联, 在解释对象的粒度上, 我们进一步将全局可解释性算法分为模型级和神经元级可解释性算法; 将局部可解释性算法划分为基于像素级特征、基于概念级特征以及基于图像级特征的可解释性算法. 针对图像分类任务, 本文依据上述分类框架对目前常用的深度模型的可解释性算法进行归类和总结.

本文在特征的视角下分析了深度模型在图像分类任务上的学习过程, 同时定义了可解释性研究的主要内容; 其次, 在解释粒度的视角下对可解释性算法进行总结归纳, 并在泰勒展开的框架下将部分局部可解释性算法统一起来; 基于对当前可解释算法的研究和总结, 我们认为深度学习的可解释性研究才刚刚起步, 一方面我们需要进一步开展解释性算法和理论基础的研究, 另一方面可解释性算法在模型测试和调试方面存在巨大潜力需要我们进一步挖掘.

扫描二维码关注公众号,回复: 14686743 查看本文章

本文第2节首先给出了可解释性的定义并从特征角度理解深度模型, 其次介绍了本文的可解释性算法的分类依据和整体框架; 第3节和第4节我们分别阐述了全局可解释性算法和局部可解释性算法; 第5节对深度模型可解释性算法的评估指标进行归纳并对解释性算法进行总结比较; 第6节中基于对当前的可解释性研究成果的总结, 我们对未来的可解释性研究趋势进行了探讨.

2 深度学习的可解释性

2.1  可解释性定义

图像分类问题以标签作为监督信息, 模型通过从数据中挖掘与标签相关的信息来对图像进行分类. 传统的图像分类算法使用的特征是经过人工筛选和构建的, 具有良好的语义性和解释性; 而深度模型从数据中挖掘的相关模式是我们难以理解的. 此外, 近年来研究发现神经网络和人类的认知是有差异的[15], 这也为我们理解深度模型带来了一定的挑战. 因此, 为了理解深度模型的行为, 我们需要对深度模型进行可解释性研究. 可解释性并没有明确的数学定义, 一些学者从用户的角度出发来定义可解释性[18, 21, 34, 35]. Montavon等人[21]把解释定义为将模型中的抽象概念映射到人类可以理解的领域中, Miller等人[35]定义可解释性为人们能够理解模型决策原因的程度. 在本文, 我们将可解释性定义为用户和模型之间的桥梁, 它将模型中的抽象表示映射到人类可理解的语义空间中.

如图1所示, 我们将深度模型从数据中提取到的特征分为任务相关特征和任务无关特征. 深度模型尽可能地利用数据中的相关特征进行决策以提高分类准确率, 然而精度并不能作为模型的唯一评价指标, 用户的可理解性对一个模型来说也是至关重要的. 如图1中的红色箭头所示, 可解释性研究所做的事情就是在不破坏模型精度的情况下提升模型的可信赖性, 解释器将位于模型特征空间中的相关特征解释为与人类感知相一致的语义特征. 由于深度模型和人类的认知是有差异的[15], 不可避免的深度模型会从数据中挖掘一些不在人类认知范围内的特征, 即非语义特征. Ilyas等人[36]将这些非语义特征定义为非鲁棒特征, 非语义特征的存在使得模型在当前任务上具有优异的性能, 但是它们也会影响模型的泛化能力和鲁棒性等问题.

图 1 在特征视角下, 深度模型的学习过程和可解释研究的作用

2.2   深度模型的可解释性算法

由于图像特征比较容易理解, 而且不同领域的解释性算法具有相似性, 因此我们选择在图像分类场景下对深度学习的可解释性研究进行总结. 本文将深度模型的解释性算法分为全局解释性算法和局部解释性算法. 全局解释性算法关注深度模型本身的可解释性, 主要研究模型如何对数据进行表达以及模型中每个神经元的功能; 而局部解释性算法关注模型对单个输入样本决策的解释性, 主要回答模型为什么将输入归为特定类别以及输入中的哪些特征在决策中起到重要作用的问题.

依据解释对象的粒度, 本文将全局可解释性算法分为模型级可解释性算法和神经元级可解释性算法, 模型级可解释性算法主要关注模型对不同类别数据的表达以及模型本身的知识表示, 而神经元级可解释性算法关注深度模型隐藏层神经元的特征表达. 依据解释特征的粒度, 我们将局部可解释性算法进一步划分为以单个像素、像素区域组成的概念以及图像本身作为解释特征基本单位的可解释性算法. 与梯度相关的解释性算法多是以像素为基本单位来解释模型的[37-41], LIME (local interpretable model-agnostic explanations)算法[42]以及基于概念激活向量的解释性算法[43-45]均是以概念为基本单位进行决策解释的, 基于实例的可解释性算法以及网络反演的可解释性算法均以图像作为解释性特征[46-49]. 本文的分类框架如图2所示, 接下来我们将根据图2对深度模型的可解释性算法进行总结.

图 2 本文可解释性算法的分类框架

3 全局可解释性算法

深度模型的全局可解释性算法主要关注模型本身的解释性以及神经元粒度上的特征表示, 通过将模型内部的特征表示映射为图像空间的语义特征, 从而提升模型的透明度. 常见的模型级可解释性算法包括激活最大化算法[16, 37, 50-53]、网络压缩[54, 55]、知识蒸馏[56, 57]等, 神经元级的解释性算法有基于激活最大化的算法和基于Network Dissection框架[58-61]的可解释性算法.

3.1   模型级可解释性算法

 3.1.1    模型级激活最大化算法

激活最大化(activation maximization)[16, 37, 50-52]算法是分析神经元感兴趣特征的一类算法. Simonyan等人[37]将该算法应用到深度模型中, 研究神经网络输出层学习到的类别特征. 通过激活最大化来寻找类别语义特征的具体步骤是: 首先, 固定网络的权重参数并输入一张噪声图像 x , 并对其进行优化使得网络输出层类别 c 的输出得分 Sc(x) 达到最大, 优化目标如公式(1):

  (1)    

其中, λ 是一个正则化参数, 通过反向传播算法和梯度上升策略不断调整输入图像 x 使得 Sc(x)达到最大. 通过可视化最终的 x∗ 来展示网络所学习的类别特征. 激活最大化是一种模型相关的解释性算法, 能够准确反映模型的真实行为, 通过这种方法获得的语义图像是非自然图像, 如图3所示.

图 3 卷积网络最后一层神经元激活最大化对应的可视化特征[37] 

  为了使得激活最大化算法找到的语义特征图像接近自然图像, Nguyen 等人[53]将深度生成模型(GAN)[5]和激活最大化算法结合构建了DGN-AM模型, 优化目标如下:

 (2)    

其中, z是生成器G的输入编码向量, G(z) 是生成器的输出图像. 利用GAN的生成能力, 可以生成逼真的自然图像同时捕获神经元的语义特征.

模型级激活最大化算法探究了模型是如何对数据中的类别特征进行抽象表示的, 在一定程度上让用户了解到模型确实从数据中归纳出了与类别相关的决策规则. 然而, 激活最大化算法难以训练, 通常会生成带有噪声和高频模式的非自然图像; 其次, 激活最大化算法适合优化连续性数据, 无法直接应用于离散型数据如文本、图结构数据等.

 3.1.2    代理模型

由于深度模型体量较大且结构复杂使得我们难以理解模型的行为, 因此可以通过降低模型的复杂度来提升模型的解释性. 代理模型在原始网络的基础上, 采用复杂度低、解释性好的替代模型来模仿原始模型进行决策. 网络压缩 (network compression)[54, 55]和知识蒸馏(knowledge distillation)[56, 57]是这类算法的代表, 代理模型在继承原始模型优异性能的同时降低了模型的复杂度.

压缩算法在保证网络精度的前提下对深度网络的参数、结构等进行压缩, 常见的压缩算法有网络剪枝优化、矩阵分解等算法. Abbasi-Asl等人[54]分析了压缩算法在卷积网络可解释性方面发挥的作用, 他们将删除卷积核后网络精度的下降程度作为指标对卷积核进行裁剪. 通过可视化剪枝前后网络中每个神经元对应的最大激活图像, Abbasi-Asl等人发现压缩后的网络特征更加紧凑一致. 此外, 部分工作将卷积核的可解释性作为评估指标来指导模型压缩[55], 在降低模型复杂度的同时保证压缩后的模型具备一定的可解释性.

Hinton等人提出知识蒸馏算法[56], 通过训练一个小网络来模拟原始网络的决策行为, 将原始模型的知识通过蒸馏提炼到小网络中, 训练小网络时将训练集在原始网络上的伪概率输出作为软标签来监督小网络的学习. 为了更好地理解深度模型的工作原理, Frosst等人[57]尝试将决策树作为解释性载体, 通过蒸馏算法将网络所学习的分布式特征表示转移到同样是分层模式的决策树中. 文献[57]通过使用二元决策树来模仿神经网络的决策过程, 其中决策树内部节点 i 对应着神经网络中一个神经元的过滤器 wi 和偏执 bi , 在决策树的每一个内部节点处, 对于输入 x 来说选择右侧分支的概率为:

 (3)    

其中, σ 为Sigmoid激活函数, 相应的选择左侧分支的概率为 1−pi(x). 决策树的每一个叶子节点 l 的输出是 k 个类的概率分布 Ql , 最终使用两种不同的方式给出测试样本的预测分布——最大路径概率的叶子分布或将叶子分布按其各自路径概率的加权平均值作为最终的预测分布. 通过这样一个二元决策树的学习, 可以将深度模型的层级结构以及网络学习到的知识蒸馏到决策树模型中.

压缩算法和蒸馏算法本质上无法直接为原始模型提供解释性, 因为他们只是原始模型的一个全局近似, 它们无法保证替代模型和原始模型之间的行为完全一致, 因此在解释性上可能无法完全反映原始模型的行为.

模型级可解释性算法通过挖掘模型的类别特征以及简化模型的整体结构, 让用户对模型有一个整体的认识, 为了进一步提升模型的透明度我们需要对模型中每个神经元的功能进行分析.

3.2   神经元级可解释性算法

神经元级可解释性算法主要关注网络中每个神经元所对应的语义特征, 通过将神经元在特征空间中的表示映射到人类可理解的语义空间来揭示神经元所学习到的特征, 这类算法主要有基于激活最大化的可解释性算法[16, 51, 62]以及基于Network Dissection框架的可解释性算法[58-61].

 3.2.1    神经元级的激活最大化算法

最初激活最大化算法用来对模型的类别特征进行学习, Yosinski等人[51]将该算法用来分析隐层神经元的感兴趣特征, 将最大程度激活特定神经元输出的图像特征定义为神经元的语义特征, 优化目标如公式(4)[16]:

 (4)    

其中, ϕ(x)是某层神经元输出的向量化表示, ei 是标准正交基坐标向量且维度和 ϕ(x)大小一致. ϕ(x)和 ei的内积即为该层第 i 个神经元的输出, 通过梯度上升最大化 ϕ(x)和 ei 的内积即可找到第 i 个神经元所对应的语义特征图像. 我们也可以通过对 ei 进行组合来找到部分神经元的组合语义特征. 式(4)中的第二项是关于 x 的一个正则化项, 主要作用是通过先验约束来提高合成图像 x∗ 的质量和可理解性, r(x) 的主要形式有 L2 正则化[37]、全变分[51]等各种形式的正则化.

一个神经元可以被多种模式激活, 而激活最大化算法倾向于找到一种最大程度激活神经元的模式, 从而忽略了神经元激活模式的多样性. 为了展现神经元特征的多样性, 文献[52]的工作结合降维技术和K-均值聚类算法生成模型特征表示空间的多个聚类中心, 然后利用激活最大化算法来寻找每个聚类中心的最大激活语义图像, 从而揭示深度神经网络学习特征的多样性. DeepDream算法[62]将任意一张自然图像作为网络初始化输入, 利用激活最大化算法放大单个神经元或部分神经元组合的语义特征, 最终将输入图像变化成各种有趣特征的杂糅.

同样的, 通过激活最大化算法获得的神经元对应的语义特征图像大都是非自然图像, 可以通过文献[53]中的算法来找到隐层神经元对应的带有语义信息的自然图像. 通过激活最大化算法探究每层神经元的语义特征, 可以发现神经网络所捕获的特征在语义上有层级的现象, 底层神经元会捕捉到颜色、纹理等信息, 中高层神经元可以逐渐的抓取局部和类别特征.

 3.2.2     Network Dissection框架

Bau等人[58]提出Network Dissection框架, 通过评估隐藏层神经元和语义概念之间的一致性来量化网络神经网络特征表示的可解释性. 为了将单个神经元和语义概念对应起来, 他们构建了一个像素级分割的数据集(Broden数据集), 该数据集包含颜色、纹理、场景、材料、物体部分、物体等语义概念. 对于Broden数据集中的每个图像 x , 根据语义概念进行语义分割形成概念 c 的二进制模板 Lc(x) .

将Broden数据集中的每个图像 x 输入到训练好的深度模型中, 提取某个隐藏层中神经元 k 的特征激活图 Ak(x) , 然后统计神经元 k 在所有图像上的激活分布 ak , 通过分布为神经元 k 确定一个激活阈值 Tk 满足 P(ak>Tk)=0.005 , Tk 的作用是为了从激活图中提取具有显著激活的区域. 使用双线性插值将激活图 Ak(x) 扩大到输入图像分辨率大小得到 Sk(x) ; 然后将 Sk(x)通过阈值 Tk进行处理并转化为二进制模板: Mk(x)≡Sk(x)⩾Tk . 针对每个 (k,c) 对, 通过计算 Mk(x)和 Lc(x) 的交并比来评估神经元 k 对语义 c 的分割能力, 通过公式(5)定义神经元和语义概念之间的一致性:

 (5)

   

IoUk,c  的值反映了神经元 k 检测概念 c 的精度, 为了保证神经元 k 确实能够对语义概念 c 进行分割, 需要进一步对 IoUk,c进行阈值筛选确保得到有意义的结果. 如果 IoUk,c  满足一定的条件, 则称神经元 k 为概念 c 的检测器.

Network Dissection框架可以为每个神经元定义其对应的语义特征, 这些特征在概念上和人类的认知是一致的, 因此该算法可以提升深度模型的透明度和解释性. 实验发现在网络训练的过程中, 低级语义特征检测器先出现如颜色、纹理等特征检测器, 随着训练的进行物体部分检测器和对象检测器逐渐出现; 不同网络框架下模型语义特征的分布是不一样的, 不同的训练方式也会导致神经元的语义特征发生变化; 其次, 有的神经元可能对应着多个语义概念特征, 一个语义概念也可能被多个神经元检测到, 这说明神经元和语义概念之间的关系存在一对多和多对一的可能. 在后续工作中, Bau等人[61]将Network Dissection框架应用到生成模型中, 对神经元的功能进行剖析, 并且通过操控神经元来生成带有对应语义特征的图像.

神经元级可解释性算法可以让我们清楚地了解到深度模型中每个神经元的功能和作用, 然而这类算法主要是单独地对每个神经元进行分析缺乏对神经元之间的交互分析, 此外通过神经元级可解释性分析难以获得每个特征在模型决策中的重要程度.

4 局部可解释性算法

局部可解释性算法旨在解释模型对单个输入样本的决策行为, 回答为什么在特定的测试样本上模型会做出特定的分类决定. 与全局可解释性算法不同, 局部解释性算法不需要关注模型的整体结构, 它们专注于模型在测试样本点附近局部空间上的决策行为.

4.1   像素级特征可解释性算法

像素级特征可解释性算法以像素为基本单位来解释模型对输入图像的决策行为. 对于给定的分类器 f 和测试图像 x , 像素级可解释性算法为 x 中的每个像素 xi 分配一个重要度值或者输出贡献值, 从而得到一个与输入图像大小相同的热力图. 该热力图中的数值大小反映 x 中的像素特征对网络决策的重要程度. 一般来说, 像素级特征和人类容易理解的高级概念并不对应, 但热力图的整体视觉效果能够凸显出输入图像中的一些局部特征, 如轮廓、纹理等语义信息.

本文将像素级特征可解释性算法统一到基于泰勒展开的框架下. 对于给定的分类器 f 和测试图像 x , 可以在 x 的局部邻域内找到一个 x 的参考点 x0 , 则我们可以将函数 f 利用泰勒展开进行近似表示:

(6)  

基于公式(6)可以产生两类解释性算法:

(1) 敏感性分析算法: 梯度可以反映输出相对输入中每个维度的敏感程度, 因此可以将局部梯度作为一种解释性[37], 即

 , 在局部小邻域内 f 是近似线性的, 即;

(2) 归因算法: 将 f 的一阶微分作为一种解释, 即 

, ⊙ 代表逐元素相乘.

相关的可解释性算法总结在表1中, 接下来我们将根据表1对该类算法进行总结. 此类算法通过反向传播算法获得最终的解释结果, 因此计算较为简便高效.

表 1 像素级特征可解释性算法及其分类

 4.1.1    敏感性分析算法

敏感性分析算法是比较常见的解释性算法, 用于分析输入样本每一维度的变化对输出的影响. Simonyan等人[37]提出Saliency Map算法, 该算法直接将深度模型的输出对输入图像的梯度作为解释结果. 对原始梯度进行绝对值处理、阈值过滤等操作[37]可以提升梯度可视化的视觉效果. 由于深度模型的复杂度和高度非线性导致梯度存在很多问题.

  1. 梯度存在噪声, 一方面显著性图中无规则的噪点会造成视觉扩散, 从而影响解释结果的有效性, 另一方面这些噪点的存在也说明模型学习到了一些无关的特征模式;

  2. 梯度饱和现象, 由于激活函数的存在会导致反向传播的过程中出现梯度为0的现象, 从而忽略掉图像中的重要特征信息[67];

  3. 梯度的连续性较差, 对于微小扰动产生的相似样本, 梯度的解释结果可能会出现差异较大的现象.

为了改进原始梯度存在的视觉扩散效应, Smilkov等人[63]提出了平滑梯度算法(SmoothGrad)来消除原始梯度可视化产生的噪点, 该算法主要是通过在 x 的邻域内进行多次采样得到 n 个样本 {xi}i=1,…,n  , 其中 xi  是通过对 x 加入高斯噪声生成的 xi=x+N(0,σ2) , 对这些样本的梯度进行平均来平滑掉原始梯度中出现的噪点[38]. SmoothGrad算法可以和许多与梯度相关的可视化算法相结合, 如类激活图(class activation mapping)[70]等.

为了提升梯度可视化的效果, 反卷积可视化(DeconvNet visualization)算法[38]和导向反向传播(guided backpropagation)算法[64]对梯度的反向传播过程进行修改, 他们将高层激活信号通过反向传播机制逐层传递到输入空间, 并在输入空间重构与特定神经元激活或分类决策相关的模式. 反卷积可视化[38]的流程主要由反池化、反ReLU、反卷积3个操作组成, 该算法和梯度反向传播过程类似, 唯一不同的地方是经过ReLU时的操作. 如果前向传播过程中神经元被抑制, 则正常的梯度反向传播过程中梯度经过该神经元时变为0. 反卷积可视化算法在反向传播时, 不考虑前向传播过程中神经元的激活情况, 直接对反向传递回来的信号用ReLU函数进行激活处理. GBP算法[64]将原始梯度和反卷积可视化算法结合, 梯度在反向传播经过ReLU时, 不仅考虑前向传播的激活情况同时考虑反相传播的激活情况.

相比于原始梯度信息, 反卷积可视化和GBP算法在梯度反向传播过程中尽可能地保留正的梯度信息, 突出强调那些对分类结果有积极作用的特征, 能够更好地展示网络学习到的特征. 如图4所示, 对于一张输入图像, 经过不同的反向传播过程得到的解释性结果. 可以发现反卷积可视化和GBP算法的可视化结果要比原始梯度效果好, 它们能够更好地刻画出对象的轮廓信息. 利用反卷积可视化算法对隐藏层的神经元特征进行分析, 可以观察到神经网络学习的特征逐层变得复杂[38], 浅层神经元主要关注颜色、边缘等低层特征, 随着层数的加深模型会学习到复杂的纹理特征、局部特征甚至是类别对象特征.

图 4 对于一个卷积模型和一张输入图像, 利用不同可视化算法获取的特征

敏感性分析算法从视觉上来说能够为用户提供清晰的语义信息, 然而一些工作发现这类算法存在缺陷: Nie等人[71]实验发现GBP算法和DeconvNet可视化算法对网络的重参数化不明感, 即改变网络参数解释结果几乎不变, 他们从理论上证明了这两个算法在对输入样本进行部分重构; Ghorbani等人[72]和Dombrowski等人[73]提出了针对基于反向传播方法的攻击算法, 在测试样本上添加扰动在不改变输出预测的情况下导致截然不同的解释结果. 这些发现为可解释性算法的可信赖性提出了质疑.

 4.1.2    归因算法

归因算法将网络的预测分数 f(x) 通过逐层反向传播到输入的每个维度上, 为输入的每个维度分配一个贡献值 Rd . 归因算法具有完备性, 即输出得分可以近似由输入的各个维度的贡献之和表示:

 (7)    

从泰勒展开的角度来说, 如果我们找到一个参考点 x0 满足 f(x0)=0 , 那么我们可以将网络输出通过一阶微分进行近似:

 (8)    

一阶微分近似在一定程度上反映了输入样本和参考点在网络输出上的差异. 如果 f(x0)=0 且 f(x)>0 , 那么我们可以认为由于 x 中存在 x0 中不存在的特征从而为分类提供证据, 这就是简单泰勒分解对深度模型进行解释的依据[41].

直接使用Input ⊙ Gradients[65],即

 , 在一定程度上能够缓解梯度扩散的问题. Kim等人[66]利用GBP算法原理, 在梯度逐层反向传播的过程中设置阈值过滤掉较小的梯度, 最终使用修正的梯度和输入样本的逐元素乘积作为解释结果. 为了解决原始梯度可视化存在的饱和问题, 文献[67]提出了积分梯度(integrated gradients)算法, 主要思想是在参考点 和测试图像 x 之间对梯度函数进行路径积分. IG (integrated gradients)的解释结果通过公式(9)计算:

 (9)  

其中, Sc(x) 是网络在目标类别上的输出结果, 

是参考点一般选择全黑图像. 公式(9)中积分项是对原始图像的像素在[0, 1]尺度上进行多次缩放, 然后计算这些样本梯度的均值, 因此 IG(x) 是Input ⊙ Gradients的一种特殊形式. 通过引入与输入相似的多个样本来计算梯度, 在一定程度上能够解决梯度弥散和饱和的问题. 但是, 通过这种方式会引入虚假相关性, 因为深度模型内部对这些尺度缩放图像的处理可能存在很大的差异, 尽管他们可能会被网络识别为同一类别.

分层相关性传播(layer-wise relevance propagation)算法[41]将网络的输出得分 f(x) 作为相关性得分逐层反向传播, 最终将 f(x) 分配到输入样本x的各个维度上, 通过定义每个像素点的贡献来衡量像素级特征的重要性, 最终通过热力图将解释结果呈现给用户, 从而提供模型决策的依据. 假设 l 层神经元预激活的输出 zl , 为 zl 的每一维度

 分配一个相关性得分  , LRP在传播过程中满足完备性假设: 每层神经元对应的相关性得分之和相等, 即满足公式(10)条件.

 (10) 

在反向传播的过程中, l+1层第 k 个神经元分配给 l 层第 i 个神经元的相关性得分用 

表示, 那么反向传播过程中应该遵循以下规则:

 (11)    

基于以上的传播规则, Bach等人[41]提出了一个合理的相关性传播方案:

(12)

   

为了避免出现 zj 过小导致 

无界的情况, 可以通过引入预定义的稳定器 ε 来克服无界的问题( ε -LRP):

(13)    

本质上来说, LRP是基于泰勒展开的一种特殊的反向传播形式. 为了避免相关性的遗漏, Bach等人[41]建议将神经元激活 zij  进一步划分为积极的和消极的激活并分别进行反向传播. LRP算法不依赖梯度信息, 因此可以对不可微的模型进行解释分析, 该算法在图像分类、视频分析、医疗诊断等领域具有广泛的应用场景[21].

Shrikumar 等人[68]提出了DeepLIFT (deep learning important features)算法同样是将网络的预测结果分配到输入的每个维度上, 不同的是DeepLIFT将每个神经元的激活z与其“参考激活”

 进行比较, 并根据差异将高层神经元的贡献得分分配给下一层神经元, 给定参考点  将其输入网络中并记录网络中每个神经元的参考激活  , 则DeepLIFT算法的传播规则如公式(14)所示[74]:

(14)    

类似于LRP算法, DeepLIFT 算法也可以分别考虑积极的贡献和消极的贡献来避免相关性遗漏. 从传播方式上来看, LRP算法是DeepLIFT 算法的一个特例, 即考虑参考点 

=0  . DeepLIFT算法[68]建议参考点的选择要根据领域知识, 且最好针对多个不同的参考计算DeepLIFT得分. Ancona 等人[40, 74]将Integrated Gradients、LRP、DeepLIFT统一了起来, 他们形式上和输入 ⊙  梯度是一致的, 不同之处是梯度的求取方式上存在差异, 表2给出了这些算法的比较以及它们在MNIST数据上的可视化效果.

表 2 基于一阶微分近似的归因算法及其比较

参考点的选择是一阶泰勒近似类解释算法的关键, 不同的参考点选择会得到不同的解释性结果. 为了获得良好的解释结果, 泰勒分解TD (Taylor decomposition)[41]建议我们选择根点作为参考点, 根点位于分类边界上可以很好的为输入样本提供局部的解释性, 然而寻找根点是一个非凸优化的过程, 而且并不是所有的样本都能够找到对应的根点. Montavon 等人[69]基于泰勒分解和分治思想的启发提出了深度泰勒分解算法DTD (deep Taylor decomposition)对神经网络进行解释. DTD方法将深度网络学习的复杂函数在结构上分解为一组子函数的和, 同时该算法提供了在不同情况下如何寻找根点或者近似根点的方法.

4.2   概念级特征可解释性算法

概念级特征可解释性算法需要构建语义概念集合, 并通过重要性分析来衡量每个概念特征在模型决策中重要度. 利用超像素分割算法可以将图像划分为不同的超像素区域, 这些区域可以和语义概念对应起来, 通过衡量测试图像中的每个概念特征在模型输出上的贡献来对深度模型的决策进行解释. LIME算法和基于概念激活向量CAV (concept activation vectors)的可解释性算法[43-45]都是在概念特征的基础上对深度模型的决策行为进行解释的. 在本文第3.2.2节介绍的基于network dissection框架[58-61]的可解释性算法也是一种概念级特征的解释性算法.

 4.2.1    LIME算法

LIME算法[42]使用复杂性低的可解释模型来对深度模型的局部映射关系进行近似, 进而使得我们可以理解深度模型的局部决策行为. 其次, 该算法是一个模型无关的算法, 意味着无论模型多复杂, 如SVM或神经网络, 该解释器都可以工作. LIME算法的具体步骤如下: 对于一个输入图像 x  和分类网络 f  , 首先对 x  进行超像素分割形成 d  个图像块区域; 然后对这 d  个超像素区域进行随机采样, 生成 x  局部邻域内的 n 个样本 {zi}i=1,…,n  , 其中 zi∈{0,1}d  的每个维度代表着生成的样本是否包含对应的超像素块区域; 将生成的样本输入到模型  f 中等到 f(zi)  , 将 f(zi) 作为监督信息训练一个可解释模型 g(zi)  ; 最后将那些拥有较大权重系数的超像素区域进行融合生成测试图像的一个解释性区域. LIME算法的关键是保证在测试样本的局部区域内解释器和原始模型的行为一致, 其次要保证解释器拥有良好的可理解性, 因此算法优化目标如下:

 (15)

其中, πx  用来衡量样本 zi 和 x  之间的紧邻程度, Ω(g) 是一个衡量解释器 g  的复杂性的度量, 例如: 对于决策树 Ω(g)  可以是树的深度, 而对于线性模型 Ω(g)  可以是非零权重的数量. LIME算法是一种简单易操作的算法, 然而由于算法本身存在很多不确定因素, 如采样的随机性、采样样本与测试样本近似程度的衡量等[75], 这些不确定性在一定程度上影响解释模型的效果, 其次局部近似也很难保证解释模型和深度模型在行为上完全一致. 为了改进LIME算法的缺陷提升解释的准确性, 作者在后续工作中提出了基于if-then规则的Anchors算法[76]来描述模型的局部行为, 使得用户可以通过充分条件来推测模型的行为.

 4.2.2    基于概念激活向量的可解释性算法

基于概念激活向量的可解释性算法[43-45]核心思想是通过度量一个概念对网络输出的重要程度来解释模型的预测结果. 该类解释性算法需要构建一个概念集合以及与每个概念相关的正负样本集合, 同时需要学习每个概念对应的概念激活向量, 然后计算深度模型的输出在对应概念激活向量上的方向梯度, 通过方向梯度的大小来反映该概念对测试样本预测输出的相关性.

Kim等人[43]提出概念激活向量的解释性算法, 首先需要定义一个感兴趣的概念集合 C (例如, 条纹), 同时构建概念相关的正样本集 PC (例如, 条纹相关的图像)和负样本集 N (例如, 随机的图像集合); 然后针对特定的网络中间层 l , 获得正负样本集的隐层表示 {fl(x):x∈PC} 和 {fl(x):x∈N} , 之后训练一个线性二分类器来区分 {fl(x):x∈PC}  和 {fl(x):x∈N}  , 该分类器的法向量即为此概念的概念激活向量 

  . 针对测试样本 x  (例如, 斑马图像), 假设网络 l  层到输出层的函数为 hl , 则概念 C (条纹)对测试样本预测的重要程度可以通过下式来衡量:

 (16)  

其中, hl,k 代表网络在类别 k 上的输出值, SC,k,l(x) 可以反映概念 C 对测试样本预测的重要性. 为了衡量一个概念对整个类别的重要程度, Kim等人[43]提出了TCAV度量计算如公式(17):

(17)    

即, 对于所有标签为 k 的图像, 通过计算与概念 C 相关的图像占整个图像集的比例来反映概念和类别的相关性. 为了防止某些概念对测试类产生虚假的相关性, 文献[43]提出需要对 TCAVTCAV 进行统计假设检验. 该算法的关键是构建一个高质量的概念集并搜集与概念相关的数据集 PC , 这样才能保证学到有效的概念激活向量. 对于测试图像 x , 将那些 TCAV 分数较高的概念进行拼接, 可以得到模型在测试样本中所关注的决策区域.

为了避免人工设计概念集和构建数据集带来的误差, 文献[44, 45]提出利用超像素分割来提取概念集和构建对应的数据集. 由于每层神经元的感受野是不同的, 因此我们需要使用不用的超参数实施超像素分割从而形成不同层级的概念. 为了生成概念集合, 我们需要对分割生成的图像进行聚类, 然后对聚类后的图像集进行概念标注. 为了避免超像素分割生成无意义的概念和重复的概念样本, 在聚类前我们需要对数据集进行预处理剔除异常值和重复图像.

概念级特征可解释性算法能够将图像中的特征和语义概念对应起来, 并估计每个概念对于类别决策的重要性. 然而, 概念级特征可解释性算法过分依赖人为定义的概念集, 这在一定程度上会低估深度模型的表达能力.

4.3   图像级特征可解释性算法

图像级特征可解释性算法通过在输入空间中寻找与测试样本具有相似特征的样本, 从而对深度模型的决策行为进行解释. 网络反演[46, 47]和基于实例的可解释性算法[48, 49]均以图像级特征作为解释依据. 网络反演通过将神经元的激活特征图进行重构, 从而寻找具有相同激活效果的样本来对测试样本以及神经元的特征进行解释. 而基于实例的可解释性算法则是通过在训练集中寻找具有代表性的样本来对测试样本进行解释.

 4.3.1    网络反演

网络反演(network inversion)[46, 47]通过对神经元的激活模式进行重构, 以此说明每个神经元学习到的特征. 网络反演算法主要有基于正则化的算法[46]和基于反卷积网络的算法[47], 算法流程如图5所示.

图 5 两种网络反演的算法框架

基于正则化的网络反演算法[46]流程如下: 首先针对测试样本 x , 通过原始网络得到其在某层单个神经元或多个神经元的特征激活图 A(x) ; 然后, 将一个随机噪声 x0 作为初始化输入原始网络, 通过限制目标神经元的激活模式 A(x0) 和原始输入图像激活模式 A(x) 相同来重构神经元的特征, 其优化目标如公式(18):

(18)    

其中, L 损失可以是均方误差损失等, r(x) 的作用主要是为了保证生成图像的质量, 主要形式有 L2 正则化、全变分等各种形式的正则化.

基于反卷积的输入重构算法[47], 需要重新训练一个反卷积网络D, D的作用是将特征激活图中的信息进行上采样并在输入空间进行重构, 通过优化下式来训练网络D:

(19)  

   

其中, W是反卷积网络D的参数. 训练完成后, 将特定神经元的激活特征图 A(xi) 作为D的输入来对神经元的激活进行重构.

网络反演算法可以分析每层神经元提取的语义特征, 通过比较不同隐层特征图重构的语义图像可以发现底层特征图能够清晰地重构输入图像, 随着网络层数的升高特征图的重构结果越来越模糊, 但是仍然能够保留类别相关特征. 这说明神经网络在特征提取过程中逐渐会丢弃掉一些不重要的特征, 而保留那些重要的具有判别性的特征. 网络反演算法的缺陷在于针对不同层的激活特征需要训练不同的优化算法或者反卷积网络进行特征重构; 其次, 此类算法不能为每个神经元的特征提供重要性评估.

 4.3.2   基于实例的可解释性算法

基于实例的可解释性算法通过从训练样本中寻找具有代表性的样本来对测试样本进行解释性分析, 隐含的假设是测试样本和代表性样本有较好的相似性, 因此网络会给出相同的预测结果[19]. 如何寻找具有代表性的实例是此类算法的关键, 一些算法通过设计评价指标来评估训练集中每个样本对测试样本的影响力来找到代表样本.

原型(prototypes)通常被认为是样本空间中具有代表性的数据点, 然而Kim等人[48]认为仅凭原型并不能完全代表模型内部的复杂表示, 为了更好地理解模型的抽象表示能力, 我们还需要解释原型未捕获的内容. 文献[48]将那些原型不能很好代表的数据点称为批评(criticisms), 原型和批评都来自样本空间中的真实样例. Kim等人[48]提出基于MMD-critic的评判标准从训练集中选择具有代表性的原型和批评. 最大均值差异(MMD)是两个分布之间的差异的度量, 由两个分布在函数空间 FF 上差异的上确界给出. Kim等人[48]选择能够最小化数据分布和原型分布之间MMD距离的数据点作为原型代表, 而批评则对应着最大化MMD距离的样本点. 给定训练集中属于同类的n个样本 X={xi,i∈[n]} , [n] 代表整数集合 {1,2,…,n} , 从X中寻找一个子集 XS={xi,∀i∈S} 其中 S⊆[n] , 给定一个核函数 k(⋅,⋅)来度量样本间的相似性, Kim等人[48]根据X和 XS 之间的MMD距离定义了如下损失函数 Jb(S) :

 (20)    

通过最大化 Jb(S)从X中选择 m∗ 个原型, 通过优化公式(21):

  (21)    

优化公式(21)一般是困难的因为子集的搜索空间很大, 因此Kim等人[48]设计了一个贪婪选择算法来有效的寻找原型集合. 为了提取批评样本集合 XC , 即那些不能被原型很好代表的样本, Kim 等人[48]基于见证函数设计了另一个损失函数:

 (22)    

通过选择最大化公式(22)定义的损失函数来寻找 XC . 实验发现基于MMD-critic寻找到的原型样本一般对应着数据分布中高密度区域的样本点, 而批评样本对应着数据分布中远离分布中心的一些带有异常特征的样本点.

如果删除训练集中的一个训练实例, 模型的参数和预测结果会受到较大的影响, 那么我们称这样的实例为有影响力的实例[19]. 要验证一个实例是否具有影响力最直接办法是将实例从训练集中剔除然后重新训练模型, 然而这对深度模型来说是很不现实的, 文献[49]通过使用影响函数(influence functions)来衡量实例如何影响模型的参数和预测, 从而避免了这种耗时的训练过程. 删除训练集中的一个数据x对测试样本 xtest 的影响通过公式(23)计算:

 (23)  

其中, θ 是网络训练后的参数, H为损失函数L对网络参数 θ 的二阶导数. 公式(23)中逆矩阵的计算量是耗时的, 文献[49]提出通过共轭梯度法和随机估计法来解决公式(23)中的计算问题. Ribeiro 等人通过实验发现针对相同的测试样本, 相同性能的模型根据影响函数找到的具有影响力的实例可能不同; 同时与传统机器学习算法相比, 神经网络更关注于在概念上具有相似性的实例[49].

Yeh 等人[78] 基于再生核希尔伯特空间中的表示定理(representer theorem)对深度模型的预测进行解释, 他们证明了测试样本的预测值可以分解为训练点特征表示的线性组合, 并通过线性组合的权重从训练集中提取兴奋样本和抑制样本来解释模型对测试样本的决策. Yeh 等人的工作[78]将深度分类模型分为两部分: 输出层(logits)和特征表示层(logits层之前的所有层), 其中特征表示层的输出为 fi=Φ2(xi,Θ2) , 输出层的输出为 Φ(xi,Θ)=Θ1fi , 最终网络的输出为 

 . 根据表示定理, 测试样本的网络预测值可以分解为训练样本点特征表示 ft 的加权线性组合, 即, 权重 αi叫做 xi 对 xt 的表示值. 文献[78]中将正、负表示值对应的训练样本分别定义为兴奋样本和抑制样本. 与影响函数[49]算法相比, 该算法计算相对简单且通过提供抑制样本可以加深对模型决策的理解.

基于实例的解释性方法通常选择数据集中有代表性的实例, 可以帮助人们理解复杂的数据分布, 同时有助于我们改进和构建合适的机器学习模型.

4.4   其他局部可解释性算法

除上述基于特征粒度总结的局部可解释性算法外, 还有很多其他的可解释性算法, 如类激活图算法[79]、基于扰动的可解释性算法[38, 80-83]、局部近似模型[84]等. 类激活图算法[79]和基于扰动的可解释性算法[38, 80-83]通过从输入中定位出模型决策所依赖的特征区域来对模型的决策进行解释, 局部近似模型[84]是通过使用解释性较好的简单模型来局部近似深度模型的行为.

 4.4.1   类激活图算法

类激活图CAM (class activation mapping)算法[79]通过在输入图像中定位出与网络决策相关的区域来解释网络的决策机制. 2016年Zhou等人提出类激活图算法[79], 阐明了用于分类任务的卷积神经网络具有非凡的定位能力, 同时展示了网络高层神经元所关注的特征. CAM算法需要将卷积网络中的全连接层用全局平均池化层[85]代替, 该算法的框架如图6所示, 首先将最后一个卷积层的输出特征图进行上采样得到和输入图像大小相同的特征图 fk(x,y) , 最终通过计算 fk(x,y)的线性组合得到类激活图:

图 6 类激活图算法的框架和可视化效果[79]

 (24)    

其中, 

 为输出类别 c 所对应的权重. 从图6中可以看到CAM算法可以准确定位到对象所在的区域.

为了将CAM算法应用到一般的网络中, 文献[25]提出了Guided Grad-CAM算法将GBP算法和CAM算法相结合, 可以对每一层神经元在输入上获取的特征进行定位, 算法流程如图7所示. Guided Grad-CAM不再对网络有任何限制, 通过求得输出类得分对某一层所有特征图的梯度, 然后通过对梯度进行通道粒度上的平均, 可以得到该层特征图的线性组合系数, 最终的类激活图也是通过特征图的线性组合得到的, 不同之处是需要对组合后的结果使用ReLU函数进行激活提取正向信息:

图 7 Guided Grad-CAM算法框架和可视化效果

(25)  

其中, z为一个常数, 代表特征图中的像素点数目.

CAM的算法在弱标签物体定位方面和可解释性方面具有较大的潜力, 该算法可以在各种流行的架构上被广泛应用. 由于CAM算法在计算过程中使用了梯度信息, 在第4.1.1节中我们总结到梯度具有扩散和饱和的现象, 因此梯度的这些缺陷会使得CAM算法对特征的重要性产生错误的估计, 从而导致获得错误的解释性结果. 其次, CAM算法是易受攻击的, Subramanya等人[86]设计了对Grad-CAM解释性结果的攻击算法, 他们使用特定的攻击策略对测试图像进行扰动, 不仅能够愚弄模型的输出结果, 同时可以操控扰动后图像的解释结果偏离扰动区域.

在CAM算法的框架基础上后续还有许多改进的算法, 诸如Grad-CAM++算法[87]、SmoothGrad-CAM++[70]、RISE算法[88]、SS-CAM算法[89]、Score-CAM算法[90]等. Grad-CAM++算法[87]拥有更优异的定位能力, 该算法可以定位出图像中同一类别的所有对象区域, 从而为深度模型的预测提供可靠的解释性结果. 在第4.1.1节中我们提到SmoothGrad技术可以降低梯度中的噪声[63], 因此SS-CAM算法[89]将SmoothGrad技术应用到CAM算法中来解决梯度存在的噪声问题. 为了彻底解决CAM算法中的梯度缺陷问题, Score-CAM算法[90]抛弃了通过梯度来估计特征图重要性的做法, 它利用激活特征图生成掩码对测试样本进行扰动, 通过评估网络输出相对扰动的变化程度来估计每个特征图的重要性. RISE[88]算法是模型无关的算法可以为任何黑箱算法进行解释, 该算法通过蒙托卡诺采样生成多个掩码对测试样本进行扰动, 将扰动后的样本输入网络中来估计掩码的重要性, 最后通过掩码的线性组合生成测试样本的解释性区域. 总的来说, 基于CAM的可解释性算法计算简单而且能够有效地反映网络在输入中关注的特征.

 4.4.2    基于扰动的特征重要性分析

基于扰动的特征重要性分析的可解释性算法[38, 80-83]主要思想是对输入图像 x 进行多次扰动, 通过对比扰动前后的图像在网络输出上的差异来判定被扰动特征对网络输出的重要程度, 扰动的方式主要分为遮挡[38, 80]、擦除[80]、掩码[88, 91]等方式. 我们可以将基于扰动的算法统一到泰勒展开的范式下, 将扰动后的图像视为 x0 , 那么神经元或分类器输出 f 的变化可以用公式(26)进行估计:

(26)  

与基于反向传播算法相比, 基于扰动的算法是模型无关的算法, 它们不需要访问模型内部的参数.

遮挡是最为常见的一种扰动方式, Zeiler等人[38]使用一个灰色的方块对图像进行滑动式的遮挡, 将连续遮挡产生的图像输入网络中, 将分类器输出的类别概率作为像素空间位置的函数进行可视化, 通过这种方式可以定位出原始图像中对输出类别有较大影响的像素点集合. 如图8所示, 原始图像被分类器正确分类为博美犬, 图8(b)展示了对原始图像在不同位置进行遮挡后正确类别输出的概率图, 可以发现在红色区域对图像进行遮挡时正确类别的输出概率变化不大, 当对博美犬所在区域进行遮挡时尤其是面部进行遮挡时正确类别概率会急剧下降.

图 8 (a)对于给定的测试样本, 使用灰色方块遮挡图像的不同区域,(b)将扰动后图像输入网络得到的正确类别概率

  Zhou等人的工作[80]中采用了像素删除和遮挡的策略研究深度模型的对象检测能力. 给定一个被网络正确分类的图像, 文献[80]中采用简化图像(simplifying images)的策略, 迭代删除图像中的像素区域尽可能少地保留视觉信息, 同时保证仍然对正确类别有较高的预测分数, 将最终得到的简化图像命名为最小图像表示, 它突出显示导致高分类输出的特征. 如图9所示, 在分类器判别为卧室的情况下, 最小图像表示通常包含床的区域. 同样的, Zhou等人[80]采用了类似[38]中的遮挡策略, 可视化出了一个神经元所对应的真实感受野区域, 发现随着层数的增加神经元的感受野逐渐扩大, 但是真实有效的感受野比理论的感受野范围小很多.

图 9 测试样本及其对应的简化图像表示

 文献[81, 82]中将扰动和贝叶斯概率估计相结合来评价扰动特征对输出的影响, 从而得到对输出有重要贡献的图像区域. 基于扰动的解释性算法一般都是模型无关的, 它们可以直接估计特征的边际效应, 但是随着扰动和测试的特征数量的增加, 它们的计算效率往往会非常慢.

 4.4.3    局部近似模型

局部近似的可解释性模型主要思想是在局部范围内, 对深度模型的行为使用简单的解释性好的模型进行近似, LIME算法和OpenBox算法[84]是该类算法的代表. OpenBox算法主要针对以分段线性函数(如MaxOut [92]、ReLU 以及 ReLU 的一些变体[93-95])作为激活函数的神经网络, 该算法可以将这类神经网络等价为一系列的分段线性函数.

以ReLU作为激活函数的神经网络是分段线性的网络(PLNN)[96], 因此OpenBox算法[84]的主要思想就是将神经网络所拟合的函数进行分段表示. 对于输入到网络的单个样本, 将所有神经元的激活状态用0和1进行表示, 可以得到关于网络所有神经元是否激活的0、1序列, 该序列称为输入样本的激活配置. 根据样本的激活配置可以将所有的样本进行划分, 将具有相同激活配置的输入样本作为一个集合P, 集合P的边界是一个凸多面体. 因此, 属于同一集合P的所有样本具有相同的激活配置和线性映射函数. 实际上, PLNN网络对输入空间进行区域划分并在每个区域内拟合数据和标签之间的关系, 因此部分工作[97]将线性区域的数目作为衡量一个网络容量和表达能力的指标. OpenBox算法[84]是对分段线性网络准确一致的解释, 通过提取每个区域上线性映射函数的梯度以及区域边界的特征可以为深度模型的决策提供依据. 该算法具有一定的局限性, 首先只能针对PLNN网络, 其次一个网络的激活配置理论上有很多种组合这会带来计算时间上的消耗.

局部近似模型通过使用解释性好的简单模型来对深度模型的行为进行局部近似, 然而这类算法无法窥探模型内部的知识表达, 其次如何保证近似模型和原始模型在决策时行为的一致性也是值得我们思考和研究的.

5 可解释性算法性能评估及总结

5.1   可解释性算法的性能评估

目前关于深度模型的解释性算法越来越多, 不同的解释性算法在同一模型上的表现也不尽相同, 因此需要评价指标来衡量解释性算法的好坏. 评估解释性算法的质量具有一定的挑战性, 因为我们不清楚哪些特征对模型来说是重要的, 导致我们无法提供相关的监督信息来对解释性算法进行统一的评估. 因此, 一些性能评估算法选择在不同的角度下对解释性算法进行比较, 常见的评价指标如: 敏感性[65]、忠实性/准确性[21, 98]、一致性/鲁棒性/稳定性[21]等.

● 可解释性算法的敏感性[65]关注解释性算法是否对模型的参数以及类别标签敏感. 与模型相关的解释性算法需要访问模型参数, 那么我们应该期望这些解释性算法在不同网络参数下的解释结果应该有差异. 同样的, 一般来说解释性算法依赖于数据标签, 那么数据标签的变化也应该会导致不同的解释性结果.

Adebayo等人[65]提供了模型参数随机化试验和数据标签随机化试验对解释性算法的敏感性进行分析, 同时利用一些相似性指标来衡量不同实验条件下解释结果的相似性, 如Spearman相关系数、结构相似性指数(SSIM)等. 文献[65]中的实验发现, 导向反向传播算法[64]和导向Grad-CAM算法[25]对网络参数和数据标签不敏感.

● 可解释性算法的忠实性/准确性[21, 98]关注的是可解释性算法检测到的模型决策特征, 对当前任务来说, 是否是模型真正依赖的特征, 该评价指标主要是基于扰动的思想来实施的. 部分解释性算法会生成和输入图像大小一致的热力图, 热力图中的数值大小反映着该像素特征的重要程度. 我们将热力图中的值从高到低排列, 按照排序依次从原始图像的对应位置移除相关像素, 并将扰动后的图像 x′ 输入网络中计算当前图像的预测结果 f(x′)  .

一般情况下, 会得到一条随着移除像素点的数目的增加而减小的 f(x′) 曲线. 通过计算曲线和坐标轴围成的区域的面积(AUC)可以比较各种解释性算法的质量. 较低的AUC分数表明预测输出函数值 f 急剧下降, 说明解释性算法所发现的特征确实是被模型认定为与任务相关的特征. 然而, 这不是一个理想的指标, 因为使用黑色像素替换图像像素会导致在图像中出现伪像, 这也可能导致模型输出的变化.

● 可解释性算法的稳定性/一致性[21, 99]要求输入相似的样本具有相似的解释结果. 对于输入图像 x 附近领域内的图像 x′且模型对它们有相同的预测结果, 那么一个好的解释性算法生成的解释性结果 R(x) 和 R(x′)应该也是相似的. 因此, 定义如下的度量:

 (27)    

这个指标衡量输入相似的样本在解释性输出结果上的差异程度, 如果解释性输出差异较大那么解释性算法的一致性(鲁棒性/稳定性)较差, 则可设计攻击算法对输入图像进行微小扰动从而生成矛盾的解释结果[72], 这会使得用户怀疑解释性算法的可靠性.

相较于可解释性算法来说, 当前对解释性算法的性能评估研究较少, 而且部分评价指标也存在一定的缺陷, 如忠实性的评价指标需要扰动输入图像, 删除像素后的样本和原始样本的分布是不一致的, 这会导致忠实性的评估存在一定的误差. 评估解释性算法的解释质量是非常必要的, 只有这样我们才能有针对性地对解释性算法以及深度模型进行改进. 因此, 设计合理的解释性算法评价指标仍是当前的一个挑战问题.

5.2   可解释性算法总结

近年来深度学习的可解释性研究越来越多, 本文从全局和局部的视角下对图像分类的可解释性算法进行梳理, 基于解释粒度对相关的可解释性算法进行了进一步的划分和总结. 在每一小结详细地介绍了相关算法的原理、机制以及他们的优缺点, 通过模型级可解释性算法我们可以获得模型的整体知识表达, 通过神经元级的可解释性研究可以告诉用户每个神经元对应的激活语义特征, 通过局部可解释性算法我们可以清楚地了解到模型在决策过程中所依赖的特征. 总体来说, 可解释性研究搭建了用户和模型之间的桥梁, 让用户深入了解模型内部的知识和逻辑同时提升了用户对模型的信赖. 其次, 可解释性算法也可以被应用到不同的实际问题中辅助解决当前任务, 如弱监督定位[25]、数据集偏见检测[24, 25]、小样本问题[100]等.

我们将本文所涉及的可解释性算法以及它们的性质总结在表3中, 主要在全局/局部、解释粒度以及模型相关/无关的视角下对所有算法进行划分, 并使用第5.1节中介绍的评价指标对不同的解释性算法进行比较. 其中敏感性反映的是解释模型是否对网络参数和数据标签敏感; 忠实性/准确性主要反映算法定位到的关键特征是否是模型所依赖的特征; 稳定性/一致性体现的是解释模型在相似输入上是否具有相似的解释结果, 稳定性差的可解释性算法容易受到攻击从而导致解释性算方法失效. 总的来说, 深度模型的可解释研究目前处于初级阶段, 该方向仍有许多科学问题需要我们深入探讨和研究.

表 3 可解释性算法及其性质总结

6 挑战与展望

虽然本文仅对图像分类任务的可解释性研究算法进行了梳理, 但是不同领域的可解释性研究具有一定的相似性, 如多数可解释性算法都是从深度模型本身、神经元以及模型决策等方面对模型的行为进行理解, 在解释性算法的设计上可以通过重要性分析、可视化分析、注意力机制等来对深度模型进行剖析[101-105].

目前可解释性研究已经有相当多的研究基础, 然而该领域还是存在很多的问题和挑战, 其中如何设计一个忠实于模型的、准确可靠的可解释性算法, 以及如何设计一个合理的可解释性算法评价指标是当前面临的两个挑战. 其次, 可解释性算法除了可以对深度模型进行解释外, 它也可以作为辅助工具对模型进行测试和调试, 这说明可解释性算法有巨大的潜在价值需要我们深入挖掘. 此外, 理论基础研究的缺乏也导致深度模型的解释性、泛化性等问题, 因此深度模型的理论基础研究也是非常必要的. 基于目前对深度学习模型的认识和理解, 本文认为将来深度学习的可解释性研究可以从以下几个方面入手.

(1) 深度模型的可解释性算法研究: 可解释性研究的难点在于深度模型的参数空间庞大, 其次模型的特征空间存在组合爆炸和语义纠缠的现象. 因此在设计解释性算法的时候, 既要关注模型的整体框架, 又要降低特征空间的维度同时需要对语义特征进行解纠缠. 一个可信赖的可解释性算法要忠实于模型本身, 即算法的解释结果要和深度模型的真实行为保持一致, 否则解释结果是没有意义的; 其次, 一个可靠的解释性算法应该具有稳定性, 当前的部分解释性算法是易受攻击的, 这会导致解释性算法在相似的输入样本上具有不同的解释结果. 此外, 当前的可解释性研究大多停留在感知的层面上, 将深度模型的特征表示空间映射到与人类感知相吻合的语义空间来进行解释, 这是一种相对较弱的解释结果. 如何利用外部知识将深度模型的逻辑推理过程完全透明化, 甚至利用知识指导深度模型的推理过程使得建模过程具备解释性是将来的一个研究方向. 深度学习是一种统计上的关联学习, 将深度模型和因果学习相结合也是研究深度学习可解释性的一种思路, 可以通过因果学习来挖掘数据中的本质模式从而提升模型的解释性.

(2) 可解释性算法的评估指标研究: 目前可解释性算法的性能评估研究比较缺乏, 主要是因为我们对深度模型的认知存在局限性. 由于深度模型过于复杂, 我们不清楚模型从数据中提取了哪些特征, 因此评价指标的设计缺乏监督信息; 其次, 许多评价指标的设计引入了强烈的偏见, 人类倾向于选择接近自己期望的解释方法, 代价是惩罚那些可能反映模型真实行为的算法; 另外, 现在的评价指标很难将模型的错误和解释性算法的错误区分开来, 如一致性评价指标, 我们知道神经网络对微小的形变(连续平移、缩放、不同视角、对抗噪声等)不具有不变性[106], 这和我们希望解释性算法的解释结果具有一致性是有矛盾的. 因此, 我们认为在开发评估指标时, 要充分考虑模型、数据、解释性算法以及人类认知等多方面的因素; 评估指标的设计要客观合理, 能够反映解释性算法的忠实性、一致性以及不同解释性算法的差异性.

(3) 利用解释性算法探索和改进深度模型存在的问题: 可解释性算法的直接应用就是对深度模型进行解释, 当前可解释性算法已经应用到推荐系统、医疗、金融等领域. 可解释性算法也可以用来对网络预测错误的样本进行解释和纠正[78]以及监督网络训练是否收敛等[38]. 除此之外, 我们可以使用可解释性算法对深度模型进行测试和调试. 一方面解释性算法可以作为探针来测试模型内部存在的问题, 如公平性问题、数据偏见[24, 25]、虚假相关性[24, 75]等. 另一方面, 当使用解释性算法诊断出深度模型存在的问题后, 我们可以采取相应的措施对模型进行改进. 如, Li 等人[24]利用CAM算法指导模型的训练过程, 最终不仅可以实现较高的分类性能以及弱监督下的图像分割, 而且利用解释性引导网络关注对象区域从而避免模型依赖虚假相关性特征. 此外, 利用可解释性算法来改进模型甚至建立具有自解释性的深度模型是将来的一个研究方向[98, 107].

(4) 深度模型的理论基础研究: 虽然我们可以将深度模型中每个神经元的激活情况和他们所感兴趣的特征都展示出来, 但是要真正理解深度模型我们还需要在理论方面展开研究. 一个单隐含层的神经网络可以以任意精度逼近任意连续函数[108, 109], 相比于浅层网络, 深层网络具有更强的表达能力和优异的性能[110]. 深度模型为什么具有良好的泛化性是值得我们进一步研究的, 目前部分工作也提出了他们的观点. Choromanska等人的工作[111]和Wu等人[112]的工作证明了随着网络规模的增大, 神经网络的损失函数具有良好泛化性的极小值点的数目要比泛化性差的极小值点要多很多, 从而导致随机初始化训练的网络总能收敛到好的极小值点. 部分文献[113-117]表明在一定假设条件下深度模型的局部极小值接近于全局最小值, 文献[118-120]实验发现并证明深度模型的泛化能力和优化算法找到的最终收敛点的锐度有关, 平滑的局部极小值点有助于模型获得好的泛化性. 神经网络的训练过程可以认为是一个离散的动力系统, 因此可以通过微分方程来理解神经网络, 同时也可以利用神经网络来求解微分方程问题[121-123]. Xu等人[124, 125]从频域的视角下解释了神经网络的训练过程, 发现神经网络在训练的过程中倾向于先拟合数据和标签间的低频映射关系, 随着训练的进行网络会逐渐拟合映射中的高频分量. 以ReLU作为激活函数的神经网络是分段线性的, 每个神经元的作用是在对输入空间进行分割, 因此可以将输入空间所划分的区域的数目作为神经网络复杂度和容量的度量[84, 97]. 一些工作证明了具有独立同分布参数的无限宽深度网络是一个高斯过程, 而且高斯过程是深度模型性能的极限[126-128]. 文献[129-132]从流形的视角来理解深度生成学习, 并将最优传输理论应用到生成模型中来解决生成模型存在的模式坍塌等问题. 总的来说, 理论基础还是深度学习的一个巨大软肋, 这也导致模型的解释性差等其他问题.

7 结束语

深度模型的可解释性研究是必要的也是非常有意义的, 每年有很多优秀的相关工作在计算机领域的顶级会议和期刊上发表. 本文从全局解释性算法和局部解释性算法的角度对目前的可解释性算法进行了归类和总结, 并介绍了可解释性算法的评价指标及当前研究的挑战与未来的研究方向. 总的来说, 深度学习的可解释性研究才刚刚起步, 一方面我们仍需要进一步研究深度模型的可解释性算法和基础理论, 另一方面可解释性算法在其他领域也具有巨大的潜在价值需要我们深入挖掘.

本文仅用于学习交流,如有侵权,请联系删除 !!

加 V  “人工智能技术与咨询”  了解更多资讯!!

猜你喜欢

转载自blog.csdn.net/renhongxia1/article/details/129788826