1. Interpretability Beyond Feature Attribution: Quantitative Testing with Concept Activation Vectors (TCAV)
[TOC]
1.1. 前言
这是一篇使用概念向量对模型进行解释的方法,并且提供了度量的标准。
在普通的Saliency Maps解释中是为了探究输入中像素的改变会产生多少影响来确定像素的重要性。在这篇文章中使用了概念向量,将一个概念定义为一个向量,比如条纹的概念,就可以探究当输入在这个概念的方向上进行了改变,模型会产生什么样的变化,并定量评估了模型在这个概念方向上的敏感度。
1.2. Abstract
现行的分类器只能运行在低级别的特征上而不是高等级的概念上,为了解决这个问题,这片文章提出了一个Concept Activation Vectors(CAVs),提供一个人类可以理解的概念解释。并且使用方向导数来量化CAV在模型进行预测的过程中是否重要,比如模型在预测斑马的时候是否对条纹的概念敏感。
1.3. Introduction
使用输入数据中的一些样本来作为用户定义的高级概念,比如‘curly’就可以用一些发型和纹理的图像来定义。这些样本不一定受限于输入的特征和训练数据,也可以使用用户提供的一些数据,并且这种方法也是有效的。CAV可以简单的理解为概念样本集的values的方向向量。
获得过程: 在概念样本集和随机的反例上训练一个线性分类器,CAV即这个线性函数的正交向量。
Fig1: (a)一个用户定义的概集样本集和随机反例样本。(b)带标签的测试样本。(c)一个训练好的分类器,m是中间层的结果。(d)获得CAV的过程,两个样本集分界面的正交向量。(e)使用方向导数来测试模型对于概念的敏感度,实质上是看模型的分界面是否和CAV的相同,即用户提供一个自定义的概念,TCAV可以衡量这个概念对于预测的影响有多少。
1.4. Method
1.4.1. 获得CAV
数据集的选择: 在样本中选择可以表达概念的集合或者从别的地方选择一个独立的数据集。接着在概念样本集和反例之间训练一个线性分类器,并将其正交向量作为CAV。(如何保证两个数据集线性可分?)
1.4.2. 方向导数和概念敏感性
计算模型在CAV方向上的导数来确定模型的概念敏感度。(这篇文章没有什么数学公式,我就不贴了,有兴趣的可以直接看原文)。在CAV方向上的敏感测试是统计方向导数大于0的个数,非常简单粗暴了。
1.5. 结果
1.5.1. 检验CAV的有效性
使用从高级概念(CEO)中学到的CAV(Striped或者Necktie)进行排序,图上显示了前排序结果最好的三张图片。但是没说这些CAV是从哪些数据集中得到的。
在Empirical Deep Dream中展示了三个不同的概念向量得到的结果,第一个是针织质地,第二个是一个狗,一个是西伯利亚雪橇犬。(这种概念的显示比较好了)
1.5.2. 正式的实验
模型对于一个概念的敏感程度: 即在模型的预测中,这些概念起到了多少作用,如果作用大的话,可以理解为模型更多的关注于这个概念。
上表中每一个图是一个类别,每一个类别中有不同的概念,不同的颜色代表的网络中不同的层。数值越大影响程度越高。比如第二张Zebra斑马的图,条纹起到的作用就非常高。
接下来的实验证明了复杂的概念会在模型更高的层中表现的更好,简单的概念会在低层中学习到。同时与Saliency Maps进行比较。如果人为的为图像增加标签,那么Saliency Maps能不能解释模型更关注与增加的标签?
(这个实验图标错了)第一行应该是没有标签的,第二行的标签是全部正确的,第三行的标签30%的错误,第四层的标签完全错误。第二行中只有SmoothGrad表现的较好,其余三种其实并没有学习到模型真正关注的区域。