Unsupervised Neural Machine Translation with Weight Sharing


这是来自于中科院的的一篇文章,发表于2018年ACL。

文章链接:

Unsupervised Neural Machine Translation with Weight Sharing

代码链接:

https://github.com/ZhenYangIACAS/unsupervised-NMT

知识点

  1. 使用两个独立的编码器(每种语言对应一个),但共享一部分权重。
  2. 提出了两种不同的生成对抗网络(GANs),即局部GAN和全局GAN,以增强跨语言翻译。
  3. 使用了 Directional self-attention。
  4. 使用了去噪自编码器和回译过程。
  5. 用到了跨语言词嵌入。

摘要

无监督神经机器翻译(NMT)是最近提出的一种机器翻译方法,其目的是在不使用任何标记数据的情况下训练模型。无监督NMT提出的模型通常只使用一个共享编码器将不同语言的句子对映射到一个共享潜在空间,这种方法在保持每一种语言的特性和内在特征,如风格、术语和句子结构上表现不好。为了解决这个问题,我们引入了一个扩展方法,使用两个独立的编码器,但共享一部分权重,负责提取输入句子的高级表示。此外,还提出了两种不同的生成对抗网络(GANs),即局部GAN和全局GAN,以增强跨语言翻译。通过这种新的方法,我们在英德、英法、汉英翻译任务上取得了显著的进步。

介绍

被最近无监督跨语言词嵌入所取得的成功《Learning principled bilingual mappings of word embeddings while preserving monolingual invariance》、《Adversarial training for unsupervised
bilingual lexicon induction》、《facebook第一篇》所激励,无监督NMT的模型经常假设: 来自于不同语言的句子对可以在共享的潜在空间中映射为相同的潜在表示(如facebook第二篇文章中的工作)。基于这一假设,Lample等人(facebook第二篇文章)对源语言和目标语言都使用单一编码器和单一解码器。编码器和解码器,作为一个标准的auto-encoder(AE),被训练用以重建输入。《Unsupervised Neural Machine Translation》中用了一个共享编码器,但两个独立的解码器。尽管有一些良好的性能,但它们都有一个明显的缺陷,即,源语言和目标语言只共享一个编码器。虽然共享编码器对于将不同语言的句子映射到共享潜在空间至关重要,但它在保持每一种语言的独特性和内在特征(比如文体、术语和句子结构)方面是很弱的。由于每种语言都有自己的特点,源语言和目标语言都应该独立编码和学习。因此,我们推测共享编码器可能是限制潜在翻译性能的一个因素。

为了解决这个问题,我们扩展了编码器共享模型,即使用两个独立编码器,一种语言对应一个。类似地,使用了两个独立的解码器。对于每种语言,编码器及其相应的解码器执行AE,其中编码器从扰动的输入语句生成潜在的表示,而解码器从潜在的表示重新构造语句。为了将不同语言的潜在表示映射到共享潜在空间,我们提出对两个AEs做权重共享约束。具体来说,我们共享负责提取输入语句的高级表示的两个编码器的最后几层的权重。类似地,我们共享两个解码器的前几层的权重。为了加强共享潜在空间,词嵌入在我们的编码器中被用作增强的编码组件。对于跨语言翻译,我们使用了反向翻译(facebook第二篇中的方法)。此外,还提出了两种不同的生成对抗网络(GAN):local GAN and global GAN(《Improving Neural Machine Translation with Conditional Sequence Generative Adversarial Nets》中的方法)。旨在进一步提高跨语言翻译。我们利用局部GAN来约束源和目标的潜在表示,使其具有相同的分布,因此编码器试图欺骗一个局部鉴别器,该鉴别器同时被训练来区分给定的潜在空间所表示的语言。我们通过全局GAN对相应的生成器进行微调,比如,其他语言的编码器和解码器的组成,通过评估生成的句子与真实数据分布的距离,利用全局鉴别器来指导生成器的训练。
综上所述,我们主要贡献如下:

  1. 我们为无监督的NMT提出了权重共享约束,使模型能够为每种语言使用独立的编码器。为了加强共享潜空间,我们还提出了增强词嵌入的编码器和两种GANs。
  2. 我们进行了大量的英德、英法、汉英翻译实验。实验结果表明,该方法取得了较好的效果。
  3. 最后,针对所提出的模型,我们将定向self-attention引入到模型的时间序列信息中。实验结果表明,研究 NMT self-attention层内的时间顺序信息值得研究者付出更多的努力。

模型结构

在这里插入图片描述
如图1所示,模型架构基于AE和GAN。它由七个子网络组成:包括两个编码器Enc_s和Enc_t,两个解码器Dec_s和Dec_t,本地鉴别器D_l,和全局鉴别器D_g1和D_g2。编码器和解码器使用Transformer中的结构。具体来说,编码器是由四个相同的层组成的堆栈。每一层由一个multi-head self-attention和一个简单的全连接前馈神经网络组成。解码器也由四个相同的层组成。除了每个编码器层中的两个子层外,解码器还插入第三个子层,该子层对编码器堆栈的输出执行多头注意。局部GAN使用多层感知基实现,并基于卷积神经网络(CNN)实现全局GAN。表1总结了几种解释子网角色的方法。该系统有几个引人注目的组成部分,这些部分对于系统以无监督的方式进行训练或提高翻译性能都是至关重要的。

在这里插入图片描述

定向self-attention

递归神经网络相比,简单的self-attention的一个缺点是时间顺序信息丢失。虽然Transformer在self-attention之前对序列做了位置编码,如何对注意力内的时间顺序信息进行建模仍然是一个有待解决的问题。使用《DiSAN: Directional Self-Attention Network for RNN/CNN-Free Language Understanding》一文中的方法,我们在模型中使用directional self-attention来建立编码器,利用位置掩码将时间顺序信息编码到attention输出中。更具体地说,两个位置掩码,即前向掩码M_f 和后向掩码M_b,计算公式如下:

在这里插入图片描述
使用前向掩码M_f, later token仅仅做 attention 连接到序列中的early tokens,反之亦然。我们利用一个 self-attention 网络来处理前向输入序列。这一层的输出作为 upper self-attention 层的输入,并按相反的方向进行处理。

权重共享

以共享潜在空间假设为基础,我们应用了权值共享约束来关联这两个AEs。具体来说,我们共享Encs和Enct的最后几层的权重,它们负责提取输入语句的高级表示。类似地,我们也共享Decs和Dect的前几层,它们被期望解码对重建输入语句至关重要的高层表示。《Neural Machine Translation with Pivot Languages》、《A Correlational Encoder Decoder Architecture for Pivot Based Sequence》两篇文章中使用完全共享的编码器,而我们只共享编码器和解码器的部分权重。在提出的模型中,两个编码器的独立权值被期望学习和编码每种语言内部特征的隐藏特征,如术语、风格和句子结构。利用共享权值将独立权值提取的隐藏特征映射到共享潜空间。

Embedding reinforced encoder

在编码器中我们使用预训练得到的跨语言词嵌入,并且在训练的过程中固定不变。在我们的编码器中,固定词嵌入被用作增强的编码组件。正式的讲,给定输入序列词嵌入E={e_1,…,e_t}和编码器堆栈的初始输出序列H={h_1,…,h_t},我们计算H_r:
在这里插入图片描述
H_r是编码器的最终输出序列,并且将作为解码器的输入(在Transformer中,H是编码器的最终输出),g是门限单元,计算公式为:
在这里插入图片描述
W_1、W_2和b是可训练参数,他们被两个编码器共享。背后的动机是双重的。首先,将固定的跨语言词嵌入作为编码的另一个组成部分,有助于增强共享的潜在空间。此外,从多通道编码器的角度来看,提供具有不同组合层次的编码组件,使解码器能够根据自己的语言结构在不同的组合层次提取源句片段。

无监督训练

基于上述架构,我们仅使用以下四种策略对单语语料库的NMT模型进行训练:

Denoising auto-encoding

首先,我们训练这两个AEs分别重建它们的输入。在这种形式中,每个编码器应该学会组合其相应语言的词嵌入,每个解码器应该学会将这种表示分解为对应的表示语言。然而,在没有任何约束的情况下,AE很快就学会了,只是一个一个地复制每个单词,而没有捕捉到所涉及语言的任何内部结构。为了解决这个问题,我们使用去噪策略,在输入句子中加入了一些噪声,为此,我们随机打乱输入的句子。具体来说,我们对输入的句子进行随机排列”,验证条件为:
在这里插入图片描述
其中n为输入语句的长度,steps为模型已更新的全局步骤,k和s为用户可事先设置的可调参数。通过这种方式,系统需要学习相关语言的一些有用结构,以便能够恢复正确的词序。在实际中,我们令k = 2, s = 100000。

Back-translation

尽管进行了去噪自编码,每次训练过程仍然只使用一种语言,而不考虑将输入语句从源/目标语言映射到目标/源语言的最终目标。在跨语言训练中,我们采用了反向翻译的方法。反向翻译在单语数据模型的改进中取得了良好的效果。在我们的方法中,给定源语言中的一个输入句子,我们应用另一种语言的相应编码器和解码器将其翻译成另一种语言。将译文与原句结合起来,得到一个伪平行语料库,利用该语料库训练模型,从译文中重构原句。

Local GAN

虽然权值共享约束对于共享潜在空间假设至关重要,但仅权值共享约束并不能保证两种语言中相应的句子具有相同或相似的潜在码。为了进一步加强共享潜空间,我们训练了一个判别神经网络(称为局部判别器)来对源句编码和目标句编码进行分类。局部鉴别器是一个多层感知器,有两个大小为256的隐藏层,它接收编码器的输出,例如,上式得到的H_r作为输入,并产生关于输入语句语言的二元预测。局部鉴别器被训练通过最小化下面的交叉熵损失来预测语言:

在这里插入图片描述
Global GAN

我们应用全局GANs对整个模型进行微调,使模型能够生成与真实数据难以区分的句子,比如,训练语料库中的句子。与局部GANs更新编码器的参数不同,全局GANs用于更新整个模型的参数,包括编码器和解码器的参数。该模型有两个全局GAN:GAN_g1和GAN_g2。在GAN_g1中,Enc_t和Dec_s作为生成器,从xt生成句子xt^ 。基于CNN实现的D_g1可以判断生成的句子xt^是真正的目标语句子还是生成的句子。全局判别器的目标是区分真实句子和生成的句子,并通过训练使分类错误率最小化。在训练期间,D_g1反馈它的评估,以对编码器Enc_t 和解码器 Dec_s 进行微调。由于机器翻译是一个序列生成问题,我们利用策略梯度强化训练来反向传播评估。我们对GAN_g2应用了类似的处理(关于全局鉴别器的结构细节和训练过程见附录B和C)。无监督训练分为两个阶段。在第一个阶段,我们对提出的模型进行去噪自编码、反向翻译和局部GANs的训练,直到开发集没有任何改进。具体来说,我们对源语言和目标语言进行了一批去噪自编码,对这两种语言进行了一批反向翻译,对这两种语言进行了另一批局部GAN。在第二阶段,我们使用全局GANs对所提出的模型进行微调。

发布了52 篇原创文章 · 获赞 7 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_38937984/article/details/102159541