LLM 面试备考
首页/Agent 评测

基准测试与区域化评测 Benchmarks & Regional Evaluation

所属:01-fundamentals / 05-agent-evaluation
面试权重:★★
来源:通用领域知识;未做一手考证
相关项目:Own — HKGAI LLM(参与构建 HKMMLU:4 大类 / 66 学科 / 26,698 道多选题)→ 见 02-interview/projects/hkgai-llm.md

一句话#

Benchmark 是一套标准题集 + 指标,价值在于让不同模型可比、让版本迭代可回归;但它的每一项能力都必须打折看 —— 分数受数据污染、格式敏感性、饱和和Goodhart 效应影响,而且通用 benchmark 天然测不出本地语境,这正是区域化评测集(如 HKMMLU)存在的理由。

为什么重要(面试角度)#

评测素养是面试里的信任分。一个能主动说清「这个分数不能说明什么」的候选人,比一个只会报分数的候选人可信得多。面试官想听:

  • benchmark 能测什么、不能测什么 —— 尤其是它测不出你的业务分布
  • 数据污染的成因、检测与缓解(这是最尖锐的一问)
  • 多选题 benchmark 的固有局限(猜对基线、知识回忆 ≠ 推理 ≠ 生成、格式敏感)
  • 为什么需要区域化评测,以及 HKMMLU 这类集合在设计上要回答哪些问题

你有 HKMMLU 的一手经历,这题必须答到能讲设计取舍,而不是只报数字。同时记住 CV 口径是「参与构建」,如实划边界。

核心内容#

Benchmark 能测什么、不能测什么#

能测 不能测
标准化任务上的横向可比性(不同模型/不同版本) 在你业务分布上的表现(题集是别人选的)
版本迭代的回归信号(防止能力回退) 生成质量、多轮对话、指令遵循
能力画像的方向性参考(哪类能力相对强) 推理鲁棒性、长尾输入、对抗输入
社区共同的讨论基准 延迟、吞吐、成本、安全性、合规性
「能不能上线」这个业务问题的答案

两句话总结:benchmark 是方向性信号,不是上线结论;任何 benchmark 分数都要配一句「它没有覆盖我关心的 X」。

饱和与 Goodhart 效应#

  • 饱和(saturation):一个 benchmark 用久了,头部模型分数挤在高位、区分度消失,对进步的指示意义下降。这时社区会转向更难的新 benchmark 或动态/私有测试集。
  • Goodhart 效应:「当一个指标成为目标,它就不再是好指标」。团队会不自觉地向 benchmark 的格式、题型、常见考点优化(prompt 适配、few-shot 挑样例、针对题型训练),分数上去了但真实能力没动。
  • 缓解方向:用私有留出集(不公开、不进入训练语料)、动态更新的测试集、以及多指标 + 人工抽检联合判断,而不是盯单一榜单。

数据污染(contamination):最尖锐的一问#

成因:训练语料是从互联网大规模抓取的,公开 benchmark 的题目、答案、甚至带解析的讨论帖都可能被收进预训练数据。模型"见过"题目,分数就不可信 —— 它可能在回忆而不是在推理。

检测手段(都不完美):

  • n-gram / 子串重叠:把测试题和训练语料做重叠检测。简单但只能抓逐字泄漏,改写过就抓不到。
  • 嵌入相似度 / 改写检测:抓释义式泄漏,但阈值难定、假阳性多。
  • 时间切分:用晚于预训练截止时间发布的题目。这是最干净的思路,但要求你能确知训练数据截止时间(很多模型不公开)。
  • 性能异常模式:模型在某个冷门子集上表现反常地好(尤其是长尾专有名词、异常拼写),往往是见过的信号。
  • canary / 诱饵:在测试集里插入不该被模型知道的特制串,检查模型能否复现。需要训练方配合。

缓解手段:

  • 测试集不出现在公开渠道,作为私有留出集(held-out)管理;只发布题目形态说明,不发布原题。
  • 训练前做去污染:与已知 benchmark 比对并剔除重叠样本(能做的有限,因为测试集本身可能不公开)。
  • 用新写的题目(时间切分)+ 定期换题,让"提前见过"的收益衰减。
  • 报告污染检查:评测报告里给出做了哪些检测。做不到严格检测时坦诚说明,比声称"绝对无污染"可信得多。

面试的正确姿态:主动承认这是这类评测的固有风险,讲清你做过和没做过的检测,并说清「如果重做会怎么改进」。能意识到问题本身就是加分项。

多选题 benchmark 的固有局限#

以 HKMMLU 这类多选题集为例,读分数时必须知道:

  • 猜对基线:四选一时随机猜对率约 25%。所以 30% 不是"30% 的能力",而是"比瞎猜好一点点"。报告分数必须同时给出随机基线。
  • 知识回忆 ≠ 推理 ≠ 生成:多选题测的是"从选项中认出正确答案"的能力,不能推出模型能自主生成正确内容、能多步推理、能遵循指令、能在对话里用上这些知识。
  • 格式敏感:答案选项的顺序、prompt 模板、是否 few-shot、答案字母的分布,都会显著影响分数。同一个模型换一套评测脚本可能差出稳定的几个点。所以跨来源的分数不可直接比较。
  • 类别不均衡:不同学科题数不同,宏观平均(按学科平均)和微观平均(按题目平均)会给出不同结论,报告时要说明用哪种。
  • 题型单一:只有选择题,就没有开放式生成、没有多轮、没有工具使用、没有安全性。这些必须由别的评测补齐,不能靠一个数字代表整体能力。

