Skip to content

评估指标全览

训练出一个模型只是第一步——怎么判断它好不好才是更难的问题,选错指标会得出完全错误的结论。本页系统梳理 AI 各领域的评估指标:分类(Precision/Recall/F1)、目标检测(IoU/mAP/PR 曲线)、LLM 文本生成(Perplexity/BLEU/ROUGE/BERTScore)、RAG(RAGAS)与 Agent(任务完成率/工具调用准确率)。传统的分类指标在 模型评估与指标 已有完整论述,本页聚焦检测、生成式与智能体评估这两个快速演进的领域。前置阅读:模型评估与指标、损失函数。

评估指标要回答一个最根本的问题:你的模型在真实任务上”够不够好”。不同任务对”好”的定义截然不同:

  • 分类= 考试对了几道题。但”对题率”(准确率)在类别不平衡时会骗人——99% 是正常邮件时全猜正常就有 99% 准确率。
  • 检测= 不光要认对,还要框准。框偏了等于认错——所以有 IoU 衡量”框的重合度”。
  • LLM 生成= 作文题没有唯一正确答案。不能简单对/错,要衡量”像不像参考答案”(BLEU/ROUGE)或”语义是否相近”(BERTScore)。
  • RAG= 开卷考试,要同时考”答案对不对”和”有没有真的翻书”(faithfulness,是否忠于检索到的资料)。
  • Agent= 综合实训,要考”任务完成了没”和”工具用对了没”,还要看”走的路径合不合理”(轨迹评估)。

指标选择决定优化方向。模型会朝你衡量的方向去优化——如果用准确率优化欺诈检测,模型会倾向于全部预测”非欺诈”。选对指标,模型才会学对。

分类指标的基础是混淆矩阵(Confusion Matrix)——它把所有预测结果按”真实类别 × 预测类别”分解成四个象限(二分类)或 C×CC \times C 网格(CC 类)。详见 模型评估 的完整推导,这里做必要回顾。

三分类混淆矩阵热力图(按行归一化)

对角线(深色)是预测正确的比例,非对角线是混淆方向——比如”狗”被误判成”鸟”的比例越高,说明模型在这两类间越容易混淆。

术语含义俗称
TP(True Positive,真正例)预测正、实际正命中
FP(False Positive,假正例)预测正、实际负误报(假阳性)
FN(False Negative,假反例)预测负、实际正漏报(假阴性)
TN(True Negative,真反例)预测负、实际负正确拒绝

Precision=TPTP+FP,Recall=TPTP+FN\text{Precision} = \frac{TP}{TP + FP}, \qquad \text{Recall} = \frac{TP}{TP + FN}

  • Precision(精确率/查准率):预测为正的里,实际有多少是正。回答”我说它是正例,可信吗?”
  • Recall(召回率/查全率):实际为正的里,被找出了多少。回答”真正的正例,我漏了多少?”

二者是跷跷板:阈值越低,Recall 越高(抓得多),但 Precision 越低(误报多);阈值越高则相反。

F1 是 Precision 与 Recall 的调和平均(Harmonic Mean),在二者之间取平衡:

F1=2⋅Precision⋅RecallPrecision+Recall=2 TP2 TP+FP+FNF_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} = \frac{2\,TP}{2\,TP + FP + FN}

为什么用调和平均而非算术平均?调和平均对两个值中的较小值更敏感——Precision=0.99、Recall=0.01 时,算术平均 = 0.50(看似不差),调和平均 = 0.0198(暴露问题)。F1 惩罚”偏科”。

更一般地,FβF_\beta 用一个权重 β\beta 控制 Recall 的相对重要性:

Fβ=(1+β2)P⋅Rβ2P+RF_\beta = (1 + \beta^2)\frac{P \cdot R}{\beta^2 P + R}

β>1\beta > 1 更看重 Recall(如医疗筛查,宁可误报不漏报),β<1\beta < 1 更看重 Precision(如垃圾邮件,宁可漏报不误报)。

目标检测(Object Detection)比分类更复杂——不仅要识别类别,还要预测边界框(Bounding Box)。代表模型见 YOLO 目标检测、CNN。检测评估的核心是衡量”框得准不准”和”综合表现好不好”。

IoU 衡量预测框 BpB_p 与真实框 BgtB_{gt} 的重合度:

