7AA7 Blog

模型评测怎么做:从基准测试到人工评估

栈外游 UID:91
2026-10-10 19:06
54 2 1

公开基准的污染问题

公开基准的题目来自互联网:论坛、问答社区、教科书习题、竞赛真题。训练语料的来源也是互联网。这两批数据大面积重叠,于是出现数据污染——模型在训练时见过测试题,甚至见过题目和答案的配对。

污染的形态比”原题照搬”更难查。常见的是改写版本:题目被翻译、被同义转述、被换个数值重新表述,答案逻辑完全一致。用词面匹配去查重基本查不出来。另一种是模板记忆:基准里的题目共享某种格式,模型学会了格式和答题套路,即使没见过原题也能答对,分数里混进的就不是能力而是套路。

可行的检测手段有几类:n-gram 重叠率(查原题泄漏,查不出改写)、让模型续写题目开头(能背出后半段说明见过)、以及分布外变体测试——把原题改数字、改实体、颠倒选项顺序,如果分数断崖下跌,说明原分数里有相当部分来自记忆而非推理。

结论是,公开基准分数应当被当作上界,而不是能力的无偏估计。同一模型在不同基准上的相对排序比绝对分数可靠一些,但污染程度不同,排序也未必稳。

分数和真实表现为什么对不上

基准测的是”题目答对率”,业务要的是”任务完成度”,两者之间隔了好几层。

第一层是输出形态。基准通常是选择题或短答案,判分只看最终答案对不对。真实任务要的是符合格式的长输出——一份能被下游程序解析的 JSON、一段符合公司文风的表述、一次按步骤分解的操作。基准从不考察这些。

第二层是容错特性。基准是零容错的:答案错了就是错了。真实任务很多是高容错的:摘要漏了一句不影响使用,但把日期写错就整份作废。用基准分数预测真实表现,等于假设两种容错模型一致。

第三层是分布。基准为了可比较,题目分布是刻意平衡的。真实业务的输入分布高度偏斜:80% 的流量集中在两三种最常见、最模板化的输入上,剩下 20% 是各种长尾。基准的均匀采样会把长尾能力放大,把主流能力稀释。

第四层是交互。真实场景常常是多轮的、带工具调用的、有上下文约束的。单轮静态基准完全覆盖不到。

LLM-as-judge 的三类已知偏差

用模型打分是降低成本的必然选择,但打分模型有自己的系统性偏差,不校正的话结论会歪得很有规律。

位置偏差(position bias):做成对比较时,模型倾向于选出现在前面的那个答案,与内容质量无关。校正方法是把 A/B 顺序互换各评一次,只有两次结论一致才判定胜负,不一致记为平局。这个”双跑”是必须的,不是可选项。

长度偏好(verbosity bias):更长的回答更容易得高分,即使只是把同样的内容说得更啰嗦。缓解手段是在评分提示里显式说明”长度不构成加分项”,或者比较时把长度差异作为协变量统计控制掉。更实用的办法是限制候选输出长度,让对比双方在长度上可比。

自我偏好(self-enhancement bias):打分模型倾向于给自家架构生成的输出更高分。模型间互评时这个偏差会系统性抬高同源模型的排名。做法是用与被测模型不同源的模型做裁判,或者多模型交叉评分取平均。

除了这三类,还有锚定效应(给了参考样例就往参考上靠)、对格式瑕疵过度敏感(markdown 用错就扣分,忽略内容正确性)等。缓解的整体思路是:让裁判只做一件事、输出结构化分数、评分标准写成可勾选的清单而不是笼统的”请评估质量”。

成对比较 vs 绝对打分

绝对打分 成对比较
输出 每条一个分数(1-5 或 0-100) A 优于 B / 平局
跨批次可比 理论上可比,实际上会漂移 不可直接跨批次比
判分一致性 低,评委松紧尺度变化大 高,判断”哪个更好”比”有多好”容易
聚合 直接取均值 需要 Elo / Bradley-Terry 拟合
适合场景 有明确 rubric 的质量评估 两个版本的整体优劣

绝对打分的问题是尺度不稳。同一个评委上午严下午松,不同评委之间差得更多。成对比较把任务简化成二选一,人类和模型的判断一致性都明显更高,所以主流偏好评测(比如对话场景的两两对比)多用成对比较。

成对比较的代价是样本量:要排出 N 个模型的名次,需要的比较次数按 N² 增长,而且无法直接回答”这个版本比上个版本好多少”。折中做法是成对比较定序,再用少量绝对打分标定绝对水平。

建私有评测集的最小流程

一、采集真实输入。从线上日志里随机抽样,别人工构造。人工构造的样本会不自觉地避开脏输入——错别字、半截话、混合语言、超长文本——而恰恰是这些决定了线上的实际体验。

二、分层而非均匀。按真实流量比例分配样本,再额外加一层专门的长尾样本(占比可以高于线上比例,用于放大信号)。每层样本量不少于 20 条,否则层内的统计量没有意义。

三、写可判定的标准。每条样本配一个判定函数,而不是配一段期望输出。格式类用解析校验(能否 parse、字段是否齐全、枚举是否越界),事实类用关键词或引用检查,开放类才交给模型打分。能自动判定的比例越高,评测越可复现。

四、人工标注一次,之后冻结。初始标注要有两个标注员独立做,一致性低于某个阈值(比如 80%)说明标准写得有歧义,回去改标准。

五、留一份不参与迭代的 held-out 集。调提示词、调检索、调模型都会过拟合到评测集上,一份从没看过的集子用来在收尾时做一次确认。

样本量不足导致的误判

这是最常见的错误来源。两个版本在 30 条样本上得分 73% 和 80%,看起来后者更好,但算一下置信区间就知道根本分不开。

对于准确率这类二值指标,标准差约为 √(p(1-p)/n)。n=30、p=0.75 时,标准误约为 0.079,95% 置信区间半宽约 15 个百分点。7 个百分点的差距完全落在噪声里。

要检出 d 个百分点的差异,量级上需要的样本数满足 n ∝ 1/d²。想可靠检出 5 个百分点的差异,样本量要比检出 10 个百分点时多四倍。这条平方关系意味着”再补十条样本看看”通常无济于事。

成对比较稍好一些,因为方差更小,但仍然受平方律约束。实际操作:先做功效分析定样本量,再开始跑;跑完报告置信区间而不只是点估计;差异不显著时如实写”未观察到显著差异”,不要写”两者相当”——后者隐含了”样本量足够”这个不成立的前提。

还有一个陷阱是多次比较。同时看五个维度,每个维度做一次显著性检验,整体假阳性率远高于单次检验的 5%。维度多的时候要么做多重比较校正,要么预先指定唯一的主指标,其余维度只看趋势不作判定。

1.5kViews
54Likes
2Comments
2Participants
7 minread time

Comments (2)

  • 林见川 · 2026-10-10 21:52

    有个地方没懂:为什么不用 xxx?直觉上那个更省事。

    Reply
  • 晚棠 · 2026-10-11 06:44

    感觉作者是真在一线写过,不是拼资料。

    Reply