EMNLP 2018 | 结合通用和专用NMT的优势,CMU为NMT引入「语境参数生成器」

原标题:EMNLP 2018 |
结合通用和专用NMT的优势,CMU为NMT引入「语境参数生成器」

原文:https://www.tensorflow.org/versions/r1.5/tutorials/seq2seq

选自arXiv

(全文99.9%由google翻译,自学使用)

作者:Emmanouil Antonios
Platanios等

作者:Thang Luong,Eugene Brevdo,Rui Zhao(Google Research
Blogpost,Github)

参与:白悦、刘晓坤

本课程的这些版本需求TensorFlow Nightly。
为了利用稳定的TensorFlow版本,请考虑任何分支,如tf-1.4。

通用和专用 NMT
模型分别在一般语言对和稀世语言对的翻译中颇具优势,但那也反映了分其余劣势,取决于参数共享的品位。为此,CMU
的研商者在本文中提出了一种在两者之间取得平衡艺术,不需要改变 NMT
原有架构,而是引入新的零部件
CPG,来可控地落成不同语言对模型之间的参数共享。该零件可无缝结合分歧的NMT,并在尺度数据集上取得当前超级。商讨者强调,该格局使大家更类似普适的高中级语言。

只要采取那个代码库举行研讨,请引用此。

神经机器翻译(NMT)无需单独陶冶或调整系统的别样部分就足以平昔建模源语言到目的语言的炫耀。那使得
NMT 快捷升高,并在重重广阔环境中中标应用 (Wu et al., 二零一四; Crego et
al.,
2014)。编码器-解码器抽象使构建将其他语言的源句映射到向量表示,再将向量表示解码到任何目的语言的连串在概念上变得实惠。由此,人们提议了各样方法来扩展那种多语言机器翻译的肤浅
(Luong et al., 二零一六; Dong et al., 2016; Johnson et al., 2017; Ha et al.,
二零一六; Firat et al., 二〇一六a)。

介绍(Introduction)

序列 – 序列(seq2seq)模型(Sutskever et al.,
2014,
Cho et al.,
2014
)在机械翻译,语音识别和文书摘要等各类职责中取得了了不起的成功。
本教程为读者提供了seq2seq模子的宏观驾驭,并出示了何等先导打造一个有竞争力的seq2seq模子。
大家注意于神经机器翻译(NMT)的任务,它是seq2seq模子的第3个测试平台。
包涵的代码是轻量级的,高质量的,生产就绪,并结合最新的研讨思路。
我们通过以下方法已毕那些:

  1. 运用以来的解码器/注意力包装器(decoder / attention
    wrapper)API,TensorFlow 1.2数目迭代器
  2. 组合我们强大的专业知识,建立循环和seq2seq模型
  3. 为建立最好的NMT模型和复发Google’s NMT
    (GNMT)系统提供技术和窍门。

咱俩深信提供人们可以轻松再次出现的benchmarks是尤其主要的。
因而,大家提供了完全的实验结果,并在以下公开可用的多寡集上对模型进行预训练:

  1. 小规模:IWSLT Evaluation
    Campaign提供的爱沙尼亚语 –
    希腊语TED对话语料库(133K个句子对)。
  2. 大规模:WMT Evaluation
    Campaign提供的德英平行语料库(4.5M句子对)。

作者们第叁建立部分有关NMT的seq2seq模子的基本知识,解释什么建立和陶冶一个vanilla
NMT模型。 第2片段将器重于创设具有注意力机制的竞争性NMT模型。
然后,大家将商讨一些技艺和诀窍,以树立最佳NMT模型(包涵进度和翻译质量),如TensorFlow最佳实践(批处理,分段),双向揽胜极光NN,波束搜索(beam
search [其一是吗?])以及选择GNMT注意力增加到多少个GPU。

