您的位置:首页 > 其它

<模型汇总_4>神经翻译模型(NMT)新宠_Adversarial Neural Machine Translation_Adversarial-NMT

2017-05-01 17:52 435 查看
前面介绍了牛逼的CNN(Convolutional
Neural Network)、深度学习加速神器BNN(Binarized
neural network)和深度学习中最贪玩的模型dual-learning
NMT,感兴趣的同学可以添加微信公众号“深度学习与NLP”,回复关键词“CNN”、“BNN”或“dual”获取对应文章链接。今天我们讲讲NMT领域的新宠儿Adversarial-NMT。

本文内容摘选自论文《Adversarial
Neural Machine Translation》,写本文目的是与大家分享本文里面的新技术,这篇论文是上个月20号刚刚出来的一篇非常不错的论文,各种干货,各种经验值得借鉴。下面先谈一下读完这篇最新的论文影响最深刻的几点:

第一次把生成对抗学习的方法引入到机器翻译领域,提出了基于生成对抗训练(GAN)和深度强化学习(DRL)的新的机器翻译学习范式:adversarial
neural Machine translation(ANMT),取得了比一些现有的NMT机器翻译模型更好的state-of-art成绩。

给出了详细的模型训练的设计,网络结构的设计,参数训练的细节,探究了学习速率learning
rate大小对生成对抗网络收敛性和参数训练稳定性的影响,值得当我们在实际中使用GAN,训练GAN网络时借鉴。

论文总结了现在比较流行的各种NMT模型以及他们采用的各种方法,对于想要系统了解NMT目前各种前沿技术的人来说,非常值得一读。

下面重点学习一下里面论文核心的Adversarial NMT(ANMT)模型,其他细节,感兴趣的朋友可以自己去深入阅读一下本论文。

首先简要介绍下GAN:Generative Adversarial Networks(GANs)是Goodfellow在2014年提出的一种新的深度学习系统,整个系统由一个判别器D和一个生成器G组成,通过对抗训练(Adversarial
training)方式来同时优化G和D的参数。在GAN中,判别器D和生成器G之间互相博弈,生成器G生成假的样本y’去迷惑判别器D,根据D的识别结果调整自己参数,生成判别器D无法识别样本;相反,判别器D的目标则是尽可能的识别出由G生成的假的样本,并根据G给出的假的样本调整自己的参数。GAN在NLP方面应用比较少,因为NLP处理的句子是离散的,而GAN要求G和D处理的问题都是连续的。

问题提出:神经机器翻译(NMT)做为一种新技术,在机器翻译领域取得了巨大的成功,取得了远超出统计机器翻译(SMT)的翻译效果,但它任然存在一些问题,其中之一就是:NMT通常以词(phrase-level)为单位,采用极大似然估计(MLE)来构造目标函数,以此来训练模型参数,但是这样构造的目标函数并不能保证翻译出来的句子能够像标准句子(人工翻译)那么自然,充分且足够准确。也有一些尝试解决办法:基于句子来构造MLE或减少目标函数中NMT训练与推理之间的不一致性,但都不能很好减少真实翻译与NMT翻译之间的差异。

本文给出的解法:把人工翻译结果(标准)和NMT的翻译结果放到一起,通过对抗训练方式直接衡量二者的差异。用一个传统的NMT模型(LSTM模型)当做生成器G,把输入源语言句子翻译成目标语言句子y’,(注意:生成器G是采用warm
start的方式,即用一个已经训练好的NMT模型,并把它的输出当做Adversarial-NMT的最原始状态);使用一个经过特殊处理的CNN当做判别器D来判断输入的句子是人工翻译y(标准的)还是NMT翻译得到的,通过这样对抗的方式来co-train两个模型参数,让NMT翻译的输出y’与人工翻译y尽可能相似,直到判别器D完全区分不出来。整个模型的结构如下图:


 

整个模型的构造分两个部分:

构造生成器G:输入源目标语言句子X到生成器G中(图中橙色部分),生成传统NMT模型的输出Y’。

构造判别器D:把NMT模型的输出Y’或人工翻译输出Y与源目标语言句子X拼接构成一个二维矩阵,通过卷积网络来衡量Y与X之间的相似程度,输出标签就是0(不相关)或1(相关)。具体模型方式如下图所示:


 

为什么采用CNN来构造判别器D而不采用RNN(LSTM or GRU + attention
based + beam search),是因为CNN构造的判别器D能达到更好的分类效果。

模型参数的训练:模型结构很好构造,但关键在于如何进行参数训练。用NMT来充当生成器的关键问题在于:NMT处理的样本对(源语言句子X,目标语言句子Y)都是离散的词,或者说NMT并不是一个连续的模型,这就意味着无法直接通过反向求导的方式把误差信号直接从判别器D直接传递到生成器G,训练NMT的参数(离散的,导数处处为0),因此本文引入了强化学习中的策略梯度算法,保证在对抗学习过程中两个模型参数都能得到优化。

基于策略梯度算法的网络参数训练:

假设NMT的生成器为G,判别器(或对抗模型,adversary model)为D,整个系统的目标函数是:


 

目标函数由两部分组成,第一部分是判别器D的目标函数,第二部分是生成器目标函数。从目标函数表达式可以看出:判别器D很好训练,直接使用训练样本(X,Y)或(X,Y’)就可以直接优化判别器D;但没有办法直接优化生成器G,不能直接把梯度经过D反向传播到G,因为生成器G是离散而不可导。

基于蒙特卡洛的策略梯度算法来优化生成器G,首先给出原文推导:


 

通过有策略梯度算法给出的梯度计算公式(12)来替换生成器G原本的梯度计算公式(11),再根据13式来更新生成NMT的参数。把(12)式代入(13)式可以得到-log(1-D(x,y’)),这是判别器反馈给生成器的reward,可见:生成器G生成样本质量越高,被D判别成为正例概率越高,reward值越接近于1;相反则越小。简单采用-log(1-D(x,y’))来估计D的reward引入比较大的方差(variance),但作者通过经验发现,当采用大量样本来进行训练时这个方差会被减小。当然,也可以选择更多方式来估计D的reward,但这样做缺点就是比较耗时,因此作者选择了简单的方法。

模型训练及结果:

模型结构和参数优化都设计好了,就可以进行试验分析了。

文中给出了具体的生长器G和判别器D的网络结构,通过交叉验证方式来选择最初学习速率。作者指出了结合MLE来训练生成器G的参数,具体:50%mini-batch的样本以Adversarial-NMT方式训练G的参数,50%mini-batch的样本采用MLE方法训练G的参数。这样做可以使G参数训练过程更加稳定,因为MLE起到平滑参数的作用,削弱reward估计时引入的高variance,使G参数更新更加稳定。

文中给出了实验的结果:



实验证明Adversarial-NMT取得了比一些现有的NMT机器翻译模型更好的state-of-art成绩。

个人思考:论文中给出的很多模型设计,参数训练的经验值得借鉴,为我们提供了一个进一步提高NMT模型翻译效果的道路。但从论文的结果来看,并没有比传统的NMT方法精度提升很多,而且通过对抗过程来训练模型的参数的过程比较复杂,实际生产环境上亿的训练样本情况下,生成器G和判别器D模型结构更为复杂,模型收敛性是否可以得到保证是个问题。

 更多深度学习在NLP方面应用的经典论文、实践经验和最新消息,欢迎关注微信公众号“深度学习与NLP”或“DeepLearning_NLP”或扫描二维码添加关注。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