从零顿悟 NLP 翻译打分神器:BLEU 算法的直白比喻与硬核数学

5 阅读3分钟

在自然语言处理(NLP)和机器翻译领域,有一个你绝对绕不开的名字:BLEU (BiLingual Evaluation Understudy)

原文链接-BLEU: a Method for Automatic Evaluation of Machine Translation

自从 2002 年被提出以来,它就成了评估机器翻译质量的“黄金标准”。BLEU 的核心思想极其直白:机器翻译的结果越接近专业人类译者的翻译,它的得分就应该越高。

听起来很简单?但要让计算机自动化地、公平地打分,其实藏着非常巧妙的数学设计。今天,我们将化身为一名“英语老师”,带你一层层揭开机器作弊的套路,并看看数学家是如何用公式将其逐一击破的。


预备知识:老师是怎么改 AI 作业的?

假设你是一名英语老师,今天要批改小明(AI 翻译模型)的作业。

  • 原句: 猫在垫子上。
  • 标准答案(参考译文): the cat is on the mat

最简单的打分办法就是看小明写的词,有多少命中了“标准答案”。这在数学上叫精确率(Precision)。但仅仅看词对不对是不够的,为了防止 AI 作弊,BLEU 设立了三重严密的关卡。


第一关:不仅要词对,还要“说人话” (N-gram 精度)

💡 通俗比喻: 如果只看单个单词有没有命中,小明如果写成:mat on the is cat the。虽然词全对(命中率 100%),但这根本不是人话!所以老师规定,不能只看单个词,还得看“词块”(短语搭配)。

⚙️ 硬核机制:N-gram BLEU 引入了 N-gram(n元语法)来全面评估翻译质量:

  • 1-gram(单词): 评估“词汇充分性”(有没有用对词)。
  • 2-gram 到 4-gram(短语): 评估“表达流畅性”(语序对不对)。

只有当机器给出的 4-gram 也能在参考答案中找到时,才能证明它不仅单词拼对了,语序也是高度通顺的。这四个级别的精度,我们分别记为 p1,p2,p3,p4p_1, p_2, p_3, p_4


第二关:防“复读机”作弊 (截断机制 Clipping)

💡 通俗比喻: 小明发现了漏洞。既然按命中率算,那他交的作业是:the the the the the the。 按照普通的算法,小明写了 6 个 the,标准答案里也有 the,命中率又是 100%!这就叫“复读机作弊”。

老师怒了,掏出了“截断机制”:不管你写了多少个 the,我只承认标准答案里 the 出现的最高次数!标准答案里只有 2 个 the,所以你的有效词汇只有 2 个。真实得分:2 / 6 = 33.3%。

⚙️ 硬核公式:修改后的精度 (Modified Precision) 在数学上,BLEU 统计某个 N-gram 在候选句中的出现次数(CountCount),并找出它在所有参考句中的最高频次(Max_Ref_CountMax\_Ref\_Count)。 计算时,强制将有效次数截断Countclip=min(Count,Max_Ref_Count)Count_{clip} = \min(Count, Max\_Ref\_Count) 最终的 pnp_n = 截断后的有效匹配总数 / 候选句包含的 N-gram 总数。


第三关:木桶效应与神秘的 exp 公式 (综合得分)

现在,机器在 1-gram 到 4-gram 上分别得到了四个分数(比如 p1=0.9,p2=0.5,p3=0.2,p4=0.01p_1=0.9, p_2=0.5, p_3=0.2, p_4=0.01)。该怎么算总分呢?

不能直接加起来算平均分! 翻译有“木桶效应”。如果 4-gram 极低,说明这句翻译完全不连贯。用加法算平均,这句狗屁不通的翻译还能拿高分。

必须用乘法(几何平均数)! 只要有一项极差,总分瞬间拉垮。这逼迫 AI 必须在词汇和语序上全面发展。

💡 终极疑问:既然是乘法,为什么经典的 BLEU 公式里写的是 exp相加

综合精度=exp(n=1Nwnlogpn)\text{综合精度} = \exp \left( \sum_{n=1}^{N} w_n \log p_n \right)

⚙️ 硬核解密:拯救计算机的下溢出 (Underflow) 计算机是个“偏科生”,它非常讨厌把好几个极小的零点零几的小数乘在一起,这会导致底层硬件发生“浮点数下溢”,直接把结果变成 0。

