Keyword Harnesses Fail Open:当评测工具在"放水",你的小模型可能根本不会用工具
想象一下:你是一个老师,给学生考试。考试有一道题是"用计算器算 123 × 456"。你检查答案时,只要学生写了"55588"就算对——不管他是真的用了计算器,还是心算出来的,还是蒙的。
你觉得这没问题?但如果有个学生根本不会用计算器,但答案写对了,你给了他满分。你的考试就"fail open"了——在应该检测出能力缺失的地方,它给出了"通过"的信号。
这篇论文讲的就是这么一个故事,只不过主角是语言模型,"计算器"是工具调用(tool use),而"老师"是关键词匹配的评测基准。
故事的主角:一对"匹配"的模型
作者构建了一对模型,叫 VectraYX 系列:
- VectraYX-600M:6.616 亿参数,单阶段预训练,训练数据约 65% 是代码和技术文本,没有专门的 SFT(监督微调)阶段。训练在 64% 进度时被冻结。
- VectraYX-1B:11.09 亿参数,多阶段训练,网络文本为主,有专门的约 60 亿 token 的工具调用 SFT 阶段。
两个模型共享解码器架构、分词器和特殊 token 布局。听起来 1B 应该更强——它更大,还有专门的工具调用训练。
在系列自己的评测基准 B4 上,两个模型得分几乎一样:600M 得 0.660,1B 得 0.650。看起来差不多对吧?
真相:一个会,一个完全不会
作者做了一件评测论文很少做的事:逐字复现检查。他拿真实的训练样例,让两个模型实际生成工具调用。
结果:
- VectraYX-600M:6/6 个样例都生成了格式正确的工具调用,参数还能泛化到新场景。
- VectraYX-1B:在所有检查点测试中,0/4 到 0/6 个样例能生成有效工具调用。
完全不会。
进一步用首 token 概率探针(first-token probe)检查:1B 模型生成工具调用起始 token 的概率是 10⁻⁴ 到 10⁻⁵。这不是"偶尔失误",是"从根上就不会"。
那 B4 基准为什么给了 0.650 分?因为 B4 用的是关键词匹配——只要输出里出现了某些关键词(比如工具名、参数名),就算"用了工具"。1B 模型虽然不会发起工具调用,但它在 SFT 阶段见过大量包含工具关键词的文本,所以它生成的普通文本里经常"碰巧"包含这些关键词。
关键词匹配在"放水"——它在检测一个根本不存在的能力。
为什么 600M 反而更强?代码预训练的隐藏力量
这是论文最有意思的发现。600M 没有专门的工具调用 SFT,但它的预训练数据 65% 是代码。1B 有 60 亿 token 的工具调用 SFT,但预训练数据以网络文本为主。
作者发现:600M 的工具调用能力来自代码预训练的"组合泛化"。代码里充满了"函数调用"的模式——foo(arg1, arg2)。当模型在大量代码上预训练后,它学会了"结构化调用"的先验。工具调用只是函数调用的一种特例。只需要训练数据中 0.1% 的工具调用信号,这个先验就能被"激活"。
而 1B 模型虽然 SFT 阶段喂了大量工具调用数据,但它的预训练先验太弱——网络文本里没有足够的"结构化调用"模式。SFT 教了它"说什么",但没教它"怎么说"。结果就是:它知道工具调用的关键词,但不知道怎么把它们组装成有效的调用。
这就像一个人背了一本菜谱(SFT),但从没做过饭(代码预训练)。另一个人做了几千道菜(代码预训练),虽然没专门学过某道菜(无 SFT),但他知道"切菜→炒→调味"的基本结构,稍微点拨一下就能做出新菜。
修复:嵌入层的精准手术
作者还做了一个"修复"实验。他发现 1B 模型的问题出在嵌入层——工具调用的特殊 token 的嵌入向量没有被正确学习。他设计了一个修复方案:只重新初始化嵌入表的一小部分,然后继续训练。
修复后的结果:嵌入表 97.7% 的比特与修复前完全一致——只有 2.3% 的参数发生了变化。但这 2.3% 的变化让 1B 模型从"0/6 能用"变成了能生成有效工具调用。
这个结果有两层含义:
- 问题极其局部——不是模型整体不行,是嵌入层的一小部分没学好。
- 修复极其精准——不需要重训整个模型,只需要"手术刀式"地修复一小部分参数。
诊断梯子:一套便宜的检查方法
论文的标题里有"A Cheap Diagnostic Ladder"——廉价的诊断阶梯。作者强调:这些诊断方法不需要大量计算,任何有模型权重的人都可以做。
诊断梯子包括:
- 逐字复现检查:拿训练数据中的样例,让模型生成,看是否格式正确
- 首 token 概率探针:检查模型生成工具调用起始 token 的概率
- 轨迹探针:在训练过程中跟踪 F1 分数的变化
这些方法的核心理念是:不要只看基准分数,要看模型实际做了什么。关键词匹配的 B4 分数可以到 0.650,但逐字检查立刻暴露了 0/6 的真相。
更大的图景:评测的假阳性
这篇论文触及了一个比工具调用更广泛的问题:评测基准的假阳性。
"假阳性"(false positive)是统计学术语,意思是"在应该报告阴性时报告了阳性"。在 AI 评测中,假阳性意味着:模型不具备某种能力,但基准测试说它具备。
关键词匹配是假阳性的常见来源。它假设"提到了关键词 = 使用了能力"。但语言模型是概率生成器,它可以在完全不理解某个概念的情况下生成包含该概念关键词的文本。尤其是经过 SFT 的模型——SFT 教会了模型"说什么",但不一定教会"为什么说"。
这和"合理化外壳"是同一个问题的不同面:模型可以生成看起来正确的输出,但内部机制完全不对。关键词匹配只看输出,不看机制。逐字检查和概率探针看的是机制。
论文作者很诚实地列出了局限性:600M 模型永久冻结在 64% 训练进度,没有对话能力,所有诊断都是小样本。这不是一个"大模型打败小模型"的故事,而是一个"评测方法可以骗你"的故事。
对从业者的启示
如果你在评测小模型的工具调用能力,这篇论文给了三个实操建议:
- 不要只信基准分数。B4 给了 0.650,但逐字检查是 0/6。任何基于关键词匹配的评测都需要用更严格的检查来补充。
- 代码预训练比工具 SFT 更重要。65% 代码的 600M 模型无 SFT 就能调用工具,网络文本为主的 1B 模型 60 亿 token SFT 仍然不会。工具调用是"结构化调用"的特例,代码预训练建立了这个结构先验。
- 嵌入层是常见故障点。97.7% 的参数不变,只修 2.3% 就能修复。当模型"不会用工具"时,先检查特殊 token 的嵌入向量。
最后,这篇论文的作者是一位 DevOps 工程师,在业余时间完成的研究。这也许解释了为什么它如此关注"廉价诊断"——不是每个人都有算力做大规模评测,但每个人都可以做逐字检查。
讨论回复
加载中...正在加载回复...
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。