16.4 无监督机器翻译 567
16.4 无监督机器翻译
低资源机器翻译的一种极端情况是:没有任何可以用于模型训练的双语平行数
据。一种思路是借用多语言翻译方面的技术(见16.3节),利用基于枢轴语言或者零
资源的方法构建翻译系统。但是,这类方法仍然需要多个语种的平行数据。对于某一
个语言对,在只有源语言和目标语言单语数据的前提下,能否训练一个翻译模型呢?
这里称这种不需要双语数据的机器翻译方法为无监督机器翻译(Unsupervised Machine
Translation)。
直接进行无监督机器翻译是很困难的。一个简单可行的思路是把问题进行分解,
然后分别解决各个子问题,最后形成完整的解决方案。放到无监督机器翻译里面,可
以首先使用无监督方法寻找词与词之间的翻译,然后在此基础上,进一步得到句子
到句子的翻译模型。这种“由小到大”的建模思路十分类似于统计机器翻译中的方
法(见第七章)。
16.4.1 无监督词典归纳
双语词典归纳(Bilingual Dictionary Induction,BDI)可用于处理不同语言间单词
级别的翻译任务。在统计机器翻译中,词典归纳是一项核心的任务,它从双语平行
语料中发掘互为翻译的单词,是翻译知识的主要来源
[964]
。在神经机器翻译中,词典
归纳通常被用在无监督机器翻译、多语言机器翻译等任务中。这里,单词通过实数
向量进行表示,即词嵌入。所有单词分布在一个多维空间中,而且研究人员发现:词
嵌入空间在一些语言中显示出类似的结构,这使得直接利用词嵌入来构建双语词典
成为可能
[901]
。其基本想法是先将来自不同语言的词嵌入投影到共享嵌入空间中,然
后在这个共享空间中归纳出双语词典,原理如图16.16所示。较早的尝试是使用一个
包含数千词对的种子词典作为锚点来学习从源语言到目标语词言嵌入空间的线性映
射,将两个语言的单词投影到共享的嵌入空间之后,执行一些对齐算法即可得到双
语词典
[901]
。最近的研究表明,词典归纳可以在更弱的监督信号下完成,这些监督信
号来自更小的种子词典
[965]
、相同的字符串
[966]
,甚至仅仅是共享的数字
[967]
。
Y 空间
X 映射到
推断
词典
1
2
3
4
5
a
b
c
x
y
1
2
3
4
5
1
2
3
4
5
a
b
c
x
y
X Y
XW
XW 和 Y 在同一空间
W
图 16.16 词典归纳原理图
研究人员也提出了完全无监督的词典归纳方法,这类方法不依赖于任何种子词
568 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
典即可实现词典归纳,下面进行介绍。
1. 基本框架
无监督词典归纳的核心思想是充分利用词嵌入空间近似同构的假设
[968]
,基于一
些无监督匹配的方法来得到一个初始化的种子词典,之后利用该种子词典作为起始
监督信号不断进行微调进一步提高性能。总结起来,无监督词典归纳系统通常包括
以下两个阶段:
• 基于无监督的分布匹配。该阶段利用一些无监督的方法来得到一个包含噪声的初
始化词典 D。
• 基于有监督的微调。利用两个单语词嵌入和第一阶段中学习到的种子字典执行
一些对齐算法来迭代微调,例如,普氏分析(Procrustes Analysis)
[969]
。
其具体流程如图16.17所示,主要步骤包括:
• 对于图16.17(a) 中的分布在不同空间中的两个单语词嵌入 X 和 Y,基于两者近
似同构的假设,利用无监督匹配的方法来得到一个粗糙的线性映射 W,使得两
个空间能大致对齐,结果如图16.17(b) 所示。
• 在这个共享空间中执行对齐算法从而归纳出一个种子词典,如图16.17(c) 所示。
• 利用种子词典不断迭代微调进一步提高映射 W 的性能,最终映射的效果如
图16.17(d) 所示,之后即可从中推断出词典,并作为最后的结果。
Y
WX
•
•
•
•
•
•
Y
WX
•
•
•
•
•
•
··
·
·
·
· ·
·
·
·
·
·
·
··
·
·
·
·
· ·
·
·
··
X
Y
•
•
•
··
·
·
·
·
· ·
·
·
··
cat
feline
car
deep
felin
katze
auto
tief
(a) X、Y 词嵌入空间
(b) X 映射到 Y 空间
(c) 词典推断
(d) 微调结果
•
•
•
·
·
·
·
·
·
·
·
·
·
·
·
·
Y
WX
•
•
•
•
•
•
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
cat
katze
图 16.17 无监督词典归纳流程图
[970]
不同的无监督方法最大的区别主要在于第一阶段,获得初始种子词典的手段,而
第二阶段微调的原理都大同小异。第一阶段的主流方法主要有两大类:
• 基于生成对抗网络的方法
[968, 970, 971, 972]
。在这个方法中,通过生成器来产生映射 W,
鉴别器负责区分随机抽样的元素 WX 和 Y,两者共同优化收敛后即可得到映射
W。
• 基于 Gromov-wasserstein 的方法
[968, 973, 974, 975]
。Wasserstein 距离是度量空间中定义
两个概率分布之间距离的函数。在这个任务中,它用来衡量不同语言中单词对
之间的相似性,利用空间近似同构的信息可以定义出一些目标函数,之后通过
16.4 无监督机器翻译 569
优化该目标函数也可以得到映射 W。
在得到映射 W 之后,对于 X 中的任意一个单词 x
i
,通过 WE( x
i
) 将其映射到空
间 Y 中(E(x
i
) 表示的是单词 x
i
的词嵌入向量),然后在 Y 中找到该点的最近邻点
y
j
,于是 y
j
就是 x
i
的翻译词,重复该过程即可归纳出种子词典 D,第一阶段结束。
事实上,由于第一阶段缺乏监督信号,得到的种子词典 D 会包含大量的噪音,因此
需要进行进一步的微调。
微调的原理普遍基于普氏分析
[901]
。假设现在有一个种子词典 D = {x
i
,y
i
} 其中
i ∈ {1,n},和两个单语词嵌入 X 和 Y,那么就可以将 D 作为映射锚点(Anchor)学
习一个转移矩阵 W,使得 WX 与 Y 这两个空间尽可能相近,此外通过对 W 施加正
交约束可以显著提高性能
[976]
,于是这个优化问题就转变成了普鲁克问题(Procrustes
Problem)
[966]
,可以通过奇异值分解(Singular Value Decomposition,SVD)来获得近
似解。这里用 X
′
和 Y
′
表示 D 中源语言单词和目标语言单词的词嵌入矩阵,优化 W
的过程可以被描述为:
b
W = arg min
W∈O
d
(R)
∥WX
′
−Y
′
∥
F
= UV
T
(16.8)
s.t. UΣV
T
= SVD
Y
′
X
′T
(16.9)
其中,∥·∥
F
表示矩阵的 Frobenius 范数,即矩阵元素绝对值的平方和再开方,d 是词
嵌入的维度,O
d
(R) 表示 d×d 的实数空间,SVD(·) 表示奇异值分解。利用上式可以
获得新的 W,通过 W 可以归纳出新的 D,如此迭代进行微调最后即可以得到收敛的
D。
较早的无监督方法是基于生成对抗网络的方法
[970, 971, 977]
,这是一个很自然的想法,
利用生成器产生单词间的映射,然后用判别器来区别两个空间。然而研究表明生成对
抗网络缺乏稳定性,容易在低资源语言对上失败
[978]
,因此有不少改进的工作,比如:
利用变分自编码器(Variational Autoencoders,VAEs)来捕获更深层次的语义信息并结
合对抗训练的方法
[972, 979]
;通过改进最近邻点的度量函数来提升性能的方法
[980, 981]
;利
用多语言信号来提升性能的方法
[975, 982, 983, 984]
;也有一些工作舍弃生成对抗网络,通过
直接优化空间距离来进行单词的匹配
[968, 973, 985, 986]
。
2. 健壮性问题
目前很多无监督词典归纳方法在相似语言对比如英-法、英-德上已经取得不错的
结果,然而在远距离语言对比如英-中,英-日上的性能仍然很差
[987, 988]
。研发健壮的
无监督词典归纳方法仍然存在挑战。因此研发健壮的无监督词典归纳方法仍然面临
许多挑战:
570 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
• 词典归纳依赖于基于大规模单语数据训练出来的词嵌入,而词嵌入会受到单语
数据的来源、数量、词向量训练算法、超参数配置等多方面因素的影响,这很
容易导致不同情况下词嵌入结果的差异很大。
• 词典归纳强烈依赖于词嵌入空间近似同构的假设,然而许多语言之间天然的差
异导致该假设并不成立。因为无监督系统通常是基于两阶段的方法,起始阶段
由于缺乏监督信号很难得到质量较高的种子词典,进而导致后续阶段无法完成
准确的词典归纳
[988, 989]
。
• 由于词嵌入这种表示方式的局限性,模型无法实现单词多对多的对齐,而且对
于一些相似的词或者实体,模型也很难实现对齐。
无监督方法的健壮性是一个很难解决的问题。对于词典推断这个任务来说,是
否有必要进行完全无监督的学习仍然值得商榷。因为其作为一个底层任务,不仅可
以利用词嵌入,还可以利用单语、甚至是双语信息。此外,基于弱监督的方法代价也
不是很大,只需要数千个词对即可。有了监督信号的引导,健壮性问题就能得到一
定的缓解。
16.4.2 无监督统计机器翻译
在无监督词典归纳的基础上,可以进一步得到句子间的翻译,实现无监督机器
翻译
[990]
。统计机器翻译作为机器翻译的主流方法,对其进行无监督学习可以帮助构
建初始的无监督机器翻译系统,从而进一步帮助训练更为先进的无监督神经机器翻
译系统。以基于短语的统计机器翻译为例,系统主要包含短语表、语言模型、调序模
型以及权重调优等模块(见第七章)。其中短语表和模型调优需要双语数据,而语言
模型和(基于距离的)调序模型只依赖于单语数据。因此,如果可以通过无监督的方
法完成短语表和权重调优,那么就得到了无监督统计机器翻译系统
[991]
。
1. 无监督短语归纳
回顾统计机器翻译中的短语表,它类似于一个词典,对一个源语言短语给出相应
的译文
[287]
。只不过词典的基本单元是词,而短语表的基本单元是短语(或 n-gram)。
此外短语表还提供短语翻译的得分。既然短语表跟词典如此相似,那么很容易就可
以把无监督词典归纳的方法移植到短语上,也就是把里面的词替换成短语,就可以
无监督地得到短语表。
如16.4.1节所述,无监督词典归纳的方法依赖于词的分布式表示,也就是词嵌入。
因此当把无监督词典归纳拓展到短语上时,首先需要获得短语的分布式表示。比较
简单的方法是把词换成短语,然后借助与无监督词典归纳相同的算法得到短语的分
布式表示。最后直接应用无监督词典归纳方法,得到源语言短语与目标语言短语之
间的对应。
在得到了短语翻译的基础上,需要确定短语翻译的得分。在无监督词典归纳中,
16.4 无监督机器翻译 571
在推断词典的时候会为一对源语言单词和目标语言单词打分(词嵌入之间的相似度),
再根据打分来决定哪一个目标语言单词更有可能是当前源语言单词的翻译。在无监
督短语归纳中,这样一个打分已经提供了对短语对质量的度量,因此经过适当的归
一化处理后就可以得到短语翻译的得分。
2. 无监督权重调优
有了短语表之后,剩下的问题是如何在没有双语数据的情况下进行模型调优,从
而把短语表、语言模型、调序模型等模块融合起来
[234]
。在统计机器翻译系统中,短
语表可以提供短语的翻译,而语言模型可以保证从短语表中翻译拼装得到的句子的
流畅度,因此统计机器翻译模型即使在没有权重调优的基础上也已经具备了一定的
翻译能力。所以一个简单而有效的无监督方法就是使用未经过模型调优的统计机器
翻译模型进行回译,也就是将目标语言句子翻译成源语言句子后,再将翻译得到的
源语句言子当成输入而目标语言句子当成标准答案,完成权重调优。
经过上述的无监督模型调优后,就获得了一个效果更好的翻译模型。这时候,可以
使用这个翻译模型去产生质量更高的数据,再用这些数据来继续对翻译模型进行调
优,如此反复迭代一定次数后停止。这个方法也被称为迭代优化(Iterative Refinement)
[991]
。
迭代优化也会带来另外一个问题:在每一次迭代中都会产生新的模型,应该什
么时候停止生成新模型,挑选哪一个模型呢?因为在无监督的场景当中,没有任何真
实的双语数据可以使用,所以无法使用监督学习里的校验集来对每个模型进行检验
并筛选。另外,即使有很少量的双语数据(比如数百条双语句对),直接在上面挑选
模型和调整超参数会导致过拟合问题,使得最后结果越来越差。一个经验上非常高
效的模型选择方法是:事先从训练集里挑选一部分句子作为校验集不参与训练,再
使用当前的模型把这些句子翻译过去之后再翻译回来(源语言 → 目标语言 → 源语
言,或者目标语言 → 源语言 → 目标语言),得到的结果跟原始的结果计算 BLEU 的
值,得分越高则效果越好。这种方法已被证明跟使用大规模双语校验集的结果是高
度相关的
[885]
。
16.4.3 无监督神经机器翻译
既然神经机器翻译已经在很多任务上优于统计机器翻译,为什么不直接做无监
督神经机器翻译呢?实际上,由于神经网络的黑盒特性使其无法像统计机器翻译那
样进行拆解,并定位问题。因此需要借用其它无监督翻译系统来训练神经机器翻译
模型。
1. 基于无监督统计机器翻译的方法
一个简单的方法是,借助已经成功的无监督方法来为神经机器翻译模型提供少
量双语监督信号。初始的监督信号可能很少或者包含大量噪声,因此需要逐步优化
数据来重新训练出更好的模型。这也是目前绝大多数无监督神经机器翻译方法的核
572 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
心思路。这个方案最简单的实现就是借助已经构建的无监督统计机器翻译模型,用
它产生伪双语数据来训练神经机器翻译模型,然后进行迭代回译来进行数据优化
[992]
。
这个方法的优点是直观,并且性能稳定,容易调试(所有模块都互相独立)。缺点是
复杂繁琐,涉及许多超参数调整工作,而且训练代价较大。
2. 基于无监督词典归纳的方法
另一个思路是直接从无监督词典归纳中得到神经机器翻译模型,从而避免繁琐
的无监督统计机器翻译模型的训练,同时也避免神经机器翻译模型继承统计机器翻
译模型的错误。这种方法的核心就是把翻译看成一个两阶段的过程:
• 首先,无监督词典归纳通过双语词典把一个源语言句子转换成一个不通顺但是
意思完整的目标语言句子。
• 然后,把这样一个不通顺的句子改写成一个流畅的句子,同时保留原来的含义,
最后达到翻译的目的。
而第二阶段的改写任务其实也是一个特殊的翻译任务,只不过现在的源语言和
目标语言是使用不同的方式表达的同一种语言的句子。因此可以使用神经机器翻译
模型来完成这个任务,而且由于这里不涉及双语数据而只需要单语数据,模型的训
练也将是无监督的。这样的方法不再需要无监督统计机器翻译,并且适应能力很强。
对于新语种,不需要重新训练神经机器翻译模型,只需要训练无监督词典归纳进行
词的翻译,再使用相同的模型进行改写。
但是,目前训练数据需要使用其他语种的双语数据来进行构造(把源语言句子
里每个词使用双语词典进行翻译作为输入,输出的目标语言句子不变)。虽然可以通
过把单语句子根据规则或者随机进行打乱来生成训练数据,但是这些句子与真实的
句子差异较大,导致训练-测试不一致的问题。而且这样一个两阶段的过程会产生错
误传播的问题,比如无监督词典归纳对一些词进行了错误的翻译,那么这些错误的
翻译会被送下一阶段进行改写,因为翻译模型这时候已经无法看到源语言句子来进
行修正,所以最终的结果将继承无监督词典归纳的错误
[993]
。
3. 更深层的融合
为了获得更好的神经机器翻译模型,可以对训练流程和模型做更深度的整合。第
十章已经介绍,神经机器翻译模型的训练包含两个阶段:初始化和优化。而无监督神
经机器翻译的核心思路也对应这两个阶段,因此可以考虑在模型的初始化阶段使用
无监督方法提供初始的监督信号,然后不但优化模型的参数,还优化训练使用的数
据,从而避免流水线带来的错误传播。其中初始的监督信号可以通过两种方法提供
给模型。一种是直接使用无监督方法提供最初的伪双语数据,然后训练最初的翻译
模型。另一种则是借助无监督方法来初始化模型,得到最初的翻译模型后,直接使
用初始化好的翻译模型产生伪双语数据,然后训练自己,如图16.18所示。图16.18(a)
的一个简单实现是利用无监督词典归纳得到词典,用这个词典对单语数据进行逐词
16.4 无监督机器翻译 573
的翻译,得到最初的伪双语数据,再在这些数据上训练最初的翻译模型,最后不断地
交替优化数据和模型,得到更好的翻译模型和质量更好的伪数据
[884]
。这样的做法通
过不断优化训练用的双语数据,摆脱了无监督词典归纳在最初的伪双语数据中遗留
下来的错误,同时也避免了使用无监督统计机器翻译模型的代价。图16.18(b) 的实现
则依赖于具体的翻译模型初始化方法,下一节会讨论翻译模型的不同初始化方法。
数据
模型
初始化
参数优化
数据优化
(a) 基于数据的初始化
数据
模型
初始化
参数优化
数据优化
(b) 基于模型的初始化
图 16.18 模型参数初始化策略
4. 其它问题
一般可以认为,在生成的伪数据上优化模型会使模型变得更好,这时候对这个
更好的模型使用数据增强的手段(如回译等)就可以生成更好的训练数据。这样的
一个数据优化过程依赖于一个假设:模型经过优化后会生成比原始数据更好的数据。
而在数据优化和参数优化的共同影响下,模型非常容易拟合数据中的简单模式,使
得模型倾向产生包含这种简单模式的数据,造成模型对这种类型数据过拟合的现象。
一个常见的问题就是模型对任何输入都输出相同的译文,这时候翻译模型无法产生
任何有意义的结果,也就是,数据优化产生的数据里无论什么目标语言对应的源语
言都是同一个句子。这种情况下翻译模型虽然能降低过拟合现象造成的损失,但是
它不能学会任何源语言跟目标语言之间的对应关系,也就无法进行正确翻译。这个
现象也反映出无监督机器翻译训练的脆弱性。
比较常见的解决方案是在双语数据对应的目标函数外增加一个语言模型的目标
函数。因为,在初始阶段,由于数据中存在大量不通顺的句子,额外的语言模型目标
函数能把部分句子纠正过来,使得模型逐渐生成更好的数据
[885]
。这个方法在实际应
用中非常有效,尽管目前还没有太多理论上的支持。
无监督神经机器翻译还有两个关键的技巧:
• 词表共享:对于源语言和目标语言里都一样的词使用同一个词嵌入,而不是源
语言和目标语言各自对应一个词嵌入,比如,阿拉伯数字或者一些实体名字。
这样相当于告诉模型这个词在源语言和目标语言里面表达同一个意思,隐式地
引入了单词翻译的监督信号。在无监督神经机器翻译里词表共享搭配子词切分
会更加有效,因为子词的覆盖范围广,比如,多个不同的词可以包含同一个子
词。
574 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
• 模型共享:与多语言翻译系统类似,使用同一个翻译模型来进行正向翻译(源
语言 → 目标语言)和反向翻译(目标语言 → 源语言)。这样做降低了模型的
参数量。而且,两个翻译方向可以互相为对方起到正则化的作用,减小了过拟
合的风险。
最后图16.19简单总结了无监督神经机器翻译的流程。下面分别讨论:无监督神
经机器翻译里面模型的初始化,以及语言模型目标函数的选择。
x → y y →x
模型 模型
x → y
数据
y → x
数据
初始化
x,y
数据
语言模型
目标函数
(模型优化)
翻译模型目标函数
(模型优化)
回译
(数据优化)
翻译模型目标函数
(模型优化)
回译
(数据优化)
图 16.19 无监督神经机器翻译模型训练流程
1)模型参数初始化
无监督神经机器翻译的关键在于如何提供最开始的监督信号,从而启动后续的
迭代流程。无监督词典归纳已经可以提供一些可靠的监督信号,那么如何在模型初
始化中融入这些信息?既然神经机器翻译模型都使用词嵌入作为输入,而且无监督
词典归纳也是基于两种语言共享的词嵌入空间,那么可以使用共享词嵌入空间的词
嵌入结果来初始化模型的词嵌入层,然后在这个基础上训练模型。比如,两个语言
里意思相近的词对应的词嵌入会比其他词更靠近对方
[891]
。为了防止机器翻译训练过
程中模型参数的更新会破坏词嵌入中蕴含的信息,通常初始化后会固定模型的词嵌
入层不让其更新
[991]
。
进一步,无监督神经机器翻译能在提供更少监督信号的情况下启动,也就是可
以去除无监督词典归纳这一步骤
[994]
。这时候模型的初始化直接使用共享词表的预
训练模型的参数作为起始点。这个预训练模型直接使用前面提到的预训练方法(如
MASS)进行训练,区别在于模型的结构需要严格匹配翻译模型。此外,这个模型不
仅仅只在一个语言的单语数据上进行训练,而是同时在两个语言的单语数据上进行
训练,并且两个语言的词表进行共享。前面提到,在共享词表特别是共享子词词表
的情况下,已经隐式地告诉模型源语言和目标语言里一样的(子)词互为翻译,相
16.4 无监督机器翻译 575
当于模型使用了少量的监督信号。在这基础上使用两个语言的单语数据进行预训练,
通过模型共享进一步挖掘了语言之间共通的部分。因此,使用预训练模型进行初始
化后,无监督神经机器翻译模型已经得到大量的监督信号,从而得以不断通过优化
来提升模型性能。
2)语言模型的使用
无监督神经机器翻译的一个重要部分就是来自语言模型的目标函数。因为翻译
模型本质上是在完成文本生成任务,所以只有文本生成类型的语言模型建模方法才
可以应用到无监督神经机器翻译里。比如,给定前文预测下一词就是一个典型的自
回归生成任务(见第二章),因此可以应用到无监督神经机器翻译里。但是,目前在
预训练里流行的 BERT 等模型是掩码语言模型
[125]
,不能直接在无监督神经机器翻译
里使用。
另外一个在无监督神经机器翻译中比较常见的语言模型目标函数则是降噪自编
码器。它也是文本生成类型的语言模型建模方法。对于一个句子 x,首先使用一个噪
声函数 x
′
= noise(x) 来对 x 注入噪声,产生一个质量较差的句子 x
′
。然后,让模型
学习如何从 x
′
还原出 x。这样的目标函数比预测下一词更贴近翻译任务,因为它是
一个序列到序列的映射,并且输入、输出两个序列在语义上是等价的。这里之所以
采用 x
′
而不是 x 自己来预测 x,是因为模型可以通过简单的复制输入作为输出来完
成从 x 预测 x 的任务,很难学到有价值的信息。并且在输入中注入噪声会让模型更
加健壮,因此模型可以学会如何利用句子中噪声以外的信息来得到正确的输出。通
常来说,噪声函数有三种形式,如表16.1所示。
表 16.1 三种噪声加噪方式示例(原句为 “我 喜欢 吃 苹果 。”)
噪声函数 描述 例子
交换 句子中任意两个词进行交换 “我 喜欢 苹果 吃 。”
删除 句子中的词按一定概率被删除 “我 喜欢 吃 。”
空白 句子中的词按一定概率被替换成空白符 “我 吃 苹果 。”
实际应用中以上三种形式的噪声函数都会被使用到,其中在交换方法中距离越
近的词越容易被交换,并且要保证交换次数有上限,而删除和空白方法里词的删除
和替换概率通常都非常低,如 0.1 等。