[Towards Interpretable Deep Learning] Concept-based Models

Concept-based models文章合集,方便自己查阅。

最后更新于2023/12/26


一、概述

        近年来,深度学习技术发展迅速,在不同领域都取得了巨大的成功。但与此同时,因为深度学习模型的“黑盒属性”,我们无法明确地知道模型是如何做出决策的,即,模型是不可解释的。在这种情况下,即使模型在各种各样的数据集上预测的准确率可以达到很高,甚至媲美人类,但其不透明的决策机制导致当我们想要在现实中部署和使用深度学习模型时需要慎之又慎。尤其是在医疗、司法、金融等关乎人类生命财产安全、需要“严谨的证据”的领域,如果我们无法弄清楚决策是如何发生的,深度学习模型将完全无法使用。因此,模型的可解释性成为了在现实世界中应用深度学习时所不得不考虑的问题,可解释深度学习也逐渐进入人们的视野。

        当提及到可解释性的时候,你可能会在不同的文章中看到不同的表述方式,其中出现频率最高的单词大概有两个,分别是“explanability”以及“interpretability”;这两个单词都可以翻译为“可解释性”,但是二者的具体含义却有着微妙的差异:

  • “explanability”指的是一个模型或系统能够以简单和清晰的方式向用户或利益相关者解释其预测、决策或输出的能力。它侧重于提供易于理解和直观的解释,使人能够理解为何模型做出特定的预测或决策。这种解释通常是面向非专业人士的,目的是让普通用户能够理解模型的工作原理。
  • “interpretability”则更强调对模型内部机制和结构的理解。它涉及对模型参数、特征重要性、决策规则等更深层次的了解,通常是面向专业的数据科学家、研究人员或领域专家的,interpretability更强调深入理解模型背后的工作原理,而不仅仅是提供表面层次的解释。

        实际上,这种差异也恰恰对应了两种不同的模型可解释方法,在这里我们分别叫做post-hoc explanation以及inherent/instinct interpretability;顾名思义,事后(post-hoc)可解释是指我们先有了模型,然后再对模型所产生的结果进行认为解释,试图理解模型的决策过程;即,“揭开黑盒模型的神秘面纱”;当然,揭到什么程度?揭的是“面纱”还是“裤子”?(揭错了)这就不好说了;换种说法,这个过程相当于“先有果,再去寻因”——寻找一个原因,从而说服我们自己可以信任模型。在计算机视觉领域,已经有很多经典的post-hoc可解释方法被提了出来,比较耳熟能详的有CAM(GradCAM)、SHAP、LIME等;这些方法可以帮助我们找到模型最关注的图像区域与特征,从而判断决策过程是否合理以及我们是否可以信任模型做出的决策。

        举个分类场景的例子,以下是两张具有“护士”类别的图像(图源Grad-CAM):

        我们有两个不同的模型,它们都可以准确判断当前图像类别是“护士”。现在,我们使用Grad-CAM来探寻两个模型做出决策时关注的是原始图像中的哪些区域。我们可以看到,中间的模型的关注点在图片中人物的面部区域,这意味着此模型将“性别”作为判断一个人是否为“护士”的标准,这很显然是不正确的,即使在现实生活中护士群体中确实女性占多数,但是这是样本本身所带来的偏差,而模型应该尝试避免利用这种偏差去做分类判断。而右侧的模型是相对而言表现更优秀的模型,它把目光放在了人物的服饰以及工具上,显然这是更为合理的一种判断方法。由此我们可以得出结论,中间图对应的模型是带有“偏见”的模型,决策的可信度不高,而右图是一个相对而言更加值得信赖的模型。

        Post-hoc explanation不是我们本篇文章关注的重点,我会另外单独写一篇来介绍。而本篇文章聚焦于第二类可解释方法,即inherent/instinct interpretability,我们暂且称这种模型为interpretable model。与post-hoc模型的“先有果,再寻因”相反,interpretable model是“由因到果”,具有天然可信任、可理解的决策过程(当然,前提是你设计的模型确实是interpretable的)。如果在设计模型时就已经考虑了可解释性,那么决策过程与结果就显得“理所当然”,我们也就可以更加放心地使用模型了。因此,interpretable model因其天生的可解释性,将更容易在现实中得以应用;而建立interpretable model也成为了众多研究人员的目标,这也是本系列文章“Towards Interpretable Deep Learning”的含义。需要在这里说明一下,interpretable models并不是与black box对立的,即,interpretable model不能与“white box”划等号;事实上,当我们深入调研相关文章后会发现,大多数interpretable model并不是舍弃了black-box的网络,而是把目光聚焦于“符合逻辑”、“合乎常理”。

        因此,也许我们并不应该完全否认、放弃“black-box”,因为相信很多人和我的意见一致,那就是也许机器确实可以在数据中发现人类所不能理解的pattern,从而造就了它的高性能,也许真正带有偏见的是我们人类本身;然而,这并不影响我们强调interpretable model的重要性,因为至少在刚刚所提到的医疗、司法、金融等领域,由于这些领域是为“人”服务的,那么机器也应该做出人类可以理解的决策。关于这一个问题在这篇文章中并不想展开太多,后面有时间的话我会另写一篇博客讨论。

        言归正传,现在我们已经意识到了interpretable model的重要所在,而在此方法下的众多模型中,基于概念的模型(concept-based models)是研究人员关注较多、发展较为迅速的一类模型。

        所谓“concept”就是人类可以理解的概念。基于概念学习的模型通常会在网络的中间层建立一个bottleneck实现对concept的预测,进而通过较为简单的如线性分类器对学习到的概念进行整合从而得到最终预测结果:比如,将一张类别为“狗”的图片输入到网络中去,网络首先会学习并提取到一些与狗有关的概念,比如狗的耳朵、鼻子、脚等,进而通过对这些概念进行整合与分析,最终输出预测类别为“狗”。 

        如果把经典的端到端网络视为输入→输出的一个阶段的任务,那么基于概念学习的模型可以视为是两阶段的任务:输入→概念→输出,简而言之就是通过对中间层神经元的输出进行定义,限制为人类可理解的概念即concept,从而实现模型的可解释性。

        当然,不失严谨性,以上的表述是针对大部分concept-based模型而言的,至少我所调研的基于concept的模型都是类似的逻辑。

        接下来我就将具体介绍几种concept-based models,包括SENN、TCAV、CBMs、CEMs。


二、Concept-based models

1. SENN

        第一篇文章是发表在NeurIPS 2018的“Towards Robust Interpretability with Self-Explaining Neural Networks”。

        文章链接:https://arxiv.org/abs/1806.07538

        代码链接:https://github.com/raj-shah/senn

(1) 概述

        文章在Abstract部分指出,现有的机器学习可解释方法专注于posteriori explanations(即post-hoc),但是很少关注self-explaining的工作(即inherent/intrinsic interpretability),原因在于大多数方法首先倾向于保证模型性能,而在此基础上再提供事后解释。并且,对于已经训练好的模型来说,事后可解释可能是不得已的选择(毕竟当初设计模型的时候并没有对模型的可解释性加以设计/限制,只能“马后炮”,去“强行”对得到的结果解释)

        论文提出了对explanation的三个要求:

  • Explicitness(显性):指模型或系统中的explanation是否清晰明了。指explanation的明确程度,即explanation是直接而明确的、不模糊。在机器学习中,explicitness意味着我们能够清楚地解释模型的决策或预测基于哪些特征或数据。
  • Faithfulness(忠实性):描述了explanation是否忠实于模型的内部运作或决策机制。指explanation是否准确地反映了模型的行为,并且不会误导或歪曲模型的真实运作方式。这意味着explanation应该能够如实地反映模型所基于的数据和特征,并且不应该引入不准确的信息。
  • Stability(稳定性):指explanation是否随着数据或输入的微小变化而变化。稳定性意味着对于相似的输入或数据,模型的explanation应该是一致的或具有一定的稳定性。在可解释性中,稳定的解释对于确保解释的可靠性和一致性至关重要。

        在Introduction部分,作者指出可解释方法的发展趋势与挑战:

  • 高建模能力与可解释性之间的compromise:为了取得competitive performance,通常需要具有高建模能力的深度学习模型。然而,这些模型通常内部复杂,难以直接解释其决策原因
  • 事后解释方法:近期的研究侧重于生成基于模型性能的事后解释(优先级:性能>可解释性),并且这些解释是局部的(locally)、针对单个样本而言的。事后解释方法不能很好地理解模型的内部工作方式,比如梯度和反向传播;也有方法通过“预言者”(oracle)查询来estimate simpler models that capture the local input-output behavior. (Note: 所谓的oracle是一种理想化的模型,它可以完美地获得输入、输出之间的关系进而提供精准预测;例如,我们可以使用一个简单的线性分类器作为oracle,这个线性分类器可以在局部完美地拟合数据做到精准预测,进而我们可以通过这个线性分类器理解模型在局部的行为从而得到一定的局部可解释性)
  • 挑战:局部性(locality)的定义(例如,如何定义结构化数据的局部性)、可辨识性(identifiability)以及计算成本(computational cost)。
  • point-wise interpretation的限制:point-wise interpretation通常不对相邻输入(相邻:输入之间相似度较高)得到的解释进行比较,导致解释不稳定且常常相互矛盾。这暗示了解释的unstable,可能会因为微小变化产生完全不同的解释。

        贴一段原文:

“In this work, we build highly complex interpretable models bottom up, maintaining the desirable characte ristics of simple linear models in terms of features and coefficients, without limiting performance. For example, to ensure stability (and, therefore, interpretability), coefficients in our model vary slowly around each input, keeping it effectively a linear model, albeit locally. In other words, our model operates as a simple interpretable model locally (allowing for point-wise interpretation) but not globally (which would entail sacrificing capacity). We achieve this with a regularization scheme that ensures our model not only looks like a linear model, but (locally) behaves like one.”

        简而言之,SENN从简单的线性模型出发构建复杂模型,而复杂模型虽然在global看起来并不是线性模型,但是在local拥有线性模型的良好性质(可解释),并且不会限制模型性能;为了获得stable explanation,模型在面对不同输入时coefficient的变化很缓慢。

(2) 方法

(i) Generalized coefficients

        本方法是从linear model的推广。线性模型可以通过以下式子表示:

f(x)=\sum_{i}^{n}\theta _{i}x_{i}+\theta _{0}

        将input  x 前面的系数设置为与 x 有关的函数,并省略偏置项:

f(x)=\theta (x)^{T}\cdot x

        其中 \theta (x) 是从一个complex model class \Theta 中选择的,可以通过深度神经网络进行学习。但是为了保证可解释性,(至少在局部)我们应该保证距离相近的两个输入所对应的系数也应该是相近的。更准确地说,对于在 x_{0} 附近所有的 x 应该满足:

\triangledown _{x}f(x)\approx \theta (x_{0})

“In other words, the model acts locally, around each x_{0} , as a linear model with a vector of stable coefficients \theta (x_{0}) .”

