机器翻译
目前主流的机器翻译模型都是有监督的,本文主要介绍无监督机器翻译。Facebook某课题组在无监督机器翻译方面发表了四篇论文,四篇论文一脉相承,层层深入,前一篇都是后一篇的基础,对于无监督机器翻译的学习有很大的帮助。今天先介绍第一篇,下面是这四篇论文的标题链接:
- Word Translation without Parallel Data - ICLR’18
- Unsupervised Machine Translation Using Monolingual Corpora Only - ICLR’18
- Phrase-Based & Neural Unsupervised Machine Translation - EMNLP’18
- Cross-lingual Language Model Pretraining
代码链接:
Word Translation without Parallel Data
本文主要是无监督翻译中的词对齐,类似的词对齐方法还有很多。
文章前后脉络有些乱,其实仔细阅读发现文中主要是用无监督方法和有监督方法做对比。
有监督方法又叫基线方法,文中叫Procrustes,该方法和三种相似度度量方法(NN、ISF、CSLS)结合构成Procrustes - NN、Procrustes - ISF、Procrustes - CSLS三种有监督方法。
无监督方法主要是加入了对抗训练(用GAN来做)例如:Adv - CSLS。由于只加入对抗训练的效果还没有有监督方法的效果好,作者又在此基础上做了优化,主要是对数据进行了精炼处理,生成了最终的无监督翻译模型(Adv - Refine - CSLS)。
下面对这几个方法做详细介绍。
技术点
首先介绍一个文中所用到的一些关键技术:
- 通过训练GAN来生成平行语料,将有监督变为无监督。
- 通过奇异值分解以及正交约束来更新参数。
- 介绍了三种平行语料相似性度量方法:KNN、ISF、CSLS。
- 提出了无监督翻译的验证标准。
基线方法
首先我们要明确一点:语义相似的词他们的词嵌入空间经过W映射之后要几乎重合,如下图所示:
文中采用了2013年 Mikolov等人提出的方法,该方法思路很简单,已知一个含有5000个翻译对的字典,然后学习原空间和目标空间的线性映射W:
该文章中还验证了采用线性映射的原因:使用其他复杂映射所得到的结果并没有比线性映射得到的结果好很多。
2015年NAACL中的一篇文章指出:给W强制加上正交约束,所得到的结果会好很多,于是他们借鉴Procrustes的思想,通过奇异值分解(SVD)来更新W。
使用上面两步所得到的映射矩阵W,便可以构建基线方法Procrustes。
相似性度量方法
文中是做翻译任务的,翻译最重要的就是找到可靠的匹配对,那么就需要有效的度量标准,文中提到的度量标准有以下三种:
- K-NN
K-NN就是k近邻算法,这种算法存在一定的缺点,最近邻本质上是不对称的:Y是X的K近邻并不意味着X是Y的K近邻。使用最近邻产生匹配对会导致:一些中心点是很多其他点的最近邻,而有些点对于所有点而言都不是最近邻。 - ISF
ISF(inverted soft-max)是为了解决K-NN所存在的问题而设计的改进算法(具体的算法细节文中没有介绍)。但这种方法也存在一定的问题:首先,源语言和目标语言单词的相似性更新是不同的,此外,ISF需要交叉验证一个参数,在没有直接交叉验证标准的无监督设置中,该参数的估计是有噪声的。 - CSLS
基于以上问题作者设计了最终的CSLS方法,该方法考虑一个双向邻域图,其中给定字典的每个单词连接到另一种语言中的K个最近邻,然后分别计算该单词和这K个最近邻的余弦相似度,最后取平均,如下面公式所示:
由此得到CSLS的计算公式为:
该更新增加了孤立词向量相关的相似性,减少了位于密集区域的向量。
对抗训练
对抗训练很简单,使用了最简单的GAN算法。X和Y是源语言和目标语言相对应的词嵌入,生成器生成X到Y的映射(map),鉴别器辨别WX和对应Y之间的不同(此处不确定,如果对应的话就成了有监督了,不对应的话鉴别器如何判断生成的结果好不好?)。输入到鉴别器的WX是从50000个高频单词中随机抽样得到的(输入低频单词效果不好)。通过不断的博弈使生成的WX越来越接近Y。
改进
通过对抗方法得到的矩阵W效果不错,但是结果仍然没有有监督方法好。
事实上,对抗性方法试图对齐所有单词而不管其频率如何。 但是,罕见的词嵌入较少更新并且更有可能出现在每个语料库中的不同上下文中,这使得它们更难对齐。假设映射是线性的,通过高频单词来推断全局映射能够取得更好的效果。用高频词来做对抗训练之后的准确率很高。
本文用前面提到的Procrustes方法迭代更新字典,每次迭代都会生成一个新的字典,为了使Procrustes方法取得更好的效果,本文使用CSLS方法来生成更加准确的单词对,并根据CSLS方法来筛选互为最近邻的单词对。
结果比较
在下文中,我们使用表1中的双语词典以及我们与表2中的先前工作的比较来呈现单词翻译检索的结果,文中的方法较以前的方法有明显的优势。
我们还呈现了表3中的句子翻译检索任务和表4中的跨语言词汇相似性任务中的结果。
最后,我们在表5中呈现了英语 - 世界语的逐字翻译结果
表1结果显示,本文所设计的无监督翻译方法在单词翻译任务上已经超过了基线方法。
表2是本文所设计的方法同先前工作所设计的方法做对比,还对比了使用不同词嵌入时结果的不同,前者使用在WaCky数据集上训练得到的CBOW词嵌入,后者使用在维基百科上训练的fastText词嵌入,后者的效果要明显好于前者。
表3在句子翻译任务中使用了词袋模型,在Europarl语料库上执行句子检索。每种语言对考虑了2000个源语句查询和200k个目标语句,并报告了k = 1,5,10时的precision,k是在第k个最近邻中正确翻译源单词对的比例。文中使用idf加权平均将单词嵌入合并成句子嵌入。idf权重是使用Europarl中的其他的30万条句子获得的。
无监督模型选择的验证标准
在无监督设置中选择最佳模型是一项具有挑战性但却非常重要的任务,因为无法使用验证集(使用验证集将意味着我们拥有并行数据)。为了解决这个问题,我们使用无监督的标准进行模型选择,该标准量化了源和目标嵌入空间的紧密程度。
具体来说,我们考虑10k个最常见的源单词,并使用CSLS为每个词生成一个翻译。然后,我们计算这些翻译对的平均余弦相似度,并将此平均值用作验证标准。
下图显示了评估得分(前人的工作中有相关的评估方法)与此无监督标准之间的相关性(没有学习率收缩的稳定性)。我们在训练期间将其用作停止标准,并且在我们的所有实验中也用于超参数选择。