多语言 NMT
以前的做事可大概分成二种范式。第多个通用 NMT (Johnson et al., 2017; Ha
et al., 二〇一五) 对拥有语言使用单一模型。通用 NMT
没有其他特定语言的参数化,在翻译截然不一致的语言和数据有限的动静下,那种形式过于简短化且相当不利于。通过试验申明,Johnson等人的艺术(2017)在高样本复杂度情状下质量变差,由此在有限的数量设置中突显不好。Ha
等人提议的通用模型(二零一六)须求输入句子的新编码方案,那会招致过大的词汇量从而难以伸张。第叁种范式,特定于各种语言的编码器-解码器
(Luong et al., 二零一五; Firat et al.,
二〇一五a),逐个语言使用独立的编码器和平消除码器。那不允许跨语言共享音信,只怕造成过度参数化,且在语言相似的情景下或许误伤。

基础知识(Basic)

在本文中,CMU
的钻探者在那二种办法之间赢得了平衡,指出了一种可以分别为逐个语言学习参数的模子,同时也能在一般语言之间共享新闻。研讨者使用了新的语境相关的参数生成器(CPG),它可以(a)泛化全数那一个方法;(b)缓解上述通用和独门语言编码器-解码器系统的题材。它将语言嵌入作为翻译的语境举行学习,并用它们为具备语言对转移共享翻译模型的参数。因而,它为这么些模型提供了各个语言单独学习参数的力量,同时也在一般语言之间共享音讯。参数生成器是通用的,允许以那种艺术增强任何现有的
NMT 模型。其它,它具备以下所期望的个性:

神经机器翻译的背景(Background on Neural Machine Translation)

在过去,守旧的依据短语的翻译系统通过将源语句拆分成多少个部分然后将其逐句翻译来执行他们的职分。
那导致了翻译产出的不通畅,并不像我们人类翻译的那么。
大家阅读整个源句子,掌握它的趣味,然后爆发壹个翻译。
神经机器翻译(NMT)模仿的就是那种措施!

澳门金沙4787.com 1

图1.编码器 – 解码器架构 – 用于NMT的相似方法的事例。
编码器将源语句转换为经过解码器传递的“意义”向量以发生翻译。

具体而言,NMT系统率先使用编码器读取源句子来打造“思想”向量,表示句子含义的数字种类;
解码器然后甩卖句子向量以发出翻译,如图1所示。这一般被喻为编码器 –
解码器种类布局。
NMT以那种格局消除了观念的根据短语的法门中的局地翻译难题:它可以捕捉语言的悠久器重,例如性别协议;
语法结构等; 并通过谷张学友先生经机器翻译系统(Google Neural Machine
Translation
systems)体现了更通畅的翻译。

NMT模型依据其十三分的系统布局而有所差别。
对于种类数据,很自然的抉择是大多数NMT模型所选拔的递归神经互连网(冠道NN)。
编码器息争码器经常采用LacrosseNN。 不过,科雷傲NN模型在偏下方面有所不同:(a)方向性

  • 单向或双向; (b)深度 – 单层或多层; 和(c)类型 –
    平常是惯常奥迪Q3NN,长时间长期记念(LSTM)或门控循环单元(GRU)。
    有趣味的读者可以在那篇博文中找到有关QX56NN和LSTM的更加多音讯。

在本教程中,大家以单向的吃水多层HighlanderNN为例,将LSTM作为三个递归单元。
大家在图2中显得了那般模型的四个例子。在那几个事例中,大家树立了三个模子,将源句子”I
am a student”翻译成目的句子”Je suisétudiant”。
在高层次上,NMT模型由七个递归神经互联网组成:编码器KugaNN仅仅消耗输入的源单词而不作任何预测;
另一方面,解码器在预测下三个单词的还要处理目标语句。

欲精通越来越多音讯,我们向读者介绍本学科所按照的Luong
(2016)。

澳门金沙4787.com 2