为了拯救计算机,数学家玩了一个迂回战术

  1. 取对数 (log\log): 根据数学定律,乘积的对数 = 对数的相加(log(A×B)=logA+logB\log(A \times B) = \log A + \log B)。算法先用 log\log 把乘法变成了计算机擅长的加法(\sum
  2. 指数还原 (exp\exp): 算完加法后,再用对数的逆运算——指数函数 exp\exp(即 exe^x),把结果从对数空间重新拉回现实世界的 0~1 分数域。

一句话总结:公式里的 exp相加,不过是计算机为了安全计算“连乘”而走的技术捷径,它完全等价于 p1×p2×p3×p4p_1 \times p_2 \times p_3 \times p_4


第四关:防“少说少错” (简短惩罚因子 BP)

💡 通俗比喻: 被教训后,小明又想出了一招:“少说少错”。标准答案有 6 个词,小明只翻译了 1 个词:the,然后交卷。 系统一查:字虽然少,但 100% 命中,挑不出毛病,又是满分!

老师彻底无语,祭出了最后的大招:简短惩罚因子(BP)。字数必须写够,字数越少,扣分越狠!

⚙️ 硬核公式:Brevity Penaltycc 为候选翻译的长度,rr 为最接近的参考翻译长度:

  • c>rc > r (机器翻译比标准答案长或相等):无需惩罚,BP=1BP = 1
  • crc \le r (机器翻译太短):施加指数级惩罚,BP=e(1r/c)BP = e^{(1 - r/c)}

终局:BLEU 的完整形态

将所有的关卡结合在一起,我们终于看到了主宰 NLP 翻译界二十多年的完整公式:

BLEU=BP×exp(n=1Nwnlogpn)BLEU = BP \times \exp \left( \sum_{n=1}^{N} w_n \log p_n \right)

  • p1p_1:管住用词的准确性(充分性)。
  • p2pNp_2 \sim p_N:管住语序的连贯性(流畅性)。
  • min()\min() 截断:管住复读机作弊。
  • BPBP 惩罚:管住少说少错作弊。

🚀 附录:实战演算手把手推导

为了让你彻底吃透 BLEU,我们用两个具体案例,手工计算一遍 1-gram 到 4-gram 的得分。你将看到 BLEU 是如何精准打击各种翻译错误的。

通用参考译文 (Reference): the cat is on the mat (长度 r=6r = 6) (词汇表:the:2次, cat:1次, is:1次, on:1次, mat:1次)

案例 1:普通的错词扣分演示

  • 机器翻译 (Candidate): the cat is on a mat (仅仅错翻了一个词,把 the 翻成了 a,长度 c=6c = 6)

  • 1-gram (p1p_1): a 没有命中。命中 5 个,总数 6 个。 p1=5/60.833p_1 = 5 / 6 \approx 0.833

  • 2-gram (p2p_2): on a, a mat 没有命中。命中 3 个,总数 5 个。 p2=3/5=0.600p_2 = 3 / 5 = 0.600

  • 3-gram (p3p_3): 命中 the cat is, cat is onp3=2/4=0.500p_3 = 2 / 4 = 0.500

  • 4-gram (p4p_4): 仅命中 the cat is onp4=1/30.333p_4 = 1 / 3 \approx 0.333

  • 惩罚因子 (BP): c=6,r=6c=6, r=6BP=1BP = 1

最终得分: 1×(56×35×24×13)1/4=0.5371 \times ( \frac{5}{6} \times \frac{3}{5} \times \frac{2}{4} \times \frac{1}{3} )^{1/4} = 0.537 (点评:错一个小词引发连环雪崩,分数平滑衰减,非常合理。)


案例 2:“口吃作弊”与截断机制的无情制裁

  • 机器翻译 (Candidate): the cat the cat on a mat (触发了机翻常见的重复生成现象,长度 c=7c = 7)

这次推导,我们将见证 BLEU 杀手级机制的威力:

  • 1-gram (p1p_1) —— 触发截断! 机器写了 2 个 cat,但标准答案只有 1 个!强制截断,只承认 1 次有效。a 同样没命中。 实际命中:2(the)+1(cat)+1(on)+0(a)+1(mat) = 5 个。总数 7 个。p1=5/70.714p_1 = 5 / 7 \approx 0.714

  • 2-gram (p2p_2) —— 语序暴露问题 词组拆解:the cat, cat the, the cat, cat on, on a, a mat 机器写了 2 个 the cat,但参考答案里只有 1 个!再次截断。其余全错。 命中 1 个,总数 6 个。 p2=1/60.167p_2 = 1 / 6 \approx 0.167

  • 3-gram (p3p_3) —— 彻底崩盘 词组拆解:the cat the, cat the cat, the cat on, cat on a, on a mat 在参考答案中一个都找不到!全军覆没。 p3=0/5=0p_3 = 0 / 5 = 0

  • 4-gram (p4p_4) —— 毫无悬念 p4=0/4=0p_4 = 0 / 4 = 0

  • 惩罚因子 (BP): c=7>r=6c=7 > r=6,字数够长,BP=1BP = 1

最终得分: 1×(57×16×0×0)1/4=01 \times ( \frac{5}{7} \times \frac{1}{6} \times 0 \times 0 )^{1/4} = 0 (点评:绝杀!虽然单词对了一大半,但由于连 3-gram 都无法匹配,证明这句翻译逻辑断裂。连乘公式冷酷地执行了“一票否决”:只要某个级别语序为 0 分,整句翻译直接判定为不可读的 0 分!)


这就是 BLEU 的全部魅力。它将极其复杂的主观语言感受,巧妙、严密地转化为了冰冷的数学逻辑,让 AI 翻译的每一次进步,都有了清晰可见的刻度!