区域化评测:以 HKMMLU 为例#

为什么需要:通用 benchmark(如 MMLU 这类)测的是通用知识,其内容分布隐含了某一个文化/地区视角,因此既测不出模型对本地制度、法律、文化、本地常识的掌握,也容易把"训练数据多"误当成"能力强"。一个模型在通用知识测试上分数很高,不代表它能正确回答本地相关的问题 —— 而本地问题恰恰是本地部署的实际需求。

HKMMLU 的形态(本 repo 口径):香港区域基准,4 大类、66 个学科、26,698 道多选题。

构建这类集合要回答的问题(面试要能逐条讲):

  1. 学科与类别怎么划分 —— 按什么维度覆盖?和通用 benchmark 的分类体系是什么关系(是对齐以便比较,还是另立体系以覆盖通用集没有的本地内容)?
  2. 题目从哪来 —— 人工编写、从本地教材/官方资料改造、还是合成?来源决定了题目的权威性与偏差。
  3. 标注质量怎么保证 —— 学科分类标准、多人标注与仲裁机制、抽样复核。错误标注会直接污染评测结论,且是沉默的错误。
  4. 数据污染怎么防 —— 见上一节:去重、时间切分、私有留出、改写变体。
  5. 本地性怎么定义 —— 哪些题是"只有本地语境才能答对"的?如果不做这个区分,这个集合就退化成"又一个通用多选题集",失去区域化的意义。

必须能主动说出的局限:

  • 它仍然只是多选题、知识回忆层的评测,覆盖不了生成质量、推理、对话、安全。
  • 跨区域分数不可直接比较:不同区域的评测集考点、难度、类目构成不同,横向比数字没有意义。
  • benchmark 自身带文化视角:谁来定义"本地的正确知识"?分类体系、正确答案、题材选择都隐含立场。这是区域化评测的内在张力 —— 它修的是"通用集覆盖不到本地",但没法修"任何题集都是一种视角"。
  • 本地数据稀缺:区域化评测常受限于可公开获取的高质量本地语料,题源与标注成本都更高。

统计与报告规范#

  • 给基线:随机猜对基线、以及一个参照模型的表现。没有基线的分数不可解读。
  • 给不确定性:报置信区间,说明是几次运行。几分的差距在几百题规模上往往落在噪声内。→ 具体怎么算见 05-statistical-significance.md:SE(p)≈p(1−p)/n\mathrm{SE}(p)\approx\sqrt{p(1-p)/n},100 题 / 70% 成功率对应 ±9 个百分点;同一批题比较要走配对检验(McNemar / paired bootstrap),而不是两个独立成功率相减。
  • 报格式细节:prompt 模板、few-shot 数量、答案抽取规则 —— 否则分数不可复现、不可比较。
  • 分桶:总体分数会掩盖子集退化,按类别/学科/难度分桶看。
  • 宏观 vs 微观平均:明确说用哪个。
  • 配对:对比两个模型时,同一批题上做配对比较比各自跑分再比更敏感。

常见面试问法#

Q:benchmark 分数高能说明什么?不能说明什么? A:能说明在那个特定题型、特定分布上的相对表现好,可用于横向比较与版本回归。不能说明:在你自己业务分布上的表现、生成质量、多轮对话、指令遵循、推理鲁棒性、安全性、延迟与成本。它是方向性信号,不是上线结论。

Q:你怎么知道模型没见过这些题? A:诚实讲清风险与做过的检查:与预训练语料做去重比对(n-gram/子串,能抓逐字泄漏但抓不到改写)、时间切分(题目晚于预训练截止,最干净但依赖模型披露截止时间)、私有留出(不公开发布原题)、以及性能异常模式检查(冷门子集反而特别高)。并主动说明:在训练数据不透明的情况下,污染无法被完全排除 —— 所以要做检测并报告结果,做不到严格检测就坦承局限。

Q:为什么要做区域化 benchmark? A:通用 benchmark 的内容分布隐含特定文化视角,测不出模型对本地制度、法律、文化与常识的掌握;而本地部署的实际需求恰恰集中在这些内容上。区域化评测补上这一块盲区,也能把"预训练数据多"与"真正掌握本地知识"区分开。

Q:HKMMLU 是怎么构建的? A:按本 repo 的口径:4 大类、66 个学科、26,698 道多选题。构建时要回答五件事 —— 学科类别怎么划分、题目来源是什么、标注质量如何保证(多人标注 + 仲裁 + 复核)、数据污染如何防(去重/时间切分/私有留出)、以及"本地性"如何定义(哪些题必须靠本地语境才能答对)。同时要主动说明它是多选题、知识回忆层的评测,不覆盖生成、推理、对话与安全,且跨区域分数不可直接比较。

