Lec13 评测与基准测试

为什么评测很重要

评测是我们在 NLP 领域宣称取得进展的核心机制。糟糕的评测会导致:

  • 对模型能力得出误导性结论。
  • 模型在不代表真实能力的指标上刷高分。
  • 跨系统、跨论文无法进行有效比较。

两类评测方式

基于损失的评测(Loss-Based Evaluation)

训练阶段(以及验证集上)使用模型自身的损失:

\[ \mathcal{L} = -\sum_{t} \log p_\theta(x_t \mid x_{<t}) \]

通常以困惑度(Perplexity)形式报告:

\[ \text{PPL} = \exp\!\left(\frac{1}{T}\sum_{t=1}^{T} -\log p_\theta(x_t \mid x_{<t})\right) \]

  • PPL 越低,语言建模效果越好。
  • 计算速度快,与训练目标直接相关。
  • 问题:PPL 不一定与下游任务性能正相关。

基于任务指标的评测(Task-Metric-Based Evaluation)

在保留测试集上使用任务特定指标进行评测:

指标 任务 备注
精确匹配(EM) 问答、代码 二值,严格
pass@K 代码生成 K 次采样中是否有通过测试的
ROUGE-L 摘要生成 最长公共子序列 F1
BLEU 机器翻译 n-gram 精度 + 简短惩罚
Accuracy 分类、选择题 正确比例

基准测试(Benchmarks)

好的基准测试的特征

一个好的 Benchmark 应该:

  • 有效(Valid)——真实衡量其声称衡量的能力。
  • 可靠(Reliable)——跨运行/标注者方差低。
  • 判别力强(Discriminative)——能区分当前前沿模型。
  • 未饱和(Not Saturated)——顶级模型不应已达天花板。
  • 无污染(Contamination-Free)——测试样本不应出现在训练数据中。

课程中讨论的核心基准

MMLU(大规模多任务语言理解)

  • 涵盖 STEM、人文、法律等 57 个学科。
  • 四选一选择题,以准确率评测。
  • 曾经极具挑战性,但前沿模型已接近饱和。

HumanEval

  • 164 道 Python 编程题。
  • 使用 pass@K 评测:

\[ \text{pass@}k = \mathbb{E}_{\text{problems}}\!\left[1 - \frac{\binom{n-c}{k}}{\binom{n}{k}}\right] \]

其中 \(n\) 为总采样次数,\(c\) 为通过单元测试的次数,\(k\) 为采样预算。

  • 通过单元测试验证功能正确性。

GSM8k

  • 8500 道小学数学应用题。
  • 需要多步算术推理。
  • 链式思维(chain-of-thought)提示下效果显著;大模型已趋于饱和。

任务指标详解

精确匹配(Exact Match)

\[ \text{EM}(y, \hat{y}) = \mathbf{1}[y = \hat{y}] \]

简单但严格,对细微措辞差异非常敏感。

ROUGE

ROUGE-N 召回率(参考答案 \(r\),候选答案 \(c\)):

\[ \text{ROUGE-N} = \frac{\sum_{s \in r} \sum_{\text{gram}_n \in s} \text{Count}_{\text{match}}(\text{gram}_n)} {\sum_{s \in r} \sum_{\text{gram}_n \in s} \text{Count}(\text{gram}_n)} \]

ROUGE-L 使用最长公共子序列代替 n-gram。

BLEU

\[ \text{BLEU} = \text{BP} \cdot \exp\!\left(\sum_{n=1}^{N} w_n \log p_n\right) \]

其中 \(p_n\) 为截断 n-gram 精度,BP 为简短惩罚因子。

  • BLEU 是语料库级指标。
  • 被批评为无法捕捉语义相似性。

LLM 作为评判者(LLM-as-Judge)

用一个强大的 LLM 代替固定指标来对输出打分或排名。

成对比较模式:

给定提示 \(x\) 和两个回答 \(a\)\(b\),让评判模型判断:

“哪个回答更好?A、B 还是平局?”

