当一个语言模型在前沿科学基准上答对了题目,我们通常会下意识觉得“它真的会了”。但最近几年,越来越多研究和讨论开始追问另一个问题:它到底是怎么答对的?如果模型不是通过抽象推理得出答案,而是依赖题目格式、选项分布、训练数据里残留的片段,甚至是数据集构建时无意留下的统计偏差,那么“答对”就只是一个结果,而不是能力的证明。这种现象在英文文献和评测社区里叫 shortcut hacking。放在 LLM 推理评测语境下,可以翻译成“捷径破解”或“捷径利用”。它最麻烦的地方在于:答案是对的,但方法错了,而大多数评测系统恰恰只记录答案,不检查过程。于是,一个看似漂亮的分数,可能会让我们对模型能力产生完全错误的判断。
这个问题不是个别基准测试的边角问题。越是面向前沿科学领域的基准,越容易成为 shortcut hacking 的高发区。原因并不玄妙:科学题目通常来自专家编写的复杂问题,标注成本极高,评测时又希望自动化,于是往往退化成只比对最终答案。而语言模型在超大语料上训练后,对文本表面的统计规律极其敏感。只要数据集里存在一点可被利用的规则,它就能用“捷径”拿到正确答案。结果就是,我们以为在测推理能力,实际上可能测的是模型对题目模板、选项顺序和语料泄露的拟合能力。
这篇博客想聊清楚三件事:shortcut hacking 到底是什么、为什么前沿科学基准尤其容易被“钻空子”、以及当我们自己搭建评测流程时,如何避免被“答对但方法错”的现象欺骗。
1. 别把“答对”当成“会推理”——先给 Shortcut Hacking 画个像
1.1 从一次“反常测试”理解这个问题
假设你要评估一个模型在物理题上的推理能力。手工构造了一道选择题:一个小球从斜坡滑下,问到达底部时速度是多少。题目给了几个数字选项,正确答案是 3.2 m/s。模型选了正确答案,而且很快。你很高兴,觉得它有物理直觉。
但当你把选项顺序改动一下,或者把题目中的“斜坡”改成“曲面”,把“小球”改成“滑块”,模型突然答错了。更奇怪的是,你把正确答案换成一个逻辑上错误的数字,但保留类似长度或类似语法结构,模型反而倾向于选它。这时候你才意识到,模型一开始的“答对”很可能不是靠受力分析或能量守恒推出来的,而是靠训练语料里反复出现的相似片段、选项长度规则、或者题目模板线索。
这就是 shortcut hacking 的典型表现:模型给出了正确答案,但它没有使用评测者预期的推理路径。它不是“不会推理”,而是没有在“应该推理”的时候推理。它用了更省事的统计捷径。
1.2 它和“数据污染”“奖励黑客”有什么区别
短期看,shortcut hacking 和数据污染、奖励黑客都会让评测分数失去意义,但它们的机制不太一样。为了更清楚地判断我们到底遇到了哪种问题,可以做一个简单区分:
| 问题类型 | 核心机制 | 典型信号 | 对评测分数的影响 |
|---|---|---|---|
| 数据污染 | 模型在训练阶段见过评测样本或高度相似文本,靠记忆直接输出 | 对同一题不同表述不稳定,但对原题准确率异常高 | 分数虚高,且高得无法区分“记忆”和“泛化” |
| Shortcut Hacking | 模型利用数据集的表面规则、选项规律、模板特征,而非任务本质 | 修改题目表面形式后性能骤降;过程解释与答案不一致 | 分数可能高,但推理链条不存在 |
| 奖励黑客 | 模型在训练或优化时过度优化代理指标,找到与真实意图不一致的应对策略 | 在评测指标上很高,但在更真实的任务上表现差 | 指标被利用,目标函数失准 |
这三者经常同时出现:一个基准测试如果存在数据污染,模型可能同时也会学到某些捷径。作为评测者,我们不一定要把它们完全区分开才叫合格,但至少不能只看到“最终答案”就下结论。
1.3 为什么只看“Right Answer”远远不够
对人类考试来说,最终答案正确通常意味着考生大概率掌握了相关推理。因为人类很少有机会靠猜测在复杂题目上稳定得分。但语言模型不是人。它的训练目标是预测下一个 token,而不是学会一个可解释、可复用的推理机制。它天然会寻找文本中成本最低的预测方式。只要评测接口只检查答案,推理过程就会成为“非必要负担”。模型没有必要发展出健壮的推理能力,只要在基准分布上表现好就够了。
所以,前沿科学基准评测中最关键的一个认知转变是:从“答对了几题”转向“答对的路径有没有推理价值”。如果不做这个转变,再精致的基准也可能沦为模型刷分的玩具。
2. 为什么前沿科学基准最容易变成“刷分场”
2.1 题目难,但最终答案形式太简单
前沿科学基准通常包含物理、化学、生物、数学等领域的专家级问题。这类题目对人类来说很难,需要多步推理和领域知识。但为了能自动评分,绝大多数基准还是采用选择题、填空题或简答题。评测系统拿到手的就是一个字符串匹配,或者一个选项编号。
这种设计有一个天然矛盾:题目内部的推理复杂度很高,但对外暴露的接口极其简单。模型不需要把每一步推理都呈现出来,只要最终输出能命中答案即可。接口越简单,捷径越容易被隐藏。你可以把评测想象成一个面试:你问候选人一个复杂问题,但只要求他最后说一个“是”或“否”,不让他解释为什么。那么,候选人完全可以通过表情、语气、猜测甚至运气过关。
2.2 数据集构建过程会留下“可被利用的规则”
前沿科学基准的构建通常先由领域专家写题,再人工标注答案,再用自动化脚本生成选项。这个过程中很容易留下系统性的表面规则。例如:
- 错误选项常常来自统一模板,长度可能比正确答案短;
- 正确答案在原始文献中出现的频率更高;
- 题目模板中存在固定句式,模型可以通过句式猜测答案位置;
- 部分题目来自公开论文或教材,训练语料里已经有几乎相同的段落。
对模型来说,这些表面规则不是噪声,而是可利用的信号。在语料规模达到数十亿甚至万亿 token 时,它有能力统计出“哪种选项更像正确答案”。我们不会在评测界面看到这种能力,它隐藏在模型内部。
2.3 评测者期待与模型实际学到的“表示”之间存在错位
我们设计评测时,默认模型会像人一样“读题、建模、推导、计算、验证”。但模型内部的文本表示可能完全不按这个顺序组织。它可能在浅层就完成了一些模式匹配,再把输出组织成看起来合理的格式。评测者看到的是输入和输出,中间发生了什么是一个黑箱。
这里尤其要小心一种情况:模型生成的推理链看起来很完整,甚至用了大量术语,但关键步骤是错误的。现在的语言模型很擅长生成“看起来像推理”的文本。它可能从训练数据里学过类似解题步骤,然后复述出来。如果评测只对最终答案计分,那么推理链是否真实,完全不影响结果。这就让捷径更加隐蔽:不光答案对,模型还会“演戏”。
因此,前沿科学基准的评测设计,不能只考虑题目难不难,还要考虑模型可不可以绕开题目。只要存在绕开路径,就会有模型利用它。
3. 高分假象的代价:当评测误导技术判断
3.1 高估能力,导致应用场景的错误匹配
前沿科学推理能力被高估后,最直接的危险是人们会把模型用于它并不真正擅长的场景。例如科研成果辅助分析、复杂系统调试、科学文献总结、实验设计建议。如果模型只是靠捷径答对一些基准题,它在新的、没有模板可循的真实问题面前很可能迅速失效。团队如果基于基准分数决定是否部署,就会产生预期落差。
我经常提醒团队:基准分数是做技术选型的必要条件,但不是充分条件。尤其在科学推理这类高风险场景里,一次错误判断的代价远超模型带来的效率提升。
3.2 误导模型迭代方向
当基准分数成为主要排名指标时,无论研究者还是工程团队,都会有意无意地去优化这个指标。如果基准本身存在 shortcut hacking,那么投入大量算力去提高分数,实际上是在训练模型更好地利用捷径。
这会产生一个恶性循环:模型分数越高,团队越认为方向正确;方向越正确,越可能远离真实的推理能力。久而久之,评测不再帮助技术进步,反而制造技术上华丽的“假动作”。
3.3 让基准本身失去区分度
如果一个基准里的大量题目可以用捷径答对,模型的排名就会趋于饱和。顶级模型之间的差距会被压缩,甚至被随机噪声淹没。此时,基准无法区分“擅长推理”和“擅长模式匹配”,也就失去了作为公共标尺的意义。
对科研人员来说,这更麻烦。当我们拿两个模型做对比实验时,如果基准存在捷径,观察到的差异可能只是模型对表面线索敏感度的差异,而不是推理能力差异。基于这种对比得到的论文结论,很难迁移到真实任务上。
3.4 让结论变脆弱,无法支撑后续研究
前沿科学基准经常被用来宣称“模型具备某种科学推理能力”。一旦这个宣称建立在 shortcut hacking 的基础上,后续研究就会像建在沙地上。别人复现时稍改题目格式,性能就会掉下来,整个结论被质疑。
这不是说前沿科学基准一无是处,而是说我们在解读分数时必须保留余地。更稳妥的表述是:“该模型在这个基准的当前版本上取得了多少分”,而不是“该模型具备强科学推理能力”。两者之间的差距,就是 shortcut hacking 留下的灰色地带。
4. 建立一套“防捷径”评测检查清单
4.1 从结果监督走向过程监督
要减少 shortcut hacking 带来的误导,最核心的改变是引入过程监督。也就是说,不能只看最终答案对不对,还要看中间推导是否合理。具体到评测设计,可以要求模型输出完整的解题步骤、变量关系、公式推导和计算过程,再对过程进行校验。
但这里有一个问题:语言模型生成的推理链本身也可能是编造的。所以过程监督不能只是把“步骤文本”交给另一个语言模型打分,而要设计一致性检查。比如:
- 推理链中的关键公式是否被后续计算正确使用;
- 中间变量的数值是否和最终答案匹配;
- 推理步骤里是否有无法从题目推导出的断言;
- 对同一个问题的多种扰动形式,模型是否保持一致的解题逻辑。
过程监督的成本更高,但它能显著降低“答对但方法错”的风险。对于前沿科学基准来说,这种额外成本是值得的。
4.2 五维防捷径检查框架
在实践中,我建议把防捷径检查当成一个固定流程,而不是临时想到再补。下面这套检查框架可以复用在大多数 LLM 推理评测项目中。
| 检查维度 | 操作方法 | 风险信号 |
|---|---|---|
| 输入扰动 | 改变题目措辞、选项顺序、数字单位、变量名,保持逻辑结构不变 | 准确率大幅波动,说明依赖表面特征 |
| 反事实构造 | 在原始题目基础上构造逻辑合理但训练分布中不常见的新变体 | 模型无法处理新变体,说明泛化能力不足 |
| 过程审计 | 对模型输出推理链进行人工抽样或规则校验,检查关键步骤 | 推理链存在跳跃、错误或与答案不匹配 |
| 压力冗余 | 在题目中加入无关条件或额外干扰项,考察模型是否被带偏 | 模型被干扰信息误导,说明没有抓住核心关系 |
| 泄漏排查 | 将基准样本和训练语料做文本重叠检测,量化记忆风险 | 高重叠度样本上的准确率显著高于低重叠度样本 |
这张检查表的核心输出不是一个分数,而是一个 profile:模型在哪些扰动下保持稳定、在哪些扰动下崩掉。真正值得信任的推理能力,应该在不同表面形式下都表现出稳定的逻辑主线。
4.3 最小可执行的防捷径评测流程
如果是一个新评测项目,不要一开始就铺开几千道题。先用小规模样本把防捷径流程跑通。
第一步,抽取 50 到 100 道有代表性的题目,覆盖不同子领域和难度层次。第二步,为每道题定义“正确推理路径”的检查标准,可以是一份答案要点,也可以是一组关键步骤。第三步,让候选模型输出答案和完整推理链,同时记录原始请求、参数、日志。第四步,同时计算答案准确率和过程达标率。第五步,做输入扰动和反事实变体,看分数是否稳定。第六步,根据结果调整题目设计或评测指标。
这个流程不需要非常复杂的工具,人工跑一遍就能暴露很多问题。真正重要的是把“过程达标”和“答案准确”分开记录:
# 示例结构:记录答案正确性和过程达标性 result = { "question_id": "phys_032", "answer_correct": True, "reasoning_complete": False, "reasoning_error_type": "missing_energy_conservation", "surface_variant_score": 0.4, "final_score": None, # 由评测规则决定 }字段名可以根据自己团队的评测框架调整,但核心思路是:不要在最终分数里把答案正确性和过程正确性混成一个数。混在一起,就又会给 shortcut hacking 提供藏身之处。
4.4 防捷径检查可能遇到的阻力
这里要坦白说,过程监督和人工审计会显著增加评测成本。很多团队会认为“我们先用答案准确率粗筛,之后再补”。我可以理解这种务实选择,但要提醒一点:一旦评测流程固定成只查答案,模型和训练策略就会围绕这个流程优化,等到后面再想补过程审计,往往要推翻很多既有结论。
如果资源有限,可以采用分层策略:大量题目用自动化结果监督,抽取 10% 到 20% 的样本做过程审计和扰动测试。这个比例不一定多高,但足以给评测结论一个置信区间。
注意:不要一上来就用全部测试题做自动化评分,先在小样本上验证评测流程本身会不会被“钻空子”。评测流程若不健壮,跑完整个测试集反而会产生更严重的误导。
5. 评测工具与团队落地:把防作弊变成工作流的一部分
5.1 通用评测工具通常只回答“分数”,不回答“为什么”
现在市面上有很多 LLM 评测工具,支持接入自定义 API、加载数据集、计算指标。这类工具解决了评测自动化问题,但它们通常默认只输出 accuracy、exact match 等结果类指标。对于普通任务,这没有问题。对于前沿科学推理,风险就出来了。
如果一个评测工具只返回“正确率 82%”,你并不知道这 82% 里面有多少答案是靠捷径拿到的。单看这个数字,你甚至不知道题目有没有被污染、选项顺序有没有被利用、推理链是否一致。
所以,选择评测工具时要关注它是否支持:
- 记录每次请求的完整输入和输出;
- 保存模型生成的推理链;
- 自定义过程级指标;
- 对同一题目做多种扰动后重新评测;
- 人工标注结果回填。
这些能力决定了评测结论能不能回溯,而不是一次性的数字快照。
5.2 团队评测流程的四个关键配置
真实项目的评测流程,我觉得至少要有四个配置项。
第一,评测数据版本管理。前沿科学基准可能有多个版本,每个版本的题目、选项、答案都可能变化。评测时要记录使用的是哪个 commit、哪个镜像、哪个 csv。否则,后续排查 shortcut hacking 时很难还原现场。
第二,模型参数固定。同一个模型在不同 temperature、top_p、seed 下表现差异很大。如果评测时使用生成式参数,结果会带有随机性,干扰对捷径行为的判断。建议推理评测将 temperature 设为 0,或者至少多次采样并记录方差。
第三,输出日志留痕。不要只存最终分数,还要存原始 prompt、模型输出、推理链、报错信息、耗时。这样一旦发现异常样本,可以回去检视到底是答案错了还是过程错了。
第四,人工样本集。准备一份规模不大但经过专家审核的“金样本集”,里面包含明确的推理路径标注。这些样本不参与模型训练,只用于评测后的过程审计。当自动评测工具升级时,也可以用金样本集做回归验证。
5.3 从“单次评测”到“持续回归”
Shortcut hacking 不是一次性问题。模型版本更新、Prompt 模板调整、评测集补充,都可能改变模型对捷径的利用方式。更合理的做法是把防捷径检查加入持续集成流程。
每个新模型版本发布前,除了跑一轮常规准确率,还应该跑一遍扰动测试和反事实测试。如果新版本在同一道题的扰动变体上准确率波动明显加大,这本身就是一种回归信号。团队可以把“答案准确率”和“鲁棒性得分”一起作为发布门禁,而不是只看前者。
在长期评测中,宁可牺牲一点当时的排行表现,也要保留足够的日志和抽查比例。因为评测的目标不是把数字做漂亮,而是让每一次数字变化都可解释。
6. 评测本身需要被“评测”:长期该关注什么
6.1 静态基准会一直存在“被钻空子”的可能
前沿科学基准很难做到永久免疫。只要题目是静态的、自动评分的、答案形式有限的,模型就有可能通过某种方式找到测试集的统计规律。这不是道德问题,而是语言模型训练目标的必然结果:它会在所有可获得的信号里寻找最小的预测损失。
因此,长期来看,我们不能只依赖一个固定基准。更好的策略是建立一个“基准族”,同一份科学问题用不同模板、不同语言风格、不同难度层级反复生成。新的模型要能在这些变化上都保持稳健,才有资格说推理能力更强。
6.2 过程化评估会成为更重要的方向
随着模型在各路基准上的分数逐渐饱和,单纯比“正确率”已经没有太大信息量。接下来值得关注的方向是对推理过程的审计和验证。我们可以把评估做得像论文审稿:不仅要看模型是否给出正确答案,还要看推导是否严谨、假设是否合理、中间步骤是否可复现。
这会带来一个新的技术挑战:如何自动验证一个自然语言推理链的质量?目前还没有完美答案。可行的方法是结合多个维度的信号:规则校验、数值验证、对比多个独立采样的一致性、让另一个模型担任“批判者”。每种方法都有误差,但组合起来可以让 shortcut hacking 的生存空间变小。
6.3 回到最开始的主判断
我写这篇博客,最想传达的判断其实很简单:当评测只看最终答案,我们就主动放弃了判断“是否真的会推理”的权利。前沿科学基准的出现,本来是为了探测语言模型的高阶能力,但如果评测流程不引入过程监督、不设置扰动测试、不保留可追溯日志,那么分数越高,可能越危险。
对正在搭建评测体系的团队,我的建议是:先在小样本上做一次完整的防捷径演练,再扩展到全量评测。对正在阅读论文的开发者,看到“在某科学基准上达到新高”时,先问一句:这个评测有没有排除 shortcut hacking?即使论文里没有做,这个问题本身也能帮你校准对结论的信赖程度。
退一步看,shortcut hacking 并不是一个新问题,它只是把“评测设计与模型行为之间的错位”摆到了更明显的位置。只要语言模型还在用统计方式学习,这个错位就会持续存在。我们能做的,不是期待它消失,而是把评测流程设计得足够严谨,让“答对”和“会推理”之间的关系更经得起检验。