Q:一个四选一的 benchmark,模型得分 30%,怎么解读? A:(假定四选一)随机猜对基线约 25%,30% 意味着只略高于瞎猜,实际能力很弱。必须同时给出随机基线和参照模型表现,分数才有意义。另外要问清是不是对每个学科分别平均(宏观)还是按题目平均(微观),以及有无 few-shot —— 这些都会改变解读。

Q:为什么同一个模型在不同报告里的 benchmark 分数会不一样? A:评测脚本差异:prompt 模板、few-shot 数量与样例、答案抽取规则、是否用 CoT、选项顺序、宏观/微观平均方式、题目版本(是否被替换过)。这些都能造成稳定的偏移,所以跨来源分数不可直接比较 —— 要比就只能用同一套脚本重跑。

易错点#

  • ❌ 报 benchmark 分数不报随机基线,让 30% 看起来像"还行"。
  • ❌ 声称"绝对没有数据污染" —— 在训练数据不透明的前提下这不成立,坦诚反而是加分。
  • ❌ 拿分数直接推断业务表现,或在面试里把某个 benchmark 的一个数字当成模型能力结论。
  • ❌ 混淆知识回忆与推理/生成能力 —— 多选题考的是前者。
  • ❌ 跨来源、跨脚本直接比较分数,不核对 prompt 与抽取规则。
  • ❌ 把区域化 benchmark 当成"通用 benchmark 的本地版",不区分题目是否真的依赖本地语境。
  • ❌ 只报总体分数:类别不均衡时宏观/微观平均结论不同,分桶结果也可能被掩盖。
  • ❌ 把 HKMMLU 说成"我一个人构建的公开 benchmark" —— 如实说参与程度(CV 口径是「参与构建」)。

自测#

1. 面试官问「HKMMLU 的题,模型是不是训练时见过?」你怎么答?

答案

诚实说明这是这类评测的固有风险,然后讲做过的检测与缓解:① 与预训练语料做去重比对(n-gram/子串重叠,能抓逐字泄漏但抓不到改写);② 时间切分(题目晚于预训练截止时间,最干净,但依赖模型披露截止时间);③ 私有留出 —— 原题不公开发布,只发布形态说明;④ 性能异常模式检查(冷门子集异常高分往往是见过的信号)。并主动承认:训练数据不透明时无法完全排除污染,所以要在报告里给出检测结果;若当时检查不严,坦承局限并说明重做会怎么改。硬说"绝对没污染"不可信,主动承认是加分。

2. 一个模型在某个四选一 benchmark 上得 30%,能得出什么结论?还缺什么信息?

答案

(四选一时)随机猜对基线约 25%,30% 只略高于瞎猜,说明该能力很弱、接近不会。但还缺:① 随机基线与参照模型分数(否则数字无法定位);② 是宏观平均还是微观平均;③ 是否 few-shot、prompt 模板与答案抽取规则;④ 题目是否有污染;⑤ 分学科分桶结果(可能有某类特别强、某类完全不会)。缺这些,30% 这个数字基本不可解读。

3. 为什么需要区域化 benchmark?它自身有什么绕不开的局限?

答案

需要的原因:通用 benchmark 的内容分布隐含特定文化/地区视角,测不出模型对本地制度、法律、文化与常识的掌握,而本地部署的实际需求正集中于此;它也能区分"预训练数据多"与"真的掌握本地知识"。局限:① 仍只是特定题型(如多选题)、知识回忆层的评测,覆盖不了生成、推理、对话、安全;② 跨区域分数不可直接比较(考点、难度、类目构成都不同);③ benchmark 自身带文化视角 —— "什么是本地的正确知识"由出题者定义,分类体系与题材选择都隐含立场,这是区域化评测的内在张力;④ 可用的高质量本地语料稀缺,题源与标注成本高。

4. 同一个模型在两个不同报告中 benchmark 分数差了几个点,可能的原因有哪些?

答案

评测脚本差异:prompt 模板不同、few-shot 数量与样例不同、是否启用 CoT、答案抽取规则不同、选项顺序被重排。统计口径差异:宏观平均(按学科)vs 微观平均(按题目)。数据差异:题目版本不同(是否有替换/去污染)、是否有污染残留。所以跨来源分数不可直接比较,要比就必须在同一套脚本、同一批题上重跑,并做配对比较。

5. 如果让你从零设计一个评测集,你会定哪些规范?

答案

① 明确测什么能力,并说清不测什么;② 题目来源与难度分布可控,覆盖目标分布而非只挑简单题;③ 标注质量机制 —— 标准、多人标注、仲裁、抽样复核(错误标注会沉默地污染结论);④ 污染控制 —— 私有留出、时间切分、去重检测,并在报告里公开做了哪些检查;⑤ 可比性 —— 固定 prompt 模板、few-shot 设置与抽取规则;⑥ 统计规范 —— 给随机基线与参照模型、报置信区间与运行次数、分桶报告、说明宏观/微观平均;⑦ 防饱和 —— 定期补充新题或保留动态/私有子集;⑧ 覆盖负例与拒答场景(该说不知道的任务),而不只是有标准答案的正例。