第 12 讲:评测(Evaluation)

目录 · ← l11 · l13 →

第 12 讲:评测(Evaluation)

日期:5 月 6 日(周三,Spring 2026) | 讲师:Percy Liang | 材料:lecture_12.py | 截止:作业 3 到期、作业 4 发布

概览

在决定”用什么数据训练”之前,必须先决定”想要模型具备什么行为”,以及如何衡量它。本讲系统梳理评测版图:困惑度(同分布与 zero-shot)、考试型基准(MMLU、MMLU-Pro、GPQA、HLE)、对话型基准(Chatbot Arena、AlpacaEval、WildBench)、智能体型基准(SWE-bench、Terminal-Bench、CyBench、MLE-Bench)、纯推理基准(ARC-AGI)与安全基准(HarmBench、AIR-Bench);随后讨论真实性与生态效度(GDPVal、MedHELM、Clio)、效度问题(训练-测试污染、数据集质量),以及”如何看待评测”(方法 vs 模型 vs 智能体)。

核心概念与定义

  • 核心难题:把抽象构念(abstract construct)——”好模型”——转化为具体指标(concrete metric)。不同人群对”好”的定义不同:榜单分数、性价比、人类偏好(Chatbot Arena)、真实用户采用(OpenRouter)。
    • 类比:评测语言模型就像评价一家餐厅——米其林星级(基准测试)、性价比(成本调整后)、点评网站(人类偏好)、回头客(真实采用)测的是不同东西。
  • 困惑度(perplexity):对模型 p 与数据集 D,PPL = (1/p(D))^(1/\|D\|),衡量 p 给 D 分配的概率是否高。训练在最小化它;最直观的评测就是测测试集困惑度。
    • 历史:PTB、WikiText-103、One Billion Word(同分布时代;CNN+LSTM 把困惑度从 51.3 降到 30.0)。GPT-2 引入zero-shot(异分布)评测:在 WebText 上训练、在标准数据集上评估。
    • “困惑度就是一切”:若 p 等于真实分布 t,则 p(solution|problem) 就能解决所有任务——压低困惑度终将”抵达 AGI”。“困惑度又超过了所需”:它惩罚每一个 token,包括无信息的 token(”Stanford was founded in 1885” 中的 “founded”);应改用条件困惑度 p(response|prompt)^(1/|response|)。有些基准其实是伪装的困惑度任务:LAMBADA(完形填空)、HellaSwag(句子补全)。
    • 困惑度排行榜的警告:你必须信任提交的模型给出的概率是合法的(归一化为 1)。
  • 考试型基准:科目与难度可控、答案无歧义、易于判分。
    • MMLU:57 个学科、多选题、few-shot;尽管名字如此,它测的其实是知识而非”语言理解”。MMLU-Pro:剔除噪声题、选项从 4 个扩到 10 个、用 CoT 评测;准确率下降 16%–33%(不再饱和)。
    • GPQA:研究生水平、”防谷歌”的题目,由博士承包者撰写;博士专家 65%,非专家用 Google 30 分钟 34%,GPT-4 39%。
    • HLE(Humanity’s Last Exam):2500 道多模态题,出题者共享 50 万美元奖池并获共同作者署名,经前沿模型筛选与多轮评审。
    • 局限:无法反映真实使用(开放式、未必存在唯一正确答案)。
  • 对话型基准(开放式评测):
    • Chatbot Arena:随机用户向两个匿名模型提问并投票;用 Elo 排名,p(A 胜 B) = 1/(1+10^((Elo_B−Elo_A)/400))。特点:真实提示、动态、不必给所有模型喂同样提示(由人来评分);但人群有偏、把风格与正确性混为一谈、易受谄媚(sycophancy)影响。
    • AlpacaEval:805 条指令;以 GPT-4 为裁判、对比 GPT-4 的胜率;曾有长度偏差(LLM 裁判偏爱更长的回答)→ AlpacaEval 2.0 用回归去偏;与人类 Arena 相关性高。
    • WildBench:从 100 万条真实人机对话中挑 1024 个例子;用 GPT-4-turbo 作为带清单(checklist,相当于”评判的 CoT”)的裁判。
    • 关键经验:相似回答之间的成对比较信噪比更高;警惕人类与 LLM 裁判的偏差;明细清单/评分规则能提升可靠性。
  • 智能体型基准(评”模型做了什么”,而非”说了什么”):Agent = LM + agent scaffold(规划、委派、记忆、上下文工程)。
    • SWE-bench:12 个 Python 仓库上的 2294 个任务;给代码库 + issue 描述,提交 PR;用单元测试打分。
    • Terminal-Bench:终端环境(简单、通用);229 个众包任务。
    • CyBench:40 个 CTF 任务;以”首次解出时间”衡量难度。
    • MLE-Bench:75 个 Kaggle 竞赛(需要训练模型、处理数据)。
  • 纯推理基准ARC-AGI——人类 100% 可解,但 AI 很难;每个任务都独一无二,记忆无用。ARC-AGI-1(2019)、ARC-AGI-2(2025,更多步推理)、ARC-AGI-3(2026,交互环境)。预训练语言模型没能推动它;推理模型(o1、o3)才真正起飞。
  • 安全基准HarmBench(510 种违法或违反规范的有害行为);AIR-Bench(基于监管框架:314 个风险类别、5694 条提示);越狱(jailbreaking)——GCG 自动优化对抗提示,并可从开源模型迁移到闭源模型。安全是强语境相关的(政治、法律、社会规范因国家而异),风险也高度多样(幻觉、谄媚、协助犯罪、不平等)。
  • 真实性与生态效度:评测在多大程度上反映真实使用?GDPVal(OpenAI):覆盖美国 GDP 前 9 大行业的 44 个职业,任务来自有约 14 年经验的专业人士;MedHELM:来自 29 位临床医生的 121 个临床任务(而非标准化考试);Clio(Anthropic):用 LM 分析真实用户数据。不幸的是,真实性与隐私有时互相冲突。
  • 效度 / 污染
    • 路径 1:从模型行为推断训练-测试重叠(利用数据点的可交换性)。
    • 路径 2:推动报告规范(模型方应报告训练-测试重叠、置信区间)。
    • 路径 3:使用最新评测(LiveCodeBench、UncheatableEval——抓取新网页);但时间戳也不绝对可靠(存在转载)。
    • 路径 4:使用私有评测(内部代码库、个人写作)——对困惑度最容易。
    • 数据集质量:SWE-bench → SWE-bench Verified;各类基准的”Platinum”版本;智能体基准常见问题是测试用例不足(平凡 agent 也能通过);Docent 用 LLM 检查 agent 轨迹来发现问题。
  • 如何思考评测:没有唯一正确的评测,取决于你要回答什么问题(采购决策、原始能力、收益与危害、开发反馈)。基础模型出现之前,我们评测的是方法(固定的训练-测试划分);今天我们大多在评测模型/系统(规则宽松)——例外如 nanogpt speedrun(固定数据、测达到某验证损失所需时间)属于方法型。评测方法能激励算法创新,评测系统对下游用户更有用。无论如何,必须明确游戏规则

