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
xy
表示第 k 轮得到的 x y
译模型,M
k
yx
表示第 k 轮得到的 y x 的翻译模型。这里只展示了前两轮迭代。
第一次迭代开始之前,首先使用双语数据对两个初始翻译模型进行训练。为了保持
一致性,这里称之为第 0 轮迭代。在第一轮迭代中,首先使用这两个翻译模型 M
0
xy
M
0
yx
翻译单语数据 X = {x
i
} Y = {y
i
} 后得到译文 {ˆy
0
i
} {ˆx
0
i
}进一步,
建伪训练数据集 {x
i
, ˆy
0
i
} {ˆx
0
i
,y
i
}。然后使用上面的两个伪训练数据集和原始双语
数据混合,训练得到模型 M
1
xy
M
1
yx
并进行参数更新,即用 {ˆx
0
i
,y
i
}
S
{x
i
,y
i
}
558 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
M
1
xy
{ˆy
0
i
,x
i
}
S
{y
i
,x
i
} 训练 M
1
yx
第二轮迭代继续重复上述过程,使用更
新参后的译模 M
1
xy
M
1
yx
得到的伪据集 {x
i
, ˆy
1
i
} {ˆx
1
i
,y
i
}。然后,
进一步得到翻译模 M
2
xy
M
2
yx
。这种方式本质上也是一种自学习的过程,逐
步生成更好的伪数据,同时提升模型质量。
单语语料 X
双语语料 D
单语语料 Y
M
0
xy
M
0
yx
翻译过程 翻译过程
{x
i
, ˆy
0
i
} {ˆx
0
i
,y
i
}
M
1
xy
M
1
yx
翻译过程 翻译过程
{x
i
, ˆy
1
i
} {ˆx
1
i
,y
i
}
M
2
xy
M
2
yx
...
...
...
...
...
0 轮迭代
1 轮迭代
2 轮迭代
16.9 翻译模型的双向训练
16.2.2 对偶学习
对称,也许是人类最喜欢的美,其始终贯穿在整个人类文明的诞生与发展之中。
古语“夫美者,上下、内外、大小、远近皆无害焉,故曰美”描述的即是这样的美。
在人工智能的任务中,也存在着这样的对称结构,比如机器翻译中英译汉和汉译英、
图像处理中的图像标注和图像生成,以及语音处理中的语音识别和语音合成等。利
用这些任务的对称性质(也称对偶性)可以使互为对偶的两个任务获得更有效的反
馈,从而使对应的模型相互学习、相互提高。
目前,对偶学习的思想已经广泛应用于低资源机器翻译领域,它不仅能够提升在
有限双语资源下的翻译模型性能,而且能够利用未标注的单语数据来进行学习。下
面将督对Dual Supervised Learning
[935, 936]
Dual
Unsupervised Learning
[937, 938, 939]
两方面,对对偶学习的思想进行介绍。
16.2 双向翻译模型 559
1. 有监督对偶学习
对偶学习涉及两个任务,分别是原始任务和它的对偶任务。在机器翻译任务中,
给定一个互译的句对 (x, y),原始任务学习一个条件概率 P (y|x) 将源语言句 x
译成目标语言句 y;对偶任务同样学习一个条件概率 P (x|y) 将目标语言句子 y
译成源语言句子 x除了使用条件概率建模翻译问题,还可以使用联合分 P (x,y)
进行建模。根据条件概率定义,有:
P (x,y) = P (x)P (y|x)
= P (y)P (x|y) (16.3)
公式(16.3)很自然地把两个方向的翻译模型 P (y|x) P (x| y) 及两个语言模型
P (x) P (y) 联系起来:P (x)P (y|x) 应该与 P (y)P (x|y) 接近,因为它们都表达了同
一个联合分布 P (x, y)。因此,在构建训练两个方向的翻译模型的目标函数时,除了
它们单独训练时各自使用的极大似然估计目标函数,可以额外增加一个目标项来鼓
励两个方向的翻译模型,例如:
L
dual
=
log P (x) + log P (y|x) log P (y) log P (x|y)
2
(16.4)
通过该正则化项,互为对偶的两个任务可以被放在一起学习,通过任务对偶性
加强监督学习的过程,就是有监督对偶学习
[935, 937]
。这里,P (x) P (y) 两个语言模
型是预先训练好的,并不参与翻译模型的训练。可以看到,对于单独的一个模型来
说,其函数与另方向相关项。这形式 L1/L2
正则化非常类似(见第十三章)因此可以把这个方法看作是一种正则化的手段(由
翻译任务本身的性质所启发而来)。有监督对偶学习实际上要优化如下的损失函数
:
L = log P (y|x) + log P (x|y) + L
dual
(16.5)
由于两个方向的翻译模型和语言模型相互影响,这种共同训练、共同提高的方
法能得到比基于单个方向训练效果更好的模型。
2. 无监督对偶学习
有监督的对偶学习需要使用双语数据来训练两个翻译模型,但是有些低资源语
言仅有少量双语数据可以训练。因此,如何使用资源相对丰富的单语数据来提升翻
译模型的性能也是一个关键问题。
无监督对偶学习提供了一个解决问题的思路
[937]
。假设目前有两个比较弱的翻译
模型,一个原始翻译模型 f 将源语言句子 x 翻译成目标语言句子 y一个对偶任务模
g 将目标语言句子 y 翻译成源语言句子 x翻译模型可由有限的双语训练,或者使
用无监督机器翻译得到(见16.4节)如图16.10所示,无监督对偶学习的做法是,
560 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
通过原始任务模型 f 将一个源语言单语句子 x 翻译为目标语言句子 y,随后,再通
过对偶任务模型 g 将目标语言句子 y 翻译为源语言句子 x
。如果模型 f g 的翻译
性能较好,那么 x
x 会十分相似。通过计算二者的重构损失Reconstruction Loss
,就可以优化模型 f g 的参数。这个过程可以多次迭代,从大量的无标注单语数
据上不断提升性能。
x
y
翻译模型 f
源语言句子 x
新生成句子 x
目标语言句子 y
y
x
翻译模型 g
16.10 无监督对偶学习流程
这个过程与强化学习的流程非常相似(见第十三章)在训练过程中,模型无法
知道某个状态下正确的行为是什么,只能通过这种试错-反馈的机制来反复调整。训
练这两个模型可以用已有的强化学习算法来训练,比如策略梯度方法
[940]
。策略梯度
的基本思想如下:如果在执行某个动作之后,获得了一个不错的反馈,那么会调整
策略来增加这个状态下执行该动作的概率;反之,如果采取某个动作后获得了一个
负反馈,就需要调整策略来降低这个状态下执行该动作的概率。