想象你刚被任命为一座美术馆的策展人,要为一辈子没说过话的大画家办一场回顾展。这位画家——一个深度神经网络——画了成千上万幅画,大家都说他的画“有灵性”,可没人说得出好在哪里。你要向观众解释:画家凭什么这样画?于是你走进画室翻他的草稿本(中间层特征图),把每幅画裁成小碎片(超像素分割),把相似的碎片分门别类放进主题抽屉(聚类),再拎着每个抽屉去问评论家“看到这个主题,你的打分会不会变”(TCAV 度量),最后按影响力排序办展。这套流程就是 ACE——“自动概念发现”(Automated Concept-based Explanation)。它不需要一句一句问画家,也不需要人工标注,就能自动从模型的“笔触”里提炼出人类看得懂的概念,并量化每个概念对决策的影响。
掌握 ACE,你就掌握了让深度学习模型“开口说话”的关键手艺——在医疗、自动驾驶、金融风控等高风险场景里,这往往是 AI 获得信任的入场券。
可视化演示
展示ACE方法:多尺度图像分割提取patch,激活向量聚类自动发现概念,并通过TCAV评分评估概念重要性。
本节配有交互动效(进入视口后自动加载,约 3KB)。
自动概念发现ACE 多尺度分割:不同patch大小提取图像局部特征 聚类激活:相似patch的激活向量聚为同一概念 TCAV评分:量化概念对预测类别的方向导数 Score(c,k) = ∂S_c/∂h_k · cos(∇,v_k) 自动发现概念并评估其重要性
概念解释背景
策展人起初只会用“热力图”:在画作上涂一片红色,说“这里重要”。可观众追问:“重要的到底是什么?是一只眼睛,还是眼白里的反光?”他答不上来。这是所有传统显著性方法的通病——它们只告诉你“哪里被关注”,却不说“被关注的到底是什么”。
可解释 AI(XAI)真正想回答的不只是“模型看了哪里”,更是“模型看懂了什么”。人类几乎从不说“这只狗因为第 37 号像素被认出来”,而更习惯说“因为耳朵、鼻子、毛色”。人类用概念思考,解释也就应该建立在概念之上。
概念解释(Concept-based Explanation)的主张是:把模型的内部状态与人类语义概念对齐。热点图(Saliency Map)是像素级的、非结构化的;概念解释是片段级的、可组合的。要做到这一点,需要三种能力:自动发现概念(不依赖人工标注)、定位概念位置(在哪一层、哪个区域出现)、度量概念重要性(哪个概念真正左右了输出)。
所以策展人决定扔掉温度计式的红热图,改用“主题抽屉”的办法——这正是 ACE 的出发点:不是问“哪里”,而是问“什么”。
- 模型输出给定输入图像 x,模型对目标类别(比如“狗”)输出的置信度得分。
- 梯度算子对输入求偏导,衡量每个像素微小扰动引起的输出变化量。
- 二范数取模把梯度各分量平方和再开方,得到像素级“重要性”标量场。
- 语义缺失这个标量场没有类别归属,无法回答“红色区域是什么概念”。
ACE核心思想
策展人的完整方案分四步:翻草稿本、裁画作、分抽屉、问评论家。ACE——自动概念发现(Automated Concept-based Explanation)——把这套流程形式化为一条端到端管线,发表于 2019 年的论文 Towards Automatic Concept-based Explanations。
第一步“翻草稿本”是特征提取:把图像喂给预训练模型,取中间某一层(比如某个卷积层的输出)作为特征图。这层特征图既保留了空间位置信息,又编码了高维语义,是概念候选的原材料。浅层的“草稿”是纹理线条,深层的“草稿”是像“眼睛”“轮子”这样的部件。
ACE 把“概念”定义为“一组相似特征模式的聚合体”。完整管线由四个模块组成:特征提取 → 分割(把输入或特征图裁成碎片)→ 聚类(把相似碎片归组,组心即概念向量)→ TCAV 度量(量化每个概念对决策的重要性)。它最重要的性质是模型无关(model-agnostic):只要模型可微,ACE 就能像外挂一样插在任意预训练模型后面,不修改原模型任何参数。
四步管线就像策展人的策展手册:先有原材料,后有分拣,再有评判。接下来三节分别展开分割、聚类和 TCAV 三个关键环节。
- 输入图像原始图片,相当于画家的创作素材。
- 层级映射模型第 l 层的变换函数,把像素变成抽象特征。
- 特征张量输出形状为 c×h×w,c 是通道数,h 和 w 是特征图的高与宽。
- 概念原材料每个空间位置上的 c 维向量,就是后续分割与聚类的原料。
图像分割模块
要分抽屉,得先把整幅画裁成碎片。策展人用的不是直尺网格,而是一把“贴合边缘的小刀”——SLIC 超像素分割。它把颜色、纹理相近的相邻像素合并成不规则小区域,就像沿着物体轮廓裁剪,不会把一个轮子切成两半。
超像素(Superpixel)是比像素高一层的“原子区域”。分割完成后,每个超像素碎片都会在特征图上做一次池化,得到一个固定维度的特征向量——这就是概念候选(concept candidate)。碎片数量由尺度参数 S 控制:S 小则碎片多而细,S 大则碎片少而粗。
SLIC 的精髓在于平衡两个距离:颜色距离与空间距离。颜色相似但隔得很远的两个碎片,不该被当成同一个东西;颜色不同但紧挨着的区域,也不该被强行合并。这个平衡系数决定碎片是否真正贴合语义边界。
裁好碎片后,策展人面前堆起了小山一样的纸片——它们就是概念候选。下一步,分拣员该上场了。
- 颜色距离两个像素在 LAB 颜色空间的欧氏距离,衡量外观相似度。
- 空间距离两个像素的坐标距离,防止碎片飞出局部邻域。
- 平衡系数m 控制边界贴合度与形状规则的权衡,S 是网格步长。m 越大碎片越方正,m 越小碎片越贴边缘。
- 合成距离D 小则两像素归入同一超像素,从而实现“外观近且位置近”的分割。
概念聚类发现
碎片堆成了小山,策展人请来分拣员 K-means 按外观相似度自动归类:所有长得像“轮子”的碎片进一个抽屉,像“车窗”的进另一个抽屉。分拣员不识字,但眼力极好——它只看“像不像”,不看“叫什么”。
聚类在碎片特征向量上进行。每个簇的簇心(centroid)就是这一组碎片的平均特征,称为该概念的“原型”,也是后续概念激活向量(CAV)的雏形。ACE 也支持 GMM(高斯混合模型)做软归属:一个碎片可以带着不同权重属于多个概念,适合概念边界模糊的情况;但 K-means 计算更轻、更常用。
聚类数 k 的选择是关键决策:k 太小,概念太粗,“车身”和“车窗”会挤在同一个抽屉里;k 太大,概念被碎片化,“左轮”和“右轮”被拆成两个抽屉。实践中通常用肘部法则(看 J 值下降的拐点)加语义抽查共同决定。
抽屉分好了,可策展人还面临一个灵魂问题:每个抽屉里的主题,对“画作被评为佳作”到底贡献了多少?这就要请评论家出场了。
- 碎片向量第 i 个超像素碎片经过池化得到的特征向量。
- 簇集合被分到第 k 组的所有碎片组成的集合。
- 簇心该组特征向量的均值,代表这个概念的原型模式。
- 目标函数所有簇的组内平方距离总和,J 越小聚类越紧凑。
TCAV重要性度量
现在到了最精妙的环节:问评论家。策展人拎着一个主题抽屉(比如“轮子”)走到评论家面前:“如果画里出现这个主题,你的打分会怎么变?”评论家当然不会说话,但策展人可以用数学轻轻地“推”它一下,观察它的打分变化。
形式上,这个“轻推”就是方向导数。ACE 先用当前概念簇的碎片与随机碎片训练一个线性分类器,分类超平面的法向量就是概念激活向量(CAV)v_C——它代表“朝这个概念走一步”的方向。然后计算模型输出对这一层激活的梯度,与 v_C 做内积,得到方向导数 S_C(x):正的越大,表示这个碎片让模型越偏向目标类别。
单张图有噪声,TCAV 得分就统计目标类别所有测试图片上方向导数为正的比例,再做双样本 t 检验确认结果显著。得分接近 1 表示“概念在,模型几乎总是偏向该类”;接近 0.5 表示概念与决策无关;接近 0 甚至可能是抑制作用。
评论家实验让每个主题抽屉都有了“影响力分数”。策展人据此排出展厅的主次顺序,但还有最后一件事要做:给每只抽屉贴上一张观众看得懂的名字。
- 概念方向第 l 层上区分“概念碎片 vs 随机碎片”的分类器权重,代表概念的“走向”。
- 方向导数输出对第 l 层激活的梯度与概念方向的内积,衡量“沿概念方向走一步,输出变化多少”。
- 正导计数统计目标类别样本集中,方向导数为正的样本个数。
- 归一化正导样本数除以总样本数,得到 0 到 1 之间的 TCAV 得分。
概念语义标注
重要概念找到了,可抽屉上的标签还写着“簇 3”——观众一头雾水。策展人得给每个重要抽屉贴人类标签:“轮子”“车窗”“背景纹理”。这一步叫概念语义标注。
具体做法是:抽取每个簇中与簇心最接近的若干碎片作为示例图,交给标注人员为簇赋予名称;同时计算概念纯度——簇内碎片与标签语义的一致比例。纯度低于阈值的簇被视为“伪概念”直接丢弃,比如把“噪声条纹”误当成重要线索的簇。
评估还要回答“这个概念靠谱吗”,通常有三道关卡:一是统计显著性(TCAV 的 t 检验),确认得分不是偶然;二是语义一致性(多名标注人员的标签一致率);三是干扰实验——把该概念对应的区域从图中抹掉或遮住,观察模型预测是否显著下降。三道关卡都过关,概念才算“立得住”。
展签贴完、质检过关,展览才算真正面向观众。但在一场大型回顾展背后,还有预算、排期和存档这些工程杂务——ACE 的落地也一样。
- 候选标签集人工为概念簇准备的候选语义集合,比如“轮子”“车窗”各对应一批已标注图片。
- 指示函数判断碎片 x_i 的真实语义类别 y_i 是否等于候选标签 t。
- 取最大值在全部候选标签中选出契合度最高的那个,作为该簇的语义标签。
- 归一化除以簇大小,得到 0 到 1 的纯度分数,低于阈值则判为伪概念。
工程实践要点
一场大型回顾展背后是团队分工:数据管理员、计算调度员、版本管理员。ACE 要真正跑在生产环境里,同样离不开数据可信层与工程管线的支撑。
数据可信层方面,概念发现对数据分布非常敏感——训练集和解释集的分布不一致,解释结果就会失真。因此需要数据版本管理(记录用了哪个快照的数据)、分层抽样(按类别等比采样保证概念覆盖)、以及标注留痕(谁在什么时候给哪个簇贴了标签)。计算取舍上,特征提取天然可并行;聚类在样本量极大时可以先用子集估算簇心,再用 Mini-Batch 迭代细化;TCAV 得分用几百张图就能稳定估计,不必全量计算。
可复现性是解释可信的前提:固定随机种子、记录聚类数 k、层选择、SLIC 的 m 与 S 等全部配置,并生成配置哈希作为解释产物的版本号,与模型版本绑定。集成方式上,ACE 是模型无关的后处理管线:通过标准接口接收“模型 + 数据”,输出“概念报告”,不改动模型推理路径,因此可以安全地接到灰度发布流程中。
工程上把“跑得动、管得住、能复现”这三点做扎实,策展团队才能稳定地批量生产概念报告,而不是每次都在临时脚本里挣扎。
- 总体标准差概念得分在全量数据上的波动程度。
- 样本量用于计算 TCAV 得分的图片张数。
- 标准误估计误差随 n 增大按根号规律下降,n 到几百量级即趋于稳定。
应用场景局限
展览开幕,观众反响热烈。在医疗影像科室,策展人发现了“肺结节毛刺征”这个高重要度概念,医生们点头认可;在自动驾驶实验室,“行人轮廓”“车道线”被自动发现并进入决策审计清单。ACE 的视觉概念发现能力,在高风险场景中价值尤为突出。
但 ACE 也有清晰的边界。首先,概念质量依赖聚类假设——如果同一类概念外观差异巨大(比如不同车型),聚类会把“车”裂成多个碎片簇;其次,层选择敏感——浅层特征给出纹理,深层给出语义,选错层解释就会漂移。一个隐含前提是 ACE 主要面向视觉任务,做表格或文本概念发现还需要重新适配。
更隐蔽的坑是伪相关:概念与标签统计相关,不等于因果。比如训练数据里“雪地”频繁与“雪橇犬”共现,TCAV 会给“雪地”高分,但它只是环境偏差。改进方向包括:概念干预实验(删除该概念看预测是否真的崩)、反事实生成(合成不含该概念的样本)、以及与因果结构模型结合。
与 LIME、SHAP 等局部解释工具协同,ACE 提供“全局概念图景”,局部工具回答“单个样本为什么这么分”,二者互补,共同构成可信 AI 的完整证据链。
- 正类条件概率正类样本中出现概念 C 的比例。
- 负类条件概率负类样本中出现概念 C 的比例。
- 相关差值Δ 大说明概念与标签强相关,但相关 ≠ 因果,需干预实验确认。
AI 应用场景
医疗影像——肺结节筛查模型的解释审计
阶段:模型审计与合规
解决的问题:传统热点图只能给出模糊的红色区域,放射科医生和监管方要求“为什么判为高危”的可追溯证据。ACE 能自动发现“毛刺征”“钙化点”“胸膜牵拉”等医学概念,并计算每个概念的 TCAV 得分,生成带示例图的解释报告。
具体案例:某三甲医院对肺结节筛查模型做上线前审计,ACE 在 5000 张 CT 切片上发现“毛刺征”概念 TCAV 达 0.87,而“扫描床板纹理”这类伪概念因纯度不达标被过滤。解释报告获得科室签字认可,模型顺利通过伦理审查。
自动驾驶——感知模型的决策线索验证
阶段:模型验证与 Debug
解决的问题:感知模型在雨雾天气误判时,工程师需要定位模型到底“看”了哪些概念。热点图无法区分“行人头部”与“路面反光”,ACE 则能在中间层自动发现概念并量化其对“刹车决策”的影响,帮助团队判断模型是否存在捷径学习。
具体案例:某自动驾驶团队发现雨雾天气误刹率偏高,用 ACE 分析后定位到概念“车灯反光斑”TCAV 高达 0.79,工程师随即在训练数据中增补无车灯反光的雨天样本,误刹率下降 32%。
电商推荐——点击率模型的素材洞察
阶段:特征洞察与业务迭代
解决的问题:运营想知道“什么样的主图能提升点击”,却只能靠 A/B 测试瞎试。ACE 为点击率模型自动发现视觉概念(品牌 Logo、促销标签、模特姿势)及其重要性排名,把“模型为什么点它”翻译成运营听得懂的语言。
具体案例:某电商用 ACE 分析 10 万张主图,发现“满减标签”概念 TCAV 为 0.72,而“复杂背景”是负向概念。运营据此统一了促销标注重心位置,页面点击率提升 9%。
Python 演示
# -*- coding: utf-8 -*-"""简化版 ACE:自动概念发现 + TCAV 重要性度量用合成图形图片模拟 CNN 特征图, 演示分割 -> 聚类 -> CAV -> TCAV 评分 的完整管线。"""import numpy as npfrom sklearn.cluster import KMeansfrom sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import train_test_split rng = np.random.default_rng(2024) def make_image(label): """合成 8x8 图片: 0=背景, 1=斑点, 2=轮子""" img = np.zeros((8, 8), dtype=int) if label == "vehicle": for _ in range(3): i, j = rng.integers(0, 6, size=2) img[i:i + 2, j:j + 2] = 2 if rng.random() < 0.5: i, j = rng.integers(0, 6, size=2) img[i:i + 2, j:j + 2] = 1 else: for _ in range(4): i, j = rng.integers(0, 6, size=2) img[i:i + 2, j:j + 2] = 1 if rng.random() < 0.4: i, j = rng.integers(0, 6, size=2) img[i:i + 2, j:j + 2] = 2 return img def segment_featurize(img, block=4): """分割: 裁成 2x2 超像素块, 展平为特征向量""" h, w = img.shape feats = [] for i in range(0, h, block): for j in range(0, w, block): feats.append(img[i:i + block, j:j + block].ravel()) return np.array(feats, dtype=float) def discover_concepts(feats, k=4): """聚类: 簇心即候选概念表示""" km = KMeans(n_clusters=k, random_state=0, n_init=10) return km.fit_predict(feats), km.cluster_centers_ def concept_activation_vector(pos, neg): """CAV: 概念碎片 vs 随机碎片训练线性分类器取权重""" X = np.vstack([pos, neg]) y = np.hstack([np.ones(len(pos)), np.zeros(len(neg))]) clf = LogisticRegression(max_iter=1000) clf.fit(X, y) w = clf.coef_[0] return w / (np.linalg.norm(w) + 1e-9) def tcav_score(cav, feats): """TCAV: 方向导数为正的样本占比""" return float(np.mean(feats @ cav > 0)) def show_prototype(center): """把概念原型画成 4x4 的字符画""" proto = (center > 0).astype(int).reshape(4, 4) for row in proto: print(" " + "".join("#" if v else "." for v in row)) def main(): veh = [make_image("vehicle") for _ in range(80)] ani = [make_image("animal") for _ in range(80)] train_v, test_v = train_test_split(veh, test_size=0.3, random_state=1) train_a, test_a = train_test_split(ani, test_size=0.3, random_state=1) layer = np.vstack( [segment_featurize(img) for img in train_v + train_a] ) labels, centers = discover_concepts(layer, k=4) random_patches = layer[rng.integers(0, len(layer), size=len(layer))] test_feats = np.vstack( [segment_featurize(img) for img in test_v] ) scores = {} for k in range(4): cav = concept_activation_vector(layer[labels == k], random_patches) scores[k] = tcav_score(cav, test_feats) for k in sorted(scores, key=scores.get, reverse=True): print(f"概念簇 {k} | 样本数 {np.sum(labels == k):3d} | " f"对车辆类 TCAV = {scores[k]:.3f}") show_prototype(centers[k]) if __name__ == "__main__": main()
img = np.zeros((8, 8), dtype=int)铺一张空白画布,模拟输入图像。segment_featurize(img, block=4)把 8×8 图片裁成 4 个 4×4 的超像素块并展平,模拟“分割出概念候选”。km = KMeans(n_clusters=k, random_state=0, n_init=10)分拣员,把相似碎片归入同一概念簇。concept_activation_vector(pos, neg)用概念碎片与随机碎片训练线性分类器,取权重作为概念方向 CAV。w / (np.linalg.norm(w) + 1e-9)把方向向量归一化,避免向量模长干扰后续内积比较。np.mean(feats @ cav > 0)计算方向导数为正的样本占比,即 TCAV 得分。train_test_split(veh, test_size=0.3, random_state=1)训练测试切分,确保概念与得分评估不在同一批数据上。scores[k] = tcav_score(cav, test_feats)记录每个概念簇对“车辆”类预测的影响力。show_prototype(centers[k])把概念原型画成字符画,直观展示“轮子”簇长什么样。
常见误区
误区ACE 号称自动发现概念,聚类出来的簇天然就带着“轮子”“眼睛”这样的语义,模型自己知道这些概念是什么。
正解ACE 的聚类是完全无监督的,它只按特征相似度把碎片归组,簇本身没有任何语义。它像一个不认识字的分拣员,只负责把长得像的纸片放进同一个抽屉。“轮子”这个标签是人类在语义标注阶段贴上去的。聚类给出的是结构,语义来自人。
为何常见:“自动发现”四个字很有迷惑性,让人误以为自动等于理解。实际上自动化的只是“发现相似模式”这一步,命名与质检仍然需要人工参与。
误区TCAV 得分 0.87 说明这个概念是模型判断的真正原因,删掉它模型就会失灵。
正解TCAV 度量的是统计学相关性——“概念出现时输出偏向目标类”的样本比例。如果训练数据里“雪地”与“雪橇犬”总是同时出现,TCAV 会给“雪地”打高分,但它只是环境偏差。要论证因果关系,需要做概念干预实验(遮蔽概念区域看预测是否崩溃)或反事实合成,单靠 TCAV 得分不够。
为何常见:人们容易把“预测时被依赖的特征”直接等同于“导致结果的真正原因”,混淆了预测依据与因果机制。
误区既然深层特征更抽象、语义更强,那就选最后一层卷积做概念发现,效果一定最好。
正解太深的层高度任务特化,且空间分辨率被压缩得厉害,概念碎片很难在图像上定位;太浅的层又只是纹理和边缘。实践中一般选中间偏后的卷积层,并在多个层上分别做概念分析后对比,才能找到“人类可理解 + 与决策相关”的最佳平衡点。
为何常见:“越深越抽象越好”的直觉在分类任务里成立,但在需要空间定位的解释任务里,深度过高反而丢失了“概念长在哪儿”的信息。
误区有了 ACE 就不需要其他解释工具了,它既能发现概念又能给出重要性,一套搞定全部解释需求。
正解ACE 回答的是全局问题:“模型整体上依赖哪些概念”;LIME、SHAP 回答的是局部问题:“这一个样本为什么被分成这一类”。一个是展厅的全景导览,一个是具体某幅画的讲解。二者互补而不是替代,实际解释报告中往往一起使用。
为何常见:这是“一个工具打天下”的偷懒思维。全局解释和局部解释服务不同的合规与调试场景,需求不同,工具自然不同。
面试题
Q1. ACE 算法中“概念”的本质是什么?
- A.单个高亮像素级重要性
- B.相似特征碎片的聚类簇← 正确答案
- C.神经网络权重矩阵本身
- D.人工标注的语义标签库
答案:B。ACE 把特征碎片聚类,相似的碎片归为一簇,这个簇就是“概念”。它不需要人工标注(D 错),不是单个像素(A 错),更不是模型权重(C 错)。B 准确地描述了概念的本质——无监督聚类得到的特征模式集合。
Q2. ACE 管线的正确执行顺序是?
- A.分割→提取→聚类→TCAV
- B.提取→分割→聚类→TCAV← 正确答案
- C.聚类→提取→TCAV→分割
- D.TCAV→聚类→分割→提取
答案:B。ACE 先提取中间层特征图作为原材料,再分割成概念候选碎片,然后聚类形成概念簇,最后用 TCAV 度量重要性。顺序错了,后面的模块就没有输入。B 是论文中定义的唯一正确顺序。
Q3. SLIC 超像素分割的主要作用是什么?
- A.压缩图像文件的体积
- B.生成贴合边缘的候选碎片← 正确答案
- C.提升模型预测的精度
- D.将标签翻译成人类语言
答案:B。SLIC 沿物体边缘把图像裁成超像素碎片,作为概念发现的候选单元。它不压缩文件(A 错)、不训练模型(C 错)、也不做语义翻译(D 错)。贴合边缘的分割保证碎片不会把“半个轮子”当成概念。
Q4. 概念激活向量(CAV)的方向向量如何获得?
- A.对全连接层做奇异值分解
- B.训练分类器取其权重方向← 正确答案
- C.直接取聚类簇心的归一化
- D.在输入像素上梯度下降
答案:B。TCAV 的标准做法是用“概念碎片 vs 随机碎片”训练一个线性分类器,分类超平面的法向量(即权重方向)就是 CAV。簇心只代表原型,不是分类方向;SVD 和像素级梯度下降都与 CAV 定义无关。
Q5. 关于 TCAV 得分的描述,正确的是?
- A.方向导数为正的样本比例← 正确答案
- B.损失函数在测试集上的均值
- C.概念样本在总样本中的占比
- D.聚类误差平方和的大小
答案:A。TCAV 得分 = 目标类样本中方向导数大于 0 的比例,衡量“看到这个概念时模型多大程度上偏向目标类”。损失均值、样本占比、聚类误差都与 TCAV 的定义无关。
Q6. 为什么 TCAV 得分高不能直接证明因果关系?
- A.因为模型经过对抗防御训练
- B.概念与标签可能只是统计共现← 正确答案
- C.因为方向导数存在浮点误差
- D.因为聚类数 k 选取不唯一
答案:B。TCAV 度量的是相关性:概念与标签共同出现的频率高,得分就高。但“雪地”与“雪橇犬”的共现不等于“雪地导致雪橇犬”。要证明因果,需借助概念干预或反事实实验,浮点误差和 k 值选取都不影响因果性判断本身。
Q7. 选择较浅的卷积层做概念发现,通常得到什么?
- A.更抽象的高层语义概念
- B.更细粒度的纹理颜色属性← 正确答案
- C.更准确的分类决策边界
- D.更大的 TCAV 重要性得分
答案:B。浅层特征分辨率高但语义弱,适合发现纹理、颜色、边缘等细粒度属性;深层特征语义强但空间信息少,适合发现“眼睛”“轮子”这类部件级概念。层不是越浅或越深越好,需要按解释目标选择。
Q8. ACE 管线包含以下哪些模块?(多选)
- A.特征图提取← 正确答案
- B.超像素分割← 正确答案
- C.特征聚类← 正确答案
- D.卷积核剪枝
答案:ABC。ACE 四步管线是特征提取、图像分割、聚类、TCAV 度量,A/B/C 恰好是前三步。卷积核剪枝属于模型压缩技术,与概念发现完全无关。
Q9. 以下哪些做法能提升概念解释的质量?(多选)
- A.用纯度过滤低质量伪概念← 正确答案
- B.对多个中间层分别做分析← 正确答案
- C.用随机碎片对照训练 CAV← 正确答案
- D.删掉全部预训练参数
答案:ABC。纯度过滤能剔除噪声簇,多层分析能避免层选择偏差,随机对照是训练 CAV 的标准做法,三者都能提升解释质量。删掉预训练参数等于毁掉模型,与提升解释质量背道而驰。
Q10. 关于 ACE 局限性的正确说法包括?(多选)
- A.概念质量依赖聚类假设与层选择← 正确答案
- B.可能把环境伪相关当作重要概念← 正确答案
- C.TCAV 得分能证明概念间因果
- D.不同超参数下结果可能漂移← 正确答案
答案:ABD。ACE 的局限是结构性的:聚类假设与层选择直接影响概念质量(A 对);统计共现可能制造伪概念(B 对);超参数敏感导致结果漂移(D 对)。TCAV 只能证明相关性,不能证明因果,C 说反了。