代码示例:困惑度与条件困惑度

代码(Python):

import torch

def perplexity(log_probs: torch.Tensor) -> torch.Tensor:
    # log_probs: [num_tokens](log p(token_i | 历史))
    nll = -log_probs.sum()
    return torch.exp(nll / log_probs.numel())       # (1/p(D))^(1/|D|)

def conditional_perplexity(prompt_log_probs, response_log_probs):
    # 只对回答部分打分(p(response | prompt)^(1/|response|))
    return torch.exp(-response_log_probs.sum() / response_log_probs.numel())

代码做了什么: 从逐 token 对数概率算困惑度(标准公式),并给出只对回答打分的条件变体——避免被”高度可预测的 prompt token”稀释。

实现深挖:

  • 为什么是 exp(平均 NLL):PPL = exp(−(1/T)Σ log p(x_t|x_<t))——几何平均意义下的”逆概率”。越低越好;在词表大小 V 上随机猜测约得 PPL ≈ V。
  • 为什么需要条件困惑度:对”Stanford was founded in ___“这类任务,”founded”、”in” 几乎确定、几乎不花代价;只对答案打分才能隔离出模型在关键部分的真实预测能力。
  • 为什么这对排行榜重要:若排行榜以 OpenWebText 困惑度为指标,就必须信任提交方给出的概率模型——讲义关于”验证概率合法性(归一化为 1)”的警告在此适用。

