评测指标体系
先说结论
评测指标体系涵盖语言建模指标(PPL)、分类指标(Accuracy/Precision/Recall/F1)、检索指标(MRR/nDCG)、代码生成指标(pass@k)和对话质量指标(LLM 打分),每个指标都有其适用场景和盲区。
QUESTION 面试高频:评测大模型常用的指标有哪些? 按任务类型分:语言建模用 PPL(困惑度),分类用 Accuracy/F1,检索用 MRR/nDCG/Hit Rate,代码生成用 pass@k,对话质量用 LLM 打分/人类偏好。关键是理解每个指标衡量什么、看不见什么——没有万能指标。
基础指标
PPL(困惑度)
直觉:PPL = 10 意味着模型在每个位置上"平均在 10 个等概率候选词之间犹豫"。
其中 是真实分布 与模型分布 之间的交叉熵。
| 模型 | 数据集 | 大致 PPL |
|---|---|---|
| GPT-2 | WikiText-103 | ~37 |
| GPT-3 | Penn Treebank | ~20 |
| LLaMA-2 | WikiText-2 | ~5-8 |
PPL 的局限:低 PPL 不等于高质量输出。PPL 只衡量预测概率,不衡量语义正确性、信息量或风格。
Accuracy / Precision / Recall / F1
混淆矩阵:
| 预测为正 | 预测为负 | |
|---|---|---|
| 实际为正 | TP | FN |
| 实际为负 | FP | TN |
QUESTION 面试高频:F1 为什么用调和平均而不用算术平均? 调和平均确保只要 Precision 或 Recall 中有一个很低,F1 就会被大幅拉低。算术平均允许一个指标很低但另一个很高时"掩盖"问题。F1 的设计保证了模型必须在精确率和召回率之间取得平衡。
Accuracy 的局限
类别不平衡时 Accuracy 会产生误导。假设 95% 为负例,全部预测为负即得 95% 准确率但毫无意义。此时用 macro-F1 或 weighted-F1。
F1 的变体
| 变体 | 公式 | 适用场景 |
|---|---|---|
| Macro-F1 | 各类 F1 的简单平均 | 每类同等重要 |
| Micro-F1 | 全局 TP/FP/FN 计算 | 被大类主导 |
| Weighted-F1 | 按各类样本数加权平均 | 类别不平衡 |
| F-beta | 需要调节 P/R 权重 |
检索评测指标
QUESTION 面试高频:MRR 和 nDCG 的区别是什么?
MRR(Mean Reciprocal Rank)
衡量第一个相关文档的排名倒数的均值。只关注第一个正确结果的排名。
nDCG(Normalized Discounted Cumulative Gain)
- 考虑文档的相关性等级(而非仅二元的"相关/不相关")
- 考虑位置衰减——排名越靠前权重越高
- 归一化到 [0, 1],便于跨查询比较
| 指标 | 关注点 | 适用场景 |
|---|---|---|
| MRR | 第一个正确结果的排名 | 只需要一个正确答案的场景 |
| Precision@K | Top-K 中有多少相关 | 关注检索的精确度 |
| Recall@K | 相关文档被找到了多少 | 关注检索的召回率 |
| nDCG@K | 考虑位置的加权排序质量 | 需要多级相关性的场景 |
| Hit Rate | 有多少查询至少命中一个 | 最基础的检索指标 |
RAGAS 指标体系(RAG 专用)
| 指标 | 衡量内容 | 公式 |
|---|---|---|
| Faithfulness | 回答忠实度 | 被支持的声明数 / 总声明数 |
| Answer Relevancy | 答案相关性 | 反向生成问题的语义相似度 |
| Context Precision | 检索精确度 | 相关 chunk 的位置加权 |
| Context Recall | 检索召回率 | 回答信息在上下文中的覆盖 |
代码生成指标
pass@k
| 变体 | 含义 | 用途 |
|---|---|---|
| pass@1 | 一次通过率 | 实际部署体验 |
| pass@10 | 10 次至少一次通过 | 模型潜力 |
| pass@100 | 100 次至少一次通过 | 理论上限 |
对话质量指标
LLM-as-a-Judge 评分
| 评分方式 | 说明 | 注意事项 |
|---|---|---|
| 1-10 分 | 单点评分 | 定义清晰的评分标准 |
| 成对比较 | A vs B 选择更好 | 注意位置偏差 |
| 参考对比 | 与 golden answer 对比 | 需要高质量参考答案 |
人类偏好评测
| 方式 | 说明 | 成本 |
|---|---|---|
| Chatbot Arena | 盲测对比,Elo 排名 | 中(众包) |
| Likert 量表 | 1-5 分或 1-7 分 | 中 |
| 专家评审 | 领域专家评估 | 高 |
指标选择指南
| 任务类型 | 推荐指标 | 备选 |
|---|---|---|
| 多项选择(MMLU) | Accuracy | - |
| 分类任务 | macro-F1 | Accuracy(平衡数据集) |
| 检索 | nDCG@10 + Recall@100 | MRR, Hit Rate |
| RAG 评测 | Faithfulness + Context Recall | RAGAS 全套 |
| 代码生成 | pass@1 | pass@10 |
| 对话质量 | MT-Bench + Chatbot Arena | LLM 打分 |
| 语言建模 | PPL | 交叉熵 |
如果要对外讲,可以怎么概括
"评测指标的选择取决于任务类型。我的经验是:语言建模用 PPL(但要记住低 PPL 不等于好输出),分类任务用 F1(特别是类别不平衡时 macro-F1),检索评测用 nDCG(比 MRR 更细粒度),代码生成用 pass@1(反映真实部署体验),RAG 系统用 RAGAS 的 Faithfulness + Context Recall。关键是理解每个指标的盲区——PPL 看不见语义正确性,Accuracy 看不见类别不平衡,nDCG 看不见未检索到的文档。多维度组合才能全面评估。"
最后记几条
- PPL = e^(交叉熵):越低越好,但低 PPL 不等于高质量
- F1 用调和平均:确保 P 和 R 不能互相掩盖
- nDCG > MRR:考虑多级相关性和位置衰减
- pass@1 反映部署体验:pass@10 反映潜力上限
- 没有万能指标:每个指标都有盲区,必须多维组合
参考资料
- Jurafsky & Martin, Speech and Language Processing, Chapter 3
- Manning, Raghavan & Schutze, Introduction to Information Retrieval
- Chen, M. et al. "Evaluating Large Language Models Trained on Code" (2021)
- Es, S. et al. "RAGAS: Automated Evaluation of RAG" (2024)