paper: 不借助平行语料可以进行机器翻译吗?

这是以 “paper:” 作为标题前缀的论文速读系列。
我如何写作本系列:在接触到令人尤其感兴趣的论文后,总结论文的部分内容,探讨论文之外的相关思想,不作为论文的概括,亦不保证信息或推理全部准确。
本系列的更新策略:直接修改博文内容,而不标注”X月X日更新“

UNSUPERVISED MACHINE TRANSLATION USING MONOLINGUAL CORPORA ONLY
注:作者没有给出代码,GitHub上有相关实现

本方法的思想源流:自编码器、回译法和分布匹配

自编码器 Auto-encoder 及其应用

根据 Deep Learning Book 第 14 章的定义,自编码器是被训练将输入复制到输出的神经网络,它的内部必须有一个隐藏层 h 负责表示输入,从而由两部分组成:一个编码函数 h = f(x) 和一个解码函数 r = g(h)。

降噪自编码器 Denoising Auto-encoder 是一个自编码器的常见变种,它的输入是被加入噪音的数据点,而被训练输出原本的数据点。Alain and Bengio (2013) 的研究表明,这种训练让 f 和 g 隐式地学习到数据点分布 P_data 的结构。

机器翻译任务中的回译法

机器翻译任务,就是要构建一个从源语言到目标语言的翻译器。通常,翻译任务通过收集平行语料,进行监督学习的方式解决。

回译法提供了一个利用目标语言(单语言)语料库 T 的方式:先训练一个目标语言到源语言的(逆向)翻译器,将 T 中的每一个句子 t 翻译到源语言 s,得到的 (s, t) 对事实上形成了一个人工的平行语料;然后用 (s, t) 对作为附加的训练数据。

这个方法的潜在问题是,逆向翻译器必须足够好。

分布匹配 Distribution Matching

所谓分布匹配,就是给定数据集X和数据集Y,尝试找到函数F,使得 F(X) 和 Y 的分布相近。分布匹配是无监督学习的一种技巧。一般认为,这个任务在X和Y高维的情况下尤其有效。

分布匹配是分类的反命题:分类要分辨出不同 Catagory 的数据点,而分布匹配就是学习一个映射,使得映射之后看不出不同 Domain 的数据点。

机器翻译的无监督学习方案

直观想法是构建一个源语言 (l=src) 和目标语言 (l=tgt) 共用的隐藏空间。我们必须构建源(目标)语言和隐藏空间之间的双向映射:从语言映射到隐藏空间,是编码器 x -> e(x, l);从隐藏空间映射到语言,是解码器 y -> d(y, l)。编码器和解码器各有两个,因为这里涉及两个语言。我们最终得到的翻译器可以表示为 x -> d(e(x, src), tgt),即用源语言的编码器编码,再用目标语言的解码器解码。注意到,我们得到的翻译器天然是双向的。

怎样让编码/解码器学习到语言的分布结构?这里采用自编码器的训练方法:源语言的编码器和解码器构成一个自编码器:x -> d(e(x, src), src),训练这个自编码器(对输入数据点加入噪声,要求自编码器的输出重构原本的数据点)。这是一种让 e, d 学习到输入的分布的一种无监督方法。目标语言同理。

我们还需要 e, d 能够真正翻译的目标。直接面向这个目标训练:借用回译法的灵感,我们事先使用“上一步”的翻译系统把源语言中的句子 s 翻译为目标语言的句子 t,(s, t) 相当于我们人工构造的平行语料。由于翻译系统是在训练之中的、高噪声的,所以这个平行语料也是高噪声的。为了更新参数,我们向 t 手动加入噪声得到 c(t)(为什么?),然后按照 c(t) -> d(e(c(t), tgt), src) 的方式得到其翻译,要求这个翻译重构出 s 即可。称这个任务为跨语言重构。这实际上是借助人工构造、高噪声的平行语料进行监督学习,保证系统达成翻译的目标。

最后,文章使用对抗训练的方法,要求源语言在隐藏空间中的表示与目标语言在隐藏空间中的表示不可区分,并声称理由是这是 encoder 和 decoder 工作的条件。这个任务本质上就是分布匹配。

上面提到的三个训练任务中,第二个是关乎最终翻译的目标的,必须进行,而第一个、第三个起到辅助的作用(注:即使是第二个任务,其训练数据也高度依赖上一轮迭代中的翻译器,这是一个自举的过程。无监督的性质决定了,如果翻译系统与真实的语意对照不一致,可能在迭代中“一步错,步步错”,没有显式的纠错机制)。实验上去除每个训练任务的结果可以参考文章的消融实验 Abalation Studies 部分。

具体实现

以上三个训练任务对应三个损失项。

在使用回译法时,需要一个“上一步”的翻译系统,这个翻译系统实际上就是用上一步编码器、解码器组成的 x -> d(e(x, src), tgt) 和 x -> d(e(x, tgt), src)。然而,在训练的最开始,d, e 被随机初始化,这两个翻译器的输出是纯粹的噪声,我们需要一个基础的、包含信息量的翻译函数来“初始化”整个系统:这个初始翻译系统是逐单词翻译(注:如果中文需要涉及分词)。

如果逐个单词翻译,我们需要一个单词表的双语对应。依据这篇论文,这个对照表可以不借助平行语料生成,其方法的依据是“不同语言词向量的几何结构是相似的”,如下图所示的 这篇论文的Figure 1

PCA_d2                             PCA_d2
/|\   horse                        /|\  caballo
 |        cow        dog            |     vaca           perro
 |            pig                   |           cerdo
 |                                  |
 |                                  |
 | cat                              |   gato
 +------------------------>PCA_d1   +------------------------->PCA_d1
         English                              Spanish

关于为什么不同语言词向量的结构相似,(乃至为什么对词向量做加减法能对应语意:距离 v(Rome) + v(France) – v(Paris) 最近的不等于前三者的词向量很可能是 v(Italy))有的论文解释为“不同语言都基于真实世界”,我对这一解释虽然不满意,但恐怕也很难给出更好的理由说明这种现象是否必然出现了。


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *