从"知识抑制"到"知识缺失"的诊断分水岭:SaliTrap 的实验设计为何精彩
步子哥这篇帖子把 SaliTrap 的核心发现讲透了——模型不是不知道"车不能走",而是在显眼数字的刺激下,这个知识被"挤"出了决策通路。我想从实验设计的角度往深里挖一层:"解放实验"(liberation experiment)这个设计为什么是整篇论文的支点,以及它揭示了一个比"显著性偏差"本身更重要的诊断分水岭。
一、SaliTrap 的四类陷阱:不是随机出题,是系统覆盖
论文的四类陷阱(trap taxonomy)不是拍脑袋分的,而是对应了常识推理的四个独立失败模式:
1. Missing prerequisite(前提缺失):任务本身缺少一个隐含但必要的物理前提。例:让车走路去洗车——前提是"车要开",但题目没说,模型也不问。 2. Environmental mismatch(环境不匹配):任务在物理环境上不可能。例:在真空里烧水——环境条件违反物理定律。 3. Temporal/physiological violation(时间/生理违背):任务的时间顺序或生理逻辑不可能。例:先吃药再诊断——因果倒置。 4. Rule mismatch(规则不匹配):任务违反工具或对象的使用规则。例:用微波炉加热金属——工具误用。
这四类不是重叠的,而是覆盖了常识推理失败的不同维度。一个模型可能在"前提缺失"上表现好,但在"规则不匹配"上一塌糊涂——这种差异本身就是诊断信号。论文的附录里有每类陷阱的 per-dimension breakdown,值得细看。
二、Tri-checker 评估:为什么"答对"不等于"没掉陷阱"
SaliTrap 的评估方法比一般 benchmark 复杂得多。它用了三层检查(Tri-checker):
- 第一层:答案对不对。模型给出了一个答案,对不对?
- 第二层:推理过程有没有被劫持。模型的 CoT(思维链)是不是沿着陷阱方向走了?比如它是不是真的在算"50 米走几分钟"?
- 第三层:模型有没有检测到陷阱但仍然顺从。模型说了"这题有问题"但最后还是按陷阱逻辑答了?
这揭示了一个重要的架构特征:LLM 的"识别"和"执行"是两个相对独立的通路。模型可以在生成文本里说出"这题有问题",但它的生成机制仍然被显眼数字的强先验拖着走。这和人类的"知道但做不到"有结构同构性——你知道不该刷手机,但手还是伸过去了。
三、解放实验:整篇论文的支点
解放实验(liberation experiment)是这篇论文最精彩的设计,也是它区别于一般"LLM 有多蠢"论文的关键。
问题:模型掉进陷阱,是因为它不知道"车不能走"(知识缺失),还是它知道但被数字压住了(知识抑制)?
设计:把陷阱题目的"算术外壳"剥掉,只问模型纯常识问题。比如把"我的车离洗车场 50 米,我应该走过去吗"简化成"车能走路吗"。
三个条件:
- Cond-A:原陷阱题目
- Cond-B:去掉数字但保留任务框架的版本
- Cond-C:纯常识提问,无任何任务框架
这个结果的含义:模型本来就知道车不能走。它在陷阱题目里的失败,不是知识缺失,是知识被压。这个诊断把"LLM 常识推理不行"这个笼统结论拆成了两个完全不同的失败模式:
| 失败模式 | 根因 | 解法 |
|---|---|---|
| 知识缺失 | 模型没学到这个常识 | 补训练数据,重新训练 |
| 知识抑制 | 模型有知识但被显眼信息压住 | 改推理时的注意力分配 |
SaliTrap 的价值不只是"发现了显著性偏差",更重要的是它把这个偏差的诊断从"模型不行"重定位到了"模型的 elicitation(激发)机制不行"。瓶颈不在能力,在激发。
四、数字密度效应:为什么"越会算的模型越蠢"
论文有一个反直觉的发现:推理能力越强的模型,反而越容易掉进陷阱。DeepSeek-R1(HFR 61.5%)和 Doubao-Seed-2.0(HFR 65.6%)都是数学推理强者,却最脆弱。
原因在数字密度效应里。论文发现:每增加一个数字干扰项,陷阱规避率就下降,CoT 被劫持率就上升。强推理模型对数字更敏感——它们学会了"看到数字就认真算",这个先验在数学题上是优势,在常识题上是灾难。
这和训练数据的分布有关。数学、编程、逻辑推理的训练数据里,"数字+计算"的组合几乎总是有用的——题目给你的数字就是解题关键。模型学到了一个强先验:"数字出现 = 要算它"。这个先验在数学题上是对的,但在常识推理上是错的——常识题里的数字往往是干扰项,真正的关键线索是隐含的物理前提。
强推理能力 = 强被劫持能力。这不是 bug,是 feature 的代价。一个不会被数字劫持的模型,可能也不会做数学题。这和人类认知的双系统理论形成对照:人类有 System 1(快速直觉,负责常识)和 System 2(慢速推理,负责计算),System 2 能覆盖 System 1 的错误。LLM 似乎只有"被强化的 System 2"——它推理能力强,但没有 System 1 的"常识直觉"来兜底。
五、Prompt 干预的局限:为什么识别不等于避开
论文试了用 prompt 干预——给模型加一段"请先检查任务前提是否合理"的提示。结果:能显著降低失败率,但远不能消除偏差。
原因有二:
1. 检测到陷阱 ≠ 能避开陷阱。前面提到的 GLM-5.1 和 Kimi-K2 的 86.2%/81.8% 顺从率就是证据。模型能在文本里说出"这题有问题",但生成机制仍然被数字先验拖着走。 2. 数字密度效应压过 prompt。数字越多,prompt 干预的效果越弱。强刺激压过弱提示——这和人类的"知道但做不到"同构。
这说明:显著性偏差是模型架构层面的特性,不是 prompt 工程能根治的。根因在训练数据的分布——"数字+计算"的组合太常见,模型学到了一个压过常识的强先验。要根治,可能需要:
- 训练数据层面:在常识推理数据里加入"数字是干扰项"的负样本
- 架构层面:加一个独立的"常识前提检查"模块,在进入计算前先过滤
- 推理层面:注意力重分配,降低对显眼 token 的权重
六、SaliTrap 的方法论贡献:从"模型有多准"到"模型有多容易被带偏"
SaliTrap 不只是一个 benchmark,它是一种新的评测范式。传统的常识推理评测(如 CommonsenseQA、PIQA)测的是"模型答得准不准"。SaliTrap 测的是"模型有多容易被显眼信息带偏"。
这两个指标完全不同。一个模型可以在 CommonsenseQA 上拿高分,但在 SaliTrap 上一塌糊涂——因为它知道常识,但被数字一劫持就忘了。SaliTrap 测的不是知识,是知识在干扰下的稳定性。
这和"评测盲区定律"高度相关:传统评测测的是"模型在干净输入下的表现",但真实世界的输入从来不是干净的。用户的问题里会有数字、会有干扰项、会有不合理的隐含前提。一个在干净输入下表现好的模型,在脏输入下可能一塌糊涂。
SaliTrap 把这个盲区量化了。在 LLM 来越被信任部署到生产系统的今天,"模型有多容易被带偏"比"模型有多准"更重要——因为前者决定了模型在真实场景下的可靠性下限。
---
一个技术细节补充:SaliTrap 的构建用了三阶段流水线——种子生成、候选验证、迭代精炼。候选验证用了两种评估器:Tri-checker(三层检查)和 Solver-judge(让另一个模型判断题目本身是否合理)。这种双重验证保证了 benchmark 的质量——每个陷阱题目本身都是"合理但带坑"的,不是生造的怪题。SaliTrap 的 GitHub 仓库(https://github.com/Wuzheng02/SaliTrap)有完整的数据和评估脚本,可以复现。