模型评估指标
本文介绍评估大语言模型(LLM)性能的常用指标。
生成质量指标
BLEU(Bilingual Evaluation Understudy)
- 用途:机器翻译质量评估
- 原理:比较生成文本与参考文本的 n-gram 重合度
- 范围:0~1,越高越好
- 特点:侧重精确率,适合翻译任务
ROUGE(Recall-Oriented Understudy for Gisting Evaluation)
- 用途:文本摘要评估
- 变体:
- ROUGE-N:n-gram 重合度(如 ROUGE-1, ROUGE-2)
- ROUGE-L:最长公共子序列
- ROUGE-S:跳过词序的 n-gram
- 范围:0~1,越高越好
- 特点:侧重召回率,适合摘要
METEOR
- 改进 BLEU:考虑同义词、词干匹配
- 计算:F1 分数(精确率+召回率)
- 优点:与人类判断相关性更高
任务特定指标
问答任务
- Exact Match (EM):答案完全匹配的比例
- F1 Score:令牌级别的精确率/召回率
- Human Evaluation:人工打分相关性、有用性
代码生成
- Pass@k:k 次采样中至少一次通过测试的比例
- 编译通过率:代码能否成功编译
- 测试用例通过率:通过的单元测试比例
对话质量
- Perplexity:困惑度,越低表示模型越好
- 多样性:词汇丰富度、句子结构变化
- 连贯性:对话逻辑一致性
- 安全性:有害内容比例
人工评估维度
虽然自动指标方便,但人工评估仍是金标准:
- 相关性:回答是否切题
- 准确性:信息是否准确无误
- 完整性:是否覆盖所有要点
- 有用性:是否满足用户需求
- 安全性:是否包含有害内容
- 流畅性:语言是否自然
评估工具
- HELM(Holistic Evaluation of Language Models):斯坦福 comprehensive 评估框架
- OpenAI Evals:开源评估框架
- LangChain Evaluate:集成多种评估方法
- RAGAS:专门评估 RAG 系统
示例:使用 ROUGE 评估摘要
python
from rouge import Rouge
rouge = Rouge()
candidate = "模型在测试集上达到了 95% 的准确率。"
reference = "该模型的测试准确率为 95%。"
scores = rouge.get_scores(candidate, reference)
print(scores)
# 输出:{'rouge-1': {'r': 0.5, 'p': 1.0, 'f': 0.67}, ...}实践建议
- 任务匹配:选择与任务性质相符的指标
- 组合使用:自动指标 + 人工评估
- 基准对比:与基线模型比较
- 领域适应:专业领域需定制评估标准
- 持续监控:模型迭代时跟踪指标变化
选择正确的评估指标是优化模型的关键一步!