IoU=∣Bp∩Bgt∣∣Bp∪Bgt∣=交集面积并集面积\text{IoU} = \frac{|B_p \cap B_{gt}|}{|B_p \cup B_{gt}|} = \frac{\text{交集面积}}{\text{并集面积}}

  • IoU = 1:完全重合。
  • IoU = 0:完全不重合。
  • IoU ≥ 0.5:通常视为”检测正确”(PASCAL VOC 标准);COCO 用 IoU ∈ [0.5, 0.95] 的多个阈值取平均,更严格。

判定一个检测是否算 TP:需要同时满足(1)类别正确;(2)与某真实框的 IoU ≥ 阈值。如果一个真实框被多个预测框命中,只算置信度最高的那个为 TP,其余算 FP(重复检测);未被任何预测框命中的真实框对应 FN(漏检)。

调整检测器的置信度阈值,会得到不同 (Precision, Recall) 点,连起来就是 PR 曲线(Precision-Recall Curve)。

两个检测器的 PR 曲线对比(AP 越高越好)

**AP(Average Precision,平均精度)**是 PR 曲线下的面积:

AP=∫01P(R) dR≈∑n(Rn−Rn−1) Pn\text{AP} = \int_0^1 P(R)\, dR \approx \sum_{n} (R_n - R_{n-1})\, P_n

AP 越接近 1 越好。**mAP(mean AP)**是所有类别 AP 的平均。两个常见口径:

  • mAP@0.5(PASCAL VOC 口径):IoU 阈值固定 0.5 时各类 AP 的平均。较宽松。
  • mAP@[0.5:0.95](COCO 口径):IoU 从 0.5 到 0.95 步长 0.05 共 10 个阈值,每个算 mAP 再平均。更严格,更贴近”框得很准”的要求。
# 用 torchmetrics 算 mAP(简化)
from torchmetrics.detection.mean_ap import MeanAveragePrecision
metric = MeanAveragePrecision(iou_type="bbox") # 默认算 COCO 口径 mAP@[.5:.95]
preds = [{"boxes": torch.tensor([[10,10,50,50]]), "scores": torch.tensor([0.9]),
"labels": torch.tensor([1])}]
target = [{"boxes": torch.tensor([[12,12,52,52]]), "labels": torch.tensor([1])}]
metric.update(preds, target)
print(metric.compute()) # {'map': ..., 'map_50': ...}

三、漏报率与误报率在工业场景的重要性

Section titled “三、漏报率与误报率在工业场景的重要性”

学术上常看 Precision/Recall,工业部署中**漏报率(FNR)与误报率(FPR)**更直观地对应业务代价:

FNR(漏报率)=FNTP+FN=1−Recall\text{FNR(漏报率)} = \frac{FN}{TP + FN} = 1 - \text{Recall}

FPR(误报率)=FPFP+TN\text{FPR(误报率)} = \frac{FP}{FP + TN}

漏报(False Negative)的代价往往远高于误报(False Positive),这决定了很多工业场景的阈值选择:

场景漏报代价误报代价倾向
癌症筛查漏诊 → 错过治疗时机,危及生命误报 → 复检,焦虑 + 成本宁误报不漏报(低阈值、高 Recall)
自动驾驶行人检测漏检 → 车祸,致命误报 → 误刹车,体验差极度避免漏报
欺诈/入侵检测漏报 → 资金/数据损失误报 → 人工复核成本宁误报不漏报
垃圾邮件过滤漏报 → 收到垃圾邮件(轻微)误报 → 正常邮件被误删(严重)宁漏报不误报(高阈值、高 Precision)

ROC 曲线(Receiver Operating Characteristic)以 FPR 为横轴、TPR(= Recall)为纵轴,AUC-ROC 衡量模型在不同阈值下的整体区分能力。但在类别极不平衡(如欺诈 0.01%)时,PR 曲线比 ROC 更敏感、更有信息量——ROC 在这种情况下会虚高。详见 模型评估 的 ROC vs PR 对比。

工业部署的经验:先根据业务确定”可接受的漏报率/误报率”,再在该约束下最大化另一指标。阈值不是从指标算出来的,是从业务代价反推出来的。

大语言模型生成的是自由文本,没有唯一正确答案,传统分类指标失效。评估 LLM 需要专门的指标。基础的困惑度、BLEU、ROUGE 在 模型评估 已有介绍,这里补充原理与新增指标。

Perplexity 衡量语言模型对一段文本的”惊讶程度”——越低说明模型越觉得这段文本”自然”。它是平均负对数似然的指数:

