16.2 双向翻译模型 557
16.2 双向翻译模型
在机器翻译任务中,对于给定的双语数据,可以同时学习源语言到目标语言和
目标语言到源语言的翻译模型,因此机器翻译可被视为一种双向任务。那么,两个
方向的翻译模型能否联合起来,相辅相成呢?下面将从双向训练和对偶学习两方面
对双向翻译模型进行介绍。这些方法被大量使用在低资源翻译系统中,比如,可以
用双向翻译模型反复迭代构造伪数据。
16.2.1 双向训练
回顾神经机器翻译系统的建模过程,给定一个互译的句对 (x,y),一个从源语言
句子 x 到目标语言句子 y 的翻译被表示为求条件概率 P (y|x) 的问题。类似地,一个
从目标语言句子 y 到源语言句子 x 的翻译可以表示为 P (x|y)。通常来说,神经机器翻
译的训练一次只得到一个方向的模型,也就是 P (y|x) 或者 P(x|y)。这意味着 P (y|x)
和 P (x|y) 之间是互相独立的。但 P (y|x) 和 P (x|y) 是否真的没有关系呢?这里以最
简单的情况为例,假设 x 和 y 被表示为相同大小的两个向量 E
x
和 E
y
,且 E
x
到 E
y
的变换是一个线性变换,也就是与一个方阵 W 做矩阵乘法:
E
y
= E
x
·W (16.2)
这里,W 应当是一个满秩矩阵,否则对于任意一个 E
x
经过 W 变换得到的 E
y
只落在
所有可能的 E
y
的一个子空间内,即在给定 W 的情况下有些 y 不能被任何一个 x 表
达,而这不符合常识,因为不管是什么句子,总能找到它的一种译文。若 W 是满秩
矩阵说明 W 可逆,也就是给定 E
x
到 E
y
的变换 W 下,E
y
到 E
x
的变换必然是 W 的
逆而不是其他矩阵。
这个例子说明 P (y|x) 和 P (x|y) 直觉上应当存在联系。当然,x 和 y 之间是否存
在简单的线性变换关系并没有结论,但是上面的例子给出了一种对源语言句子和目
标语言句子进行相互转化的思路。实际上,研究人员已经通过一些数学技巧用目标
函数把 P (y|x) 和 P (x|y) 联系起来,这样训练神经机器翻译系统一次就可以同时得
到两个方向的翻译模型,使得训练变得更加高效
[459, 933, 934]
。双向联合训练的基本思想
是:使用两个方向的翻译模型对单语数据进行推断,之后把翻译结果与原始的单语
数据作为训练语料,通过多次迭代更新两个方向上的机器翻译模型。
图16.9给出了一个双向训练的流程,其中 M
k
x→y
表示第 k 轮得到的 x 到 y 的翻
译模型,M
k
y→x
表示第 k 轮得到的 y 到 x 的翻译模型。这里只展示了前两轮迭代。在
第一次迭代开始之前,首先使用双语数据对两个初始翻译模型进行训练。为了保持
一致性,这里称之为第 0 轮迭代。在第一轮迭代中,首先使用这两个翻译模型 M
0
x→y
和 M
0
y→x
翻译单语数据 X = {x
i
} 和 Y = {y
i
} 后得到译文 {ˆy
0
i
} 和 {ˆx
0
i
}。进一步,构
建伪训练数据集 {x
i
, ˆy
0
i
} 与 {ˆx
0
i
,y
i
}。然后使用上面的两个伪训练数据集和原始双语
数据混合,训练得到模型 M
1
x→y
和 M
1
y→x
并进行参数更新,即用 {ˆx
0
i
,y
i
}
S
{x
i
,y
i
} 训