文献阅读笔记:Unsupervised Machine Translation Using Monolingual Corpora Only
文章目录
0. 背景
机构:Facebook
作者:Guillaume Lample , Alexis Conneau
发布地方:LCLR 2018
面向任务:无监督机器翻译
论文地址:https://arxiv.org/abs/1711.00043
论文代码:https://github.com/facebookresearch/MUSE
0.1 摘要
机器翻译近期取得的重大进步主要源于深度学习技术的发展和大规模平行语料的出现。已有学者尝试将这些已有的成功应用于低资源语种对上,且获得了数万句子翻译对。本文想要在这个方向上做得更极端一些,我们尝试研究在不用任何平行语料下,是否可能学习到机器翻译。本文提出的模型,仅需要两个语种各自的单语种语料数据集,并将2者映射到同一隐空间中。模型主要是学习通过从共享的隐特征向量空间中重建这两种语种。最终模型无需标注数据即可有效地进行机器翻译。本文的模型在 Multi30k 和 WMT English-French datasets进行验证,在这两个数据集上取得的 BLEU 得分分别为32.8和15.1。
PS:这篇文章是作者此前 Word Translation Without Parallel Data 研究的继续。
1. 介绍
依赖大规模平行语料的机器翻译方案属于当前热点,这篇文章另辟蹊径尝试从拥有海量单语种数据着手。从单语种角度提升机器翻译性能,前人已经一些研究。(Munteanu et al., 2004; Irvine, 2013; Irvine & Callison-Burch, 2015; Zheng et al., 2017)就尝试用单语种数据在半监督方案中改善机器翻译系统。最显著的是 Sennrich et al. (2015a)提出的高效的数据增强方案:回译。辅助翻译系统首先根据可用的平行数据 训练目标语种到源语种的翻译,然后用于从目标语种的大型单语语料库生成翻译。辅助翻译系统生成的数据及其对应的真实数据被作为额外数据对训练原始的翻译系统。
从利用目标语种的单语种数据集上,还有一种方式是用语言模型增强decoder。 Cheng et al. (2016); He et al.(2016)提出在单语数据上增加辅助的自动编码任务 ,这能够确保被翻译的句子能够被翻译回原始的句子。但是这些工作都依赖于数万的平行语料数据对。
此前的零样本机器翻译任务依赖于标注信息,这些标注信息不是任务直接关联的平行语料,而是其他相关语种的平行语料(Firat et al., 2016; Johnson et al.,2016; Chen et al., 2017)或者其他形式(Nakayama & Nishida, 2017; Lee et al., 2017)。唯一例外的工作是 Ravi & Knight (2011); Pourdamghani & Knight (2017)。他们将机器翻译问题视为一个通讯解密问题。遗憾的是,他们的方法仅仅适用于短句和非常接近的语种。
本文则探索没有任何形式的监督下训练机器翻译系统的可行性。唯一用到的是是各自语种的单语种语料数据。这种设置之所以有趣,有两个原因:第一,这适用于没有标注数据的新语言对;第二,提供了一个强大的下界性能,而这种强大的性能是任何良好的半监督方法都有望产生的。
本文的关键点是在两个语种之间构建一个共享的隐空间,并根据以下两个原则,重建两个语种来学习翻译。第一个原则:这个模型必须能够从一个带噪声的输入中重建出一个给定语种的句子,如标准去噪自动编码器。第二个原则:该模型能够在目标域中对带有噪声的翻译句子重建出源句,反之亦然。对于第二个原则,译文句子是通过回译方式(Sennrich et al., 2015a)得到的,即使用学习到的模型将源句子翻译到目标句子。除了这些重建目标,我们通过对抗正则化项使得源句子和目标句子的隐表征具有相同的分布。该模型试图骗过一个判别器,该判别器同时被训练来识别隐含的句子表征属于哪个语种。这个过程迭代重复进行,同时也提升了翻译模型的性能。为了确保本文模型的完全无监督化,算法的初始化是基于一个朴素的无监督翻译模型,该朴素无监督翻译模型基于单语种语料生成的双语词典 (Conneau et al., 2017)进行逐词翻译。最后的结果是,仅仅利用单语种数据集,我们可以将两个语种encode到同一个特征空间,而从这个特征空间中,我们可以进行decode(或者说翻译)任意一种语言。具体流程图参见Figure 1:
本文的方法面向平行语料匮乏,仍然可以取得卓越的性能。对于WMT数据集,本文无监督方法可以取得与基于100,000个句子对进行监督训练相媲美的结果。在Multi30K-Task1数据集上,本文的方法在所有语种对中都取得22+以上的BLUE值,在English-French上更是取得32.76的BLUE得分。
2. 无监督神经机器翻译
2.1 神经机器翻译模型
本文的翻译模型由encoder和decoder组成,分别对应于将源句子和目标句子encode到隐空间,从隐空间中decode出源句子和目标句子。本文对于两个语种仅使用一个encoder和一个decoder。将这些模块应用于不同的语种时,惟一的区别是查找表(lookup tables)的选择。
我们先做如下符号约定。表示源语种中的单词集合,对应的词嵌入(通过学习得到),。表示目标语种中的单词集合,对应的词嵌入,表示所有词嵌入的集合。一个有个单词的句子表示为,特定语种,编码器 encoder ;
表示通过对应的词嵌入计算输入的隐状态,即如果,则取值为,如果,则取值为;其他参数在源语种和目标语种中共享。为了简化encoder可以可以记为;隐空间的维度为,隐状态是空间中的向量。
decoder ,其输入是和语种,输出是,其中是对应词典中的单词。该decoder利用了相应的词嵌入,其参数化为,decoder并不依赖于输出的语种。下面就将decoder 简化为。此外,输出的过程依赖于之前已经生成的前序单词。PS:是与语种相关的起始符。生成过程持续下去,直到生成停止符。
文本使用了带attention的seq-to-seq模型,而无需input-feeding。其中encoder使用的是一个Bi-LSTM,该模型返回一序列的隐状态。在每个step中,decoder(也是Bi-LSTM)的输入是之前的隐状态、当前单词和由encoder状态所加权求和得到的上下文向量。在整个实验过程中,我们使用的encoder和decoder都是3层。LSTM中各层在源语种和目标语种的encoder中是共用的,在源语种和目标语种的decoder中也是如此。简而言之,encoder在语种之间共用,decoder也是如此。此外,源语种的decoder和目标语种的decode注意力权重也是共享的。
2.2 模型概述
源语种和目标语种中的语料数据集分别记为和。通常,这些数据集并不相互对应,即并不存在平行语料。在各自的语种域中通过重建各自的句子训练encoder和decoder。这其实就是分开训练各自的自编码器。带重建的句子都是带噪声的。
模型是以一个逐词翻译系统(这也是本文作者之前的工作,可以看出作者的工作都有延续性)进行初始化的。每个迭代过程,encoder和decoder通过最小化一个目标函数进行训练,该目标函数能够同时衡量对于输入噪声句子重建和翻译上的能力。在auto-encoding任务中,输入句子噪声的引入是采用dropping和swapping的方式。但是在翻译任务的情况下,使用前面迭代模型的翻译结果作为输入句子。为提升源语种和目标语种在隐空间中对齐的准确性,本文同时通过对抗方式训练了一个判别器。新学习的encoder/decoder将在下一次迭代中用于生成新的翻译结果,直到算法收敛。在测试时,尽管训练过程没有用到平行语料,学习到的encoder和decoder能够组成一个标准的机器翻译系统。
2.3 降噪自编码
训练自编码器的时候如果没有任何约束条件,自编码器只会学习到将输入直接拷贝作为输出。这样的模型肯定是无法学习到数据中有用的结构信息。为解决这个问题,本文采用与去噪自编码器(DAE)相似的策略将噪声添加到输入句子中(参考Figure 1-left)。
定义目标函数:
其中表示是带噪声的输入的重建结果;是采样于单语种数据集;表示两个序列之间的差异程度,本文这里使用的是token级别的cross-entropy losses。
带噪声的模型:
是句子随机采样的加噪结果。这里加入2种噪声,第一种是以概率对句子中的单词进行去除;第二种是对输入的句子进行轻微的打散。为了实现输入句子单词顺序的打散,这里引入一个随机组合参数,限制验证条件:,其中是输入句子的长度,是可调节的参数。
是第 i 个 token 偏移后的位置。因此,上式的含义是:一个 token 最多可以偏离原来位置 k 个 token 的距离。
为了生成能够满足上述条件的句子长度为随机组合,我们生成一个大小为的随机向量,其中,是一个均匀分布。再定义用以排列。特别地,当则是原来顺序;值趋向于正无穷时,则可以返回任意的排列组合;则可以返回满足上述验证条件: 的排列组合。尽管存在一定的
偏差,本文这种方法产生排列组合与word-word翻译中的的噪声很类似。
不管是原文还是译文都加入了噪声。实验结果表明,同时加入这两种噪声能取得更好的效果。实验证实了 k 取 3, 取 0.1时能得到很好的结果。
2.4 跨域训练
以上的方法可以有效地用于同一种语言内的编码问题,对于机器翻译这种跨语言的问题,需要为其引入一个新的目标函数。这里引入的第二个目标是使模型能够学习到将源/目标 中的句子映射为 目标/源 。具体步骤: (1)从源语种中采样出一个句子,在中生成corrupted 的翻译结果。这个corrupted 翻译结果是基于当前翻译模型生成的,所以可以表示为。
(2)再对该翻译结果进行加噪,得到corrupted的。目标是学习能够在中重建出的encoder和decoder。所以这里的加噪在这里。
(3)根据重建
跨域的损失函数如下:
其中表示token-level cross-entropy losses的累计求和。
2.5 对抗训练
当 encoder 所输出的特征位于同一个空间而不管输入的句子是何语种时,那么 decoder 就有可能无视encoder中的输入句子而实现decode为特定语种。其实,隐空间就像是一个标准,在这个标准上可以任意转为其他格式(这里特指语种),而其他语种需要统一转到该隐空间,进行标准统一。
但是需要注意,decoder 在目标域中生成句子时仍然可能有错误的翻译。限制 encoder 在同一特征空间映射两种语言,并不意味着句子之间存在严格的对应关系。所幸的是,前面介绍的公式2中跨域训练的损失减轻了这种担忧。最近关于双语词典的研究表明,这种约束在**词级别(word level)上是非常有效的,这表明只要这两种隐表征在特征空间上表现出较强的结构性,那么这种约束在句子层面( sentence level)**上也可能有效。
为了添加上述约束,在encoder后面加一个判别器,以鉴别隐空间中表征属于哪个语种。encoder的输出 with ,判别器: with ,其中0对应source 域,1对应target 域。
判别器的训练过程交叉熵损失函数:
其中是两个语种下各自的句子和语种类别。是判别器的参数;是encoder的参数;是encoder的词嵌入。
训练encoder的目标是骗过判别器:
最终目标函数:
其中分别是自编码、跨域训练和对抗训练损失的超参数。
3. 训练
3.1 迭代训练
算法学习过程如 Algorithm 1所示,模型的框架如Figure 2所示。
模型依赖于迭代算法,初始模型为(算法流程图中第3行)。用该初始模型翻译单语种数据,此时用到的是跨域损失函数方程(2)。在每次迭代过程中,通过最小化方程(4)的损失(算法流程图中的第7行)训练新的encoder和新的decoder。再用新的encoder和新的decoder组成新的翻译系统。重复上述步骤。
模型初始化是基于无监督方法抽取出的双语词典而训练的逐词翻译系统。从中可以看出作者研究工作的延续性,并不是灵光一闪那种。
直观上,只要初始化翻译模型中有一些输入句子的信息,encoder 就能够将翻译结果映射到一特征空间,在该特征空间中对应于一个无噪真实的输入。这是因为encoder训练过程具抗噪能力。与此同时, decoder被训练成输出无噪结果。将这两块放一起能够减缓翻译结果中的噪声,这也使得下一轮迭代中的回译质量更好。
模型主要包含原文重建和译文重建两个部分。图中上面是原文重建部分,使用的是自编码器,输入源语言最后的输出仍然是源语言。下面是译文重建部分,给定源语言之后,先经过M模型翻译为对应的译文,然后经过encoder-decoder模型翻译回原文
3.2 无监督模型选择标准
为了选出超参数,则需要一个与翻译质量相关的标准。在没有平行语料的情况下,本文提出与BLEU有良好相关性的替代标准。
对于源语种中的所有句子,先将其翻译成,再将其翻译回种。模型的评估就是通过计算原始句子和重建后句子之间的BLUE得分。注意,需要计算两个方向的平均作为最终评估结果。即 —> —> 和 —> —> 。
给定 encoder ,decoder 和两种非平行语料数据集和。表示从翻译到;表示相反方向的翻译。
模型的选择标准定义如下:
本文将最大MS分数所对应的模型参数作为最终的模型参数。
4. 实验
4.1 数据集
WMT’14 English-French、WMT’14 English-French、Multi30k-Task1
4.2 baselines
Word-by-word translation (WBW):
这个baseline是作者(Conneau et al., 2017)中的逐词翻译系统。该系统对相关语种,比如English-French 性能较好,但是在相距较远的语种如English-German表现较差。具体对比结果参考 Table 2。
Word reordering (WR):
WR系统是对WBW的结果用LSTM模型做了一次词序调整。由于难以穷尽一个句子中单词(有些句子单词量大于100个)的全部排列组合,这里仅仅考虑相邻单词之间的互换操作。在实验过程中选择最好的交换,迭代10次。这个baseline仅仅用于 WMT dataset ,这是因为 WMT dataset 有足够多的数据可以训练一个较好的语言模型。
Oracle Word Reordering (OWR):
仅使用 WBW 中的单词能够生成的最佳结果。该方法的性能是任何模型在不替换单词的情况下的上限。即理论上使用WBW能够达到的最好结果。
Supervised Learning:
考虑了与我们完全相同的模型,但是在监督下进行训练,在原来的平行句上使用了标准的交叉熵损失。
4.3 无监督字典的学习
略
4.4 实验细节
略
4.5 实验结果
Table 2 展示了本文模型和基准模型在各个评测数据集上取得的BLUE得分。可以看出,逐词翻译系统在两个数据集的fr-en上分别取得了16.77和10.09的得分。词序重排能够带来的提升很有限。而本文提出的模型显著地超越了所有的基准方法,即使在处理WMT datase这种多元化主题且句子结构相对更加复杂的数据集。本文的模型在迭代一次之后,在两个en-fr数据集分别取得了27.48和12.10的得分。有趣的是,甚至比 OWR 在某些语言对上的重新排序做得更好。这意味着本文的模型不仅能够重新排序,而且还能够正确地替换一些单词。在数次迭代后,在Multi30k-Task1和WMT datasets 的en-fr上可以取得32.76和15.05。这着实是惊喜!
与监督方法对比:
Figure 4 展示了本文模型与有监督模型的对比。可以看到,本文所提出的无监督模型的效果与使用了100,000条平行语料的监督模型的效果大致相当。虽然增加平行语料可以大幅提升有监督模型的性能,但是本文所提出的模型可以更有效地用于那些缺乏平行语料的语言之间的机器翻译。此外,本文无监督方法也可以用在半监督机器翻译中。如果在监督方法中配搭使用BPE,则在en-fr上取得22.6的BLUE得分。在本文的无监督方法中使用BPE也可以进一步提升结果性能。这是由于采用BPE可以去掉未登记词,在de-en数据集中大概有9%的单词是未登记词,被以统一记为 unknown token。
迭代学习:Figure 4 左边展示了在Multi30k Task1数据集上迭代次数与结果性能的关系。可以看出,迭代3次后,性能就差不多不再提升,收敛了。
消融研究:
本文还进一步研究 discriminator, cross-domain loss, auto-encoding loss这三者对于模型的影响,详细结果见 Table 4。
最重要的是无监督的词对齐技术。无监督的词对齐体现在(1)基于逐词翻译的回译数据集(2)能够将不同语种映射到同一特征空间的预训练嵌入。
在Multi30k-Task1 上的en-fr何fr-en 只有回译数据集而没有预训练嵌入,模型的得分分别是25.29、26.10。这仅仅略低于完整模型的得分。当模型使用预训练嵌入而没有使用回译数据集(),相应的得分分别是25.44和27.14。当模型不使用预训练嵌入也不使用回译数据集,则相应得分骤降为8.78和9.15。
对抗组成部分也能够显著提升模型性能,这也与我们的直觉相符:为了从跨域损失中获益,则必须确保两个不同语种在隐空间中的分布相似。如果没有自编码损失(),模型的BLUE只有20.02,这比完整模型低了8.05个BLUE。
5. 相关工作
略
6. 总结
本文不仅打开了无监督机器翻译的大门,也为半监督机器翻译提供了一个重要的参考。相比于有监督模型,无监督模型的适用范围要更广;而且,通过将不同的语言编码到同一个特征空间,本文的模型可以同时用于双向的翻译任务。
模型以一个简单的无监督逐词翻译系统进行初始化,并利用以下两种方式迭代地改进模型:(1)自编码的输入重建(2)基于对抗方式对齐语种在隐空间中的分布。这种做法非常值得借鉴,感觉真是神来之笔。