(ii) Feature basis

        传统的可解释模型试图将每个变量(每个特征或者像素)视为explanation的基本单元,但是我们人类理解图像的时候很少将pixel作为基本单元,而是更加依赖于高级特征(如笔画)。作者将这种更加general的高级特征称为interpretable basis concepts。

"Formally, we consider functions h(x): \mathcal{X}\rightarrow\mathcal{Z}\subset \mathbb{R}^{k}, where \mathcal{Z} is some space of interpretable atoms."

        即,构造一个从原始像素空间 \mathcal{X} 到可解释的概念空间 \mathcal{Z} 的映射 h(x),其中 \mathcal{Z}的维度是 kk 的值不能太大以保证explanation易于理解。

“Alternatives for h(\cdot ) include: (i) subset aggregates of the input (e.g., with h(x)=Ax for a boolean mask matrix A), (ii) predefined, pre-grounded feature extractors designed with expert knowledge (e.g., filters for image processing), (iii) prototype based concepts, e.g. h_{i}(x)=\left \| x-z_{i} \right \| for some z_{i}\in \mathcal{X}, or learnt representations with specific constraints to ensure grounding. ”(解释一下,prototype-based concepts通常将训练集中对预测有帮助的、具有代表性的某些信息作为prototype,比如,一张鸟类图像的某个含有鸟嘴的patch,这些prototypes是trainable的;预测时将当前输入与模型学到的prototypes进行比较,作为最终的决策依据。后面会对涉及prototype based concepts的几篇文章做介绍)

        The generalized model is now:

f(x)=\theta(x)^{T}h(x)=\sum_{i=1}^{K}\theta(x)_{i}h(x)_{i}

        模型所解释的是通过映射 h 后的概念 h(x) 而不是原始的像素 x

(iii) Further generalization

        将求和替换为更加general的方式:g(z_{1,}...,z_{k}),其中 z_{i} 就是 \theta 与 h 的乘积 \theta(x)_{i}h(x)_{i},如果 g 代表一个求和函数,就对应于我们刚刚所介绍的线性模型。

        为了保持类似于线性模型的可解释性,函数 g 需要保证:(1)排列不变(2)每个变量h(x)_{i} 对输出的影响是独立的,避免乘法操作(3)保留 \theta(x)_{i} 的符号和相对大小,符号决定了每个变量对输出影响是积极还是消极的,相对大小决定了不同特征之间的重要性排名。

(iv) Self-explaining models

        将以上讨论的可解释模型公式化,以下截取自原论文:

        让我们具体解释一下以上三个definition:

        首先是Lipschitz连续

        对于函数 f:\mathbb{R}^{n}\rightarrow \mathbb{R}^{m} ,如果存在一个常数 L,使得对于所有的 x,y都有:

\left \| f(x)-f(y) \right \|\leqslant L\left \| x-y \right \|

        则称函数 f 是Lipschitz连续的。

  • Definition 3.1中只是把 x,y 对应地换成了 h(x),h(y)。回忆一下,h(\cdot ) 是从原始像素空间 \mathcal{X} 到可解释的概念空间 \mathcal{Z} 的映射,因此Definition 3.1的含义在于,可解释概念空间的任意两点都应该满足Lipschitz连续(globally)。Note:在现实场景中的数据常常分布在一个不规则的低维流形上,因此在全局都施加统一的bound过于严格了,由此引出Definition 3.2。
  • Definition 3.2在3.1的基础上,把 x 限制在 \delta -邻域内,从global condition变为local condition,使可解释概念空间至少在局部是Lipschitz连续的。Note:L 和 \delta 都是与 x_{0} 有关的,这代表“Lipschitz constant can vary throughout the space." 由此引出对本文方法的定义。
  • Definition 3.3:如果 f: \mathcal{X}\rightarrow \mathcal{Y} 满足以下条件,则称其是self-explaining prediction model
    • P1) g 是单调的、独立相加的;
    • P2) g 对 z_{i} 的导数非负;
    • P3) \theta is locally diffrence bounded by h。Note:如果 h 是恒等函数 h(x)=x,那么就是原始的Lipschitz连续定义。回顾,此处 h(\cdot ) 是从像素空间到可解释概念空间的映射;
    • 要保证 h(\cdot ) 确实把原始的像素空间映射到了可解释的空间,每一维 h_{i}(x) 都是可解释的;
    • k 很小,即可解释空间维度低。

        最后,对于输入 xf(x) 的explanation会是一个集合 \varepsilon _{f}(x)\equiv \left \{ h_{i}(x),\theta _{i}(x)\right \},其中的元素分别代表basis concepts以及对应的influence scores。

        当 \theta(可能也有 h)是通过神经网络实现时,就把这个网络称为自解释神经网络SENN。

        如上所述, \theta 相对于 h 应该具有稳定性,即,不会因为输入 x 发生微小的改变而导致其对应的explanation \varepsilon _{f}(x) 发生巨大变化。

        设  f 为关于 h(x) 的函数:

 f(x)=g(h(x))

        设 z=h(x),通过链式法则我们可以得到:

\triangledown _{x}f=\triangledown _{z}f\cdot J_{x}^{h}

        其中 J_{x}^{h} 是 h 关于 x 的Jacobian;

        给定点 x_{0},得到对应的可解释概念 h(x_{0})h(x_{0}) 对应的influence score \theta(x_{0}) 应该满足:

\theta (x_{0})\approx \triangledown _{z}f 

       也就是说,we want \theta(x_{0}) to behave as the derivative of f with respect to the concept vector  h(x)  around x_{0},即 f 对概念向量 h(x_{0}) 在 x_{0} 处的偏导;这个偏导的意义实际上就是模型 f 在概念 h(x_{0}) 处的影响因子。这样,就可以保证输入发生微小改变时其explanation也不会发生太大变化。

        实际上这样的操作很难执行,因此可以把\theta (x_{0})\approx \triangledown _{z}f代入\triangledown _{x}f=\triangledown _{z}f\cdot J_{x}^{h},可以得到以下的proxy condition:

\mathcal{L}_{\theta }(f(x)):=\left \| \triangledown _{x}f(x)-\theta (x)^{\mathrm{T}}\cdot J_{x}^{h} \right \|\approx 0

        \mathcal{L}_{\theta }(f(x))中的三项都可以通过计算得到,当使用可微架构 h 和 \theta 时,我们获得\mathcal{L}_{\theta }(f(x))的梯度,从而将其作为优化目标中的正则化项,加入此正则项可以权衡性能以及参数的局部稳定性(从而实现可解释性)。最终的损失函数为\mathcal{L}_{y}(f(x),y)+\lambda \mathcal{L}_\theta(f)

(v) Learning interpretable basis concepts

        Interpretable concepts应该满足以下要求:

  • Fidelity(保真度): 用concept表示x应保留有关的信息;
  • Diversity(多样性): 输入应可表示为几个不重叠的concepts;
  • Grounding(基础性): concepts应被人类所理解;

        贴一段原文:

        (1)用auto-encoder的方式训练映射 h,保证 h 学到的是有意义的representation;

        (2)通过稀疏性保证 h 的diversity;

        (3)通过查看每个concepts的最大激活case(和prototye的理念一样,从训练集中选择具有代表性的样本)来实现可视化。其中,可视化的方法有三种:

        (1) 最大激活某一个concept;

        (2) 类似的,最大激活某一个concept,同时要尽可能少地激活其它concepts;

        (3) 观察连接到每个concept的filter。

        本实验使用的是第一种方法,后两种方法留给其他人来做。

        我们来看一下整体的流程图:

        两个路径:一个路径基于auto-encoder的重建损失优化从原始像素空间到可解释概念空间的映射 h;另一个路径通过stability的限制对 \theta 进行正则化;最终将二者合二为一作为explanation,并做融合以预测最终的分类标签。

(3) 实验及结果

(i) 可解释性

        红色是消极影响, 蓝色是积极影响。(原文可能标错了)

        Cpt. 3貌似代表着diagonal strokes,尤其在7中比较明显,因此在“9”和“2”中Cpt. 3都对最终预测起着积极影响。

(ii) 可信度

(iii) 稳定性

        添加噪声对SENN的影响不大。

        Fig.5(A/B)的结果体现了稳定性和预测精度之间存在取舍,更严格的正则化会导致模型精度下降;从Fig.5C可看出SENN全面超越了LIME和SHAP。


2. TCAV

        第二篇文章是发表在ICML 2018的“Interpretability Beyond Feature Attribution: Quantitative Testing with Concept Activation Vectors (TCAV)”。

        文章链接:https://arxiv.org/abs/1711.11279

        代码链接:https://github.com/pytorch/captum/blob/master/tutorials/TCAV_Image.ipynb

(1) 概述

        在文章的Abstract部分,作者持有与第一篇文章类似的观点,即当前有很多图像分类器都是在low-level features上进行操作而不是high-level concepts,基于此,本文引入了概念激活向量(Concept Activation Vectors, CAV);CAV根据human-friendly concepts提供了神经网络高维内部状态;其关键思想在于,将神经网络中的high-dimensional internal state作为辅助而不是阻碍。

        作者将展示如何使用方向导数量化用户定义的概念对分类结果的重要程度。例如,“斑马”的预测对“条纹是否存在”有多敏感。作者描述了“how CAVs may be used to explore hypothese and generate insights for a standard image classification network as well as medical application.”

        作者在Introduction部分指出,机器学习领域的可解释性至关重要,一种很自然的可解释方法是根据模型所关注的特征来理解它的预测;例如,对于logistic regression classifiers,coefficient weights通常被解释为每个特征的重要性(这是理所当然的);而类似的,saliency maps基于first-order derivatives为图像中的每个像素赋予一定的重要性。并且,除了上面所说的大多数模型都关注low-level features而不是人类可以理解的high-lecel concepts的问题之外,模型的中间输出,比如neural activations更是难以理解的。如果用数学语言表示,我们可以将机器学习模型的可解释性即interpretation视为一个“解释函数”:g:E_{m}\rightarrow E_{h}。其中,E_{m} 表示由基向量 e_m 张成的向量空间(E_{m} 对应于数据,比如input features以及neural activations);而 E_{h}  则代表由基向量 e_h 张成的向量空间( E_{h}  对应于an unknown set of human-interpretable concepts)。

        函数 g 如果是linear的,则被称为linear interpretability。 g 并不需要十分完美,它也许无法解释输入域 E_{m} 的某些方面,而 E_{h} 也无法避免地难以涵盖所有可能的human-interpretable concepts

