【新智元导读】本文是主要关于一种基于置信分数的视觉可解释性方法。本文的亮点在于:在CAM系列方法的基础上,首次提出了一种新的gradient-free的权重表达方式。
论文:
Score-CAM:Score-Weighted Visual Explanations for Convolutional Neural Networks
背景介绍
1、视觉可解释性
神经网络可解释性是指对于神经网络所做出的决策,进行合理的解释。
这里解释可以是从数学理论层面进行的先验解释,比如对于激活函数的差异分析、模型的泛化能力分析,也可以是对于网络预测结果的后验解释,比如我们训练好的模型将一张图片分类为"猫",我们希望知道网络是通过什么因素或特征将它分类为"猫"这个类别的。
本文关注的是后验解释,即解释已有模型的决策。而对于卷积神经网络,目前最常见的是通过可视化的方式来解释模型的决策(下文中可解释性与可视化将不再区分)。
2.主流的视觉可解释性方法
2.1 基于梯度的可解释性
基于梯度的可视化是通过将目标类别上的决策分数往原始图像上求取梯度得到,可视化结果如上图(左)。梯度作为一种局部信息,反映了局部位置的扰动对于决策分数的影响。我们常见的Saliency Map , 即通过该种方式得到。
除此之外,近几年还出现多种基于梯度的改进方法,其中Smooth Gradient 与Integrated Gradient 最为著名,它们分别分析了原始梯度可能存在的一些问题,然后通过平滑和路径积分的方式,得到了更为清晰的可视化结果。
值得一提的是,Guided-Backpropagation目前在可解释性方面存在较大争议,它是通过对于回传梯度进行一定过滤,从而得到更为干净和聚焦的可视化结果,但在Sanity Check 中,作者发现,该方法与模型参数无关,即初始化模型参数后,仍然能得到相似结果。
2.2 基于掩码的可解释性
梯度信息反映了局部变化对于结果的影响,基于掩码的可视化则采用一种全局的方式来定位图像中对于决策更重要的区域。
此类方法的做法符合人类直觉,通过将图像上部分的移除或者保留,来直接衡量该区域对于网络决策分数的影响。
比如在一张"猫"的图片中,背景信息的移除通常不会降低"猫"类别上的置信度,而一些关键区域,如"猫"的耳朵,在移除后则可能造成置信度的下降。但是这类方法存在一个明显的劣势,即如何生成掩码(mask)。
目前主要有两种思路,一种是通过采样的方式(比如随机采样或蒙特卡洛采样 )生成多个掩码,然后来计算每一个掩码区域的重要性,这种方式往往需要生成大量掩码,计算量很大;
第二种是通过优化的方式来生成掩码,初始化一个随机掩码,通过优化损失函数来不断更新掩码,这种方法的缺点是需要在损失函数中增加额外的正则化项,来使得生成的掩码面积尽可能的小,同时还能尽可能多的影响决策分数,由于存在优化过程,即使对于同一张图,方法每一次生成的解释都是不完全一致的。
2.3 基于类激活地图的可解释性
类激活地图(CAM)是一种通过对中间层的特征图进行线性加权来定位图像中判别性的位置。2015年提出的CAM ,首先对最后一层卷积结果进行全局池化得到一维的向量,向量再输入其后的全连接层分类得到最终预测结果。
但是初代的CAM对于模型结构有特殊要求(全局池化层),并且需要通过重新训练模型才能得到全连接层上对应的权重,借此来表示每一张特征图的重要性。
为了解决CAM的不便性,随后的工作Grad-CAM 以及Grad-CAM++ 都采用了局部回传的梯度信息来近似代表每一张激活图或特征图的线性权重,使得CAM可以应用到大部分卷积神经网络中。
目前Grad-CAM也是最常见的可视化方式之一。
研究动机
作者在实验中发现,基于梯度的CAM方法(Grad-CAM、Grad-CAM++)生成的可视化结果在视觉上不够干净,即除了目标物体被标记以外,大量背景信息也被标记。
考虑到背景信息在训练过程中有可能作为上下文信息辅助模型决策(例如"草地"可能与"狗"存在一定相关性),为了验证背景区域的重要性,作者在原始图像(随机挑选的测试用例)中移除部分背景信息后发现,对于多数样本,在移除背景信息后,置信度不会有明显变化,因此作者认为,在Grad-CAM中被标记的背景区域是错误标记。
而由于CAM的本质是特征图的线性加权,作者在实验中进一步发现,这种现象来自于线性权重分布。
作者通过对特征图的可视化发现,在Grad-CAM中获得较高权重的特征图,在网络中的响应很低,而部分权重较低的特征图,则获得到了很高的置信度。
作者分析基于梯度的CAM中问题,可能来源于梯度本身,即梯度的饱和性(类似于Sigmoid函数,当特征强度超过一定程度,其梯度可能会变小),以及梯度本身的不稳定性(局部的梯度受噪声影响很大),甚至是梯度消失的影响。
总之,为了摆脱梯度带来的潜在影响,作者希望找到一种梯度以外的权重表示方式。
核心方法
本文提出的Score-CAM ,沿用了CAM的主要思路(特征图的线性加权),相比之前一系列CAM方法,主要的差别在于获取线性权重的方式。
初代CAM使用训练后全连接层上的模型权重,Grad-CAM和Grad-CAM++均采用对应特征图上的局部梯度(差别在于对于梯度的处理方式),而在Score-CAM中,它首次摆脱了对于梯度的依赖,使用模型对于特征图的全局置信分数来衡量线性权重。
作者在问题提出了置信度提升(CIC)的概念,具体操作如下,
即通过将特征图视为一种特殊的掩码(无需采样生成)上采样后,与原始图像点乘,使用模型对掩码后的图片的响应于模型对于基图片(baseline)的响应差值,来代表特征图的重要性。
其中,作者在代码中将baseline设置为全黑的图片。
Score-CAM主要包含两个阶段(如上图),阶段一中提取特征图,这也是所以CAM系列方法中都存在的一步。
阶段二通过对于特征图上采样,然后将其作为掩码信息,重新得到模型对于图片在目标类别上的响应值。
最后,通过将阶段一中的特征图,与阶段二中得到的响应值线性加权求和,得到最终可视化的结果。
可以看到Score-CAM相较于此前的方法,可视化的结果明显更为聚焦,背景中的噪声减少。
除了可视化比较外,作者也在定量指标上大幅超过其它方法,具体指标定义请参见论文。
个人讨论
神经网络的可解释性本身目前还是一个具有争议的方向,关于模型是否可以被解释还有待商榷。目前关于可解释性的研究处在百花齐放的阶段,对于可解释性的定义、评估都还没有统一标准。
本文的亮点主要在于,在CAM系列方法的基础上,首次提出了一种新的gradient-free的权重表达方式。值得一提的是,Ablation-CAM作为Score-CAM几乎同期的工作,直接通过对特征图的掩码操作,也得到一种不依赖于梯度的表达方式。
论文链接:
开源链接:
Score-CAM官方代码:https://github.com/haofanwang/Score-CAM
CAM系列方法开源库torch-cam:https://github.com/frgfm/torch-cam
常见可视化方法实现:https://github.com/utkuozbulak/pytorch-cnn-visualizations