图2.神经机器翻译 – 3个深度循环架构的例证,将源句子“I am a
student”翻译成目的句子“Je suistétudiant”。
那里,“<s>”表示解码进程的初步,而“</ s>”表示解码器截至。

  1. 简简单单:类似 Johnson 等人(2017)和 Ha 等人(二零一五)的艺术,且与 Luong
    等人(二零一四 年)和 Firat
    等人(2015a)的不二法门相反,它只需稍作修改就可以利用于多数现有的 NMT
    系统,并且可以无缝地包容注意力层。
  2. 澳门金沙4787.com,多语言:和前边一样,允许选拔同样的单个模型举办多语言翻译。
  3. 半监督:可以拔取单语数据。
  4. 可伸张:通过在言语间拔取多量但可控的共享来收缩参数的数量,从而收缩大气数目的须求,如
    Johnson等人所述(2017)。它还同意语言的解耦,幸免对大气共享词汇必要,如 Ha
    等人所述(二零一四)。
  5. 适应性强:无需完全重复陶冶就可以适应新语言。
  6. 脚下开头进的点子:比成对 NMT 模型和 Johnson等人的模子具备更好的性情。(2017
    年)。事实上,该措施优于初阶进的质量。

设置教程(Installing the Tutorial)

要安装本学科,您需求在系统上设置TensorFlow。 本教程须求TensorFlow
Nightly。 要安装TensorFlow,请依照那边的设置表明举办操作。
如若设置了TensorFlow,您可以运作以下命令来下载本学科的源代码:

git clone https://github.com/tensorflow/nmt/

小编首先介绍3个可用于定义和描述一大半存活 NMT
系统模块化框架,然后,在第 3
节中,将基于该框架介绍本切磋的关键贡献,即语境参数生成器(CPG)。作者还论证了该办法使大家更接近普适的中档语言。

陶冶 – 怎么样树立大家的第四个NMT系统(Training – How to build our first NMT system)

率先,大家将深刻切磋用实际的代码片断创设NMT模型的骨干,大家将因此它更详实地解释图2。
我们将数据准备和完全的代码推迟距今。
那有个别是指文件model.py

在底部,编码器和解码器福睿斯NNs接收以下输入:首先是源句子,然后是提醒从编码转换到解码方式的边际标记”<s>”
,和目标语句。
对于练习,我们会给系统提供以下张量,这一个张量在岁月上是最首要格式,包涵文字索引:

  • encoder_inputs [max_encoder_time,batch_size]:源输入单词。
  • decoder_inputs [max_decoder_time,batch_size]:目标输入单词。
  • decoder_outputs
    [max_decoder_time,batch_size]:目标输出单词,这么些是decoder_input向左移动1个时间步,右侧添加一个句尾截至标记。
    那边为了提升成效,大家共同磨练多个句子(batch_size)。
    测试稍有不一样,所以大家稍后再研商。

论文:Contextual Parameter Generation
for Universal Neural Machine Translation

嵌入(Embedding)

鉴于单词的归类性质,模型必须首先查找源和对象的内置来寻觅相应的词表示(word
representations)。
为了使这么些松手层起作用,首先为每一个语言拔取3个词汇表。
常常,选用词汇量V,唯有最频繁的V词才被视为唯一。
全部任何单词都转移为”unknown”标记,并赢得一致的放手。
嵌入权重,各种语言一套,常常在教练中上学。

# Embedding
embedding_encoder = variable_scope.get_variable(
    "embedding_encoder", [src_vocab_size, embedding_size], ...)
# Look up embedding:
#   encoder_inputs: [max_time, batch_size]
#   encoder_emb_inp: [max_time, batch_size, embedding_size]
encoder_emb_inp = embedding_ops.embedding_lookup(
    embedding_encoder, encoder_inputs)

平等,我们得以营造embedding_decoder和decoder_emb_inp。
请注意,可以采取接纳预陶冶词表示(例如word2vec或Glove
vectors)来起始化嵌入权重。
一般的话,给定大批量的教练多少,大家能够起来学习那些嵌入。

发表评论

电子邮件地址不会被公开。 必填项已用*标注