11711 Advanced NLP:评测与实验设计
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)提出将评测分解为细粒度标准:
- 为任务定义评测清单(一组期望标准)。
- 让 LLM 评判者逐条独立检查每个标准。
- 汇总二值通过/失败信号。
优势:可解释性更强;能揭示模型在哪里失败,而不仅仅是是否失败。
人工评测
众包标注
- 大规模收集人类偏好判断。
- 需要精心设计标注指南和质量控制流程。
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 研究就是做科学:
- 观察现象或研究空白。
- 提出假设——机制或解决方案。
- 设计实验来检验假设。
- 收集数据 / 运行模型。
- 用合适的统计方法分析结果。
- 得出结论并进行交流。
常见失误:在没有明确步骤 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)。



