想象你是一家米其林餐厅的老板,后厨里有一位从不露面的“黑箱大厨”。他做出的每道菜都惊艳四座,但当你想知道他为什么能把食材搭配得这么好时,他却只会耸肩——而且说着一门你听不懂的语言。你手里只有两样工具:每道菜端上桌前的“内部风味检测记录”(神经网络的激活值),以及反复做对照实验的能力。自动概念发现(Automatic Concept Discovery),就是一支“美食侦探团队”要做的事:在成千上万道菜的味觉空间里,找出这位大厨真正依赖的“风味主轴”——比如“果香”、“焦糖化”、“微辣回甘”——然后用你能听懂的话告诉你:它凭什么觉得这道菜是招牌。在 AI 的世界里,这位黑箱大厨就是深度神经网络:预测精准,解释缺席。自动概念发现方法要做的,正是把网络内部高维、难懂的数字信号,翻译成“条纹”、“微笑”、“果香”这样人类能理解的概念,并量化每个概念对决策的影响。这篇文章将用一条“翻译黑箱大厨”的故事线,带你从概念的定义、概念激活向量、TCAV 归因、概念瓶颈模型,一路走到自动发现流程、质量评估与前沿挑战。
对 AI 从业者来说,掌握自动概念发现,意味着拥有给“黑箱”装仪表盘的能力——无论是算法审计、模型调试还是合规解释,你都能用人类听得懂的语言回答“模型为什么这么判断”。
可视化演示
展示ACE自动概念发现的完整管道、TCAV概念重要性度量,以及概念质量评估与噪声剔除机制。
本节配有交互动效(进入视口后自动加载,约 3KB)。
概念发现管道 多尺度分割提取图像片段 激活聚类发现候选概念 Img→Seg→Act→Cluster→Concept 从数据中自动挖掘人类可理解概念
概念发现概述
美食侦探团队的第一课,是区分“化学分子”和“风味”这两个层次。大厨做菜时,鸡肉表面在高温下发生美拉德反应,产生上百种化学物质——这些微观颗粒就像是神经网络的底层特征:真实存在、数量庞大、但人类根本没法在餐桌上说“这道菜里有 3-羟基-2-甲基吡啶”。食客能说的只有“有焦糖香”。“风味”就是这道菜的概念。在可解释 AI 中,概念被定义为人可理解的高层抽象——“条纹”、“微笑”、“果香”——它们不是某个像素,也不是某个神经元,而是网络内部激活空间里的一个方向。
从技术角度看,一个概念 $c$ 被表示为单位方向向量 $v_c$,位于模型第 $l$ 层激活空间 $\mathbb{R}^d$ 中。对于输入 $x$,我们记该层激活为 $g_l(x)$,它是“这道菜在味觉坐标里的位置”;概念分数则是激活向量在这个方向上的投影,衡量“这道菜到底带多少这个概念”:
人类不感知化学分子,只感知风味;模型不输出概念,只输出数值。概念就是这个中间翻译层——它让“模型为什么这么判断”变成“因为这道菜的‘果香轴’很强”这种能讨论的话。这也正是概念解释方向的核心价值:把解释单位从像素级放大到人类认知级。
- 激活向量输入 $x$ 经过网络第 $l$ 层后得到的向量,相当于菜在味觉空间里的坐标。
- 概念方向与概念 $c$ 对应的单位方向向量,就像“辣度轴”从“清淡”指向“爆辣”。
- 内积打分把坐标与方向做点积,分数越高代表这道菜越有这个概念的味道。
概念激活向量
侦探团队接下来要解决一个实操问题:怎么在味觉空间里给“果香轴”定位?他们没有魔法,只有一批菜——一部分是概念样本(被认为“果香”明显的菜),另一部分是随机挑的普通菜。团队的做法是:把两批菜的风味坐标放在一起,训练一个最简单的“线性裁判”,让它学会区分这两批菜。裁判给出的那条分界线,其法向量就是我们要找的概念方向。这个方向,被称为概念激活向量(Concept Activation Vector, CAV)。
形式化地说,给定概念样本集 $\mathcal{C}$ 与随机样本集 $\mathcal{R}$,我们为每个样本打标签 $y_i \in \{+1, -1\}$,在激活空间上训练逻辑回归分类器:
得到的权重向量 $v_c^\ast$ 就是超平面的法向量,归一化后即概念方向。为什么要用“随机样本”当对照组?这就像判断“果香”时,必须拿普通菜而不是拿“所有甜点”来对比——否则你找到的方向可能是整个甜品类别的差异,而不是果香本身。概念对照组的选取,直接决定了方向的纯度。
有了 CAV,侦探团队就拿到了“风味轴”的刻度尺。接下来的问题是:这个风味轴到底对模型的判断有多大影响?这就要进入下一关——归因分析。
- 构造样本对把概念样本和随机样本的激活值收集起来,打上正负标签。
- 训练线性分类器逻辑回归在激活空间中学出一条分界超平面。
- 取法向量为方向分界面的法向量指向概念的“正面”,归一化后就是 CAV。
概念归因分析
找到了“果香轴”,不等于证明大厨真的靠果香打高分。团队设计了一个实验:偷偷把一道菜的“果香”拧大一点点,观察大厨的评分(模型的输出值)会不会跟着涨。如果会,说明这条风味轴确实影响他的判断;如果毫无变化,那这条轴再明显也只是“装饰性”的。这个实验思路,就是著名的 TCAV(Testing with Concept Activation Vectors) 分数。
技术上说,我们先取模型对类别 $k$ 的输出对数几率 $S_k$,然后计算激活向量沿概念方向 $v_c$ 的方向导数。方向导数为正,意味着“加强这个概念会让该类预测分数上升”。TCAV 分数就是类别 $k$ 的样本中,方向导数为正的比例:
TCAV 告诉我们“这个概念和决策正相关”,但请注意:相关不等于因果。就像我们发现大厨评分高的菜都带果香,并不能证明他真的是靠果香打分——也许果香只是他偏爱某种食材的“影子”。要锤实因果,得靠第 7 节讲的干预实验。不过,TCAV 作为第一道筛查网,已经足够帮我们用人类语言排出“解释的候选名单”。
- 方向导数沿概念方向给激活加一个小扰动,看输出对数几率的变化率。
- 符号判定大于零记为 1,表示“加强概念会让该类分数上升”。
- 全局平均在类别样本上求比例,得到稳定的敏感性分数。
概念瓶颈模型
前面的方法都是“事后解释”:模型已经训练好了,侦探团队再偷偷解剖。但换个思路——与其事后猜,不如一开始就要求大厨先写配料表,再进厨房。这就是概念瓶颈模型(Concept Bottleneck Model, CBM)的核心思想:预测必须先经过一层显式的、人类可读的概念,再由这些概念决定最终输出。配料表成了模型的“瓶颈”,也成了人的检查点。
在结构上,模型被拆成两段。第一段是概念预测层,输入 $x$ 后先预测 $K$ 个概念;第二段是高层的组合器 $h$,它只能看到概念,不能再偷看原始特征。最终预测写作:
概念瓶颈模型带给侦探团队一个额外武器——干预性解释:如果医生说“我认为这个结节没有‘毛刺征’”,我们可以手动把该概念置零,再让模型重新判断。这就像在大厨的配料表上划掉“辣椒”,看他做出来的菜会不会变成另一种风格。可解释性从“观察”升级成了“实验”。
- 概念预测层每个概念由一个小探针预测,输出该概念存在的概率或二值判断。
- 组合器最终预测只吃概念向量,与原始输入完全隔离。
- 训练方式可以端到端联合训练,也可以先训概念层再训组合器。
自动发现流程
前面几节回答了“方向怎么定义、怎么归因”,但自动概念发现真正迷人的地方在于:给定一个训练好的模型,我能不能自动地找出它到底依赖哪些概念?侦探团队把这套流程总结成一条四步流水线:收集样本、提取表示、挖掘候选、验证落地。
第一步是数据准备:选定一个候选概念(比如“条纹”),收集一组包含条纹概念的样本,再准备一组随机对照样本。第二步是表示提取:把两组样本喂进模型,取某一隐藏层的激活向量——这是“每道菜的风味坐标”。第三步是候选挖掘:在激活空间里找出能区分两组样本的方向,最朴素的做法就是对概念样本的激活做归一化后取平均,这个“原型方向”就是候选概念方向:
第四步是概念验证:把候选方向送进 TCAV 归因和纯度检查,合格的留下,不合格的丢弃。整个流程很像侦探团队在大量菜谱里筛“关键佐料”:先靠统计找出主轴,再靠实验确认影响力。这也是现代概念发现工具(如 ConceptX、CCM 等)的共同骨架。
- 归一化激活每条激活除以自身长度,消除样本间幅度的干扰。
- 逐样本平均把所有概念样本的方向向量求平均,得到“典型方向”。
- 可选正交化对挖掘出的多个候选方向做去冗余处理,避免概念互相重叠。
质量评估指标
自动发现一打方向并不难,难的是区分“好概念”和“伪概念”。就像美食评分要有标准,概念质量也要有仪表。团队用两个最基础的指标开场:纯度(Precision) 和 覆盖度(Recall)。概念分数超过阈值就判为“包含概念”,与人工标注对比:
除了这两个指标,还有“完整性”——把发现的所有概念拼在一起,能解释模型多少行为,就像用一堆风味词能否描述完大厨的全部招牌菜;以及“用户研究”——请真实人类来判断这些概念是否听得懂、有说服力。记住:概念是给人用的,如果领域专家看了摇头,指标再漂亮也是自嗨。
- 阈值判定概念分数超过阈值 $\tau$ 即预测为正例。
- 精确率预测为正例的样本中,确实包含概念的占比。
- 召回率真实包含概念的样本中,被成功找出的占比。
挑战与前沿
最后,侦探团队遇上了最难啃的骨头。第一个对手叫概念多义性:“辣”这个字背后,是辣椒的灼烧、花椒的麻、芥末的冲——一个方向可能编码多种不同语义。第二个对手叫监督依赖:很多方法仍然需要一组人工挑好的概念样本,真正的“无监督发现”还远未成熟。第三个对手是相关性陷阱:TCAV 分数高,只能说明概念与输出相关,不能证明模型真的“用”它做了决定。
当前沿的解法也在路上。交互式发现让人类专家和算法对话,逐步细化概念边界;因果校验则引入干预实验:直接把激活沿概念方向加一个步长 $\alpha$,看模型的输出怎么变:
概念解释的边界在一点点被推开。或许某一天,黑箱大厨会心甘情愿交出一份完整的“概念菜谱”——而自动概念发现,正是让这份菜谱从“蒙”走向“可证”的关键手艺。
- 正向扰动把每条激活沿概念方向加上小步长,模拟“把果香拧大一点”。
- 输出差值计算扰动前后对数几率的变化,正数代表支持该类别。
- 统计检验多次重复并与随机方向的干预结果对比,排除偶然性。
AI 应用场景
医学影像辅助诊断审计
阶段:模型部署后的可解释性审计与合规审查
解决的问题:肺结节分类模型准确率很高,但放射科医生不敢直接采信。传统方式只能给出显著图(热力图),医生看不懂“为什么这个区域重要”。用自动概念发现,算法团队可以自动找出模型依赖的概念,比如“磨玻璃影”、“分叶征”、“毛刺征”,把黑箱翻译成医生熟悉的影像学术语。
具体案例:某三甲医院引入肺结节 AI 辅助系统后,算法工程师用 TCAV 逐概念检验,发现模型对“毛刺征”概念的敏感性意外偏低,反而过度依赖图像中的“扫描设备水印”。团队据此补充训练数据并修正模型,使误诊率下降 17%,模型也通过了医院伦理委员会的审计。
自动驾驶感知模型鲁棒性排查
阶段:模型上线前的弱点发现与 ODD(运行设计域)评估
解决的问题:感知模型在标准测试集上表现优异,但在雨天、隧道等场景偶发失效。传统回归测试很难定位“模型到底被什么环境因素迷惑”。概念发现可以把“雨滴反光”、“隧道暗光”、“护栏条纹”等环境因素作为候选概念,批量度量它们对车辆识别输出的敏感性。
具体案例:某自动驾驶团队对夜间模式感知模型做概念审计,发现“霓虹灯招牌”与“红绿灯”两个概念的激活方向高度纠缠——模型经常把红色招牌误判为红灯。团队利用概念瓶颈模型的干预能力,在推理阶段手动抑制“招牌”概念,使误判率下降 32%,为后续数据采集提供了明确方向。
大模型公平性审计
阶段:模型发布前的偏见检测与治理
解决的问题:大语言模型可能隐式学到性别、种族等偏见,但这类偏见藏在海量参数里难以定位。自动概念发现可以从文本表征空间中挖掘“性别关联”、“地域刻板印象”等概念方向,让审计从“猜”变成“量”。
具体案例:某互联网公司在上线智能招聘助手前,利用概念发现方法在模型中间层定位到一个“性别-职业”关联方向,量化分析发现该方向对“护士”与“程序员”类预测的 TCAV 分数显著失衡。安全团队据此对表征空间做偏移校正,并通过干预实验验证偏见概念的影响得到抑制。
Python 演示
import mathimport random def make_activations(n=300, seed=1): """生成模拟激活空间:一部分样本携带'条纹'概念。""" rng = random.Random(seed) true_dir = [0.8, 0.6] data, label = [], [] for i in range(n): concept = 1 if i % 2 == 0 else 0 scale = rng.random() noise = [rng.uniform(-0.4, 0.4) for _ in range(2)] vec = [true_dir[d] * scale * concept + noise[d] for d in range(2)] data.append(vec) label.append(concept) return data, label, true_dir def normalize(vec): norm = math.sqrt(sum(x * x for x in vec)) return [x / norm for x in vec] def dot(u, v): return sum(u[i] * v[i] for i in range(len(u))) def discover_direction(pos_data, neg_data): """用两类样本激活的均值差方向作为候选概念方向。""" dim = len(pos_data[0]) mean_pos = [0.0 for _ in range(dim)] mean_neg = [0.0 for _ in range(dim)] for v in pos_data: for d in range(dim): mean_pos[d] += v[d] for v in neg_data: for d in range(dim): mean_neg[d] += v[d] diff = [(mean_pos[d] / len(pos_data) - mean_neg[d] / len(neg_data)) for d in range(dim)] return normalize(diff) def probe_accuracy(data, label, direction): """概念探针:用概念分数阈值为零做二分类,返回准确率。""" right = 0 for vec, lab in zip(data, label): predict = 1 if dot(vec, direction) > 0 else 0 right += 1 if predict == lab else 0 return right / len(data) def tcav_score(data, predict_fn, direction, eps=1e-3): """TCAV 分数:沿概念方向正向微扰时预测输出上升的样本比例。""" positive = 0 for vec in data: probe = [vec[i] + eps * direction[i] for i in range(len(vec))] derivation = (predict_fn(probe) - predict_fn(vec)) / eps if derivation > 0: positive += 1 return positive / len(data) def main(): data, label, true_dir = make_activations() pos = [v for v, lab in zip(data, label) if lab == 1] neg = [v for v, lab in zip(data, label) if lab == 0] direction = discover_direction(pos, neg) print('真实概念方向:', [round(x, 3) for x in true_dir]) print('发现的概念方向:', [round(x, 3) for x in direction]) print('方向余弦相似度:', round(dot(true_dir, direction), 3)) print('概念探针准确率:', round(probe_accuracy(data, label, direction), 3)) def predict_logit(vec): """模拟目标模型的输出对数几率(非线性)。""" return vec[0] * vec[0] + 0.5 * vec[1] print('TCAV 归因分数:', round(tcav_score(data, predict_logit, direction), 3)) if __name__ == '__main__': main()
def make_activations(n=300, seed=1):生成带有隐藏真实概念方向的合成激活数据,模拟“条纹”概念。noise = [rng.uniform(-0.4, 0.4) for _ in range(2)]给激活加随机噪声,让发现任务不至于太简单。def discover_direction(pos_data, neg_data):用正负样本激活的均值差方向作为候选概念方向。diff = [(mean_pos[d] / len(pos_data) - mean_neg[d] / len(neg_data)) for d in range(dim)]核心一行:两类样本各自平均后的差,就是“判别轴”。return normalize(diff)归一化得到单位方向,等价于概念激活向量 CAV。def probe_accuracy(data, label, direction):概念探针评估:概念分数大于零即判为包含概念。def tcav_score(data, predict_fn, direction, eps=1e-3):用有限差分近似方向导数,统计输出上升的样本比例。derivation = (predict_fn(probe) - predict_fn(vec)) / eps沿概念方向微扰后预测值的变化率。if __name__ == '__main__':脚本入口,保证模块被导入时不执行演示逻辑。
常见误区
误区我刚接触这个概念时觉得,“概念”不就是特征吗?模型第一层学到的边缘、纹理、颜色就是概念,我把显著图里最亮的像素找出来不就完成概念发现了?
正解底层特征是“化学分子”,概念是“风味”。边缘和纹理只是模型内部的中间信号,人类无法直接命名和讨论它们;而“条纹”、“果香”是可命名的高层抽象,对应激活空间中的一个方向,而不是某个像素或某个神经元。概念发现的目标是找到“人类能理解”的翻译单位,像素级特征做不到这一点。
为何常见:因为显著图(Saliency Map)是解释工具里最直观的一种,初学者很容易把“模型看到哪里”误当成“模型理解什么”,忽略了语言层级的差异。
误区我算出某个概念方向的 TCAV 分数是 0.95,是不是就能理直气壮地说“模型就是靠这个概念做决策”?分数这么高,删掉这个概念模型一定会变差吧?
正解TCAV 衡量的是敏感性或相关性,而不是因果性。就像你发现大厨的招牌菜都带果香,不能证明他真的靠果香打分——也许果香只是他偏爱某种食材的影子。要验证因果,需要做干预实验:沿概念方向主动扰动激活,观察输出是否显著变化,并且要与随机方向的扰动做对照。
为何常见:因为“分数高”在直觉上很容易被等同于“影响大”,而相关性与因果性的区分本来就是统计思维里最反直觉的一课。
误区自动发现一次能输出几百个概念方向,那我是不是把概念列表堆得越长,模型的解释就越完整、越可信?
正解概念多不等于解释好。冗余概念、多义概念、互相纠缠的概念方向会让人看得头晕,反而拉低解释质量。好的概念集讲究“少而精”:高纯度、高覆盖度、彼此尽量正交,并且能通过领域专家的用户研究。就像一份好菜谱,写满 300 种佐料反而没法照着做。
为何常见:因为大家习惯了“信息越多越好”的直觉,忽略了可解释性的本质是“降低认知负担”,而不是“堆砌证据”。
误区名字里带“自动”,我以为把模型喂进去就能全自动吐出概念清单,完全不需要人去挑样本、定标签。
正解目前的自动概念发现大多是“半自动”:算法负责在激活空间里搜索方向,但概念样本的选择、候选概念的命名、方向的语义验证都离不开人。CAV 需要“概念样本 vs 随机样本”,这就是一种人工先验;后续的概念筛选和命名也需要领域专家参与。自动化省去的是“反复试方向”的体力活,“概念是什么”这件事依然由人定义。
为何常见:因为“自动”二字给人全无监督的错觉,而实际上概念发现链路里数据准备与验证两端的“人机协同”恰恰是最花功夫的部分。
面试题
Q1. 在概念可解释性中,概念最准确的含义是什么?
- A.人类可理解的高层抽象,对应激活空间的方向← 正确答案
- B.网络中间某个激活神经元的具体输出值
- C.输入图像上被切出来的一块像素区域
- D.模型对每个类别给出的概率分布向量
答案:A。概念是“风味”而不是“化学分子”——它是人类能命名的高层抽象(条纹、果香),在技术上表示为激活空间中的一个方向。单个神经元输出(B)、像素块(C)和类别概率(D)都停留在模型自身信号层面,缺少人类可讨论的语义层级。
Q2. 获取概念激活向量(CAV)的常用做法是什么?
- A.在概念样本与随机样本的激活上训练线性分类器,取权重向量← 正确答案
- B.对整个神经网络的参数取平均值作为方向
- C.直接比较两类样本原始像素的亮度差异
- D.将损失函数对输入求二阶导数获得方向
答案:A。CAV 的构造就像训练一个“线性裁判”来区分概念样本与随机样本,裁判分界线的法向量就是概念方向。B、C、D 都绕开了“激活空间中的判别方向”这一核心思想,无法得到可解释的概念轴。
Q3. TCAV 分数的取值特点是什么?
- A.可以是任意实数,没有固定范围
- B.是一个在 0 到 1 之间的比例值← 正确答案
- C.通常恒等于数据集的准确率数值
- D.只能在负数和正数之间来回震荡
答案:B。TCAV 分数是在某类样本中“方向导数为正”的样本占比,因此它天然落在 0 到 1 之间。它不是损失值(A),也不是准确率(C),更不是无界震荡量(D)——它是“加强这个风味会让评分上升的菜占多少比例”。
Q4. 为什么 CAV 必须搭配随机样本作为对比组?
- A.为了让数据集更大,从而训练更充分
- B.为了把概念方向与类别整体差异隔离开← 正确答案
- C.为了让线性分类器更容易快速收敛
- D.为了初始化网络每一层参数的偏置值
答案:B。对照组的目的是“提纯”。如果只用概念样本,裁判学到的可能是整个类别的整体差异;加入随机样本后,裁判被迫找出“概念独有”的判别轴。这就像判断“果香”必须拿普通菜对比,而不是拿所有甜点来对比。A、C 与收敛或数据量无关,D 则完全偏离了激活空间。
Q5. TCAV 中方向导数为正的含义是什么?
- A.该概念方向会抑制模型对样本的预测
- B.沿着概念方向微扰时模型输出会上升← 正确答案
- C.概念方向和梯度方向是完全垂直的
- D.样本在这个概念上的得分必定是负值
答案:B。方向导数刻画的是“把果香拧大一点,大厨评分涨不涨”。导数为正表示输出对数几率上升,即概念对预测起支持作用。A 说反了,C 的“垂直”与导数正负无关,D 则混淆了概念分数与导数的定义。
Q6. 概念瓶颈模型最核心的结构特点是什么?
- A.先预测一组显式概念,再用概念预测最终结果← 正确答案
- B.去掉全部隐藏层,只保留输入输出层
- C.用更大的卷积核来扩大感受野
- D.把损失函数换成自监督对比损失
答案:A。概念瓶颈模型在大厨进厨房前先逼他写配料表——预测必须先经过显式概念层,再由概念驱动最终输出。这种“输入→概念→输出”的瓶颈结构天然支持干预性解释。B、C、D 分别是网络结构、卷积核和损失函数层面的改动,都没有把可解释性前置到预测链路上。
Q7. 概念发现流程中的“候选挖掘”步骤通常指什么?
- A.用遗传算法搜索网络的超参数
- B.对输入数据做随机裁剪和旋转增强
- C.在激活空间中用统计或谱方法寻找候选方向← 正确答案
- D.把多个检查点模型权重做加权平均融合
答案:C。候选挖掘是“找风味主轴”的环节——在激活空间里对概念样本做均值、聚类或谱分解,得到候选概念方向。A 是超参数搜索,B 是数据增强,D 是模型集成,都属于训练优化范畴,不是概念发现流程中的表示提取与方向挖掘。
Q8. 概念纯度很高但覆盖度很低,说明了什么?
- A.概念定义太宽泛,导致精度不够
- B.概念非常精确,但只解释很少的模型行为← 正确答案
- C.概念与模型预测之间毫无关联
- D.数据集存在严重的类别不平衡问题
答案:B。纯度(精确率)高说明“找到的确实是真的”,覆盖度(召回率)低说明“还有很多真实情况没被抓住”。就像一道风味描述“焦糖香”非常准确,但只能解释大厨一小部分菜品。A 说反了,C 与纯度高低矛盾,D 是数据问题而非概念本身的性质。
Q9. 验证一个自动发现的概念是否可信,常用手段包括哪些?
- A.计算概念探针的精确率与召回率← 正确答案
- B.沿概念方向扰动激活并观察模型输出变化← 正确答案
- C.请领域专家对概念与样本的匹配度打分← 正确答案
- D.删除全部概念样本后重新训练整个数据集
答案:ABC。概念可信度要从三方面交叉验证:统计层(A 探针的精确率/召回率)、行为层(B 扰动激活的干预实验)、人类层(C 专家评分)。D 的做法既昂贵又偏离目标——概念验证针对的是“这个方向是否可信”,而不是重训一个模型。
Q10. 关于概念多义性与因果校验,下列说法正确的有哪些?
- A.一个概念方向可能编码多种不同的语义← 正确答案
- B.TCAV 分数高即可证明概念与预测存在因果依赖
- C.干预实验比单纯相关性分析更接近因果结论← 正确答案
- D.概念多义性不会影响概念解释的可靠性
答案:AC。多义性确实是概念发现的顽疾——“辣”可能同时编码辣椒的灼烧、花椒的麻和芥末的冲(A 对)。TCAV 分数高只说明相关,不能证明因果(B 错);干预实验通过主动改变概念方向并观察输出变化,更接近因果(C 对)。多义概念会稀释解释可靠性,D 说反了。