0
写在前面
由于目前的深度学习在可解释性方面还是有待提高,很多时候深度学习被看做是一个黑盒模型,他能告诉你这个图片是什么 ,但是不能解释为什么 它觉得这是某个类,这与人类识别物体的机制非常不一样。
因此,可解释的人工智能在过去几年里受到了越来越多的关注。然而,现有的方法大多基于梯度或中间特征,并没有直接参与分类器的决策过程。在本文中,作者提出了一个基于slot attention的分类器SCOUTER,用于可解释并且准确的分类。
与其他基于注意力的方法相比,SCOUTER有两个主要区别:(1)SCOUTER的解释涉及到每个类别的最终置信度,提供了更直观的解释;(2)所有类都有相应的肯定或否定解释,也就是模型不仅能够告诉我们“为什么这张图片是某个类”,还能够告诉我们“为什么这张图片不是某个类” 。作者为SCOUTER设计了一个新的损失函数,用来控制模型在肯定和否定解释之间切换的行为,以及解释区域的大小。
最后,实验结果表明,在中小型数据集上,SCOUTER能够在保持较好的准确性的同时,给出较好的可视化解释。
1
论文和代码地址
SCOUTER: Slot Attention-based Classifier for Explainable Image Recognition
论文:https://arxiv.org/abs/2009.06138
代码:https://github.com/wbw520/scouter
2
Motivation
了解深度学习模型如何进行预测具有重要意义,特别是在医学诊断等领域,采用黑箱模型存在潜在风险。因此,可解释的人工智能引起了广泛的关注。
在XAI(可解释的人工智能)中最流行的范式是属性解释,它涉及像素或区域对最终预测的贡献水平(也就是类似attention的可视化),因此,可以用它来回答“为什么图像x属于类别t”。解释通常是通过显示一个heat map,突出显示支持预测的区域。这样的可视化对于理解模型的行为有很大的帮助。
但是仅通过这些区域来做决策,就会出现另一个问题——这些区域如何对决策做出贡献?也就是说,属性解释强调了一些视觉成分,这些视觉成分对决策起到了正向的支持作用;但是同时,这些区域也可以作为一种反向的支持。
比如上图中红框的区域中的attention map,这些关注的局域就是一种反向支持的可解释(解释这张图片为什么不是“1”或者“2”)。然而,目前这些基于attention的方法不能区分正面还是负面的支持,因为解释层或者attention层之后的黑盒分类层对特征进行了非线性变换。
作者在本文中提出了一种新的XAI方法,即SCOUTER(基于slot的可配置和透明分类器)。假设对于每个类别,都存在一个支持集,,的元素用来帮助决策输入的图片是不是属于类别。SCOUTER的目的是寻找一个子集,它包含一个或多个来自的支持。
SCOUTER的prediction完全基于,,而不是像以前那样直接使用FC这类黑盒模型。这种透明性使SCOUTER找到正向()或负向()的支持,这样一来可视化可以作为正向或负向(属于或者不属于某个类)的解释。
基于这种可解释分类器的新范式,更小的支持区域能够更有利于每个支持的语义解释。比如说,当模型识别一张人脸的时候,发现眼睛、鼻子、嘴唇等的组合比直接发现一张脸提供更多的解释。
因此,作者在损失函数中引入了一个新的项来约束attention 区域的大小。这种对Attention面积的约束可能会影响分类性能,但通过多个支持的组合可以弥补缺失的线索,进而减小对模型性能的影响。
基于slot attention[1],作者提出了可解释槽注意(xSlot)模块。xSlot模块的输出直接作为每个类别的置信度,因此不再需要基于全连接层的分类器,这也就避免了全连接层这个黑盒模块带来的不可解释性。
3
方法
给定一个图像x,分类模型的目标是在类别集中找出它最可能出现的类别。分类的模型的通常流程是:首先图片通过一个Backbone来提取特征,然后使用FC层和softmax作为分类器得到每个类别的置信度。然而,FC分类器可以学习任意(非线性)变换,因此它是一个黑盒的模型 。
因此,作者用由xSlot注意模块组成的SCOUTER替换FC分类器(如上图所示),以此来对每个给定特征F,生成类别的置信度。包括主干在内的整个网络都使用SCOUTER损失函数进行训练,它提供了对解释区域大小的控制以及在正反解释之间的切换。
3.1. xSlot Attention
在原有的slot注意机制中,slot是基于特征的一个局部区域表示。带有L个slot的Slot Attention模块通常放在主干网络的上面,用来生成L个不同的输出特征。当有多个感兴趣的对象时,这个配置就会很方便。
SCOUTER的主要构建块是xSlot注意模块(如上图所示),它是为SCOUTER量身定制的slot注意模块的变体。xSlot注意模块的每个slot都与一个类别相关联,并提供输入图像属于该类别的解释。
对于给定的特征,xSlot注意模型会对每个slot 更新T次,代表第l个类的slot更新第t次之后的结果。每个类最开始的slot被初始化成一个随机权重:
和分别是高斯分布的均值和方差,是权重向量的的size。那么,对于所有的n个类,所有的slot就可以被表示成。
第t 1个slot使用和特征进行更新。首先,特征经过1 × 1卷积层以减少通道数量和ReLU非线性函数得到,然后的空间维度被打平到了d(d = hw)。由于打平之后,特征就失去了二维的空间信息,所以作者又加了一个位置编码,表示为:
然后作者使用两个多层感知机(MLPs) Q和K,每一个多层感知机都由三个FC层和中间的ReLU激活函数组成。Q和K对分别对slot和特征进行进一步的编码,这个设计是为了在自注意力机制的query和key的计算上提供更大的灵活性:
得到Q和K之后就可以进行attention操作了(这一步其实就是视觉特征和slot之间的attention操作,方法跟Self-Attention类似类似,具体是用点乘之后在用sigmoid归一化):
然后将Attention Map与特征进行相乘,得到增强之后的视觉特征:
新的slot 由和特征作为输入,使用GRU进行更新得到。
xSlot注意模块的输出是中类别l的所有元素的和,可以表示成:
其中是所有元素都是1的长度为的一个向量。(这里用了点乘,其实在数学就是把通道维度的元素全部加起来的意思 )
这里的其实就是原来FC输出的结果,但是SCOUTER整合了xSlot注意模块的输出。这一步使得SCOUTER相比于FC,但是它的可解释性大大提高。
3.2. SCOUTER Loss
通过将softmax应用于xSlot(F)并最小化交叉熵损失,模型就可以被训练了。然而,在某些情况下,会出现一种现象:根据图像的内容,模型更倾向于关注较广泛的区域(例如,slot其实就可以表示和原始图片中的哪些区域是相关的,所以一个slot可能覆盖图像的较大区域)。但是,约束单个slot的覆盖范围对于可解释性是有益的。(比如说,当模型识别一张人脸的时候,发现眼睛、鼻子、嘴唇等的组合比直接发现一张脸提供更多的解释。 )
因此,作者设计了SCOUTER损失函数来限制支持区域的面积,表示如下:
其中就是交叉熵,就是面积损失函数。面积损失函数计算方式为:
其实就可以吧Attention Map里面的值求和(这个和越小,就代表Attention的区域是更小的。至于这里为什么还是用点乘,其实跟上面的原理是一样的,两个点乘就是把一个二维的矩阵求和 )。
3.3. Switching Positive and Negative Explanation
上面中含有SCOUTER损失的模型只能提供正面的解释(这一点跟其他可以解释性的方法都一样),因为A(T)中的元素较大,说明预测是基于相应的特征进行的。
为了能够反映正向和反向的支持结果,作者在计算xSlot(F)的输出结果时,引入了一个超参数e:
这个超参数e使得xSlot注意模块能够学习寻找正向或反向的支持(意思就是说,e=1时slot是找正向支持某个类的可解释证据,e=-1时slot是找反向支持某个类的可解释证据 )。
对于e = 1, xSlot给出的所有元素都是非负的,因为和都是非负的,因此也是非负的。
对于e = -1,xSlot(F)越接近0,就代表与当前这个类与ground truth越接近;xSlot(F)越小时,就说明xSlot(F)能够明显找出不是ground truth的原因。
4
实验
4.1. Explainability
作者使用包含前100个类的ImageNet子集进行了可解释性实验,数值结果如上表所示。可以看到,SCOUTER可以在保持较小的区域大小的同时,在所有指标中获得良好的分数。这些结果表明,SCOUTER的可视化在面积大小和精度方面具有较好的优势,对噪声不敏感,并具有良好的可解释性。
上表展示了与Ground Truth解释区域的面积大小高度相似、相似、不相似的类。我们看到了一个明显的趋势:当类别间相似性降低时,SCOUTER 的面积减小,而SCOUTER -则为不同类别提供了更大的解释区域。
将SCOUTER 的解释与SS-CAM、IBA进行比较,发现SCOUTER 的解释具有更灵活的形状,更适合目标物体。
上图展示了,SCOUTER−也能给出很好的负向支持的解释性证据。
4.2. Classification Performance
从上图可以看出,随着类别数量的增加,FC分类器和SCOUTER的性能都有所下降。但是它们在类别数量方面显示出类似的趋势。
控制解释性区域的大小,可以看出SCOUTER 和SCOUTER-的面积大小都随着的增加而迅速下降。
上表总结了FC分类器、SCOUTER (λ = 10)和SCOUTER−(λ = 10)在ImageNet、context和CUB-200数据集上的分类性能。结果表明,SCOUTER可以推广到不同的领域,并且在所有数据集上与FC分类器具有相似的性能。
4.3. Case Study
上表为基于ACRIMA数据集的分类性能。我们可以看到SCOUTER 和SCOUTER−都比FC分类器有更好的性能。
上图青光眼诊断数据集阳性样本的解释。第一行:输入图像和现有方法的解释。下面一行:SCOUTER (第一和第二列)和SCOUTER−(第三和第四列)对正常(n)和青光眼(g)的解释,可以看出SCOUTER 和SCOUTER−的解释更加精准。
5
总结
在本文中,作者提出了一种新的可解释分类器,并提出了两种变体,即SCOUTER 和SCOUTER−,分别对分类过程给出正向或反向的解释。SCOUTER采用了slot注意模块的一种可解释变体,即xSlot注意。
另外,为了使得Attention的局域更小更精准更有可解释性,作者设计了面积损失函数来控制解释性区域的面积大小。实验结果表明,SCOUTER能够在保持良好分类性能的同时给出准确的解释。
参考文献
[1]. Francesco Locatello, Dirk Weissenborn, Thomas Un- terthiner, Aravindh Mahendran, Georg Heigold, Jakob Uszkoreit, Alexey Dosovitskiy, and Thomas Kipf. Objectcentric learning with slot attention. arXiv preprint arXiv:2006.15055, 2020.
作者简介
厦门大学人工智能系20级硕士
研究领域:FightingCV公众号运营者,研究方向为多模态内容理解,专注于解决视觉模态和语言模态相结合的任务,促进Vision-Language模型的实地应用。
知乎:努力努力再努力
公众号:FightingCV