Token 准确率(mean_token_accuracy)详解

Token 准确率(Mean Token Accuracy)是 TRL SFTTrainer 在训练日志中默认记录的指标之一,表示在参与 loss 的非掩码 token 上,模型 top-1 预测是否与标准答案 token 完全一致 的比例。

段末注释:top-1 指模型 softmax 后概率最高的 token;与「整句语义正确」或「分类标签正确」不是同一概念。

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


一、直观含义

在每个被监督的 token 位置,问一个 Yes/No 问题:

模型概率最高的那个 token,是不是标注里的 token?

对所有这样的位置取平均,得到 mean_token_accuracy

  • 0.94:约 94% 的被监督 token 上,模型「猜对」了下一个 token。
  • 对「只生成一个标签词」的 SFT 任务,该指标与「学没学会输出标签」高度相关。
  • 对长回答生成,高 token accuracy 仍可能出现「前面都对、最后一句跑偏」的情况。

二、使用场景与所需数据

场景 适用性
SFT 训练过程监控 — Trainer 自动输出
短 completion / 单标签生成 — 与任务成功率强相关
长文本开放生成 中 — 必要但不充分
最终上线验收 低 — 需换任务级指标

数据要求:与 eval_loss 相同;仅统计 label ≠ -100 的位置。completion_only_loss=True 时,不含 prompt 段 token。


三、计算方式

3.1 定义

设参与监督的位置集合为 (\mathcal{T}),(\hat{y}t = \arg\max p\theta(\cdot \mid y_{<t})):

$$
\text{mean_token_accuracy} = \frac{1}{|\mathcal{T}|} \sum_{t \in \mathcal{T}} \mathbb{1}[\hat{y}_t = y_t]
$$

3.2 与 loss 的区别

mean_token_accuracy eval_loss
粒度 硬分类对错 软概率质量
错但接近 算错 给次高概率时 loss 可能不大
算对 概率 0.6 和 0.99 的 loss 不同

示例:正确 token 概率 0.51、错误 token 0.49 → accuracy 计为对(top-1 命中),loss 仍偏高。

3.3 日志中的字段

SFTTrainer.train() 返回的 metrics 及 TensorBoard 中常见:

  • mean_token_accuracy(train)
  • eval_mean_token_accuracy(eval)

四、如何解读

任务类型 参考解读
单 token 标签(如 emotion → fear >0.9 通常表示格式与标签已基本学会;仍须跑 test F1
短句回答(<32 token) 0.85~0.95 常见;结合 eval_loss 看是否过拟合
长 CoT / 推理链 token accuracy 高不保证推理正确;需 EM 或人工判读

六类情绪标签生成任务中,mean_token_accuracy 升至 ~0.94 时,往往与 loss 下降、test 集 macro F1 提升一致——三者构成训练侧的健康信号。


五、局限性与常见误用

  1. Teacher forcing 偏差:计算时使用 ground-truth 前缀,不反映 autoregressive 生成时的误差累积。
  2. 不等于样本级 accuracy:一条样本 10 个 token 对 9 个,token accuracy 90%,但任务可能算完全错误。
  3. 分词边界效应:同一词的不同切分方式会影响 token 计数;跨 tokenizer 不可比。
  4. 高 accuracy + 低 F1:可能学会输出训练集高频标签词,但在 generate 时格式违规(需看 invalid 比例)。
  5. 仅监控训练分布:对 OOD 输入无约束力。

六、与其他指标的关系

指标 关系
eval_loss 互补;loss 看置信度,accuracy 看硬命中
Accuracy(样本级) 分类任务需把生成结果解析为标签后再算
Exact Match 整段 completion 字符串完全匹配,比 token 级更严

七、实践建议

  1. 训练时与 eval_loss 并列观察:accuracy 升、loss 降 → 正常;accuracy 升、loss 不降 → 模型变「自信但偏错方向」需排查。
  2. 短标签 SFT 可将 mean_token_accuracy 作早停辅助,但 test 集 macro F1 仍为最终依据。
  3. 若 accuracy 已 >0.95 但业务指标停滞,转向检查 prompt 一致性generate 解码策略,而非继续加长训练。
-------------本文结束感谢您的阅读-------------