474 Chapter 14. 神经机器翻译模型推断 肖桐 朱靖波
14.2 基本问题
下面将就神经机器翻译推断中的若干基本问题进行讨论,包括:推断方向、
文长度控制、搜索终止条件、译文多样性、搜索错误五个方面。
14.2.1 推断方向
机器翻译有两种常用的推断方式
——
自左向右推断和自右向左推断。自左向右
推断符合现实世界中人类的语言使用规律,因为人在翻译一个句子时,总是习惯
句子开始的部分向后生成
2
。不过,有时候人也会使用当前单词后面的译文信息。
就是说,翻译也需要“未来”的文字信息。于是很容易想到使用自右向左的方式
译文进行生成。
以上两种推断方式在神经机器翻译中都有应用,对于源语言句子 x = {x
1
,...,x
m
}
和目标语言句子 y = {y
1
,...,y
n
},自左向右推断可以被描述为:
P (y|x) =
n
Y
j=1
P (y
j
|y
<j
,x) (14.1)
自右向左推断可以被描述为:
P (y|x) =
n
Y
j=1
P (y
n+1j
|y
>n+1j
,x) (14.2)
其中,y
<j
= {y
1
,...,y
j1
}y
>n+1j
= {y
n+1j
,...,y
n
}。可以看到,自左向右推断
和自右向左推断本质上是一样的。第十章到第十二章均使用了自左向右的推断方法。
自右向左推断比较简单的实现方式是:在训练过程中直接将双语数据中的目标语
句子进行反转,之后仍然使用原始的模型进行训练即可。在推断的时候,生成的
标语言词串也需要进行反转得到最终的译文。有时候,使用自右向左的推断方式
取得更好的效果
[673]
不过更多情况下需要同时使用词串左端(历史)和右端(未来)
的信息。有多种思路可以融合左右两端信息:
重排序Reranking)。可以用一个基础模型(比如自左向右的模型)得到每个
源语言句子的 n-best 翻译结果,之后同时用基础模型的得分和自右向左模型的
得分 n-best 翻译结果进行重排序
[673, 674, 675]
。也有研究人员利用最小贝叶斯风
险的方法进行重排序
[676]
由于这类方法不会改变基础模型的翻译过程,因此相
对“安全”,不会对系统性能造成副作用。
双向推断Bidirectional Inference除了自左向右推断和自右向左推断,另一种
方法让自左向右和自右向左模型同步进行,也就是同时考虑译文左侧和右侧的
文字信息
[677, 678]
例如,可以同时对左侧和右侧生成的译文进行注意力计算,
2
有些语言中,文字是自右向左书写,这时自右向左推断更符合人类使用这种语言的习惯。
14.2 基本问题 475
到当前位置的单词预测结果。这种方法能够更加充分地融合双向翻译的优势。
多阶段推断Multi-stage Inference在第一阶段,通过一个基础模型生成一个
初步的翻译结果。在第二阶段,同时使用第一阶段生成的翻译结果和源语言句
子,进一步成更好的
[679, 680, 681]
。由于第阶段的结已经包含完整
译文信息,因此在第二阶段中,系统实际上已经同时使用了整个译文串的两端
信息。上述过程可以扩展为迭代式的译文生成方法,配合掩码等技术,可以在
生成每个译文单词时,同时考虑左右两端的上下文信息
[682, 683, 684]
不论是自左向右推断还是自右向左推断,本质上都是在对上下文信息进行建模。
此外,研究人员也提出了许多新的译文生成策略,比如,从中部向外生成
[685]
、按源
语言顺序
[686]
、基于插的方式生
[687, 688]
等。或者将译问题松化为个连
续空间模型的优化问题,进而在推断的过程中同时使用译文左右两端的信息
[681]
最近, BERT 为代表的预训练语言模型已经证明,一个单词的“历史”“未
来”信息对于生成当前单词都是有帮助
[125]
。类似的观点也在神经机器翻译编码
设计中得到验证。比如,在基于循环神经网络的模型中,经常同时使用自左向右
自右向左的方式对源语言句子进行编码; Transformer 模型中,编码器会使用整个
句子的信息对每一个源语言位置进行表示。因此,神经机器翻译的推断采用类似
策略是有其合理性的。
14.2.2 译文长度控制
机器翻译推断的一个特点是译文长度需要额外的机制进行控制
[689, 690, 691, 692]
这是
因为机器翻译在建模时仅考虑了将训练样本(即标准答案)上的损失最小化,但是推
断的时候会看到从未见过的样本,甚至样本空间中的绝大多数都是未见样本。该
题会导致的一个现象是:直接使用训练好的模型会翻译出长度短得离谱的译文。
经机器翻译模型使用单词概率的乘积表示整个句子的翻译概率,它天然就倾向生
短译文,因为概率为大于 0 小于 1 的常数,短译文会使用更少的概率因式相乘,
向于得到更高的句子得分,而模型只关心每个目标语言位置是否被正确预测,对
译文长度没有考虑。统计机器翻译模型中也存在译文长度不合理的问题,解决该
题的常见策略是在推断过程中引入译文长度控制机
[80]
。神经机器翻译也借用了
似的思想来控制译文长度,有以下几种方法:
长度惩罚因子译文长度来归一化翻译概率最常用的方法:对于源语言句
x y score(x,y) y
小。为了避免此现象,可以引入一个长度惩罚因子 lp(y)并定义模型得分如公
(
14.3)所示:
score(x,y) =
log P (y|x)
lp(y)
(14.3)
476 Chapter 14. 神经机器翻译模型推断 肖桐 朱靖波
通常 lp(y) 随译文长度 |y| 的增大而增大,因此这种方式相当于对 log P (y|x)
长度进行归一
[693]
lp(y) 的定义方式有很多,14.1列出了一些常用的形式,
其中 α 是需要人为设置的参数。
14.1 长度惩罚因子 lp(y) 的定义(|y| 表示译文长度)
名称 lp(y)
句子长度 lp(y) = |y|
α
GNMT 惩罚因子 lp(y) =
(5+|y|)
α
(5+1)
α
指数化长度惩罚因子 lp(y) = α ·log(|y|)
译文长度范围约束为了让译文的长度落在合理的范围内,神经机器翻译的推断
也会设置一个译文长度约束
[537, 694]
。令 [a,b] 表示一个长度范围,可以定义:
a = ω
low
·|x| (14.4)
b = ω
high
·|x| (14.5)
其中,ω
low
ω
high
分别表示译文长度的下限和上限,比如,很多系统中设置
ω
low
= 1/2ω
high
= 2,表示译文至有源语言句子一半长,最多有源语言
句子两倍长。ω
low
ω
high
的设置对推断效率影响很大,ω
high
可以被看作是一
个推断的终止条件,最理想的情况是 ω
high
·|x| 恰巧就等于最佳译文的长度,
时没有浪费任何计算资源。反过来的一种情况,ω
high
·|x| 远大于最佳译文的长
度,这时很多计算都是无用的。为了找到长度预测的准确率和召回率之间的平
衡,一般需要大量的实验最终确定 ω
low
ω
high
当然,利用统计模型预测 ω
low
ω
high
也是非常值得探索的方向,比如基于繁衍率的模型
[273, 695]
覆盖度模型译文长度过长或过短的问题,本质上对应着过翻译Over Translation
欠翻译Under Translation的问题
[696]
这两种问题出现的原因主要在于:
经机器翻译没有对过翻译和欠翻译建模,即机器翻译覆盖度问题
[475]
针对此问
题,最常用的方法是在推断的过程中引入一个度量覆盖度的模型。比如,使用
GNMT 覆盖度模型定义模型得分
[456]
,如下:
score(x,y) =
log P (y|x)
lp(y)
+ cp(x,y) (14.6)
cp(x,y) = β ·
|x|
X
i=1
log(min(
|y|
X
j
a
ij
,1)) (14.7)
其中,cp(x,y) 表示覆盖度模型,它度量了译文对源语言每个单词的覆盖程度。
cp(x,y) 的定义中,β 是一需要自行设置的超参数,a
ij
表示源语言第 i 位置
14.2 基本问题 477
与译文第 j 个位置的注意力权重,这样
|y|
P
j
a
ij
就可以用来衡量源语言第 i 个单
词中的信息被翻译的程度,如果它大于 1则表明出现了过翻译问题;如果小
1则表明出现了欠翻译问题。公式(14.7)会惩罚那些欠翻译的翻译假设。
覆盖度模型的一种改进形式是
[474]
cp(x,y) =
|x|
X
i=1
log(max(
|y|
X
j
a
ij
,β)) (14.8)
公式(14.8)将公式(14.7)中的向下截断方式改为了向上截断。这样,模型可以对
过翻译(或重复翻译)有更好的建模能力。不过,这个模型需要在开发集上细
致地调整 β,也带来了一定的额外工作量。此外,也可以将这种覆盖度单独建
模并进行数化,与翻模型一同
[475, 697, 698]
。这样可得到更加细的
盖度模型。
14.2.3 搜索终止条件
在机器翻译推断中,何时终止搜索是一个非常基础的问题。如第二章所述,系统
研发者一方面希望尽可能遍历更大的搜索空间,找到更好的结果,另一方面也希
在尽可能短的时间内得到结果。这时搜索的终止条件就是一个非常关键的指标。
束搜索中有很多终止条件可以使用,比如,在生成一定数量的译文之后就终止搜索,
或者当最佳译文与排名第二的译文之间的分值差距超过一个阈值时就终止搜索等。
在统计机器翻译中,搜索的终止条件相对容易设计。因为所有的翻译结果都
以用相同步骤的搜索过程生成,比如, CYK 推断中搜索的步骤仅与构建的分析表
大小有关。在神经机器翻译中,这个问题要更加复杂。当系统找到一个完整的译
之后,可能还有很多译文没有被生成完,这时就面临着一个问题
——
如何决定是否
继续搜索。
针对这些问题,研究人员设计了很多新的方法。比如,可以在束搜索中使用
发性信息让搜索尽可能早地停止,同时保证搜索结果是“最优的”
[57]
。也可以将束
搜索建模为优化问题
[58, 699]
,进而设计出新的终止条件
[700]
。很多开源机器翻译系统也
都使用了简单有效的终止条件,比如, OpenNMT 系统中当搜索束中当前最好的假
设生成了完整的译文搜索就会停止
[694]
RNNSearch 系统中当找到预设数量的译文
时搜索就会停止,同时在这个过程中会不断减小搜索束的大小
[22]
实际上,设计搜索终止条件反映了搜索时延和搜索精度的一种折中
[701, 702]
。在很
多应用中,这个问题会非常关键。比如,在同声传译中,对于输入的长文本,何
开始翻译、何时结束翻译都是十分重要的
[703, 704]
。在很多线上翻译应用中,翻译结果
的响应不能超过一定的时间,这时就需要一种时间受限搜索Time-constrained Search
策略
[671]
478 Chapter 14. 神经机器翻译模型推断 肖桐 朱靖波
14.2.4 译文多样性
机器翻译系统的输出并不仅限于单个译文。很多情况下,需要多个译文。比如,
译文重排序中通常就需要系统的 n-best 输出,在交互式机器翻译中也往往需要提供
多个译文供用户选择
[645, 705]
。但是,无论是统计机器翻译还是神经机器翻译,都面临
一个同样的问题:n-best 输出中的译文十分相似。实例14.1就展示了一个神经机器翻
译系统输出的多个翻译结果,可以看到这些译文的区别很小。这个问题也被看做
机器翻译缺乏译文多样性的问题
[396, 706, 707, 708, 709]
实例 14.1 源语言句子:我们/期待/安理会/尽早/就此/作出/决定/
机器译文 1 We look forward to the Security Council making a decision on this
as soon as possible .
机器译文 2 We look forward to the Security Council making a decision on this
issue as soon as possible .
机器译文 3 We hope that the Security Council will make a decision on this
issue as soon as possible .
机器翻译输出缺乏多样性会带来很多问题。一个直接的问题是在重排序时很
选择到更好的译文,因为所有候选都没有太大的差别。此外,当需要利 n-best
出来表示翻译假设空间时,缺乏多样性的译文也会使得翻译后验概率的估计不够
确,造成建模的偏差。在一些模型训练方法中,这种后验概率估计的偏差也会造
较大的影响
[235]
。从人工翻译的角度,同一个源语言句子的译文应该是多样的,因此
过于相似的译文也无法反映足够多的翻译现象。
因此增加译文多样性成为了机器翻译中一个有价值的研究方向。在统计机器
译中就有很多尝试
[396, 708, 709]
主要思路是通过加入一些“扰动”让翻译模型的行为发
生变化,进而得到区别更大的译文。类似的方法也同样适用于神经机器翻译。例如,
以在推断过程中引入额外的模型,用于惩罚出现相似译文的情况
[707, 710]
。也可以在翻
译模型中引入新的隐含变量或者加入新的干扰,进而控制多样性译文的输出
[711, 712, 713]
类似地,也可以利用模型中局部结构的多样性来生成多样的译文
[714]
。除了考虑每个
译文之间的多样性,也可以对译文进行分组,之后增加不同组之间的多样性
[715]
14.2.5 搜索错误
机器翻译的错误分为两类:搜索错误和模型错误。搜索错误是指由于搜索算
的限制,即使潜在的搜索空间中有更好的解,模型也无法找到。比较典型的例子是,
在对搜索结果进行剪枝的时候,如果剪枝过多,找到的结果很有可能不是最优的,
时就出现了搜索错误。而模型错误则是指由于模型学习能力的限制,即使搜索空
中存在最优解,模型也无法将该解排序在前面。
在统计机器翻译中,搜索错误可以通过减少剪枝进行缓解。比较简单的方式
增加搜索束宽度,这往往会带来一定的性能提升
[716]
。也可以对搜索问题进行单独建
模,以保证学习到的模型出现更少的搜索错误
[717, 718]
。但是,在神经机器翻译中,这
14.2 基本问题 479
个问题却表现出不同的现象:在很多神经机器翻译系统中,随着搜索束的增大,
统的 BLEU 值不升反降。图14.2示了神经机器翻译系统中 BLEU 随搜索束大小
的变化曲线,这里为了使该图更加规整直观,横坐标处对束大小取对数。这个现
与传统的常识是相违背的,因此也有一些研究尝试解释这个现象
[672, 719]
0 1 2 3 4
5
28.8
29.0
29.2
29.4
29.6
29.8
30.0
30.2
30.4
搜索束大小(取 log
BLEU [%]
log1 log2 log5 log10 log30 log100
14.2 一个神经机器翻译系统中搜索束大小对 BLEU 的影响
[720]
在实验中,研究人员发现增加搜索束的大小会导致翻译生成的结果变得更短。
们将这个现象归因于:神经机器翻译的建模基于局部归一的最大似然估计,增加
索束的大小,会导致更多的模型错误
[457, 691, 692]
此外,也有研究人员把这种翻译过短
的现象归因于搜索错误
[672]
:由于搜索时所面临的搜索空间是十分巨大的,因此搜索
时可能无法找到模型定义的“最好”的译文,在某种意义上,这也体现了训练和
断不一致的问题(见第十三章)一种解决该问题的思路是从“训练和推断行为不一
致”的角度切入。比如,为了解决曝光偏置问题
[600]
,可以让系统使用前面步骤的预
测结果作为预测下一个词所需要的历史信息,而不是依赖于标准答案
[599, 721]
。为了解
决训练和推断目标不一致的问题,可以在训练的时候模拟推断的行为,同时让模
训练的目标与评价系统的标准尽可能一致
[235]
此外,还有其它方法解决增大搜索束造成的翻译品质下降的问题。比如,可
通过对结果重排序来缓解这个问
[58]
,也可以通过设计更好的覆盖度模型来生成长
度更加合理的译文
[474]
。从这个角度说,上述问题的成因也较为复杂,因此需要同时
考虑模型错误和搜索错误。