BLEU 详解

BLEU(Bilingual Evaluation Understudy)原用于机器翻译,现广泛用于摘要、对话回复等有参考答案的生成任务。它衡量:模型输出与参考文本在 n-gram 片段 上有多重叠,偏重精确率(生成词是否「用对了」)。

段末注释:n-gram 指连续 (n) 个 token/词组成的片段;BLEU 对 1~4-gram 精确率做几何平均,并施加 brevity penalty 惩罚过短输出。

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


一、直观含义

给定候选句 (c) 与参考句(可多参考)({r_1,\ldots,r_m}):

  1. 统计候选中 1~4-gram 有多少出现在参考里 → modified precision
  2. 若候选比参考短很多 → brevity penalty(BP) 降分
  3. 几何平均后得 BLEU ∈ [0, 1](常报 0~100)

人话:BLEU 高 = 生成句子的词组「抄对」参考的多;不保证语义正确或流畅。


二、使用场景与所需数据

场景 适用性
机器翻译 — 传统主指标
摘要(有标准摘要) 中 — 常与 ROUGE 并用
指令跟随 / 开放对话 低 — 同一意图多种合法表述
分类式标签生成 不适用 — 用 F1
代码生成 低 — 需 pass@k、单元测试

数据要求:每条样本至少一对 ((\text{hypothesis}, \text{reference}));可多参考取 max precision。


三、计算方式

3.1 Modified n-gram Precision

对 n-gram 计数,参考标准 BLEU 的 clipped count:候选中某 n-gram 出现次数不超过参考中的最大出现次数。

对阶 (n):

$$
p_n = \frac{\sum_{\text{ngram} \in c} \min(\text{Count}_c, \max_r \text{Count}r)}{\sum{\text{ngram} \in c} \text{Count}_c}
$$

3.2 Brevity Penalty

设候选长度为 (c),最接近参考长度 (r):

$$
BP = \begin{cases}
1 & c > r \
e^{1 - r/c} & c \le r
\end{cases}
$$

3.3 综合 BLEU

$$
\text{BLEU} = BP \cdot \exp\left(\sum_{n=1}^{N} w_n \log p_n\right)
$$

通常 (N=4),(w_n = 1/4)。若任一 (p_n=0),几何平均为 0(可加 smoothing)。

3.4 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
# sacrebleu:推荐,分词与 WMT 标准一致
import sacrebleu

refs = [["The cat is on the mat."]] # 多参考时为 list of list
hyp = ["The cat sat on the mat."]

bleu = sacrebleu.corpus_bleu(hyp, refs)
print(bleu.score) # 0~100

# Hugging Face evaluate
# import evaluate
# bleu = evaluate.load("bleu")
# bleu.compute(predictions=hyp, references=[[r[0] for r in refs]])

注意:分词方式(13a、zh、char)对中文任务影响极大,报告时必须注明。


四、如何解读

BLEU 范围(翻译,仅供参考) 粗解读
<10 几乎无重叠
10~30 有部分短语对齐
30~50 较好(域依赖强)
>50 高重叠(短句或模板化任务)

微调对比:同一 test 集、同一分词器上,微调后 corpus BLEU 上升说明生成更接近参考表述;绝对值跨论文不可比(分词、参考数量不同)。


五、局限性与常见误用

  1. 同义改写惩罚:参考用「高兴」,生成「开心」→ n-gram 不匹配,BLEU 偏低。
  2. 长度偏好:过短或过长都会被 BP 或 precision 惩罚;需与 ROUGE 互补。
  3. 多参考不足:合法答案多样时,单参考 BLEU 系统性偏低。
  4. 与人工评价相关但弱:高 BLEU 仍可能有事实错误或语法怪。
  5. 对 SFT loss 不敏感:loss 降 BLEU 未必升,尤其 decode 策略与训练不一致时。
  6. 中文需专门分词:字级 vs 词级 BLEU 数值不可比。

六、与其他指标的关系

指标 对比
ROUGE ROUGE 偏召回(参考是否被覆盖);BLEU 偏精确
Exact Match EM 更严;BLEU 允许部分重叠
BERTScore 语义 embedding 相似度;对 paraphrase 更友好

七、实践建议

  1. 摘要/翻译微调:BLEU + ROUGE-L 联合报告,附 1~2 条人工样例。
  2. 使用 sacrebleu 保证可复现;固定 tokenize= 参数。
  3. 中文任务明确 字符级或 jieba 分词,与 baseline 一致。
  4. 不要单独用 BLEU 决定上线;结合任务错误类型抽检。
-------------本文结束感谢您的阅读-------------