本篇文章发表于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
前几篇文章已经介绍了CBM的主要缺点,即annotation以及accuracy-interpretability之间的 compromise(几乎每一篇文章都会说一遍,CBM确实挖了一个深坑)。在这里就不对CBM的特点做重复讨论了。
本篇文章从题目就可以看出是不需要标注的一种CBM,此外,它是第一个扩展到ImageNet的CBM。与PCBM类似,它也允许将任何神经网络转化为Label-free CBM,主要优点有:
(i) Post-hoc explanations
(ii) More interpretable final layer
(iii) CBM
(iv) Model editing/debugging
(v) CLIP-Dissect
Label-free CBM与其它模型在不同维度的比较。
Label-free CBM的建立需要以下四个步骤:
接下来让我们看一下每个步骤具体的实现方式。
(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,对应的参数为。
具体来说,由Step 1产生的瓶颈层的目标概念 ;
由下游任务提供的训练集(图片);
接着,计算并保存CLIP concept activation matrix :
其中 和 分别是CLIP image and text encoders;
is initialized as a random matrix where is the dimensionality of backbone features ,i.e. ;
We define ,where ;
Use to denote a neuron of interest in the projection layer, and its activation pattern is denoted as and .
即, 是bottleneck layer第 个神经元对应的所有图像样本的activation(一共 个神经元,与概念的数量对应起来);
为了使bottleneck layer的activation可以有效代表concept,需要对它的activation也就是 做一些限制;以往的CBM做法是将此activation与ground-truth concept label(0或者1)对应起来,而在本篇文章中,作者使用一种相似性度量以限制 与对应的concept之间的强相关性,具体为:
代表归一化的 (均值为0方差为1),代表cos cubed similarity(其实就是cosine similarity升到3次并归一化);升到3次可以使similarity对highly activating inputs更敏感;由于本质还是余弦相似度,所以得到的结果介于-1到1之间;我们来仔细分析一下这个式子(为了让我以后还能看懂所以这个地方写的比较啰嗦...):
是什么? 是第 个concept对应的描述文本;
是什么? 是在所有图像上第 个neuron产生的activation;
因此也就理解了为什么要最大化 与 的余弦相似度了——要尽量使第 个neuron产生的activation 与第 个concept对应的描述文本 相匹配;
而具体做法就是最小化矩阵 的第 列 与 的距离——
又是什么? 代表矩阵 的第 列,可以观察一下矩阵 :
的第 列 是文本 的encoding与所有图像的encoding的乘积;
是bottleneck layer第 个neuron在所有图像上产生的activation;
最小化 与 的距离就是使第 个neuron在每一个图像上产生的activation与concept matrix的第 列尽可能一致;
再具体一点:
回顾在CLIP的Concept Matrix中,位于以下蓝色方框的值应该很其它的位置值很小:
对角线一定是最相关的(蓝色),因为CLIP输入的image和text是成对的,本身就是匹配的;而其它位置大概率是不相关的,但因为不同图片中可能包含共享的概念,因此也有配对的情况(图中没有画出来);
Label-free CBM使用的是预训练好的CLIP text and image encoders,但由于此任务是无监督的,即,图片的顺序和概念的顺序不是一一对应的,因此分布情况不一定就在对角线上。比如:
第1张图像中是一个足球,第3张图像是一个香蕉,第6张图像是一个柠檬...
第1个text是“黄色”,第4个text是“酸的”,第5个text是“圆的”...
那么对应的矩阵 :
并且,我们还可以发现CLIP的matrix是N行N列的,而 的行与列不一定相等,一般而言,即概念数量远多于图片数量(一张图片可以有很多概念)。
再回顾一下 :是第 个神经元在所有图像上产生的activation;比如现在我们希望Concept Bottleneck Layer的第1个神经元要与“黄色”这一concept对应起来,那么第1个神经元就要在输入为“香蕉”与“柠檬”的时候产生大的激活值,而在输入为“足球”的时候产生较小的激活值,而这恰好与我们使用CLIP已经计算得到的 的第1列十分相近,因此,只需要拉近它们二者的距离就能保证我们的神经元与概念一一对应。
OK,到此为止真相大白了!CLIP有点像一个老师,教Label-free CBM使CBL的neurons与concepts对应起来。
本文使用Adam训练 ,并在validation时删除所有相似度小于0.45的concepts(这一步对应了concept filtering中的Step 5,即,删除无法正确projection的concepts)无法正确地projection的原因可能是pretrained CLIP无法将我们提供的图片、概念很好地编码到embedding space中,因为我们毕竟只是把CLIP的encoders拿过来用,以实现无监督,而并没有训练或fine-tune;
删除这些concepts之后, 的维度也应该相应变化,即 。
(iii) Step 4: Learning the sparse final layer
现在的目标是训练final predictor with the FC layer ,where is the number of output classes. 我们希望 是sparse的(因为sparse已经被证明是更具有可解释性的);
训练更新 时,固定backbone 以及学习好的concept projection ,优化目标如下:
前一项是交叉熵损失,后一项是一个正则项,用以控制 是sparse的:
使用GLM-SAGA solver来optimize目标函数,选择 ," was chosen such that each model has 25 to 35 nonzero weights per output class",这相当于0.7~15%的weights是nonzero的。
在多个数据集上的表现超越了PCBM以及sparse standard black-box.
Final layer weights的visualization,并展示模型如何区分两个相似的类,比如橘子与柠檬。
由于权重是sparse的,因此很容易将权重可视化。
在实验过程中,作者发现模型所犯的四种不同类型的错误: