使用条件序列GAN改进NMT
原文《Improving Neural Machine Translation with Conditional Sequence Generative Adversarial Nets》
课程作业,因为要导出pdf所以粘贴到CSDN了,34章是笔者翻译的部分。当一篇post吧,求别喷,有问题请留言我一定改,一定改。
摘要
本文提出了一种将GANs应用于NMT领域的方式。我们建立了一个条件序列生成性对抗网络,该网络包含了两个子模块:一个生成器和一个识别器。生成器用于生成句子,其目标是生成的句子很难从人工翻译的结果中辨别出来;识别器的主要目的是从含有机器翻译和人工翻译的句子集合中识别出机器翻译的句子。这两个子模块扮演了互相对抗的角色,当他们达到一个纳什平衡时就会得到双赢的结果。此外。静态基于句子级别BLEU被用于强化生成器的学习,这会使生成的句子具有更高的BLEU值。在训练过程中,动态识别器和静态的BLEU对象都被用来评估生成的句子,同时将评估结果作为学习数据反馈给生成器。基于中德翻译和中英翻译的实验证明,我们所提出的模型比传统RNNSearch和最近具有最好性能的Transformer模型都表现出更好的性能。
1 简介
Neural machine translation(NMT)是使用一个简单的神经网络直接将源语言句子翻译为目标语言句子,这已经引起了学术界和工业界越来越多的关注。这种端到端(encoder to decoder)的NMT一般都包含两个子神经网络。encoder读取源语言句子并将该句子编码生成context vector,decoder基于context vector逐字生成目标语言句子。为了动态生成目标单词的context vector,经常采用重点关注句子中单词相似性的Attention机制。在encoder-decoder框架下,大量模型被提出,比如CNN、RNN等。最近,Gehring等人提出了Transformer,这是第一个完全基于Attention的序列转导模型,它在英德和英法语言翻译工作中都实现出最好的性能。尽管如此,和传统的NMT模型类似,Transformer仍然是每次得到一个最优的单词。于是就可能出现这样糟糕的情况:模型可能会生成在当前时刻下最好的候选单词,但是对于整个句子来说却是一个不好的词。为了缓解这样的问题,MRT在传统NMT模型中使用了句子级别的BLEU。尽管有所提高,依然无法保证翻译结果的准确和流畅。由于BLEU是修正的n-gram精度的几何平均值,几乎所有现存的NMT训练模型都使用尽可能高的n-gram精确度。虽然n-gram精确度可以很大规模的从不好的数据中识别出好的结果,我们知道并不是n-gram精确度越高,生成的句子就越好。并且n-gram精确度是人工定义的对象,无法覆盖数据分布的所有关键特征,因而NMT模型就可能生成次优的句子。
为了解决上述问题,我们将生成性对抗训练用来训练NMT模型,生成难以与人工翻译结果区分开的句子。其原理是,既然我们无法人工定义最好句子的数据特征,我们可以利用识别器网络来自动学习最好的句子是什么。基于此,我们建立了一个包含两个子模块的条件序列生成性对抗网络:生成器基于源语言句子生成目标语言句子;对于同样的源语言句子,识别器用来检测给出的句子是否是人工生成的。在这样的训练过程中,生成器试图欺骗识别器,使之相信自己生成的是一个人工翻译的句子;识别器努力提高自己的反欺骗能力,将机器翻译的句子与人工翻译的句子区分开。当生成器和识别器在对抗性训练中达到纳什平衡时,训练结果达到最佳状态。除了找到这种最佳情况,我们还想使用静态具体的对象(如BLEU)来指导生成器的学习。为此,我们使用平滑BLEU来增强生成器的性能。在训练过程中,我们用动态的识别器和静态的BLEU对象来评估生成器生成的句子,并将结果作为学习内容反馈给识别器。总的来说,我们主要做了以下贡献:
- 据我们所知,这是首次将生成性对抗网络应用于NMT问题。我们直接训练NMT模型来生成识别器无法识别的句子。本文所提出的方法可以应用于任何端到端的NMT系统中。
- 在英德翻译和中英翻译任务中,我们测试了两种不同的NMT模型:传统RNNSearch和性能最好的Transformer模型。实验结果表明我们提出的方法表现很好。
- 最后,我们提出将平滑基于句子级别的BLEU作为静态对象指导生成器生成BLEU值更高的句子。本文提出的方法实质上是一种GAN和MRT的加权和。
2 背景和相关工作
2.1 RNNSearch和Transformer
RNNSearch是一个已经被广泛使用的NMT模型。在标准实现中,encoder是双向门控循环单元,对输入序列x进行编码,计算出一个前向序列和一个后向序列。最终的注释向量是由前向序列和后向序列串联得到的;decoder是递归神经网络,其预测目标序列y =(y1; :::; yn),在“循环隐藏状态si、先前预测的单词yi1和上下文向量ci”的基础上预测出yi。 ci是注释向量hj的加权和。 每个注释hj的权重aij由attention机制计算,该机制模拟yi和xj之间的对齐。
由Vaswani等人在2017年提出的Transformer在WMT2014的英德和英法翻译工作中都表现出很好的性能。该模型的encoder是由六个相同的层组成的,每一层都包含一个multi-head self-attention和一个简单的position-wise完全连接的前馈网络;decoder也包含六个相同的层,除了每个encoder下边的两个子层,decoder还插入了第三层,该层主要multi-head关注encoder的输出。Transformer允许并行训练,因而其训练过程要比递归或者传统训练快。
2.2 生成性对抗网络
生成性对抗网络在计算机视觉领域已经表现出很好的性能,并且已被广泛使用于图像生成。生成性对抗网络使用一个扩展插件,这使网络能够对一些随即数据调节设置。最近一些研究将生成性对抗网络用于NLP领域:Chen等人将这个思想用于语义分析,Zhang等人将该思想用于域适应。在序列生成问题上,Yu等人利用策略梯度强化学习反向传播来自识别器的反馈,在诗歌生成,语言生成和音乐生成都表现较好。 类似地,Zhang等人通过对抗性训练从随机噪声中生成文本。 与上面提到的工作有显著区别的是,我们的问题是有条件限制的,目标语言句子是以源语言为条件生成的。Li等人提出了一种类似的条件序列生成对抗训练,用于对话生成。 他们对识别器使用LSTM结构。 与他们的方法相反,我们将基于CNN的识别器应用于NMT。 此外,我们建议使用句子级BLEU作为生成器的特定目标。所提出模型的详细训练策略和定量的结果都被记录。我们注意到Wu等人也正在探索将GAN在NMT中的可能性。Wu等人的工作和我们的工作在训练策略和实验设置存在一些差异。 最重要的区别是我们为NMT提出了一种新颖的BLEU增强型GAN。
3 方法
3.1 模型概述
在本节中,我们详细描述了所提出的BLEU增强条件序列生成对抗网(简称BR-CSGAN)的结构。句子生成过程被视为根据生成器规定的策略所取得的一系列动作。 在这项工作中,我们采用了政策梯度训练策略(Yu et al,2016)。该模型的整体结构如图1所示。该模型主要由三个子模块组成:
生成器(Generator) 基于源语言句子,生成器G目的是生成与人类翻译无法区分的目标语言句子。
判别器(Discriminator) 判别器D,在源语言句子条件上,尝试将机器生成的句子与人类翻译区分开来。由于它与G同步更新,可以被视为动态目标。
BLEU目标 句子级别的BLEU Q作为强化目标,引导生成高BLEU分数。Q是一个静态函数,在训练期间不会更新。
3.2 生成器
类似于NMT模型,生成器G定义了生成目标句子是源于源句子x的策略。该生成器采用与NMT模型相同的架构。请注意,我们不假设生成器的特定架构。为了验证所提方法的有效性,我们使用了生成器两种不同的结构:RNNSearch2和Transformer。
3.3 判别器
最近,深度判别模型类似于CNN和RNN在复杂序列分类任务中取得了一个良好的表现。在这里,使用CNN结构来实现判别器。
因为通过生成器生成的句子有多种长度,CNN padding被用于将句子转换为序列,修正长度为T,即生成器生成的最大长度。定义源语言,目标序列,我们建立源矩阵和目标矩阵:
其中是k维的词嵌入,分号表示串联的操作。针对源矩阵,一个核将卷积运算应用到一个l窗口大小的词来产生一系列特征:
其中表示元素生产的总和,b表示一个偏差项,是一个非线性的**函数,在这篇文章中我们使用ReLu。注意用于加速训练的batch正则化,应用在**函数输入之前(等式3中的BN)。为了获得与kernal 相关的最终特征,采用Max over time pooling操作进行特征约束:
我们在kernel上使用不同的窗口尺寸和多样的数字来抽取不同的特征,然后最后连起来表达源语言句子。目标语言句子的表达能够从矩阵中抽取。最后给出源语言句子可以按照下面式子计算:
其中V是转换矩阵将和串联起来并二维填充,是logistic function。
3.4 BLEU目标
我们将平滑的句子级别BLEU应用为生成器的特定目标。 给出生成的句子和基础真实句子,目标Q计算一个reward ,它测量生成的句子的n-gram精度。 与判别器的输出相同,的范围从0到1,这使得更容易融合Q和D。
3.5 梯度训练策略
根据(Yu et al., 2016), 生成器G的目标被定义为从初始状态生成一个序列来最大化期望和奖励。一般,目标函数如下:
其中表示G中的参数,指出生成目标序列,X是源语言句子,表示目标句子的ground truth。是**函数,目标语言句子由源语言句子X给出的,累计给出的奖励从状态开始,经过**函数得到,接下来采用策略,为了评估**函数,我们考虑判别器D的实际估计概率和BLEU目标Q的输出:
其中表示减少奖励方差的基线值。实际上,我们把看做是常数,一般设置为0.5。是超参数。问题在于,给出原序列,D仅仅给出一个奖励值在最终的目标序列上。如果不起作用的话。因此,我们无法直接获得中间状态的动作值。 评估中间状态的动作值,在策略下的蒙特卡洛搜索应用于对未知标记进行采样。每个搜索直到句子结尾标记被采样或采样的句子达到最大长度才结束。为了获得更稳定的奖励并减少差异,我们将N次蒙特卡洛搜索表示为:
其中,表示通过蒙特卡洛搜索采样句子的长度。是当前状态,是基于策略采样。判别器对所采样的句子分别给予奖励。中间状态的最终返回值被计算为奖励的平均值。因此,对于长度为T的目标句,我们计算句子水平为:
使用判别器作为奖励函数可以通过动态更新判别器来进一步改进生成器。一旦我们得到更真实的生成序列,我们重新训练判别器:
在更新判别器之后,我们准备重新训练生成器。 目标函数的梯度将生成器的参数计算为:
3.6 训练策略
GANs由于其不稳定的训练而受到批评,因为生成器和判别器需要小心地同步。为使该模型易于复制,本文给出了该模型训练的具体策略。
首先,我们使用最大似然估计来对并行训练集上的生成器进行预训练,直到达到最佳转化效果。 然后,通过使用生成器解码训练数据来生成机器生成的句子。在解码时我们简单的使用了梯度采样方法代替定向搜索方法。接下来,在判别器上对真实并行数据和机器生成数据的组合进行预先训练,直到分类精度达到。最后,对生成器和判别器进行了联合训练。生成器采用了梯度训练方法。然而,在我们的实践中,我们发现仅使用简单的梯度训练策略更新生成器会导致不稳定。为了缓解这种情况,我们采用了teacher-forcing方法,类似于(Lamb et al., 2016; Li et al., 2017)。我们直接使判别器自动为黄金目标语言句子分配1的反馈,生成器使用这个反馈在真正的并行示例上更新自己。一旦生成器使用梯度更新策略进行更新,我们将运行一次teacher-forcing。生成器被更新后,我们使用新的强大的生成器来生成更真实的句子,然后使用它来训练判别器。根据 (Arjovsky et al.,2017),每次梯度更新后,将判别器的权重限制在中。根据生成器的每个步骤,我们为判别器执行一个优化步骤。在我们的实践中,我们设置为0.82,为5000,为1.0,蒙特卡洛搜索次数N为20。
4 实验和结果
我们在英文-德文和英文-中文翻译任务上来评估我们的BR-CSGAN,我们测试了两种不同的生成器结构:传统的RNNSearch和新兴的state-of-the-art Transformer。
4.1 数据集和预处理
英文-德文:对于英文-德文翻译,我们在公开可用的语料库上进行实验,这些语料库被广泛用作NMT系统的基准。WMT’14 En-De,这个数据集包含了4.5M个句子对。句子使用byte-pair编码,具有大约37000个令牌的共享源-目标词汇表。我们在newstest2014上报告我们的结果。newstest2013用于验证。
中文-英文:对于中文-英文翻译,我们的训练数据包括从LDC corpora抽取的1.6M的句子对。源和目标句子都是用byte-pair编码。源词汇表和目标词汇表中的令牌分别约为38000和34000。我们选择NIST02作为开发集。使用NIST03/04/05作为测试。
为了加速我们的训练过程,超过50个单词长度的句子在使用RNNSearch模型进行实验的时候被移除了。这种方案在之前的工作中经常被使用 (Ranzato et al.,2015; Shen et al., 2015; Yang et al., 2016)。
4.2 模型参数和评估
对于Transformer,参考(Vaswani et al., 2017)中的基本模型,我们设置词嵌入的维度为512,dropout rate为0.1,head number为8。编码器和解码器都具有六层的结构。我们使用集束搜索,设置beam size为4, length penalty 为0.6。
对于RNNSearch,根据 (Bahdanau et al.,2014),我们为编码器和解码器设置512的隐藏单元。词嵌入的维度也设置为512。在RNNSearch训练中我们没有设置dropout值。在测试过程中,我们使用集束搜索,beam size设置为10,length penalty未设置。
所有的模型使用Tensorflow来实现并在一台拥有多达四个K80 GPU的机器的多GPU中设置同步训练。我们在模型在十分之一的评测数据中没有取得更好的效果时停止训练。BLEU(Papineniet al., 2002) 被用作评估指标。我们使用tmteval-v11b.pl脚本来评价中文-英文模型,使用multi-belu.pl脚本来评估英文-德文模型。
4.3 主要的结果
RNNSearch模型采用64个实例的mini-batch进行优化。在中文-英文数据集上预训RNNSearch需要约30小时,在英文-德文数据集上预训练要46小时。 在生成性对抗训练期间,中英文数据集大约需要35小时,英德数据集大约需要50小时。 对于Transformer,每个训练batch包含一组包含大约25000个源对象和25000个目标对象的句子对。 在汉英数据集上,预训练需要15个小时,生成对抗训练需要20个小时。 在英语 - 德语数据集上,预训练需要35小时,生成对抗训练需要40小时。
表1显示了汉英和英德测试集的BLEU分数。 在RNNearch模型中,naive GAN(即表1中的RNNSearch + BR-CSGAN(λ= 1)线)在汉英测试集上实现了高达+1.11 BLEU分数的改进,在英德测试中达到了+ 0.9BLEU分数。 根据BLEU目标,BR-CSGAN(RNNSearch + BR-CSGAN(λ= 0.7))带来了更显着的改进,在中英数据集上得到了+1.83 BLEU分数的提高,在英德数据集上得到了+1.69 BLEU分数的提高。我们还测试了RNNSearch仅由BLEU目标(RNNSearch + BR-CSGAN(λ= 0)的线)引导的翻译性能,我们在中英文翻译上仅获得了和+0.55 BLEU分数的提高,在英德翻译中仅获得+0.58 BLEU分数的提高。在Transformer上的实验显示了同样的趋势。虽然Transformer已经实现了最先进的翻译表现,但我们的方法仍然在汉英翻译上获得了+0.81 BLEU点的提升,在英德翻译上获得了+0.62 BLEU点的提升。
这些结果表明,所提出的BR-CSGAN始终优于baseline,并且它表现出比naive GAN更好的翻译性能以及仅由BLEU目标引导的模型。
5 分析
5.1 和MRT比较
MRT是我们这种方式的一个极端情况。
考虑一个句子对(x,y),MRT的训练objective由这个公式计算:
其中是一个损失函数,用于测量预测翻译结果和实际翻译结果的差别,是针对inputx的包含所有的预测输出的集合,是NMT模型的参数。
不幸的是,由于指数级的搜索空间,这个对象经常很难处理。为了缓解这个问题,搜过空间的子集被用来作为样本来近似这个对象。
在本文中,设置为0,BR-CSGAN的目标变为:
其中也是一个预测翻译和训练样本之间的损失函数。
很容易发现,在这种的情况下,我们所提出的BR-CSGAN优化到和MRT相同的对象。他们之间唯一的不同在于,BR-CSGAN使用增强学习来最大化收益,而MRT使用随机样本来近似风险。事实上,BR-CSGAN是一个naive GAN和MRT的加权和,而且它结合了两个方式的优点。尤其需要指出的是,与naiveGAN相比,GAN没有特定的目标来指导训练过程,而BR-CSGAN利用BLEU值指导生成器生成具有更高BLEU值的句子。与MRT相比,MRT只由静态目标训练,而BR-CSGAN使用了动态的识别器,根据生成器的动态反馈结果同步更新。表2比较了MRT和BR-CSGAN在中英和英法任务中的翻译性能。我们只在RNNSearch进行了实验,因为我们只拿到了基于RNNRsearch实现的MRT的开源代码。结果显示,我们提出的BR-CSGAN在中英和英德的翻译工作中都比MRT表现得好。
5.2 何时停止预训练
识别器的初始准确率被视为是一个超级变量,可以在预训练的过程中设置。
由此产生的问题是,我们何时停止预训练呢?我们需要将识别器预训练到最高的准确率吗?为了解决这个问题,我们测试了识别器准确率初始值对结果的影响。我们训练了五个识别器,准确率分别取06,0.7,0.8,0.9和0.95。利用这五个识别器,我们训练了五个不同的BR-CSGAN模型,并且测试了他们的翻译性能。图2描述了实验结果,我们可以发现初始准确率对翻译性能影响很大。根据图2,我们可以发现识别器的初始准确率应当谨慎设置,太高或太低都会使模型性能不好。这也暗示了在生成性对抗训练开始的的时候保持生成器和识别器之间的平衡关系是很重要的。如果识别器太强,生成器就会生成不好的预测,无法产生正确预测。这时,生成器就会一直被抑制,其性能也会越来越糟糕。另一方面,如果识别器太弱,他就无法给生成器很好的指导作用,这时对生成器的更新就是随机的。在实际训练中,我们会预训练识别器直到他的准确率达到0.8左右。
5.3 monto caral搜索的采样间隔
我们想知道对于monto caral搜索的采样间隔对翻译性能会有怎样的影响。直观上,如果N较小,那么在Monto caral上搜索的范围就会很大,这导致每一个单词就可能不准确。如果N很大,计算上的时间消耗就会很高,因为我们需要处理更多的样本。因此在准确率和性能复杂度之间我们需要做好权衡。我们在中英翻译中探究了这个问题。表3描述了模型N从5到30,以5为间隔的翻译性能。从表3中可以看到,我们所提出的模型在N小于15时并没有性能上的提升,事实上,其翻译性能变得越来越糟糕。我们猜想,预测的结果与期望的结果差别很大的原因是因为N很小,将会有很大的方差,在指导生成器更新时给出了逐渐错误的方向。由于对于GAN的训练不稳定,错误的梯度指导增加了不确定性,BLEU的结果也越来越糟糕。随着N的增加,模型的翻译性能也得到了提升,但是当N比20大时,N值对模型的性能提升很小。
6 总结和未来展望
在本文中,我们提出了BR-CSGAN,利用BLEU的增强型生成性对抗网络来提升NMT。我们所提出的方法是对naive GAN和MRT的结合。为了验证方法的性能,我们测试了两种不同架构的生成器,传统的RNNSearch和性能最优的Transformer。基于中英和英德翻译的实验结果表明我们的方式达到了非常明显的改进效果。未来,我们希望能够将multi-adversarial框架应用于GAN。