准确率(Accuracy)详解

准确率(Accuracy)是最直观的分类指标:预测正确的样本数占总样本数的比例。微调验收时,它适合作为「第一眼总览」,但在类别不平衡或多标签场景下,单独使用容易误导。

段末注释:Accuracy 统计的是样本级完全匹配比例;与 Trainer 日志中的 mean_token_accuracy(token 级)不是同一指标。

系列索引:微调评估指标导读


一、直观含义

对 (N) 个测试样本:

$$
\text{Accuracy} = \frac{1}{N} \sum_{i=1}^{N} \mathbb{1}[\hat{y}_i = y_i]
$$

人话:100 条测试里猜对几条。

  • 情绪六分类中 accuracy = 0.625 → 400 条约 250 条标签完全正确。
  • 生成式分类需先把模型输出解析为离散标签(如正则抽 fear|joy|...),再与真值比较。

二、使用场景与所需数据

场景 适用性 数据要求
多类分类,类别大致均衡 每条样本有唯一真值标签
类别严重不平衡 需配合 macro F1
开放文本生成 不适用 改用 BLEU / ROUGE / EM
排序 / 回归 不适用 改用 MSE、Spearman 等

LLM 微调中的两种用法

  1. 生成式分类generate() → 解析字符串 → 与标签比较(解析规则见 Invalid 预测率)。
  2. 分类头微调:在 LLM 上接 linear head,argmax logits(传统 accuracy)。

三、计算方式

3.1 公式

已见上式。多标签场景常用 subset accuracy(所有标签全对才算对)或 label-wise accuracy,定义不同,需事先约定。

3.2 代码(scikit-learn)

1
2
3
4
5
6
7
from sklearn.metrics import accuracy_score

y_true = ["fear", "joy", "anger", "fear", ...]
y_pred = ["fear", "joy", "fear", "fear", ...] # 第三条预测错误

acc = accuracy_score(y_true, y_pred)
# acc = 正确数 / len(y_true)

生成式 pipeline 中应并列报告 Invalid 预测率

1
invalid_rate = sum(p not in LABEL_SET for p in y_pred) / len(y_pred)

模型输出无法解析为合法标签时,通常计为错误,并单独报告 invalid_rate。

3.3 与 mean_token_accuracy 对比

样本级 Accuracy mean_token_accuracy
单位 整条预测 每个 token
计算阶段 推理 generate 后 训练 teacher forcing
典型用途 test 验收 训练监控

四、如何解读

六类情绪、400 条 test 子集示例(基座零样本 + 固定 system prompt):

指标 数值
accuracy 0.625
macro_f1 0.482

accuracy 明显高于 macro_f1,说明多数类(如 joy)拉高了总分,少数类 recall 偏弱——这正是 accuracy 在不平衡数据上的典型陷阱。

解读 checklist

  1. 看各类 support(样本数)是否悬殊。
  2. 并列报告 macro F1混淆矩阵
  3. 微调前后用同一 test 子集、同一 prompt、同一 decode 策略对比 delta。

五、局限性与常见误用

  1. 类别不平衡:全猜多数类也能得较高 accuracy(如 80% 样本是 A,全猜 A → accuracy 0.8)。
  2. 忽略错误代价不对称:医疗诊断里假阴性 vs 假阳性代价不同,accuracy 一视同仁。
  3. 生成式解析偏差:正则过严把合法变体标为 invalid,accuracy 被压低;过松则虚高。
  4. 不能反映「差一点」:预测 fearful vs 真值 fear 与预测 joy 同为错,accuracy 同等对待。
  5. 小 test 集方差大:400 条上 0.625 vs 0.650 可能统计上不显著。

六、与其他指标的关系

指标 何时优先
macro F1 多类不平衡
混淆矩阵 需知「哪两类互混」
Invalid 预测率 格式不可解析的样本比例
eval_loss 训练过程;与 accuracy 可脱节

七、实践建议

  1. 永远报告 macro F1 作为不平衡多分类的主指标,accuracy 作辅助。
  2. 生成式评估设 EVAL_LIMIT 控制成本,但微调前后 limit 必须一致。
  3. 记录 invalid 预测率(见 Invalid 预测率);微调后 invalid 上升说明格式约束退化。
  4. 对比表格建议列:stage | accuracy | macro_f1 | invalid_rate | Δ
-------------本文结束感谢您的阅读-------------