“Note the concepts of E_{h} are not constrained to input features or training data; they can be defined using new, user-provided data. ”

        以上这句话指 E_{h} 所包含的concepts并不一定只局限于模型的训练集所能提供的信息,完全可以通过用户自定义的额外的数据集加以定义;仍然以斑马的分类为例,如果我们想知道“条纹”这一concept对“斑马”分类的影响,可以自定义一个数据集,这个数据集中有正、负两个类别:第一个类别是有条纹的图像集合,另一个类别是没有条纹的图像集合。而对“条纹”的具体定义方式则通过本文所提出的概念激活向量CAV所提供,具体而言,训练一个简单的线性分类器以区分包含所定义的concepts的数据与random counterexamples,然后利用the vector orthogonal to the decision boundary即决策边界的法向量以得到CAV。(这一点也比较好理解,决策边界代表了最能将两个类别区分开的边界,而垂直于这个方向的向量就可以代表最能影响分类结果的因素 —— 可能存在其它因素,但有一个最重要的因素 —— 在斑马分类的问题中,根据user-provided dataset,最重要的因素就是“条纹”的存在/不存在。)

        TCAV的目标是:

  • Accessibility:缺乏机器学习专业知识的用户也可以使用;
  • Customization:适用于任何可以想出来的概念,比如“性别”,并且concepts不受限于模型的训练集;
  • Plug-in readiness:不需要重新训练或者修改,可以直接使用;
  • Global quantification:可以使用单个度量值解释所有类别或数据集,而不仅仅针对单个输入提供解释。

(2) 方法

  • 相关方法(Related works)

        在介绍具体方法之前,作者首先回顾了以往的可解释方法。为了达到可解释,领域内通常有两种做法:(i) inherently interpretable models; (ii) post-process the models in way that yields insights.也就是(i) 内在可解释与(ii) 事后可解释。前面介绍的第一篇文章SENN属于第一种,也就是内在的可解释方法;而本篇文章提出的TCAV实际上属于post-hoc方法。作者指出,对于已经拥有高性能模型了的用户而言,第一种方法的代价是十分高昂的,这在第一篇文章中也提到过,有时候post-hoc是一种“不得已而为之”的选择

        而当我们不得不选择post-hoc explanation的时候,面临的问题也绝非容易。其中一个十分关键的挑战是我们所给出的解释是否真的能客观地反映模型复杂的内部运行机制——也就是说,如何确保我们所给的post-hoc explanation一定是对的、一定是忠于原模型的,这个问题在inherent ( or instinct) explanation中就不存在。而解决此问题的方法之一就是使用产生的explanation作为输入,检验模型的输出是否与预想的一致,比如,基于扰动/敏感性分析(perturbation-based /sensitivity analysis-based)的可解释方法。这些方法使用数据点或者特征进行扰动,观察网络如何响应和变化。它们要么选择维持局部一致性(local consistency, i.e., explanation is true for a data point and its neighbors),要么维持全局一致性(global consistency, i.e., explanation is true for most data points in a class)。TCAV属于后者,它根据人类可理解的概念扰动数据点以产生全局解释。然而,局部一致性虽然保证了在数据点及其邻域之间可解释性的一致,但无法保证整个类别的一致性,即,对于属于相同类别的两个数据点,模型可能会生成相互矛盾的解释,这导致用户们对可解释方法的信任度下降;而TCAV是全局的解释,避免了不一致问题的出现。(似乎diss了所有locally explainable的方法?)

        Saliency map是一种十分受欢迎的local explanation方法,它会生成一个map以展现原始图像中每个像素的重要性程度(importance of each pixel)。然而saliency maps有一些缺陷:首先saliency map is given conditioned on only one picture,也就是局部可解释性;其次,用户无法自定义saliency map所关注的concepts,即,使用者无法干预(比如,saliency map无法验证“斑马的条纹”对分类的影响;反过来,我们也无法根据saliency map的brightness将模型关注的特征具体化);最后,一些研究也表明,随机网络和训练后的网络对于同样一张输入图像的saliency map可能是相似的,且普通的图像平移可能导致saliency map产生显著变化,也更容易受到adversial attacks的影响。以上现象都严重降低了此方法的可信度与可靠性。

  • 本文方法

        不失一般性,假设输入\boldsymbol{x}\in \mathbb{R}^{n},具有 m 个neurons的前馈层(feedforward layer) l,such that input inference and its layer l activations can be seen as a function f_{l}:\mathbb{R}^{n}\rightarrow \mathbb{R}^{m}

(i) User-defined Concepts as Sets of Examples

        方法的第一步就是对感兴趣concepts的定义,可以通过简单地选择表示这个概念的样本集合或者另找一个感兴趣conceptss被标注好的独立外部数据集。这样做的好处上面也提到过,就是概念的定义或获取并不局限于原有的特征、标签或训练集(概念和数据集都是自定义的);如此一来,不是机器学习领域专家的人就可以通过自己的领域知识去划分数据集以定义感兴趣的concepts(需要做的就只是划分数据集,区分哪些是含有concepts of interest的数据、哪些不含有)。

(ii) Concept Activation Vectors (CAVs)

        现在,我们已经有了定义好的感兴趣concepts,接下来就是如何寻找能够代表这些概念的vectors,也就是CAVs。

        为了寻找这样一个向量,我们关注layer l 的activations,也就是f_{l};易知activations分为两类,一类是examples in the concept set,另一类是random examples;接着寻找可以将两种activations区分开来的超平面(hyperplane),超平面的法线(normal)就被定义为是CAV(图d中的红色箭头)。

        现在让我们梳理一下整个流程:(i) 提供一个数据集,这个数据集可以是原有训练集的子集,也可以是外部独立数据集;数据集中有两类数据,一类是代表了感兴趣概念的样本作为正样本,另一类是随机的反例作为负样本;(ii) 训练一个二元线性分类器,用以区分两类数据在layer l 产生的activations;(iii) 训练得到这样一个线性分类器后,获得的超平面的法线\boldsymbol{v}_{C}^{l}\in \mathbb{R}^{m}(单位向量)就是我们要得到的CAVs。

(iii) Directional Derivatives and Conceptual Sensitivity

        作者首先提到了saliency maps计算输出类别对输入像素敏感度的方法:

“Saliency maps use the gradients of logit values with respect to individual input features like pixels, and compute \frac{\partial h_{k}(x)}{\partial \boldsymbol{x}_{a,b}}, where h_k(\boldsymbol{x}) is the logit for a data point \boldsymbol{x} for class k and \boldsymbol{x}_{a,b} is a pixel at position (a,b) in \boldsymbol{x}.”

        通过使用CAVs和方向导数,可以在网络的第 l 层沿着CAV方向改变输入,观察输出的响应来判断prediction对concepts的敏感度:

        就是计算 f_{l}(x)\boldsymbol{v}_{C}^{l} 方向的导数,作为敏感度。

Note:l 是可变的,也就是说我们可以评估网络的任何层对定义的concepts的响应。

(iv) Testing with CAVs (TCAV)

        在上一节最后提到的方向导数是针对具体的某个样本计算的,但是它可以用来评估全局敏感度,即整个数据集对概念的响应,具体的定义方法如下:

        TCAV score反映了对所有属于类别 k 的样本 \boldsymbol{x}\in \mathit{X}_k 在网络的第 l 层对概念 C 的响应程度。具体来说,就是对每一个样本产生的 S_{k,C,l} 进行统计,记录所有大于0的样本数量,除以总样本的数量 \left | \mathit{X}_k \right |,就得到了最终的TCAV score。Note:在这里只考虑了 S_{k,C,l} 的符号,而不关注大小。(可以探索)

(v) Statistical significance testing

        TCAV的一个缺陷是可能学习到毫无意义的CAV,因为就算用随机选择的一组图像也会产生一个CAV,使用这种随机概念的测试不太可能有意义。为了防止无意义的CAV/concept对测试产生虚假结果,提出以下统计显著性检验:

“Instead of training a CAV once, against asingle batch of random examples N, we perform multiple training runs, typically 500. A meaningful concept shouldlead to TCAV scores that behave consistently across training runs.”

        即,训练500次以获得CAV,并得到TCAV分数,一个有意义的CAV所对应的分数应在训练过程中表现一致(即分数的均值远离0.5)。由此,对TCAV分数进行了双边t检验,如果我们可以拒绝TCAV得分为0.5的原假设,我们就可以认为该CAV对应的概念与类预测相关。此外,还进行了Bonferroni校正。

Note:在统计学中,Bonferroni校正是一种抵消多重比较问题的方法。如果在原假设下观测数据的可能性较低,则统计假设检验倾向于拒绝原假设。如果测试了多个假设,观察罕见事件的机会就会增加,因此,错误地拒绝零假设(即犯第一类错误)的可能性也会增加。

(3) 实验及结果

(i) Sorting Images with CAVs

        使用CAV对图片排序,排序方式为图片的中间层输出 f_{l}(x) 与CAV即 \boldsymbol{v}_{C}^{l} 的相似度,度量方式使用cosine similarity。

        如上图所示(原图挂了,打个码试试...),展示了在条纹图片中与'CEO concept'最相关的图片(竖向条纹,可能是领带)以及最不相关的图片(横向条纹,可能是中年肥胖大叔穿的衣服)。具体来说就是把所有的条纹图像输入到网络中去,得到第 l 层的表示 f_{l}(x),并将其与CEO concept对应的CAV作余弦相似度。类似地,右边展示的是'Model Women concept'。

(ii) Empirical Deep Dream

        最大激活CAV所对应的图像:固定中间层输出为CAV,固定网络权重,反向推理出对应的输入;从左到右分别为“针织的纹理”、“柯基犬”和“西伯利亚哈士奇”。

(iii) Gaining Insights Using TCAV

       不同网络的不同层对不同concept的相关性,用以洞察模型的偏差。例如,ping-pong ball与eastasian的相关性很高。 

(iv) TCAV for where concepts are learned

        对于用于学习CAV的线性分类器而言,在浅层,简单概念比复杂概念的准确度更高,而复杂概念在深层网络表现比浅层网络更好。

        这证实了先前的发现,即较低的层作为较低级别的特征检测器(例如,边缘),而较高的层使用较低级别特征的这些组合来推断较高级别的特征(例如,类别)。

        更多结果请参考原论文。


3. CBM

        第三篇文章是发表在ICML 2020的“Concept Bottleneck Models”。

        文章链接:https://arxiv.org/abs/2007.04612

        代码链接:https://github.com/yewsiang/ConceptBottleneck

        这篇文章的作者之一Been Kim也是刚刚介绍的第二篇论文(TCAV)的第一作者。