与作业的联系:作业 1 的排行榜就是一个困惑度排行榜(在 B200 上 45 分钟内最小化 OpenWebText 困惑度)——正是这里定义的指标。作业 4 的排行榜则在给定 token 预算下最小化困惑度(用下游 PPL 来评估数据处理的成效)。”评测方法 vs 评测模型”的区分,正是这类课程排行榜得以成立的原因。

代码示例:Elo 评分(Chatbot Arena 风格)

代码(Python):

import numpy as np

def p_win(elo_a, elo_b):
    return 1.0 / (1.0 + 10 ** ((elo_b - elo_a) / 400.0))

def update_elo(elo, winner_idx, loser_idx, k=32):
    e = p_win(elo[winner_idx], elo[loser_idx])
    elo[winner_idx] += k * (1 - e)      # 冷门获胜得分更多
    elo[loser_idx] += k * (0 - (1 - e)) # 冷门落败失分更多
    return elo

# 拟合:遍历所有成对比较并同时更新双方的 Elo。
#(实践中:在比较矩阵上做最大似然拟合。)

代码做了什么: 实现 Elo 更新:胜者获得的分数正比于这场胜利有多”出人意料”(1 − 期望值),败者扣除相同分数。

实现深挖:

  • 为什么用 Elo:它把成对偏好聚合为一个标量评分,其差值通过 logistic 曲线预测胜率。Arena 实际上是在所有比较上做最大似然拟合,这里展示在线更新只为直观。
  • 为什么成对比较有力:比较两个相似回答比绝对打分信噪比更高——这既是人类评测(Arena)也是 LLM 裁判评测(AlpacaEval/WildBench)的基础。

与作业的联系:评测方法论与作业 5 的可选 DPO 部分相关(AlpacaEval 是其评测数据集之一),也与作业 4”训练分类器过滤质量”相关(其训练数据的正负样本构造方式与 DCLM 一致——见第 13/14 讲)。

关键要点

  1. 没有唯一正确的评测——选择能回答你的问题的指标,并明确你在评的是方法、模型还是智能体。
  2. 困惑度依然是模型研发的主力(扩展曲线平滑),但要让不信任它的人信服,还需要贴近真实场景的基准。
  3. 基准版图正走向更难的考试(MMLU→MMLU-Pro→GPQA→HLE)、真实用户偏好、智能体任务表现、纯推理(ARC-AGI)与安全。
  4. 要警惕效度威胁:训练-测试污染、数据集质量问题、裁判偏差(尤其是长度偏好)、以及”针对评测过拟合”。
  5. 评测塑造 AI 的发展——选择衡量什么本身就是有后果的设计决策(游戏规则很重要)。

常见陷阱

  • 基准饱和:模型在 MMLU 上触顶;要用 MMLU-Pro/GPQA/HLE 这类刻意保持难度的评测。
  • LLM 裁判的长度偏差:基于 GPT-4 的裁判偏爱更长的回答;要做去偏(AlpacaEval 2.0 的回归)或使用清单式评判。
  • 污染:若你的预训练数据(作业 4!)包含基准样例,困惑度/准确率数字就失真——要过滤,或改用最新/私有评测。
  • 人类评分中的谄媚与风格混淆:Arena 投票测的是偏好,不是正确性。
  • 评测智能体 ≠ 评测模型:agent scaffold 会显著改变结果;要报告整个系统的配置。
  • 排行榜上信任未经验证的概率:确保提交的模型是合法的概率分布。

复习题

  1. 问: 为什么测试集困惑度更低的模型,对用户而言可能更差?
    • 答: 困惑度奖励的是对所有 token 的概率(包括琐碎的 token),对分词方式敏感,且不反映偏好、安全、风格或任务成功率——而这些才是用户真正在意的。对话型与智能体型基准测的是不同的构念。
  2. 问: GPQA 的”防谷歌”是什么意思?为什么重要?
    • 答: 题目极其专业,非专家即使能上网也答不出(非专家 34%,博士专家 65%)——因此该基准隔离的是真正的专家级知识,而不是检索能力。
  3. 问: 如何可靠地评测开放式回答?
    • 答: 优先在相似回答之间做成对比较(信噪比更高);用清单/评分规则配合 LLM 裁判(WildBench 式 CoT 评判);用与人类(Arena)的相关性来验证裁判;警惕长度/谄媚偏差。