Label-Free Concept Bottleneck Models (Label-free CBM)

本篇文章发表于ICLR 2023。

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

代码链接:GitHub - Trustworthy-ML-Lab/Label-free-CBM: A new framework to transform any neural networks into an interpretable concept-bottleneck-model (CBM) without needing labeled concept data

Label-Free Concept Bottleneck Models (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.

二、方法

  • 相关方法:

(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 Concept Bottleneck Models (Label-free CBM)_第2张图片

        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.

Label-Free Concept Bottleneck Models (Label-free CBM)_第3张图片

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

(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

Label-Free Concept Bottleneck Models (Label-free CBM)_第4张图片

        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中,位于以下蓝色方框的值应该很其它的位置值很小:

Label-Free Concept Bottleneck Models (Label-free CBM)_第5张图片

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

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

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

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

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

Label-Free Concept Bottleneck Models (Label-free CBM)_第6张图片

        并且,我们还可以发现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的。


三、实验及结果

Label-Free Concept Bottleneck Models (Label-free CBM)_第7张图片

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

Label-Free Concept Bottleneck Models (Label-free CBM)_第8张图片

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

Label-Free Concept Bottleneck Models (Label-free CBM)_第9张图片

        由于权重是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进行干预:

Label-Free Concept Bottleneck Models (Label-free CBM)_第10张图片

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

Label-Free Concept Bottleneck Models (Label-free CBM)_第11张图片

你可能感兴趣的:(可解释深度学习,计算机视觉,深度学习,图像处理,笔记)