(1) 概述

       本文旨在寻找一种可以使用high-level concepts实现人与模型之间交互的方法。试想一个问题:如果一个X-ray图片中并没有骨刺,那么模型还会不会把它预测为严重的关节炎?目前大部分的SOTA方法都是采用端到端的网络,即直接从原始输入(例如像素)到输出(例如关节炎严重程度)。

        一个很直觉的想法是,在最终预测之前,先去预测人类可以理解的concepts,然后使用这些concepts再去预测得到最终输出;所谓的concept bottleneck由此得名,即,位于网络中间的、用来预测概念的一层;并且,一旦我们有了瓶颈层,在测试时就可以观察该层的输出并对其预测的概念进行干预;具体来说,就是编辑、修改、纠正模型瓶颈层预测的概念值,并由此对最终的预测进行修正,大大提高了准确率。

        这个想法是比较自然的。设想一个医生在诊断的时候,我们把一个端到端的网络输出甩在他的脸上,告诉他这个患者有病,那医生肯定会问:模型为什么做出这样的判断?依据是什么?但很遗憾,对于现有的大部分模型而言,这个问题将无法回答,因为我们也不知道模型为什么会给出这样的决策,这也正是可解释性的重要所在。而一旦我们有了对中间层的限制,即,在最终决策之前加入concept bottleneck对一些概念进行预测,并将这些概念作为最终决策的判断依据,我们就知道是因为“片子中有骨刺等概念”,因此综合分析得出“患者有病”的结论,增加模型的可信度、提高决策的透明度。

        这个问题可以表述为:提供一系列数据点 (x,c,y),其中 c 与 y 分别是 x 对应的概念标签与最终标签(比如类别),在该数据集上训练一个CBM,CBM首先会预测 c ,进而通过 c 预测 y 。在test的时候,观察由input x 产生的概念预测 \hat{c} ,再由 \hat{c} 得到最终预测 \hat{y} 。

        该模型理论上可以应用于任何已有的网络结构,只需要调整网络中间某一层神经元的数量为定义的概念的数量,并对该层输出用损失函数加以约束,以鼓励该层神经元与所定义的概念相匹配。这种神经元与concepts的匹配将作为intervention阶段的必要条件,因为如果网络无法对concept作出完美预测,那么后续的intervention也就没有了意义,因为我们甚至不知道我们在修改、编辑的是什么概念。

        到这里我们其实还可以发现该模型比较明显的一个问题——标注问题。因为对于CBM来说,训练集不仅需要类别标签,还需要概念标签。当然,近几年随着多模态及大语言模型模型(比如CLIP、GPT)的发展与应用,这一问题在一定程度上得到了缓解,后面我会讲到。

       作者在Introduction的最后一段指出,本文所提出的CBM与end-to-end模型精度相当的同时也能达到较高的概念预测准确度。而相比之下,标注的black-box中间层神经元输出的线性组合无法高精度地预测人类所定义的概念——这也就意味着神经网络中间层的神经元学习的并不是我们人类可以理解的概念,因为我们无法通过线性组合预测我们想要的概念,那么像TCAV这样的方法在很多情况下也就不适用了。


(2) 方法

  • 相关方法(Related works)

        特征工程(Feature engineering)

        CBM与特征工程类似,因为二者都需要指定中间概念/特征,但是CBM是学习从原始输入到高级概念的映射,而特征工程是通过手写函数计算图像的低级特征。

        Concepts as auxiliary losses or features

        (i) Concepts as auxiliary losses。如多任务学习,这类方法将concepts视为辅助损失/目标,但是并不支持对概念的intervention。原因在于,多任务模型的预测方式为 c\leftarrow x\rightarrow y。在test的时候,通过改变 c 并不会影响 y 的预测;

        (ii) Concepts as auxiliary features。这类方法首先预测 x\rightarrow c,然后预测(x,c)\rightarrow y。“We cannot intervene in isolation on a single concept because of the side channel from x\rightarrow y。”

        Causal models

        虽然CBM可以表示为 x\rightarrow c\rightarrow y 的因果关系,但是这不代表在现实世界中一定存在 c\rightarrow y的因果关系,不过这仍然不影响我们使用intervention提高预测的精准度。解释一下,比如,我们通过某种方式把一个人的腿变肿(虽然不太讲究...),但是这并不会影响这个人是否患有关节炎,因为二者不存在因果关系;但即使这样,我们也可以通过在test time对“肿胀”这一concept做intervention来提高预测准确度。

        Post-hoc concept analysis

        作者在此处提到了几个事后概念分析的可解释工作,包括之前介绍的TCAV以及之后要讲的Network Dissection。但是如刚刚所说,这些技术依赖于模型能够自动学习到concepts,但是当模型做不到一点的时候,这种事后可解释方法就无法实现;并且,此类方法也不允许对这些概念进行intervention。而在CBM中,直接引导模型在训练时学习这些concepts。

  • 本文方法

Coinsider predicting a target y\in \mathbb{R} from input x\in \mathbb{R}^{d}; for simplicity, we present regression first and discuss classification later. We observe training points \left \{ (x^{(i)},y^{(i)},c^{(i)}) \right \}_{i=1}^{n},where c\in \mathbb{R}^{k}is a vector of k concepts.

CBM has the form f(g(x)), where g:\mathbb{R}^{d}\rightarrow \mathbb{R}^{k}f:\mathbb{R}^{k}\rightarrow \mathbb{R}

        简而言之,g 用来预测concepts,f 用来预测最终结果。即 \hat{y}=f(g(x))\hat{c}=g(x)

        网络有三种学习方式,independent,sequential,joint。

        1. independent:其中 \hat{f} 用真实的标签 c 训练,而 \hat{g} 以concept的预测损失训练;

        2. sequential:先训练 \hat{g} ,再用 \hat{g} 预测得到的  \hat{g}(x) 作为后续网络的输入训练  \hat{f}

        3. joint:设置一个权重 \lambda 平衡两个损失联合训练。

        作为比较,作者还训练了一个standard model,即端到端的网络。

        我们观察联合训练的损失函数:如果 \lambda=0,对应的就是没有bottleneck的standard model;如果 \lambda\rightarrow \infty,对应的就是顺序训练 。

        将一个end-to-end的模型中间的某一层神经元个数resize成 k 个,以匹配定义的 k 个concepts,然后根据上面的training scheme进行训练即可。

        需要注意的是,OAI是回归任务,而CUB是分类任务;在回归任务中,我们在中间层得到的输出是0-1的一个值;而在分类问题中,得到的并不是一个值而是一个logits向量,这个向量之后会通过sigmoid函数作为概念出现的概率,原文如下:

        在实际操作上,g 通过fine-tune Inception-v3得到,f 通过单个线性层实现(i.e., logistic regression)

       


(3) 实验及结果

        通过三种训练方式训练得到的CBM在准确度上均可以与标准的黑盒网络相比,其中joint最佳;当移除standard网络中间的bottleneck时对结果影响不大;Multitask网络更准确,但不允许再test time做intervention。

        左图:再OAI任务上作者并没有观察到accuracy(task error)与interpretability(concept error)之间的compromise;但是在CUB任务上会存在一些trade-off,因为当设置 \lambda 为不同的值时,task error与concept error总是有一个较低、另一个较高。

        中图:单个概念准确程度直方图。每个单独的概念都能被CBM准确预测。

        右图:数据效率。CBM可以用最少的训练点实现与标准模型相同的任务精度。(但是标注负担及利用的信息也是不一致的,毕竟standard model并没有用到concept labels;而且此处并没有对比multitask,也许是比不过?)

        再来看一下test-time intervention的结果:

        通过修改中间层对concept的错误预测,实现了最终的正确分类,成功进行了intervention。左侧是OAI任务,右侧是CUB。需要注意的是,对于OAI回归任务,我们在intervention时只需要将对应的预测值 \hat{c} 调整为真实值 c ;而对于CUB,由于是分类任务,我们是在logits上进行操作,使得“P(\hat{c}_j=1)=\sigma (\hat{l}_j) is close to the true c_j ”,其中 \hat{l}=\hat{g}(x),也就是bottleneck输出的logits;并且在改变这个logits的时候,往往不能只改变其中的某个值,因为该向量中的不同元素可能代表类似的含义,比如黑色翅膀与白色翅膀,这种情况下需要同时intervene不同元素的值以保证不会出现矛盾(比如翅膀既是白色也是黑色)。

        一些讨论:如前所述,CBM的缺点就是需要额外的annotation;未来的工作可能会引入side channel form,即x\rightarrow y,这一点在发表于ICLR 2023的“post-hoc CBM”中已经实现,后面会讲到。


4. CEM

        第四篇文章是发表在NeurIPS 2022的“Concept Embedding Models: Beyond the Accuracy-Explainability Trade-Off”。

        文章链接:https://arxiv.org/abs/2209.09056

        代码链接:https://github.com/mateoespinosa/cem

(1) 概述

        作者在Abstract中指出,当前的concept bottleneck models(CBMs)无法在high accuracy、robust concept-based explanations以及effective interventions on concepts之间达到最优的权衡,尤其对于现实世界中缺乏对concepts的supervision的情况,使我们无法很好地在test time进行有效的intervention(因为不知道如何干预)。

        在Introduction部分作者进一步陈述了CBMs的特点和存在的问题。首先,由于CBMs考虑了concept accuracy,这有可能会以牺牲task accuracy为代价,使得最终的预测准确率降低,尤其是当提供的概念集并不包含准确预测下游任务所需的所有必要信息时(概念集是必要不充分的,实际上也很难做到充分。比如我们不能只根据颜色是黄色来分辨香蕉和玉米,但是又很难提供关于香蕉或者玉米的完整信息)。

        本文提出了concept embedding models即CEM,一种新的CBM,通过学习可解释概念的高维representation,打破了准确性-可解释性之间的compromise,在intervention时的表现超越了CBMs,并且适用于缺乏概念监督的现实世界情况。

        实验表明,CEM有以下特点:

        (1) 与没有concepts的标准神经网络相比精度更高;

        (2) 能够捕获meaningful semantics,包括并不限于ground-truth concept labels;

        (3) 支持test-time intervention,对测试精度的影响超过了CBMs;

        (4) 适用于缺乏完整概念监督的real-world conditions。


(2) 方法

        与CBMs使用简单的二值concept不同,CEM使用的是一个高维的embedding来表示每个concept,这样allows for extra supervised learning capacity. 这也是处理概念集不充分情况的关键。