PPL(W)=exp⁡(−1N∑t=1Nlog⁡P(wt∣w1:t−1))\text{PPL}(W) = \exp\left(-\frac{1}{N}\sum_{t=1}^{N} \log P(w_t \mid w_{1:t-1})\right)

其中 P(wt∣w1:t−1)P(w_t \mid w_{1:t-1}) 是模型在给定前文时对下一个 token 的预测概率。直觉:PPL = kk 意味着模型在每个位置”平均在 kk 个等概率词之间犹豫”。PPL 越低,模型越确定、文本越符合模型预期。

局限:PPL 只能衡量”语言建模”质量,不能衡量”回答对不对""有没有幻觉”。一个 PPL 很低的模型可能流畅地胡说八道。PPL 主要用于预训练阶段监控,不用于下游任务评估。

BLEU(Bilingual Evaluation Understudy)是机器翻译的经典指标,衡量生成文本与参考文本的 n-gram 重合度:

BLEU=BP⋅exp⁡(∑n=1Nwnlog⁡pn)\text{BLEU} = \text{BP} \cdot \exp\left(\sum_{n=1}^{N} w_n \log p_n\right)

  • pnp_n:n-gram 精度(生成文本中 n-gram 出现在参考文本里的比例)。通常 N=4N=4,权重 wn=1/4w_n = 1/4。
  • BP(Brevity Penalty,短句惩罚):惩罚过短的生成(避免只输出几个高精度词就刷分):BP=min⁡(1,e1−r/c)\text{BP} = \min(1, e^{1 - r/c}),其中 rr 是参考长度,cc 是生成长度。

BLEU 取值 0–1(或 0–100),越高越好。局限:只看字面 n-gram 重合,不捕捉语义;同义词替换会得分很低;对参考文本数量敏感。主要用于翻译,不适合开放对话。

ROUGE(Recall-Oriented Understudy for Gisting Evaluation)是文本摘要的经典指标,与 BLEU 互补——侧重召回(参考文本里的内容有没有被生成出来):

  • ROUGE-N:参考文本与生成文本的 n-gram 召回率。最常用 ROUGE-1(词级)、ROUGE-2(二元词组级)。
  • ROUGE-L:基于最长公共子序列(LCS, Longest Common Subsequence)。FL=(1+β2)RlcsPlcsRlcs+β2PlcsF_L = \frac{(1+\beta^2) R_{lcs} P_{lcs}}{R_{lcs} + \beta^2 P_{lcs}}。ROUGE-L 对词序敏感,能捕捉句子结构相似性。
from evaluate import load # HuggingFace evaluate 库
rouge = load("rouge")
scores = rouge.compute(predictions=["the cat sat on the mat"],
references=["the cat is on the mat"])
# {'rouge1': ..., 'rouge2': ..., 'rougeL': ...}

BLEU/ROUGE 只看字面重合,“开心”与”快乐”会被判为完全不同。BERTScore 用预训练模型(如 BERT)的嵌入计算生成与参考的语义相似度:

  1. 用 BERT 编码生成句和参考句,得到每个 token 的上下文向量。
  2. 对生成句的每个 token,在参考句中找余弦相似度最大的 token(greedy 匹配),得到 Precision;反向得 Recall;再算 F1。

PBERT=1∣x^∣∑x^i∈x^max⁡xj∈xex^i⊤exjP_{\text{BERT}} = \frac{1}{|\hat{x}|}\sum_{\hat{x}_i \in \hat{x}} \max_{x_j \in x} \mathbf{e}_{\hat{x}_i}^\top \mathbf{e}_{x_j}

BERTScore 能识别同义表达,比 BLEU/ROUGE 更贴合人类判断,已成为生成式任务(翻译、摘要、对话)的主流辅助指标。

  • LLM-as-Judge:用更强的模型(GPT-4 / Claude)给被评估模型的输出打分,按”帮助性、准确性、安全性”等维度评 1–5 分。优点是可扩展、成本低;缺点是 Judge 模型有自身偏见(如偏好冗长、偏好自己风格)。详见 模型评估 的 LLM-as-Judge 章节。
  • 成对比较与 Elo Rating:让两个模型对同一问题作答,人类或 Judge 模型选更好的,用 Elo(或 Bradley-Terry 模型)算排名。Chatbot Arena 是最权威的 LLM 排行榜。
  • LLM-free / 基于参考的指标复兴:因 LLM-as-Judge 的可复现性与成本问题,社区重新重视 ROUGE、BERTScore、n-gram 类指标作为廉价、可复现的基线。

