完全匹配(Exact Match,EM)是问答与结构化输出任务中最「硬」的指标之一:规范化后的模型答案与标准答案字符串完全一致才计 1,否则计 0。它简单、可复现,但对表述变体极不宽容。
段末注释:EM 在 SQuAD 等抽取式 QA 基准中为标准指标;生成式 QA 常配合 token-level F1 缓解 paraphrase 惩罚。
系列索引:微调评估指标导读
一、直观含义
对第 (i) 条样本,设规范化函数为 (\text{norm}(\cdot)):
$$
EM_i = \mathbb{1}[\text{norm}(\hat{a}_i) = \text{norm}(a_i^*)]
$$
$$
\text{EM} = \frac{1}{N}\sum_{i=1}^{N} EM_i
$$
人话:100 道题里,有多少道答案和标准答案「一字不差」(在规范化规则下)。
二、使用场景与所需数据
| 场景 | 适用性 |
|---|---|
| 抽取式 QA(SQuAD) | 高 |
| 短事实问答、实体填空 | 高 |
| 多步推理最终答案 | 中 — 只评最终 span |
| 长文本摘要 / 对话 | 低 — 用 ROUGE/BLEU |
| 分类标签 | 可用 — 等价于严格 accuracy(需统一大小写等) |
数据要求:((\text{question/context}, \text{gold answer})) 与模型 \hat{a};需事先定义 normalization pipeline。
三、计算方式
3.1 常见规范化(SQuAD 风格)
1 | import re |
不同 benchmark 规则不同(是否去冠词、是否 lemmatize),比较实验必须同一套 norm。
3.2 Token-level F1(补充 EM)
对预测与参考答案的 token 集合 (P, G):
$$
P_{\text{tok}} = \frac{|P \cap G|}{|P|},\quad R_{\text{tok}} = \frac{|P \cap G|}{|G|},\quad F1_{\text{tok}} = \frac{2 P_{\text{tok}} R_{\text{tok}}}{P_{\text{tok}} + R_{\text{tok}}}
$$
EM ≤ token F1 排序意义:EM 极严;F1 给部分重叠 credit。SQuAD 报告 EM + F1 双指标。
3.3 代码(evaluate 库)
1 | import evaluate |
四、如何解读
| 现象 | 含义 |
|---|---|
| EM 低、token F1 高 | 语义接近但措辞/冠词不同 |
| EM 与 F1 双升 | 微调有效且对齐参考答案表述 |
| EM 高但人工判错 | 参考答案过窄或模型「猜对格式」 |
| 生成带多余解释 | norm 前需截断(如只取第一行、正则抽 \boxed{}) |
指令微调中,若要求「只输出一个词」,EM 等价于严格 Accuracy。
五、局限性与常见误用
- 同义不可接受:「纽约」vs「New York」在中文 norm 下可能 EM=0。
- 规范化过度/不足:去冠词可能把 distinct 答案合并;不去则 EM 偏低。
- 多参考答案:应「任一匹配即算对」;实现遗漏会导致 EM 虚低。
- 生成冗余:模型输出整句需 extract span;extract 规则影响 EM。
- 对数值格式敏感:
3.0vs3、日期格式等需统一。 - 不能反映推理过程:CoT 中间步骤错、最终答案对仍 EM=1。
六、与其他指标的关系
| 指标 | 关系 |
|---|---|
| Accuracy | 离散单标签分类时 EM 等价于严格匹配 accuracy |
| BLEU / ROUGE | 长文本重叠指标;EM 用于短答案 |
| mean_token_accuracy | 训练 token 级;EM 为推理后字符串级 |
七、实践建议
- QA 微调:EM + token F1 联合报告,注明 normalization 脚本链接或代码。
- 生成式答案先 extract(正则、JSON parse、
answer:后缀)再算 EM。 - 多参考答案用
any(match(pred, ref) for ref in refs)。 - 业务允许 paraphrase 时,EM 作下界,另加 BERTScore 或人工判分。
- 标签集有限时 EM ≈ 严格 Accuracy,但务必单独统计 Invalid 预测率。