Skip to content

模型评估指标

本文介绍评估大语言模型(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:困惑度,越低表示模型越好
  • 多样性:词汇丰富度、句子结构变化
  • 连贯性:对话逻辑一致性
  • 安全性:有害内容比例

人工评估维度

虽然自动指标方便,但人工评估仍是金标准:

  1. 相关性:回答是否切题
  2. 准确性:信息是否准确无误
  3. 完整性:是否覆盖所有要点
  4. 有用性:是否满足用户需求
  5. 安全性:是否包含有害内容
  6. 流畅性:语言是否自然

评估工具

  • 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}, ...}

实践建议

  • 任务匹配:选择与任务性质相符的指标
  • 组合使用:自动指标 + 人工评估
  • 基准对比:与基线模型比较
  • 领域适应:专业领域需定制评估标准
  • 持续监控:模型迭代时跟踪指标变化

选择正确的评估指标是优化模型的关键一步!