RAG(Retrieval-Augmented Generation,检索增强生成)系统有两道关:检索对不对和生成对不对。RAGAS(Retrieval-Augmented Generation Assessment)是专为 RAG 设计的评估框架,从”检索质量”和”生成质量”两端给出指标。

1. Faithfulness(忠实度)——生成答案是否忠于检索到的上下文(不编造)。

把答案拆成若干陈述(statement),逐条判断能否被检索上下文支持:

Faithfulness=被上下文支持的陈述数答案中总陈述数\text{Faithfulness} = \frac{\text{被上下文支持的陈述数}}{\text{答案中总陈述数}}

Faithfulness 低 = 答案里有检索资料没说的内容 = 幻觉。这是 RAG 最关键的指标。

2. Answer Relevancy(答案相关性)——答案是否切题(针对用户问题回答)。

用 LLM 从答案反向生成若干”可能的问题”,算这些生成问题与原始问题的语义相似度:

Answer Relevancy=1N∑i=1Ncos⁡(eqi,eqorig)\text{Answer Relevancy} = \frac{1}{N}\sum_{i=1}^{N} \cos(\mathbf{e}_{q_i}, \mathbf{e}_{q_{\text{orig}}})

相关性低 = 答非所问或啰嗦跑题。

3. Context Precision(上下文精度)——检索回来的上下文里,相关的排在前面吗?

衡量检索结果排序的质量,类似检索中的 Precision@k / NDCG:

Context Precision=1K∑k=1KPrecision@k⋅rel(k)\text{Context Precision} = \frac{1}{K}\sum_{k=1}^{K} \text{Precision@k} \cdot \text{rel}(k)

其中 rel(k)\text{rel}(k) 表示第 kk 条检索结果是否相关。Context Precision 低 = 相关文档排在后面(或没检索到)= 检索器需优化。

from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision
from datasets import Dataset
data = Dataset.from_dict({
"question": ["GPT-4 是哪一年发布的?"],
"answer": ["GPT-4 于 2023 年 3 月发布。"],
"contexts": [["OpenAI 于 2023 年 3 月发布了 GPT-4。"]],
"ground_truth": ["2023 年 3 月"],
})
result = evaluate(data, metrics=[faithfulness, answer_relevancy, context_precision])
print(result) # {'faithfulness': 1.0, 'answer_relevancy': ..., 'context_precision': ...}

RAG 评估的工程意义:Faithfulness 和 Context Precision 把”RAG 出错”拆成了”检索错”还是”生成错”两个可定位的故障——前者改 embedding/召回策略,后者改 prompt/生成模型。这种指标即诊断的特性是 RAGAS 的核心价值。

补充指标:Context Recall(相关上下文是否都被检索到,针对有 ground-truth 的场景)、Answer Correctness(答案与标准答案的吻合度,结合语义与事实)。

LLM Agent(智能体)能调用工具、规划多步、与环境交互——评估远比单轮问答复杂。Agent 评估从三个层面展开:最终结果、工具使用、行动轨迹。

最直接的指标:任务有没有完成。需要一个判定器(ground-truth 答案、断言测试或 LLM-as-Judge)判断 Agent 的最终输出是否达成目标。

Success Rate=成功完成的任务数总任务数\text{Success Rate} = \frac{\text{成功完成的任务数}}{\text{总任务数}}

这是 Agent 评估的”准确率”。但同样的成功率背后,路径可能差很多——5 步完成和 50 步完成体验截然不同。

2. 工具调用准确率(Tool Call Accuracy)

Section titled “2. 工具调用准确率(Tool Call Accuracy)”

Agent 调对工具了吗?参数传对了吗?按工具调用的对错评估:

  • 工具选择准确率:该调 A 工具时调了 A 的比例。
  • 参数准确率:调用工具时传入参数正确的比例。
  • 调用次数:是否过度调用(冗余)或调用不足。
# 简化示例:评估 Agent 的工具调用序列
def tool_accuracy(predictions, references):
correct = sum(p == r for p, r in zip(predictions, references))
return correct / len(references)
pred_calls = ["search", "calculator", "summarize"]
true_calls = ["search", "calculator", "answer"]
print(tool_accuracy(pred_calls, true_calls)) # 0.67

3. 轨迹评估(Trajectory Evaluation)

Section titled “3. 轨迹评估(Trajectory Evaluation)”

