一个反直觉的工程现象
在机器翻译系统中,束搜索(Beam Search)是默认的解码算法。它维护多个候选序列,每一步保留得分最高的若干条路径,期望在有限计算内逼近全局最优。直觉上,束宽越大,搜索空间越充分,译文质量应该越高。然而,许多工程团队在实际部署中发现,束宽从 4 提升到 8 甚至 16 时,BLEU 分数不升反降,译文出现重复片段、过早结束或空洞的泛化表达。这个现象在 2018 年 Yang 等人的研究《On the Pitfalls of Beam Search for Neural Machine Translation》中被系统记录:束宽增大导致翻译质量下降,原因并非搜索不充分,而是束搜索的目标函数与人类对译文质量的判断存在系统性偏差。
本文以英译中机器翻译为贯穿场景:输入一句英文,模型逐词生成中文。我们将拆解束搜索的候选维护机制,分析长度偏置与过度约束如何随束宽放大,讨论长度归一化、惩罚项等工程修正,并对比贪心解码、采样与束搜索的适用边界。
束搜索:从贪心到近似全局最优
束搜索要解决的问题是:给定一个已训练好的序列生成模型,如何从指数级可能的输出序列中选出一个得分最高的序列。模型在每个时间步输出一个概率分布,覆盖整个词表。贪心解码在每个时间步只取概率最高的词,路径唯一,但可能因早期一步选错而错失全局最优。
束搜索的改进在于同时保留 k 个候选(k 即束宽),每一步对每个候选扩展所有可能的词,计算累计得分,然后按得分排序,只保留前 k 个。这样,即使某个候选在早期概率较低,只要后续路径能弥补,仍有机会存活。
用一个简化例子说明。假设模型要翻译“I love you”,词表只有“我”“爱”“你”“他”“喜欢”。束宽设为 2:
- 第一步,模型输出“我”的概率 0.5,“他”的概率 0.3,保留这两个。
- 第二步,扩展“我”得到“我爱”(0.5×0.6=0.3)、“我喜欢”(0.5×0.4=0.2);扩展“他”得到“他爱”(0.3×0.5=0.15)、“他喜欢”(0.3×0.5=0.15)。排序后保留“我爱”和“我喜欢”。
- 第三步,继续扩展,最终可能得到“我爱你”和“我喜欢你”。
束宽为 1 时,第一步就会丢弃“他”,但“他”后续可能导向“他喜欢我”等合理翻译。束宽为 2 保留了更多可能性,但也引入了更多低概率路径。
束搜索的得分是路径上各词概率的乘积。由于概率小于 1,序列越长,乘积越小。这使得束搜索天然偏好短序列——这是长度偏置的根源。
长度偏置:为什么束宽越大,译文越短
在机器翻译中,模型对每个词的概率通常远小于 1。一个 10 个词的句子,得分是 10 个概率的乘积,数值极小。束搜索在每一步比较不同长度的候选时,较短的序列因为乘的次数少,得分天然更高。
束宽增大时,这种偏置被放大。束宽小(如 1)时,贪心路径往往跟随概率最高的词,模型倾向于生成符合训练分布的常见长度。束宽大时,搜索空间包含更多短序列候选,这些短序列虽然每个词概率不低,但整体得分因长度短而占优。最终选出的译文可能比参考译文短,丢失信息。
Yang 等人的研究指出,束搜索的得分函数可以分解为两部分:序列的几何平均概率和长度项。几何平均概率反映每个词的平均置信度,长度项则随长度指数衰减。束宽增大时,搜索更充分,但目标函数仍偏向短序列,因此质量下降。
具体到工程场景,一个典型的失败案例是:输入“The committee has decided to postpone the meeting until next week”,束宽为 4 时译文为“委员会决定推迟会议”,束宽为 16 时可能变成“委员会决定推迟”,漏掉了“下周”。短译文在 BLEU 上因 n-gram 匹配少而得分低,但束搜索仍认为它更优,因为长度惩罚了长序列。
过度约束:束宽增大导致重复与空洞
长度偏置解释了译文变短,但束宽增大还会导致另一个问题:重复片段和空洞的泛化表达。Holtzman 等人在 2019 年的研究《The Curious Case of Neural Text Degeneration》中发现,使用似然作为解码目标会导致文本“平淡且奇怪地重复”。束搜索正是这种目标的极端体现。
束搜索的“过度约束”体现在两个层面。第一,束宽增大后,候选序列之间的差异变小。每一步保留得分最高的 k 个,这些候选往往来自同一条高概率路径的微小变体,比如只差一个同义词。搜索空间看似扩大,实际被限制在一个狭窄的“高概率区域”内。第二,模型在训练时见过大量重复模式,束搜索倾向于选择这些模式,因为它们概率高。
在翻译场景中,过度约束表现为:译文使用“进行”“作出”等泛化动词,回避具体名词;或者重复“我们”“他们”等代词。例如,输入“The company announced its quarterly earnings, which exceeded analyst expectations”,束宽 16 时可能输出“公司公布了季度收益,收益超过了分析师的预期”,重复“收益”一词。束宽 4 时反而可能输出“公司公布的季度业绩超出分析师预期”,更简洁。
Holtzman 等人的实验表明,即使使用相同的语言模型,仅改变解码策略就能显著影响生成质量。束搜索作为确定性解码,总是选择概率最高的路径,而人类文本的分布并非如此——人类更倾向于在多个合理选项中选择,而不是机械地取最大概率。
归一化与惩罚项:工程上的修正
长度偏置的直观修正是长度归一化:将序列得分除以长度或长度的幂次,使得不同长度的序列可以公平比较。常见的做法是除以长度的 α 次方,α 通常取 0.6~1.0。
另一种修正是长度惩罚项:在得分中加入一个与长度相关的项,鼓励或抑制长序列。例如,Google 的 NMT 系统使用长度惩罚因子,在得分上乘以一个与长度相关的系数。
这些修正的工程权衡在于:归一化强度过小,长度偏置仍然存在;强度过大,译文会过度膨胀,引入冗余词。α 的取值需要根据语料和任务调优,没有通用最优值。
此外,还有覆盖惩罚(coverage penalty),用于惩罚重复翻译源语言片段。在翻译中,每个源词应当被翻译一次,覆盖惩罚计算源词被注意力覆盖的程度,重复覆盖会扣分。
下表对比了不同修正策略的收益与成本:
| 策略 | 解决的问题 | 实现方式 | 副作用 | 适用场景 |
|---|---|---|---|---|
| 贪心解码 | 无(基线) | 每步取最高概率 | 早期错误无法修正 | 实时性要求高、质量要求低 |
| 束搜索(无修正) | 搜索不充分 | 保留 k 个候选 | 长度偏置、重复 | 短句、长度敏感任务 |
| 束搜索 + 长度归一化 | 长度偏置 | 得分除以长度幂次 | 可能过度膨胀 | 中长句、需要完整信息 |
| 束搜索 + 覆盖惩罚 | 重复翻译 | 惩罚重复覆盖的源词 | 增加超参数、可能抑制合理重复 | 翻译任务,源词需一一对应 |
| 采样(Top-p) | 过度约束、重复 | 从累积概率前 p 的候选集中采样 | 可能不连贯、随机性 | 开放式生成、创意文本 |
束搜索的流程与失败路径
下面用流程图展示束搜索在机器翻译中的完整流程,以及长度偏置如何导致质量下降:
flowchart TD
A[输入源句] --> B[编码器生成上下文]
B --> C[初始化候选集,含起始符]
C --> D{是否达到最大长度或束宽个已完成?}
D -- 否 --> E[对每个候选扩展所有词]
E --> F[计算累计得分]
F --> G[按得分排序,保留前 k 个]
G --> D
D -- 是 --> H[从完成候选中选最高得分]
H --> I[输出译文]
F --> J[长度偏置:短序列得分高]
J --> K[束宽增大,短序列更易胜出]
K --> L[译文过短或信息丢失]
流程中的关键转折点在于得分计算。累计得分是概率乘积,长度越长,乘积越小。束宽增大后,更多短序列进入候选集,最终选出的译文更短。工程上需要在得分计算中加入归一化或惩罚项,否则束宽增大只会加剧偏置。
与替代方案的比较
贪心解码是束宽为 1 的特例。它计算量最小,但每一步只保留一个候选,早期错误无法挽回。在机器翻译中,贪心解码通常比束搜索质量低,但延迟更低,适合实时翻译。
采样(如核采样 Top-p)从概率分布中随机抽取词,而不是取最大概率。Holtzman 等人提出的核采样,从累积概率超过 p 的最小词集(即“核”)中采样,既保留多样性,又截断低概率的尾部。与束搜索相比,采样生成的文本更多样,更接近人类分布,但可能不连贯,不适合需要精确对应关系的翻译任务。
束搜索的适用边界是:任务需要高置信度、输出长度相对固定、错误代价高。机器翻译、语音识别、文本摘要中,束搜索仍是主流。而开放式生成(如对话、故事)中,束搜索容易导致重复和空洞,采样更合适。
在实际系统中,许多翻译服务采用束宽 4~8,并配合长度归一化。增大束宽到 16 以上,收益递减,甚至出现质量下降。工程上应通过验证集调整束宽和归一化参数,而不是盲目增大。
可观测指标与调参实践
生产环境中,需要监控以下信号来判断束搜索是否退化:
- 输出长度分布:如果平均长度明显短于参考译文,说明长度偏置严重。
- 重复率:统计 n-gram 重复比例,重复率过高说明过度约束。
- BLEU 分数随束宽的变化:如果束宽增大而 BLEU 下降,说明需要修正。
- 覆盖率:在翻译中,统计源词被注意力的覆盖情况,覆盖不足或重复覆盖都是异常。
调参时,先固定束宽(如 8),调整长度归一化 α,观察 BLEU 和长度分布。α 过小,译文偏短;α 过大,译文冗长。然后尝试覆盖惩罚,观察重复率下降情况。最后在验证集上比较不同束宽(4、8、16)的表现,选择最优组合。
尚未解决的问题
束搜索的长度偏置与过度约束,本质上是目标函数与人类质量判断不一致的问题。长度归一化和惩罚项只是启发式修正,没有理论保证。Holtzman 等人的研究揭示了似然目标与人类文本分布的差异,但如何设计更好的解码目标仍是开放问题。
另一个未解问题是束宽与计算资源的权衡。束搜索的计算量随束宽线性增长,但质量提升并非线性。在资源受限的部署中,如何动态调整束宽和归一化参数,仍依赖经验调参。
对于机器翻译,束搜索仍是可靠的选择,但工程上必须正视其偏差。理解长度偏置和过度约束的机制,才能在调参时做出有依据的决策,而不是盲目相信“束宽越大越好”。