(i) Architecture

        对于每个concept,CEM同时学习两个embeddings(with explicit semantics representing the concept's activity,即,具有表示概念“活跃情况”的显式语义);简而言之,就是CEM可以学习两个embedding:一个支持概念存在,一个反对概念存在;在test-time可以通过两种 switch between the two embedding states来实现intervention。

        两个embeddings表示为 \hat{\mathbf{c}}_{i}^{+},\hat{\mathbf{c}}_{i}^{-}\in \mathbb{R}^{m},其中 \hat{\mathbf{c}}_{i}^{+} 代表concept的active state (concept is 'true',支持概念存在)、 \hat{\mathbf{c}}_{i}^{-} 代表concept的inactive state (concept is 'false',反对概念存在);基于此,首先使用一个DNN \psi (\mathbf{x}) 学习latent representation \mathbf{h}\in \mathbb{R}^{n_{hidden}},接着 \mathbf{h} 将作为embedding generator的输入用以产生对应的两个embeddings in \mathbb{R}^m,即:

 \hat{\mathbf{c}}_{i}^{+}=\phi _{i}^{+}(\mathbf{h})=a(W_{i}^{+}\mathbf{h}+\mathbf{b}_{i}^{+})

 \hat{\mathbf{c}}_{i}^{-}=\phi _{i}^{-}(\mathbf{h})=a(W_{i}^{-}\mathbf{h}+\mathbf{b}_{i}^{-})

        可以发现此处的generator使用的是简单的one-layer neural network,目的是防止当我们拥有规模比较大的概念时模型的参数过多。(当然可以使用更复杂的网络以生成embeddings)

        设计一个learnable and differentiable的scoring function s:\mathbb{R}^{2m}\rightarrow [0,1] 以鼓励生成的两个embeddings \hat{\mathbf{c}}_{i}^{+} 与 \hat{\mathbf{c}}_{i}^{-} 与ground-truth concept c_i 相匹配(aligned)。

        具体做法是,定义probability of concept c_i being active from the embeddings' joint space:

 \hat{p}_i:= s([\hat{\mathbf{c}}_{i}^{+},\hat{\mathbf{c}}_{i}^{-}]^\mathrm{T})=\sigma (W_s[\hat{\mathbf{c}}_{i}^{+},\hat{\mathbf{c}}_{i}^{-}]^\mathrm{T}+\mathbf{b}_s)

        For parameter efficiency,W_s and \mathbf{b}_s are shared across all concepts.

        The final concept embedding:

 \hat{\mathbf{c}}_{i}:= (\hat{p}_i\mathbf{c}_{i}^{+}+(1-\hat{p}_i)\mathbf{c}_{i}^{-})\in \mathbb{R}^m 

        直观地说,这样的设计有两个目的:(1) 当第 i 个concept c_i 存在时(active,c_i=1),此时受损失函数(CrossEntropy)限制,\hat{p}_i 也接近于1,那么得到的 \hat{\mathbf{c}}_{i} 倾向于只依赖 \hat{\mathbf{c}}_{i}^{+};反之如果第 i 个concept c_i 不存在时(inactive,c_i=0),此时\hat{p}_i 也接近于0,那么得到的 \hat{\mathbf{c}}_{i} 倾向于只依赖 \hat{\mathbf{c}}_{i}^{-}。这样一来就促使模型生成了两个具有不同语义的latent space;并且,也提供了intervention时的方式,即,将两个embedding进行switch。

        之后,将所有concept(k 个类别)对应的concept embeddings组合起来(concatenate),得到 g(\mathbf{x})=\hat{\mathbf{c}} with k\cdot m units,作为bottleneck输入到最后的预测网络 f 以获得下游任务的标签 \hat{\mathbf{y}}。此处 f 选择的是a simple linear layer,当然可以使用更复杂的function。类似于CBM,CEM也可以提供concept-based explanation for the output of f through the concept probability vector\hat{\mathbf{p}(\mathbf{x})}:= [\hat{p}_1,...,\hat{p}_k],代表了每一个concept的“活跃度”。

        整个模型可以通过SGD进行端到端的训练,损失函数同时考虑了task accuracy与concept accuracy,用超参数 \alpha 进行权衡:

\mathcal{L}:= \mathbb E_(\mathbf{x},y,\mathbf{c})[\mathcal{L}_{task}(y,f(g(\mathbf{x})))+\alpha \mathcal{L}_{CrossEntr}(\mathbf{c},\hat{\mathbf{p}(\mathbf{x})})]

(ii) Interventing with Concept Embeddings

        与CBM相同,CEM也支持test-time intervention。具体做法是在测试时对产生的 \hat{\mathbf{c}}_{i} 进行干预,使其变为ground-truth即 c_i;而 c_i 是由 \hat{p}_i 计算得到的,因此实际操作中是改变 \hat{p}_i 的值。举个例子,比如CEM预测的 \hat{p}_i=0.1,但人类专家知道此时 c_i=1,因此采用intervention将 \hat{p}_i 强制置为1即可。所谓的switch就体现在此,原本是:

\hat{\mathbf{c}}_{i}= (0.1\times \mathbf{c}_{i}^{+}+0.9\times \mathbf{c}_{i}^{-})

        而现在变成了:

\hat{\mathbf{c}}_{i}= (1\times \mathbf{c}_{i}^{+}+0\times \mathbf{c}_{i}^{-})

        此外,作者引入了一种规范化策略RandInt,使CEM可以在训练时就接受干预,以提高测试时采用干预的有效性。(通过RandInt提高了test-time intervention的有效性,一个比较新颖的思路,先让模型“适应”一下intervention这个操作)

        具体来说,\hat{p}_i 会以概率 p_{int} 被置为 ground-truth c_i,而以(1-p_{int})的概率保持预测值 \hat{p}_i

\hat{\mathbf{\mathbf{c}}}_i=\left\{\begin{matrix} (c_i\hat{\mathbf{\mathbf{c}}}_{i}^{+}+(1-c_i)\hat{\mathbf{\mathbf{c}}}_{i}^{-})\ with\ probability\ p_{int}\ \ \ \ \ \ \ \ \\ (\hat{p}_i\hat{\mathbf{\mathbf{c}}}_{i}^{+}+(1-\hat{p}_i)\hat{\mathbf{\mathbf{c}}}_{i}^{-})\ with\ probability\ (1-p_{int}) \end{matrix}\right.

        这个策略强制来自下游任务的feedback只用来更新correct concept embedding,而来自concept的预测对两个embedding同时进行更新。作者将这种做法类比为dropout,因为一部分concept representation仅使用来自其概念标签的feedback进行训练,而另一些concept representation同时接受来自其概念和任务标签的feedback。

(iii) Evaluating concept bottlenecks

        虽然近年来大家对concept-based interpretability关注越来越密切,但现有的工作仍然无法提供对concept-based interpretability的评估方法,也无法解释为什么CBM会在某些任务中表现不佳。因此,作者提出(i)在multidimensinal representations中评估concept quality的新度量和(ii)一种基于信息论的方法,通过分析concept bottleneck中的information flow,到CBM在下游任务中表现不佳的原因。

        提出Concept Alignment Score (CAS)用以评估学习到的concept representations是否与ground-truth concept相匹配。式(2)是对所有concepts与clusters做了归一化,将CAS归一化到0到1之间。

        具体来说,对于每一个concept,CAS会使用一种聚类算法寻找 \rho> 2 个簇,并根据每个样本 \mathbf{x}^{(j)} 生成的第 i 个concept representations \left \{ \hat{\mathbf{c}}_i^{(1)}, \hat{\mathbf{c}}_i^{(2)},... \right \}进行聚类,为 \mathbf{x}^{(j)} 分配一个簇标签 \pi_i^{(j)}\in \left \{ {1,...,\rho} \right \},然后对样本ground-truth label与聚类分配的簇标签计算条件熵,如果条件熵越小,并由条件熵定义一个homogeneity score,如果该分数越高说明学到的concept representation与ground-truth concept匹配得越好。

        简单理解,当具有同一个ground-truth concept的样本的concept representation在对应的latent space中的分布也相近,并且与其它类别分的比较开的时候,就代表这个representation学的比较好。

        随后,作者基于信息论研究了information bottleneck,推测基于embedding的CBM通过充分保留来自于输入分布的信息来避免发生information bottleneck;而scalar-based concept representations会被迫在concept层面压缩来自输入的信息,从而造成了信息瓶颈,导致了输入和概念层、概念层和输出之间的compromise。

        简单来说,就是用一个值表示concept(scalar-based representations)会造成信息的丢失(因为一个值能提供的信息容量有限),而高维的embedding可以保留来自输入的信息,避免信息瓶颈的发生。更多细节请查阅原论文。


(3) 实验及结果

  • 蓝色点代表CEM,task accuracy很高;
  • CAS分数也很高,证明学习到的representation能够与concept对齐。

  • 在训练过程中,蓝色(CEM)不会存在information bottleneck的问题——即,随着训练的迭代,模型不断压缩来自输入数据的信息,造成遗忘。
  • 与使用scalar concept representations的CBMs相比,基于embedding的表示能够保持高的task accuracy和mean concept accuracy。额外的容量(高维度的embedding)允许CBMs在不过度约束概念表示的情况下最大化概念准确性,从而允许有用的输入信息通过。“In CEMs all input information flows through concepts, as they supervise the whole concept embedding.”

  • CEM的embedding space形成了两个明显的簇。
  • 右边模型(Hybrid)的latent space无法像CEM那样清晰地捕获概念语义。
  • 可以通过查询the nearest Euclidean neighbours来观察相近的图片(图c)。

  • 1,2模拟正确干预;3,4模拟错误干预(模拟人类的失误,检验模型的容错性);
  • CEM对intervention高度响应,并且RandInt可以使响应更显著(深蓝色,斜率更大);
  • 与bool-CBM和fuzzy-CBM相比,CEM对人类的错误干预更有鲁棒性(斜率更小);
  • hybrid-CBM(粉色)几乎不受干预影响(斜率趋近于0),即使它对人类的错误intervention也没什么响应,但是这是因为它对什么样的干预都没反应,而不是有鲁棒性。

5. Post-hoc CBM

        第五篇文章是“Post-hoc Concept Bottleneck Models”(ICLR 2023 spotlight)。

        文章链接:https://arxiv.org/abs/2205.15480

        代码链接:https://github.com/mertyg/post-hoc-cbm

(1) 概述

        Post-hoc CBM(PCBM)也是CBM大家族中的一员,因此它的基本逻辑与CBM一致,就是在输入和输出之间构造一个bottleneck用于预测concepts。和其它很多文章类似,作者同样指出了CBM模型的缺点:

        (i) dense annotation,即需要大量精细的标注;

        (ii)  accuracy-interpretability trade-off,即准确性与可解释性之间的取舍与权衡(尤其是在concepts not enough的情况下);

        (iii) local intervention,即CBM只是针对个例进行干预,而不是提升模型本身的效果。

        因此,本文提出PCBM,可以将任何网络转化为PCBM,且在不牺牲模型精度的同时保证可解释性;此外,当训练集中缺失annotation时,PCBM可以从其它数据集或使用多模态模型产生概念:transfer concepts from other datasets or from natural descriptions of concepts via multimodal models”——在介绍CBM那篇文章的时候提到过——或者,引入一个residual modeling step来recover the original blackbox model's performance。此外,PCBM允许global model edits即全局的intervention,这种方法会比针对specific prediction的local intervention更加有效。


(2) 方法

        We let f:\mathcal{X}\rightarrow\mathbb{R}^{d} be any pretrained backbone model, where d is the size of the corres-ponding embedding space and \mathcal{X} is the input space.  f 可以是CLIP中的image encoder或者ResNet的倒数第二层(总之是一个编码器)。

        建立PCBM需要以下几个步骤:

(i) Learning the Concept Subspace

        为了学习concept representations,作者使用了CAVs的做法,首先定义了一个概念集合concept library I=\left \{ i_1,i_2,...,i_{N_c} \right \},其中 N_c 代表concepts的总数;concept library可以由domain expert定义或者从数据中自动学习(参考NeurIPS 2019, Towards automatic concept-based explanations.https://arxiv.org/abs/1902.03129)。

        For each concept i, we collect embeddings for the positive examples, denoted by the set P_i, and negative examples N_i.

P_i=\left \{ f(x_{p_1}),...,f(x_{p_{N_p}}) \right \}

N_i=\left \{ f(x_{n_1}),...,f(x_{n_{N_n}}) \right \}

        作者训练了一个SVM对 P_i 与 N_i 分类,并计算对应的CAV(分类边界的法向量),并且与TCAV相同,CAV的学习并不局限于the data used to train the backbone model;将第 i 个concept对应的CAV记为 \boldsymbol{c}_i,let \boldsymbol{C}\in \mathbb{R}^{N_c\times d} denote the matrix of concept vectors. \boldsymbol{C} 的每一行就代表第 i 个concept对应的CAV \boldsymbol{c}_i

        现在,我们有一个backbone model f 作为encoder,一个由一系列CAVs组成的concept matrix \boldsymbol{C}。此时给定输入 x,我们可以通过 f_{\boldsymbol{C}}(x)=\mathrm{proj}_{\boldsymbol{C}}f(x)\in\mathbb{R}^{N_c}将 f(x) 投影到由 \boldsymbol{C} 张成的向量空间,i.e., f_{\boldsymbol{C}}^{(i)}(x)=\frac{\left \langle f(x),\boldsymbol{c}_i \right \rangle}{\left \| \boldsymbol{c_i} \right \|_{2}^{2}}\in\mathbb{R},即 f_{\boldsymbol{C}}^{(i)}(x) 代表当前输入在第 i 个concept vector \boldsymbol{c}_i 方向上的长度(是一个scalar),直观来说就是当前输入 x 中包含概念 \boldsymbol{c}_i 的程度(图中红色方框)👇

(ii) Leveraging multimodal models to learn concepts

        前面提到CBM需要dense annotation,限制了实际应用。作者提出可以使用多模态模型比如CLIP来生成concept vector,具体来说,由于CLIP (Radford et al., 2021)具有一个image encoder和一个text encoder可以将二者编码到shared embedding space中,因此我们可以通过mapping the prompt using the text encoder to obtain the concept vectors;举例来说,如果我们想得到“strpes”这一concept对应的CAV但是又缺少标注好的数据,我们可以通过将“stripes”输入到CLIP的text encoder中,使用其编码后得到的向量作为CAV(其实就不叫CAV了,但是得到的这个向量也是类似CAV的一种用来表示概念的向量;为方便理解,此处索性就统一叫作CAV,但不要混淆),i.e. \boldsymbol{c}_{\textrm{stripes}}^{\textrm{text}}=f_{\textrm{text}}(\textrm{"stripes"});这样,对于每一个concept我们都有对应的语言表述,也都能相应地得到CAV,由此得到我们的multimodal concept bank \boldsymbol{C}^\textrm{text}.

Note:CAVs与Multimodal Models两种方法二选一,而不是将两种方法得到的CAV求并。

        对于classification task,可以使用ConceptNet (Speer et al., 2017)来自动获取与类别相关的concepts,从而构建concept bank。

(iii) Learning the Interpretable Predictor

        Let g:\mathbb{R}^{N_c}\rightarrow \mathcal{Y} be an interpretable predictor. g 可以选择线性模型或者决策树这种具有较强可解释性的模型,将预测得到的评分 f_{\boldsymbol{C}}(x) 映射为最终的类别 \mathcal{Y}。通过优化以下式子来学习模型:

\min\limits_g \mathbb{E}_{(x,y)\sim \mathcal{D}}[\mathcal{L}(g(f_{\boldsymbol{C}}(x)),y)]+\frac{\lambda }{N_cK}\Omega (g)

        \Omega (g)=\alpha \left \| \omega \right \|_1(1-\alpha )\left \| \omega \right \|_{2}^{2}

        前面一项对应分类损失(如交叉熵),后面一项为正则项,用来限制predictor g 的复杂度,并由类别和概念的数量进行归一化。在这项工作中作者使用的是sparse linear models。

(iv) Recovering the original model performance with residual modeling

        即使我们拥有了一个相对丰富的概念子空间,概念很可能仍然不足以解决我们感兴趣的下游任务。对于这种情况,即PCBM与原始模型性能不匹配时,作者引入了从original embedding连接到最终决策层的残差部分,以保持原有模型的准确度,对应的模型为PCBM-h。此时,作者使用sequential的训练方式,首先训练 interpretable predictor g ,然后固定concept bottleneck and the interpretable predictor并优化残差部分:

\min\limits_r \mathbb{E}_{(x,y)\sim \mathcal{D}}[\mathcal{L}(g(f_{\boldsymbol{C}}(x))+r(f(x)),y)]

        其中 r 是residual predictor,其输入是原始的不具有解释性的embedding,而最后的输出结果是综合了interpretable predictor的输出 g(f_{\boldsymbol{C}}(x))以及residual predictor的输出 r(f(x))。可以将r(f(x)) 视为原来interpretable predictor的一种补充;g的输入是interpretable concept embeddings,r 的输入是uninterpretable的original embeddings from backbone encoder. 模型的决策由 g 尽量解释,解释不了的由 r 来恢复原始精度。很显然,PCBM-h的精度一定是高于PCBM的。

Note:如果想观察interpretable predictor g 的表现,那么就把residual predictor r 网络中的参数全部置零从而drop掉这一支路,如果我们想得到一个黑盒模型,就把 g 网络中的参数全部置零。


(3) 实验及结果

(i) PCBMs achieve comparable performance to the original model

        PCBMs获得了与黑盒模型comparable的性能,尤其是PCBM-h。

(ii) PCBMs achieve comparable performance to the original model

        当提供的concepts not available or insufficient的时候,可以使用借助CLIP的text ecncoder产生的concept bank,发现CLIP自动生成的concept要比人为提供的概念标注更好。

(iii) Explaining Post-hoc CBMs

        展示了针对于一个类别线性层中权重最大的三个concepts,在皮肤癌的例子中,模型考虑的concept与人类判断时考虑的因素一致。

(iv) Model editing

        与基本的CBM对单个样本做干预(local intervention)不同,PCBM的一个优势就是允许global intervention从而直接提升模型整体的表现。当我们知道某些概念是错误的时候,可以通过剪枝(Prune)等操作优化模型。举个例子,如果训练集和测试集存在域偏差,比如,训练集中有很多“狗”的图片,但是在测试集中没有“狗”的图片,那么在训练阶段学习到的所有关于狗的概念都将无效,或者说对于测试集是“错误的概念”;此时我们可以采用以下三种strategies对模型进行修改:

        (1) Prune: 在决策层将错误概念对应的权重置0,i.e., for a concept indexed by i, we let \tilde{\boldsymbol{\omega }}_i=0

        (2) PruneNormalize:在prune后rescale the concept weights,归一化可以缓解剪枝后较大权重造成的权值不平衡问题;

        (3) Fine-tune (Oracle):在测试集上对整个模型进行微调,作为oracle。

        可以发现PCBM进行PruneNormalize之后的增益较高,最接近oracle;而PCBM-h的增益很低。一个原因是PCBM可以通过Prune直接剪掉干扰预测的错误概念,但是由于PCBM-h的残差连接中仍包含来自错误概念的信息无法被去除,因此预测精度的提升不明显。

(v) User study

        作者还进行了user-study,即测试集与训练集存在偏差时,让user自行选择一定数量的concepts进行prune,观察模型性能是否有提高,以验证模型能够良好的与人类进行交互;作者使用了三个实验设置作为对比:

        (1) Random Pruning:随机对weights置零;

        (2) Greedy pruning(Oracle):即prune掉与人类同样数量的concepts使得模型得到最佳增益;

        (3) Fine-tune (Oracle):在测试集上微调。

        Random prune发生了性能降低,而user prune可以明显改善模型性能,大概相当于80%的greedy prune增益与50%的fine-tune增益。

        另一个现象是即使有残差连接但是仍然可以通过剪枝提高PCBM-h的性能,具体原因不知道。


        最后是简单的discussion:

        (1) 人类构建的concept bottleneck是否可以解决更大规模的任务是一个悬而未决的问题(例如ImageNet级别),因为会有information bottleneck的存在,精度concept定义insufficient,也是导致accuracy-interpretability之间有trade-off的原因所在。

        (2) 以无监督的方式为模型寻找概念子空间是一个活跃的研究领域,它将有助于构建更加有用的、丰富的概念瓶颈。


6. Label-free CBM

        第六篇文章是发表在ICLR 2023的“Label-Free Concept Bottleneck Models”。

        论文链接:https://arxiv.org/abs/2304.06129

        代码链接:https://github.com/Trustworthy-ML-Lab/Label-free-CBM

(1) 概述

        前几篇文章已经介绍了CBM的主要缺点,即annotation以及accuracy-interpretability之间的 compromise(几乎每一篇文章都会说一遍,CBM确实挖了一个深坑)。在这里就不对CBM的特点做重复讨论了。

        本篇文章从题目就可以看出是不需要标注的一种CBM,此外,它是第一个扩展到ImageNet的CBM。与PCBM类似,它也允许将任何神经网络转化为Label-free CBM,主要优点有:

  • scalable: the first CBM that scales to ImageNet;
  • efficient: creating a CBM takes only a few hours even for very large datasets;
  • automated: taining it for new dataset requires minimal human effort.

(2) 方法

  • 相关方法:

(i) Post-hoc explanations

  • LIME
  • SHAP
  • 这些方法大多提供的都是local explanation,并且是近似的,并不总是准确的、忠于原模型的;此外,提供像素级别的解释也许没那么helpful,还需要后续大量的人为主观分析。

(ii) More interpretable final layer

  • Making the FC layer sparse
  • Concept Whitening
  • CEM

(iii) CBM

  • PCBM
  • TCAV
  • 作者提到PCBM同样需要annotated concept data;并且在不需要annotated data的情况下,必须使用CLIP的text encoder;此外,不带有残差块的PCBM的performance远远低于standard DNNs。

(iv) Model editing/debugging

(v) CLIP-Dissect


        👆Label-free CBM与其它模型在不同维度的比较。

  • 本文方法

        Label-free CBM的建立需要以下四个步骤:​​​​​

  • Step 1: Create the initial concept set and filter undesired concepts;
  • Step 2: Compute embeddings from the backbone and the concept matrix on the training dataset;
  • Step 3: Learn projection weights W_C to create a Concept Bottleneck Layer (CBL);
  • Step 4: Learn the weights W_F to the sparse final layer to make predictions.

        接下来让我们看一下每个步骤具体的实现方式。

(i) Step 1: Concept set creation and filtering

        A. Initial set creation

        在原始的CBM中,concept的定义是由domain experts给出的,而本文使用GPT-3来生成concept. 具体来说,使用以下prompt询问GPT-3:

        1. List the most important features for recognizing something as a {class}:

        2. List the things most commonly seen around a {class}:

        3. Give superclasses for the word {class}:

        (完整的prompts以及example outputs可以在Appendix Fig.10和Fig.11中找到。)

        为了减少结果的方差,询问GPT-3两次并把所有得到的结果整合起来;可以预见的是,整合在一起的这些结果是是很庞大的,并且会存在冗余、噪声,因此需要在B步骤中对其进行filtering;此外,作者发现使用GPT-3产生的结果好于在PCBM论文中使用的ConceptNet,具体原因分析见Appendix A.6。

        B.Concept set filtering

        使用filtering以improve the quality and reduce the size of the concept set:

        1. 删除长度过长的概念: 删除了所有长度超过30个字符的concepts,以保证概念simple并且避免不必要的complication;

        2. 删除与类别过于相似的concepts:通过使用CLIP ViT-B/16 text encoder以及all-mpnet-base-v2 sentence encoder,将concept与class映射到text embedding space中,进一步比较二者在该空间中的cosine similarity;综合考虑计算得到的两个相似度(一个CLIP text encoder,一个all-mpnet),并删除所有similarity大于0.85的concepts;

        3. 删除彼此相似的concepts:方法同2,删除与已经存在于概念集中的concept相似度大于0.9的concepts;

        4. 删除在训练集中不存在的concepts:因为GPT并没有看到training set,因此它给出的concept也许并不存在于当前training set;设置一个dataset-specific cut-off,然后remove any concepts that don't activate CLIP highly (delete all concepts with average top-5 activation below the cut-off)

        5. 删除无法正确projection的concepts:Remove neurons that are not interpretable from the CBL. 这一步在Step 3之后进行,会在稍后详细说明。

(ii) Step 2 and 3:Learning the concept bottleneck layer (CBL)

        现在我们已经有了经过filtering后的合适的interpretable concept set,接下来需要learn a projection from the bakbone model's feature space into a space where axis directions correspond to interpretable concepts. 即,从feature space到concepts的projection,对应的参数为W_C

        具体来说,由Step 1产生的瓶颈层的目标概念 \mathcal{C}=\left \{ t_1,...,t_M \right \}

        由下游任务提供的训练集(图片)\mathcal{D}=\left \{ x_1,...x_N \right \}

        接着,计算并保存CLIP concept activation matrix P :

 P_{i,j}=E_I(x_i)\cdot E_T(t_j)

        其中 E_I 和E_T 分别是CLIP image and text encoders;

        W_c is initialized as a random M\times d_0 matrix where d_0 is the dimensionality of backbone features f(x),i.e. f(x_i)\in\mathbb{R}^{d_0}

        We define f_c(x)=W_cf(x),where f_c(x_i)\in\mathbb{R}^M

     Use k to denote a neuron of interest in the projection layer, and its activation pattern is denoted as q_k=[f_{c,k}(x_1),...,f_{c,k}(x_N)]^\textup{T}\in \mathbb{R}^N and f_{c,k}(x)=[f_c(x)]_k.

        即,q_k 是bottleneck layer第 k 个神经元对应的所有图像样本的activation(一共 M 个神经元,与概念的数量对应起来);

        为了使bottleneck layer的activation可以有效代表concept,需要对它的activation也就是 q_k 做一些限制;以往的CBM做法是将此activation与ground-truth concept label(0或者1)对应起来,而在本篇文章中,作者使用一种相似性度量以限制 q_k 与对应的concept之间的强相关性,具体为:

L(W_c)=\sum_{i=1}^{M}-sim(t_i,q_i):= \sum_{i=1}^{M}-\frac{\bar{q_i}^3\cdot \bar{P_{:,i}}^3}{\left \|\bar{q_i}^3 \right \|_2\cdot \left \| \bar{P_{:,i}}^3 \right \|_2}

        \bar{q} 代表归一化的 q (均值为0方差为1),sim代表cos cubed similarity(其实就是cosine similarity升到3次并归一化);升到3次可以使similarity对highly activating inputs更敏感;由于本质还是余弦相似度,所以得到的结果介于-1到1之间;我们来仔细分析一下这个式子(为了让我以后还能看懂所以这个地方写的比较啰嗦...):

        t_i 是什么?t_i 是第 i 个concept对应的描述文本;\mathcal{C}=\left \{ t_1,...,t_M \right \}

        q_i 是什么?q_i 是在所有图像\left \{ x_1,...x_N \right \}上第 i 个neuron产生的activation;

        因此也就理解了为什么要最大化 t_i 与 q_i 的余弦相似度了——要尽量使第 i 个neuron产生的activation q_i 与第 i 个concept对应的描述文本 t_i 相匹配;

        而具体做法就是最小化矩阵 P 的第 i 列 {P_{:,i}} 与 q_i 的距离——

        {P_{:,i}} 又是什么? {P_{:,i}} 代表矩阵 P 的第 i 列,可以观察一下矩阵 P

        P 的第 i 列 {P_{:,i}} 是文本 t_i 的encoding与所有图像\left \{ x_1,...x_N \right \}的encoding的乘积;

        q_i 是bottleneck layer第 i 个neuron在所有图像\left \{ x_1,...x_N \right \}上产生的activation;

        最小化 {P_{:,i}} 与 q_i 的距离就是使第 i 个neuron在每一个图像上产生的activation与concept matrix的第 i 列尽可能一致;

        再具体一点:

        回顾在CLIP的Concept Matrix中,位于以下蓝色方框的值应该很其它的位置值很小:

        对角线一定是最相关的(蓝色),因为CLIP输入的image和text是成对的,本身就是匹配的;而其它位置大概率是不相关的,但因为不同图片中可能包含共享的概念,因此也有配对的情况(图中没有画出来);

        Label-free CBM使用的是预训练好的CLIP text and image encoders,但由于此任务是无监督的,即,图片的顺序和概念的顺序不是一一对应的,因此分布情况不一定就在对角线上。比如:

        第1张图像中是一个足球,第3张图像是一个香蕉,第6张图像是一个柠檬...

        第1个text是“黄色”,第4个text是“酸的”,第5个text是“圆的”...

        那么对应的矩阵 P_{N\times M}

        并且,我们还可以发现CLIP的matrix是N行N列的,而 P_{N\times M} 的行与列不一定相等,一般而言M>> N,即概念数量远多于图片数量(一张图片可以有很多概念)。

        再回顾一下 q_i :是第 i 个神经元在所有图像\left \{ x_1,...x_N \right \}上产生的activation;比如现在我们希望Concept Bottleneck Layer的第1个神经元要与“黄色”这一concept对应起来,那么第1个神经元就要在输入为“香蕉”与“柠檬”的时候产生大的激活值,而在输入为“足球”的时候产生较小的激活值,而这恰好与我们使用CLIP已经计算得到的P 的第1列十分相近,因此,只需要拉近它们二者的距离就能保证我们的神经元与概念一一对应。

        OK,到此为止真相大白了!CLIP有点像一个老师,教Label-free CBM使CBL的neurons与concepts对应起来。

        本文使用Adam训练 W_c ,并在validation时删除所有相似度小于0.45的concepts(这一步对应了concept filtering中的Step 5,即,删除无法正确projection的concepts)无法正确地projection的原因可能是pretrained CLIP无法将我们提供的图片、概念很好地编码到embedding space中,因为我们毕竟只是把CLIP的encoders拿过来用,以实现无监督,而并没有训练或fine-tune;

        删除这些concepts之后,W_c 的维度也应该相应变化,即 W_c\in\mathbb{R}^{(M-\Delta )\times d_0}

(iii) Step 4: Learning the sparse final layer

        现在的目标是训练final predictor with the FC layer W_F\in\mathbb{R}^{d_z\times M},where d_z is the number of output classes. 我们希望 W_F 是sparse的(因为sparse已经被证明是更具有可解释性的);

        训练更新 W_F 时,固定backbone f(x) 以及学习好的concept projection W_c,优化目标如下:

\min\limits_{W_F,b_F}\sum_{i=1}^{N}L_{ce}(W_Ff_c(x_i)+b_F,y_i)+\lambda R_\alpha (W_F)

                前一项是交叉熵损失,后一项是一个正则项,用以控制 W_F 是sparse的:

R_{\alpha }(W_F)=(1-\alpha )\frac{1}{2}\left \| W_F \right \|_F+\alpha \left \| W_F \right \|_{1,1}

        使用GLM-SAGA solver来optimize目标函数,选择 \alpha =0.99,"\lambda was chosen such that each model has 25 to 35 nonzero weights per output class",这相当于0.7~15%的weights是nonzero的。


(3) 实验及结果

        在多个数据集上的表现超越了PCBM以及sparse standard black-box.

       Final layer weights的visualization,并展示模型如何区分两个相似的类,比如橘子与柠檬。

        由于权重是sparse的,因此很容易将权重可视化。

        在实验过程中,作者发现模型所犯的四种不同类型的错误:

  • Type 1: Incorrect/ambiguous label. 即Noisy labels,是数据本身的问题,作者没有关注这类错误;
  • Type 2: No sufficient concept in CBL. 这个问题在CBM模型中普遍存在,还是之前谈到过dinformation bottleneck的问题,比如我们要区分两条蛇的具体种类,这可能需要特别精细的概念,有些概念甚至无法用语言描述;作者也没有关注这一类错误,因为需要重新训练projection W_c 以及final layer;
  • Type 3: Incorrect concept activations. 类似于CBM针对specific example的local intervention.可以使用test-time intervention进行干预:

  • Type 4: Incorrect final layer weight W_F. 类似于PCBM针对model的global intervention:
    • 找到预测错误的例子。这个例子对concept的预测是正确的,但是对最终结果的越策确实错误的,这就说明最后一层的权重是有问题的;
    • 找到哪一个concept对应的权重是有问题的。这是最困难的一步,因为很可能改变了某一个concept对应的权重之后,原来错误的预测变成了正确的,但是原来正确的也可能变成错误的...
    • 调整weights。需要注意的就是不要把原来正确的给改错了,要用validation检验一下。

7. ProbCBM

        第七篇文章是发表在ICML 2023的“Probabilistic Concept Bottleneck Models”。

        文章链接:https://arxiv.org/abs/2306.01574

        代码链接:https://github.com/ejkim47/prob-cbm

(1) 概述

        作者指出,可靠的concept predictions对于模型的可信度是至关重要的,然而,存在于数据中的ambiguity会严重损害模型的可靠性;然而,data中的ambiguity却是广泛存在的,CBM却predicts concepts deterministically without considering this ambiguity。

        基于此,本文提出ProbCBM,使用probabilistic concept embeddings,ProbCBM将concept prediction中的uncertainty进行建模,基于concept以及其对应的uncertainty为最终的prediction提供explanations;此外,由于class uncertainty来源于concept uncertainty,因此我们也可以使用concept uncertainty来解释class uncertainty。

(类似于standard NNs与Bayesian NNs的区别,前者的weights是deterministic的,而后者的weights遵循一个概率分布。)

        在Introduction部分作者指出了post-hoc方法的不足:cannot entirely explain the model's prediction and provide approximate explanations in a human-understandable form, which may lead to incorrect explanations(Rudin, 2019.https://arxiv.org/abs/1811.10154).

        而concept-based model如CBM有着它的不足,“The concept prediction in CBM is trained as deterministic binary classfication by using a dataset that includes concept labels indicating the existence 1 or non-existence 0 of a concept.”

        然而,concept的存在与否有时是ambiguous的,比如下图这个例子:

        这四幅图片都对应于同一种鸟,即绿松鸦(green jay);然而,它们之间的concept却不共享、混淆、存在ambiguity,要么没有尾巴、要么没有肚子、要么颜色不统一。而当使用离散概念的时候,这个问题可能会进一步加剧;并且在实际标注概念的时候,为了减轻标注负担,通常将相同的concept分配给不同的图像,但是如上图所示这是不合理的,因为有些example并不包含所提供的概念;反过来,提供的概念也不一定足以解释一张图片;此外,data augmentation,比如随机裁剪也会引入一定的视觉歧义。

        ProbCBM将图像project到具有probabilistic distribution的concept embedding中,对概念的不确定性进行建模;随后,将concept embeddings投影为class embeddings, "Thus, the final class prediction is derived from concept prediction."

        总之,ProbCBM不同于CBM在瓶颈层将concept表征为确定性的值/向量,而是使其服从一个概率分布,由此引入uncertainty,使得预测更加可靠。即,不仅提供concept prediction,还提供concept uncertainty。

Note:uncertainty有三种:(i) model uncertainty (comes from the model parameters); (ii) data uncertainty (comes from the noise of the data); (iii) distribution uncertainty. 而probabilistic embedding主要考虑的是data uncertainty——“where the representations of input samples are expressed as probabilistic distributions.”


(2) 方法

        图像被映射为concept embedding space中的概率嵌入,之后probabilistic concept embedding又被映射到class embedding space。

        越大的椭圆代表越多的ambiguity,不确定性也越高。

        实心点代表concept的存在,×代表concept不存在,可以看到有些concept并不存在于图像中(或只存在于部分图像中),这就是所谓的ambiguity。

        与CBM类似,ProbCBM有一个concept predictor以及一个class predictor;

        训练数据具有形式:\left \{ (x^{(i)},\mathcal{C}^{(i)},y^{(i)}) \right \}_{i=1}^{N}(仍然需要annotation)

(i) Probabilistic Concept Modeling

A. Probabilistic conept embedding

Given an input x, the concept predictor makes probabilistic concept embedding z_c for each concept c\in\mathcal{C}, which is formulated as a normal distribution with a mean vector and a diagonal covariance matrix.

p(z_c|x))\sim \mathcal{N}(\mu_c,\textrm{diag}(\sigma _c))

        where \mu_c,\delta_c\in\mathbb{R}^{D_c} and D_c represents the dimension of the concept embedding space.

        \mu_c,\delta_c 通过probabilistic embedding module (PEM)进行预测,every concept uses a shared backbone and individual PEMs.

B. Concept prediction

        输入图像经过backbone得到对应的feature,将feature输入到PEM中,得到 N_c 个均值以及 N_c 个方差;然后我们在这 N_c 个分布中采样以得到每个concept在当前采样步下的representation,即 z_c,;z_c 在不同的采样时刻是不一样的。

        采样得到 z_c 后,需要判断 z_c 对应的图像中是否真的存在概念 c,即计算 p(c=1|x);具体做法如下:

        从 p(z_c|x) 中采样 N_s 个点,

\left \{ z_c^{(n)} \right \}_{n=1}^{N_s}

        概念 c 存在于 x 的概率用Monte-Carlo estimation进行估计,

p(c=1|x)\approx \frac{1}{N_s}\sum_{n=1}^{N_s}p(c=1|z_c^{(n)})

p(c=1|z_c^{(n)})=s(a(\left \| z_c^{(n)}-z_c^- \right \|_{2}-\left \| z_c^{(n)}-z_c^+ \right \|_{2}))

        a>0 is a learnable parameter and s(\cdot ) represents a sigmoid function.

        z_c^{+} and z_c^{-} are tainable anchor points in \mathbb{R}^{D_c}. (D_c represents the  dimension of the concept embedding space)

        如果在时间步 n 采样得到的 z_c^{(n)} 距离 z_c^{+} 距离更近(Euclidean distance),则概念的存在概率增加;如果 z_c^{(n)} 距离 z_c^{-} 距离更近,则概念存在的概率降低。

(ii) Probabilistic Class Modeling

A. Class embedding

        将时间步 n 下对每一个概念采样得到的 z_c^{(n)}=[z_{c_1}^{(n)},z_{c_2}^{(n)},...,z_{c_{N_c}}^{(n)}] 使用FC层投影到class embedding space,得到当前时间步 n 对应的class embedding h^{(n)}\in\mathbb{R}^{D_y}\mathbb{R}^{D_y} is the dimension of the class embedding space:

h^{(n)}=\mathbf{w}^\textrm{T}([z_{c_1}^{(n)},z_{c_2}^{(n)},...,z_{c_{N_c}}^{(n)}])+\textbf{b}

B. Class prediction

The logit for class k is defined by the Euclidean distance between the class embedding for the image and a trainable anchor point for class kg_k\in\mathbb{R}^{D_y}.

We obtain the class probabilities by applying softmax to the logits for overall classes. The classification probability is obtained via Monte-Carlo estimation:

p(y_k=1|x)\approx \frac{1}{N_s}\sum_{n}^{N_s}\frac{\textrm{exp}(-d\left \| h^{(n)}-g_k \right \|_2)}{\sum _{k'} \textrm{exp}(-d\left \| h^{(n)}-g_{k'} \right \|_2)}

where d>0 is a learnable parameter.

由于 h^{(n)} 由 z_c^{(n)} 得来,z_c^{(n)}是在时间步 n 下对 p(z_c|x) 采样得到的,因此 h^{(n)} 也相当于是采样得到的;最终的classification probability将同样由MC estimation得到,对应上面的公式。

h^{(n)} 与 anchor point g_k 距离(Euclidean distance)越近,分类概率就越高。

(iii) Training and Inference

A. Training objective

We additionally use a KL divergence loss between the predicted concept embedding distributions and the standard normal distribution.

This prevents the variances from collapsing to zero and makes the distribution \mathcal{N}(\mu_c,\textrm{diag}(\sigma _c))have only salient information for predicting the probability that the concept c exists.

\mathcal{L}_{\textrm{KL}}(c)=\mathbf{KL}(\mathcal{N}(\mu_c,\textrm{diag}(\sigma _c))||\mathcal{N}(0,I))

        即,用KL散度作为正则项,使 \mathcal{N}(\mu_c,\textrm{diag}(\sigma _c)) 趋近于标准正态分布,避免方差坍缩为0,并保证 \mathcal{N}(\mu_c,\textrm{diag}(\sigma _c)) 只有用于预测概念存在的显著信息。

        Thus, the overall training loss for the concept predictor is expressed as:

\mathcal{L}_{\textrm{concept}}=\mathcal{L}_{\textrm{BinaryCE}}+\lambda _{\textrm{KL}}\cdot \mathcal{L}_{\textrm{KL}}

        We use a cross-entropy loss for training class predictor (\mathcal{L}_{\textrm{class}}).

B. Training scheme

        分别训练concept predictor与class predictor

        首先用 \mathcal{L}_{\textrm{concept}} 训练concept predictor,用以实现从输入到concept embedding space的准确projection;

        然后用 \mathcal{L}_{\textrm{class}} 训练class predictor;Note:以概率 p_{\textrm{replace}} 的概率将concept predictor预测并采样得到的 z_c^{(n)}\sim p(z_c|x) 替换为anchor point (z_c^{+} or z_c^{-} ),以 (1-p_{\textrm{replace}}) 的概率不替换;这样做可以防止class predictor使用incorrect concepts进行学习。

C. Inference

Inference can be done by approximating the probabilities via Monte-Carlo sampling or using \mu_c as z_c without sampling.——可以通过Monte-Carlo estimation来估计最终的概率值,或者直接使用高斯分布的均值作为 z_c 从而得到最终的概率值而不用采样

(iv) Derivation of Uncertainty

        ProbCBM利用probabilistic modeling,使我们能够直接从预测的概率分布中估计不确定性,而不需要采样。具体而言,使用协方差矩阵的行列式来量化uncertainty,因为行列式代表了概率分布的体积,体积越大,uncertainty越大。由于the distribution of the concept embedding是用diagonal covariance matrix来参数化的,所以每个概念 c 的不确定性可以用对角元素 \sigma_c 的几何平均值来计算。

        而class embedding h^{(n)} 是the concatenation of concept embedding,即

        z_c^{(n)}=[z_{c_1}^{(n)},z_{c_2}^{(n)},...,z_{c_{N_c}}^{(n)}] 的linear transformation:

        因此,the class embeddings follow \mathcal{N}(\textbf{w}^{\textrm{T}}\mu+\textbf{b},\textbf{w}^{\textrm{T}}\Sigma\textbf{w} ),

        where \mu=[\mu_{c_1},\mu_{c_2},...,\mu_{c_{N_c}}] and \Sigma =\textrm{diag}([\sigma _{c_1},\sigma _{c_2},...,\sigma _{c_{N_c}}])

        Hence, the determinant of \textbf{w}^{\textrm{T}}\Sigma\textbf{w} serves as an uncertainty measure of class prediction.

(v) Architecture


(3) 实验及结果

使用合成的数据集进行实验

1. 将0-9共10个数字分为五组,每组的两个数字有相同颜色;

2. 从其中四组中各抽取1个数字构成新的图像(图像中含有4个数字),并分为12个类别;

3. 每个数字就作为图像中的一个concept;

4. 为了增加diversity,可以随机抹除一个数字。

        图(左)“concept 1”存在的概率为1;图(中)“concept 1”存在的概率为0(很自信),因为它检测到了0的存在,而有0就不可能有1(符合事实);

        图(右)既没有0也没有1,这个时候对于“concept 1”存在预测的概率虽然很小,但uncertainty很大。(模型在疑惑:怎么0和1都没有呢?)

        👆通过遮挡,人为地引入ambiguity。观察遮挡前后分类概率和不确定度的变化,以及concept uncertainty的变化,发现遮挡后对应concept的不确定度提高。

        并且,遮挡后在embedding space中对应的椭圆(黄色)更大,代表着不确定度更大。

        👆Real-world datasets的实验结果。图中展示了在不同图像中可能导致的concept ambiguity;左侧鸟所有的概念都能较为清楚地观察到,而中间和右侧的鸟某些concept无法被观察到,表现为uncertainty增加。

        👆人为改变图像使其ambiguous:例如裁剪或改变色调。这会影响原始图像中的某些concept(如物体被删除,或颜色改变),从而增加不确定度。

        实验结果与预期相符。

        👆leg color的两个anchor point;

        如果图像中看不到leg,则体现为较大的椭圆,并且偏离anchor更远。

        👆uncertainty越大,performance越差。

Intervention

        👆干预的concept越多,accuracy越高,class的不确定度越低。

        👆干预的例子,红色为预测错误的concept,干预后分类结果正确。干预后,uncertainty相应的变为0,因为此时concept是人为确定的,不存在不确定度。

        最后是本篇论文的一些讨论:

        Limitations:和CBM类似,需要annotation,受人工标注质量的影响较大。

        一个潜在的问题:图像中可能包含计算机能识别但人类无法理解的concept,但人类无法意识到,甚至会避免这种concept的出现,即使它们对于分类是有用的。


不知道是不是因为字数太多的问题,越写越卡...后面可能另写一篇博客介绍剩余的论文。

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

exploreandconquer

谢谢老板,老板大气!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值