EMNLP 2019 | 大规模利用单语数据提升神经机器翻译

2019-11-22 17:10:49 浏览数 (1)

BDTC大会官网:https://t.csdnimg.cn/q4TY

作者 | 吴郦军、夏应策

来源 | 微软研究院AI头条(ID:MSRAsia)

编者按:目前,目标语言端的无标注单语数据已被广泛应用于在机器翻译任务中。然而,目标语言端的无标注数据一旦使用不当,反而会给模型结果带来负面影响。为了有效利用大规模源语言端和目标语言端的单语数据,微软亚洲研究院在 EMNLP 2019 上发表的论文中,提出一种简单的语料数据使用流程,只需要四个步骤就能极大地提高模型翻译结果。

在机器翻译任务中,如何利用好大规模的单语语料数据来辅助翻译模型的训练是非常重要的研究方向。目前,目标语言端的无标注单语数据已经被证实能够极大的提升模型的翻译质量,并被广泛利用,最著名的就是反向翻译技术 BT(back-translation)。相比之下,源语言端的无标注单语数据则并没有被很好地利用。为此,我们在这个工作中进行了系统的研究,来阐明如何能够同时利用好源语言端和目标语言端的无标注单语数据,并且我们提出了一种非常有效的数据使用流程,只包括简单的四个步骤就能极大地提高模型翻译结果。通过在 WMT 英德互译和 WMT 德法互译任务上的实验,我们验证了所提出算法的有效性,同时取得了非常优越的性能。

无标注单语数据的有效性

我们首先尝试验证对于两个方向(源语言端 X、目标语言端 Y)无标注单语数据在大规模语料下的有效性,对于两种单语数据,常见的方法为:

1) 对于目标语言端的单语数据 y,常用的方法为反向翻译技术 BT(back-translation),即我们会使用一个 Y->X 的反向翻译模型来翻译 y 得到对应的结果 x',然后将(x', y)作为伪双语数据参与训练 X->Y 模型;

2) 而对于源语言端的单语数据 x,常用的方法为正向翻译技术 FT(forward-translation),即我们使用正向的翻译模型 X->Y 来翻译 x 得到对应的结果 y',然后将(x, y')作为伪双语数据参与训练 X->Y 模型。

我们在不同的大规模数据量(20M、60M、120M单语数据)下进行实验,发现了如下实验现象:

图1:单语数据量的增加导致翻译模型性能的变化

1) 当只有目标语言端单语数据的时候,随着单语数据的量越来越多,BT 所带来的模型性能呈现出先上升后下降的趋势,并且下降速度非常快(如图(a)所示)。

2) 当只有源语言端的单语数据的时候,随着单语数据的量越来越多,FT 所带来的模型性能呈现缓慢下降的趋势,不过下降速度比 BT 略小(如图(b)所示)。

这样的实验结果说明单独使用大量的某一端单语数据并不是一个好的策略,相反这样的方式反而会给模型结果带来负面影响。我们也分析了其中的部分原因,比如目标端单语数据产生的伪双语数据是来源于另一个方向的翻译模型,数据质量并不可控,所以大量的伪单语数据则会使得模型训练产生了偏差。因此,我们需要找到一种合适有效的方式来利用大规模的单语数据。

算法与流程

假设我们关注的是 X 和 Y 语言之间的互译,给定的有标双语数据集为 B,我们希望得到的是 X->Y 和 Y->X 两个翻译模型,分别记做 f 和 g。同时,我们需要准备两份无标注单语数据 Mx 和 My,分别对应 X 和 Y 两种语言。我们提出了一个清晰的数据使用和训练流程,将两端的无标注单语数据都进行了利用。我们提出的算法包括如下的四步:

图2:数据使用和训练流程

(1)有标双语模型预训练:我们首先在双语数据 B 上训练得到 X->Y 方向的翻译模型 f,和 Y->X 方向的翻译模型 g。同时我们会用不同的随机种子再次训练得到两个新模型 f' 和 g'(为了在第四步中使用)。

(2)无标注数据翻译:我们将 Mx 中的每一个句子 x 用模型 f 翻译到 Y 语言,对 My 中的句子 y 用模型 g 翻译到 X 语言,得到两个新的伪标注数据集合 Bs={(x, f(x))|x∈Mx}, Bt={(g(y),y)|y∈My}。

(3)有噪声训练:我们在数据集 B、Bs 和 Bt 的源语言端都加上噪声,加噪声的方式包括:a)随机将单词替换为<UNK>;b)随机丢弃句子中的某些词语;c)随机打乱句子中连续的 k 个单词顺序。在新的有噪声的数据集上,我们训练对应的模型 f1:X->Y 和 g1:Y->X。在此阶段,我们建议使用大规模的无标注数据。

(4)微调:最后,在得到 f1 和 g1 之后,我们用第一步中训练得到的新的双语模型 f' 和 g' 来重新翻译 Mx 和 My 中的部分无标注数据,得到新的 Bs' 和 Bt' 数据集,然后在这份数据上再将 f1 和 g1 微调成最终所需要的模型。

实验及结果

我们在 WMT 英语和德语的双向翻译,以及 WMT 德语和法语之间的互相翻译任务上进行了实验验证。我们采用的模型是 Transformer Big 模型,在第三阶段,我们选用了120M(两边分别60M)的无标注单语数据,第四阶段,使用40M(两边分别20M)无标注的单语数据进行微调。评测所采用的指标为 SacreBLEU score。我们得到的实验结果如表1和表2所示,具体结果如下:

表1:WMT 英德互译上的 SacreBLEU 结果

表2:WMT 德法互译上的 SacreBLEU 结果

可以看出,我们的模型在每一步训练阶段,结果都会有一定提高,如第三步有噪声训练阶段取得了2个点的 BLEU 提升,而在第四阶段微调阶段又取得了至少1.5个点的 BLEU 提升。

同时我们和目前已经存在的最好方案进行了对比,我们的模型取得了当下最好的翻译结果(表3和表4所示)。

表3:WMT 英德上方案比较

表4:WMT 德英上方案比较

最后我们对流程中的每一部分也进行了一定的分析,比如不同的语料使用的结果(图3(a)),有噪声数据和随机 sample 的数据上的训练结果(图3(b)),以及不同的数据微调方式的结果(图3(c)),得到的结论证明我们的使用方法确为最优方案。

图3:WMT 英德上针对不同流程的实验结果

总结

在这篇文章中,我们提出了一种简单高效的无标注单语语料的数据使用和模型训练流程,只包含了简单的四个步骤,并且对不同的无标注单语语料的使用方案进行了详细的讨论和对比。另外我们还验证了如下结论:(1)只使用源语言端或者目标语言端无标注单语数据,效果不会随着数据量的增加而增加;(2)源语言端和目标语言端的无标注单语数据组合在一起使用时作用是最大的,实验效果会随着数据的增多而得到提升;(3)有噪声训练这一阶段对提升最终性能有明显的帮助。

0 人点赞