绝对打分模式:

“请从 1 到 10 对这个回答的有用性打分。”

主要问题:

  • 位置偏差(评判模型偏向第一个/第二个回答)。
  • 自我增强偏差(GPT-4 偏向 GPT-4 风格的输出)。
  • 冗长偏差(评判模型倾向于给更长的回答打高分)。

缓解方法:

  • 交换顺序并取平均。
  • 使用多个评判模型。
  • 用人工标注进行校准。

基于清单的评测(Checklist-Based Evaluation)

Lee 等人(2025)提出将评测分解为细粒度标准:

  1. 为任务定义评测清单(一组期望标准)。
  2. 让 LLM 评判者逐条独立检查每个标准。
  3. 汇总二值通过/失败信号。

优势:可解释性更强;能揭示模型在哪里失败,而不仅仅是是否失败。

人工评测

众包标注

  • 大规模收集人类偏好判断。
  • 需要精心设计标注指南和质量控制流程。

LMSys Chatbot Arena

  • 开源平台,匿名用户对比不同模型输出。
  • 使用 Bradley-Terry 模型估计 ELO 风格评级:

\[ P(\text{模型 A 胜出}) = \frac{e^{\beta_A}}{e^{\beta_A} + e^{\beta_B}} \]

  • 来自真实用户的大量比较数据,提示词多样。
  • 局限性:提示词分布不受控;用户自我选择偏差。

Lec13 小结

  • 基于损失的指标(PPL)计算廉价,但并不总能预测下游质量。
  • 好的基准必须有效、有判别力且无污染。
  • 没有单一完美指标,应使用多种指标综合判断。
  • LLM-as-Judge 越来越实用,但需要仔细处理偏差。

Lec14 研究方法与实验设计

NLP 中的科学方法

做 NLP 研究就是做科学:

  1. 观察现象或研究空白。
  2. 提出假设——机制或解决方案。
  3. 设计实验来检验假设。
  4. 收集数据 / 运行模型。
  5. 用合适的统计方法分析结果
  6. 得出结论并进行交流。

常见失误:在没有明确步骤 2–3 的情况下直接跳到步骤 4。

形成研究假设

好的假设应该:

  • 可证伪(Falsifiable)——实验有可能证明其错误。
  • 具体(Specific)——明确自变量、因变量和预期方向。
  • 有依据(Motivated)——基于已有工作或理论原因。

示例:

“与标准 SFT 相比,基于链式思维数据的微调将提高 GSM8k 准确率,因为逐步监督能减少推理时的分布偏移。”

统计分析

标准误与置信区间

对于由 \(n\) 个独立同分布样本估计的指标 \(\mu\)

\[ \text{SE} = \frac{\sigma}{\sqrt{n}} \]

95% 置信区间(大样本,正态近似):

\[ \hat{\mu} \pm 1.96 \cdot \text{SE} \]

务必在点估计旁报告置信区间。没有不确定性的结果不是可靠结果。

假设检验

零假设 \(H_0\):系统 A 和系统 B 之间没有差异。

p 值:假设 \(H_0\) 成立时,观察到至少和测量值一样大的差异的概率。

常用阈值:\(p < 0.05\)(但这不应是唯一标准)。

配对检验 vs 非配对检验

场景 检验方法
同一测试集,两个模型 配对检验(McNemar、Wilcoxon 符号秩)
独立测试集 非配对检验(t 检验、Mann-Whitney U)

当配对有效时(相同输入评测两次),配对检验通常功效更强。

分类任务 McNemar 检验:

\[ \chi^2 = \frac{(b - c)^2}{b + c} \]

其中 \(b\) = A 对 B 错的样本数;\(c\) = A 错 B 对的样本数。

Bootstrap 置信区间

对测试集有放回地重采样 \(B\) 次;在每次重采样上计算指标:

\[ \hat{\mu}^{*(b)} = \text{metric}(\text{resample}_b) \]

\(\{\hat{\mu}^{*(b)}\}\) 的 2.5 到 97.5 百分位作为 95% CI。