不只看结果,还看走的路对不对。一条好的轨迹应该:步骤合理、无冗余、无死循环、遵循规范。常用度量:

  • 轨迹精确匹配(Exact Match):Agent 的动作序列与专家示范(reference trajectory)完全一致的比例。过于严格,很少单独用。
  • 轨迹效率:实际步数 / 最短步数,衡量是否绕路。
  • 无效动作率:失败/被拒绝/重复的工具调用占比。
  • 基于 LLM 的轨迹评分:让 Judge 模型看完整轨迹,按”规划合理性""是否遵循 SOP""有无幻觉”打分。
指标衡量什么典型用途
任务完成率最终结果对不对总体能力,Agent benchmark 主指标
工具调用准确率工具用对没评估 function calling 能力
轨迹效率步数是否经济评估规划与成本
无效动作率是否乱调工具/死循环评估稳定性与鲁棒性
轨迹合理性(LLM 评分)整条路径合不合理综合质量,替代人工评审
  • AgentBench / GAIA / SWE-bench:多任务 Agent 能力评测。其中 SWE-bench(软件工程任务,让 Agent 修 GitHub issue)是 2024–2025 年最被看重的代码 Agent 基准。
  • ToolBench / API-Bank:专门评估工具调用能力。
  • WebArena / VisualWebArena:让 Agent 操作真实网页(浏览器自动化)完成任务的沙箱评测。
  • τ-bench(Tau-bench):多轮工具调用与策略遵循的精细评测。
  1. 数据污染(Contamination):评估集混入了训练数据,模型”背答案”导致虚高。大模型时代尤其严重——网上的 benchmark 答案大概率进了预训练语料。需用私有/动态生成的评估集。
  2. 指标与目标错配:用 BLEU 评估对话(对话不该逐字匹配参考)、用准确率评估欺诈检测(不平衡)。永远先问”这个指标对应我的真实目标吗”。
  3. 单点评估:只报一个阈值下的 Precision/Recall 会误导。PR 曲线和 mAP 给出全貌。
  4. 过拟合评估集:反复在同一个测试集上调参/选模型,等于把它当成验证集用了,性能虚高。需要留出 untouched 的最终测试集。
  5. 人类评估的金标准地位:对生成式任务,自动指标(BLEU/ROUGE/BERTScore)都只是人类判断的近似。最终决策级评估仍需人工评审或成对比较。
  • LLM-as-Judge 成为生成式评估标配,但伴随”偏好模型校准""Judge 偏见校正""自一致性”等改进,社区推出更鲁棒的 Judge 协议(如 Chatbot Arena 的 Bradly-Terry + Elo)。
  • RAG 评估工业化:RAGAS、TruLens、DeepEval、LangSmith 形成完整的 RAG 可观测栈,把 faithfulness/context precision 等指标接入 CI/CD,持续监控线上 RAG 质量。
  • 动态与对抗性基准:为对抗”benchmark 刷榜”和污染,社区推出动态生成、不断更新的评测(如 LiveBench、Dynabench),让模型无法预先记忆答案。
  • Agent 评估走向真实任务:SWE-bench Verified、SWE-bench Multimodal、τ-bench 等推动 Agent 评估从”玩具任务”转向真实软件/客服/操作场景,2026 年多模态 Agent 评估成为热点。
  • 过程奖励模型(PRM):用于评估与引导 Agent 的中间步骤而非仅最终结果,OpenAI 的 o1/RM、DeepSeek-R1 的推理链评估均采用此类思路。
  • 多模态评估:CLIPScore 之外,出现针对 VLM(视觉语言模型)幻觉(如 POPE、MMHal-Bench)、图文一致性(如 T2I-CompBench)的专项指标。
  • 开源评估平台:OpenCompass、lm-eval-harness、LightEval 等提供统一的评测框架,整合上百个 benchmark,降低”自评”的偏差与成本。
  • 模型评估与指标——分类指标、ROC/PR、交叉验证、LLM-as-Judge 的系统推导。
  • 损失函数——Focal Loss 等与难例评估相关的损失。
  • 句向量与 Embedding——BERTScore、检索评估背后的语义相似度。
  • YOLO 目标检测——mAP 在检测器中的应用。
  • RAGAS 文档(docs.ragas.io):RAG 评估指标的最新实现与论文。
  • SWE-bench(github.com/princeton-nlp/SWE-bench):代码 Agent 评估的事实标准。
  • OpenCompass / lm-eval-harness:大模型统一评测框架。