非参数方法,适用于任意指标。

数据污染(Data Contamination)

问题所在

如果测试样本(逐字或改写后)出现在预训练数据中,报告的准确率会虚高。

时间分割(Temporal Split)

以时间点 \(T\) 为界,\(T\) 之前的数据用于训练,\(T\) 之后的数据用于评测。

  • 从根本上杜绝前瞻性污染。
  • GSM8k 风格的时间保留集采用此方法。

N-gram 重叠检查

计算训练集与测试集之间的 n-gram 重叠,标记高重叠样本。

统计功效分析(Power Analysis)

在实验前确定所需样本量 \(n\),以检测到真实效应。

在显著性水平 \(\alpha\) 和功效 \(1-\beta\) 下的两样本检验:

\[ n = \frac{(z_{\alpha/2} + z_\beta)^2 \cdot 2\sigma^2}{\delta^2} \]

其中 \(\delta\) 为最小可检测效应量。

核心洞见:功效不足的实验浪费资源并产生误导。如果 \(n\) 太小,可能错过真实效应(第二类错误),或在多重检验下报告假阳性。

标注质量

构建带有人工标签的数据集时,需要衡量标注者之间的一致性。

Cohen’s Kappa(2 名标注者)

\[ \kappa = \frac{p_o - p_e}{1 - p_e} \]

其中 \(p_o\) = 实际一致率,\(p_e\) = 随机一致的期望比例。

  • \(\kappa = 1\):完全一致。
  • \(\kappa = 0\):随机水平的一致。
  • \(\kappa < 0\):低于随机水平。

Fleiss’ Kappa(多名标注者)

Cohen’s Kappa 对 \(k\) 名评分者的推广:

\[ \bar{\kappa} = \frac{\bar{P} - \bar{P}_e}{1 - \bar{P}_e} \]

Krippendorff’s Alpha

更通用:适用于有序、区间、比例尺度,支持缺失数据,适用于任意数量的标注者。

对于名义量表,\(\alpha\) 退化为类似 Fleiss’ \(\kappa\) 的形式。

一致性解读(Landis & Koch 量表):

\(\kappa\) 范围 解读
\(< 0.20\) 轻微
\(0.21\)\(0.40\) 一般
\(0.41\)\(0.60\) 中等
\(0.61\)\(0.80\) 较好
\(> 0.80\) 几乎完全一致

可发表的标注质量目标:\(\kappa \geq 0.6\)

方差减少(Variance Reduction)

比较模型时,降低方差使比较更清晰。

控制变量

在比较模型时,尽可能使用相同的随机种子、相同的测试集、相同的 batch 顺序。

分层采样

确保测试集覆盖不同难度层级;在汇总结果的同时报告各层级结果。

多次运行

报告 \(k\) 个随机种子下的均值和标准差:

\[ \bar{m} \pm \text{std}(m_1,\dots,m_k) \]

实验设计检查清单

实验前确认:

Lec14 小结

  • 明确的假设是实验成功的一半。
  • 始终在点估计旁报告不确定性(SE、CI)。
  • 配对有效时使用配对检验,功效更强。
  • 数据收集前做功效分析,避免功效不足。
  • 高标注一致性(\(\kappa \geq 0.6\))是可信数据集的必要条件。
  • 数据污染是基准有效性面临的严重而常被低估的威胁。

总结

  • Lec13: NLP 评测需要仔细选择指标。基准测试必须有效、有判别力且无污染。LLM-as-Judge 功能强大但需缓解偏差。人工评测(Chatbot Arena)在大规模下提供真实参考。
  • Lec14: 好的实验设计始于可证伪的假设。统计严谨性(置信区间、假设检验、功效分析)和高标注质量(\(\kappa\))是 NLP 可信研究不可或缺的要素。

本文基于 CMU 11-711 Advanced NLP 课程讲义(Lec13 评测与基准测试、Lec14 研究方法与实验设计,Sean Welleck)。