雷锋网(公众号:雷锋网):本文原标题How to Configure an Encoder-Decoder Model for Neural Machine Translation,作者为Jason Brownlee,全文由雷锋字幕组编译。
翻译/ 崔跃辉、叶倚青
校对/ 叶倚青
用于循环神经网络的编码-解码架构,在标准机器翻译基准上取得了最新的成果,并被用于工业翻译服务的核心。
该模型很简单,但是考虑到训练所需的大量数据,以及调整模型中无数的设计方案,想要获得最佳的性能是非常困难的。值得庆幸的是,研究科学家已经使用谷歌规模的硬件为我们做了这项工作,并提供了一套启发式的方法,来配置神经机器翻译的编码-解码模型和预测一般的序列。
在雷锋网这篇译文中,您将会获得,在神经机器翻译和其他自然语言处理任务中,如何最好地配置编码-解码循环神经网络的各种细节。
阅读完雷锋网译文后,你将知道:
-
谷歌的研究调查了各个模型针对编码-解码的设计方案,以此来分离出它们的作用效果。
-
关于一些设计方案的结果和建议,诸如关于词嵌入、编码和解码深度以及注意力机制。
-
一系列基础模型设计方案,它们可以作为你自己的序列到序列的项目的起始点。
让我们开始吧:
Sporting Park
神经网络机器翻译的编码-解码模型
用于循环神经网络的编码-解码架构,取代了经典的基于短语的统计机器翻译系统,以获得最新的结果。
根据他们2016年发表的论文“Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation”,谷歌现已在他们的Google翻译服务的核心中使用这种方法。
这种架构的问题是模型很大,需要非常大量的数据集来训练。 这受到模型训练花费数天或数周的影响,并且需要非常昂贵的计算资源。 因此,关于不同设计选择对模型的影响及其对模型技能的影响,已经做了很少的工作。
Denny Britz等人清楚地给出了解决方案。 在他们的2017年论文“神经机器翻译体系的大量探索”中,他们为标准的英德翻译任务设计了一个基准模型,列举了一套不同的模型设计选择,并描述了它们对技能的影响。他们声称,完整的实验耗费了超过250,000个GPU计算时间,至少可以说是令人印象深刻的。
我们报告了数百次实验运行的实验结果和方差数,对应于标准WMT英语到德语翻译任务超过250,000个GPU小时。我们的实验为建立和扩展NMT体系结构提供了新的见解和实用建议 。
在本文中,我们将审视这篇文章的一些发现,我们可以用它来调整我们自己的神经网络机器翻译模型,以及一般的序列到序列模型 。
有关编码-解码体系结构和注意力机制的更多背景信息,请参阅以下文章:
Encoder-Decoder Long Short-Term Memory Networks
Attention in Long Short-Term Memory Recurrent Neural Networks
基线模型
我们可以通过描述用作所有实验起点的基线模型开始。
选择基线模型配置,使得模型在翻译任务上能够很好地执行。
-
嵌入:512维
-
RNN小区: 门控循环单元或GRU
-
编码器:双向
-
编码深度: 2层 (每个方向一层)
-
解码深度:2层
-
注意: Bahdanau风格
-
优化器:Adam
-
信息丢失:20%的投入
每个实验都从基准模型开始,并且改变了一个要素,试图隔离设计决策对模型技能的影响,在这种情况下,BLEU得分。
神经网络机器翻译的编码-解码体系结构
取自“Massive Exploration of Neural Machine Translation Architectures”
嵌入大小
一个词嵌入(word embedding)用于表示单词输入到编码器。
这是一个分散表示(distributed representation),其中每个单词映射到一个具有连续值的固定大小向量上。这种方法的好处是,具有相似含义的不同词语将具有类似的表示。
通常在训练数据上拟合模型时学习这种分散表示。嵌入大小定义了用于表示单词的矢量长度。一般认为,更大的维度会导致更具表现力的表示(representation),反过来功能更好。
有趣的是,结果显示最大尺寸的测试确实取得了最好的结果,但增加尺寸的收益总体来说较小。
[结果显示] 2048维的嵌入取得最佳的整体效果,他们只小幅这样做了。即使是很小的128维嵌入也表现出色,收敛速度几乎快了一倍。
建议:从一个小的嵌入大小开始,比如128,也许稍后增加尺寸会轻微增强功能。
RNN 单元种类共有三种常用的循环神经网络(RNN):
-
简单循环神经网络
-
长短期记忆网络(LSTM)
-
门控循环单元(GRU)
LSTM是为了解决简单循环神经网络中限制循环神经网络深度学习的梯度消失问题而开发的。GRU是为了简化LSTM而开发的。结果显示GRU和LSTM都显著强于简单RNN,但是LSTM总体上更好。
在我们的实验中,LSTM 单元始终胜过GRU单元。
建议:在你的模型中使用LSTM RNN单元。
编码-解码深度
通常认为,深度网络比浅层网络表现更好。
关键在于找到网络深度、模型功能和训练时间之间的平衡。 这是因为,如果对功能的改善微小,我们一般没有无穷的资源来训练超深度网络。
作者正在探索编码模型和解码模型的深度,以及对模型功能的影响。
说到编码,研究发现深度对功能并没有显著影响,更惊人的是,一个1层的双向模型仅优于一个4层的结构很少。一个2层双向编码器只比其他经测试的结构强一点点。
我们没有发现确凿证据可以证明编码深度有必要超过两层。
建议: 使用1层的双向编码器,然后扩展到2个双向层,以此将功能小幅度强化。
关于解码器也是类似的。1,2,4层的解码器之间的功能差异很小。4层的解码器略胜一筹。8层解码器在测试条件下没有收敛。
在解码器这里,深度模型比浅层模型表现略好。
建议:用1层的解码器作为起步,然后用4层的解码器获得更优的结果。
编码器输入的方向
源文本序列可以通过以下几种顺序发送给编码器:
-
正向,即通常的方式
-
反向
-
正反向同时进行
作者发现了输入序列的顺序对模型功能的影响,相较于其他多种单向、双向结构。
总之,他们证实了先前的发现:反向序列优于正向序列、双向的比反向序列略好。
……双向编码器通常比单向编码器表现更好,但不是绝对优势。具有反向数据源的编码器全部优于和它们相当的未反向的对照。
建议:使用反向输入序列或者转变为双向,以此将功能小幅度强化。
注意力机制
原始的编码-解码模型有一个问题:编码器会将输入信息安排进一个固定长度的内部表达式,而解码器必须从其中计算出整个输出序列。
注意力机制是一个进步,它允许编码器“关注”输入序列中不同的字符并在输出序列中分别输出。
作者观察了几种简单的注意力机制的变种。结果显示具备注意力机制将大幅提升模型表现。
当我们期待基于注意力机制的模型完胜时,才惊讶地发现没有“注意力”地模型表现多么糟糕。
Bahdanau, et al. 在他们2015年的论文“Neural machine translation by jointly learning to align and translate”中表述的一种简单加权平均的注意力机制表现最好。
建议:使用注意力机制并优先使用Bahdanau的加权平均的注意力机制。
推断
神经系统机器翻译常常使用集束搜索来对模型输出序列中的单词的概率取样。
通常认为,集束的宽度越宽,搜索就越全面,结果就越好。
结果显示,3-5的适中的集束宽度表现最好,通过长度折损仅能略微优化。作者建议针对特定问题调节宽度。
我们发现,调节准确的集束搜索对好结果的取得非常关键,它可以持续获得不止一个的BLE点。
建议:从贪婪式搜索开始(集束=1) 并且根据你的具体问题调节。
最终模型
作者把他们的发现都应用在同一个“最好的模型”中,然后将这个模型的结果与其他表现突出的模型和体现最高水平的结果比较。
此模型的具体配置如下表,摘自论文。当你为自然语言处理程序开发自己的编码-解码模型时,这些参数可以作为一个好的起始点。
最终的神经网络机器翻译模型的模型配置总结
“Massive Exploration of Neural Machine Translation Architectures”
此系统的结果令人印象深刻,它用更简单的模型达到了接近最先进的水平,而这并不是论文的最终目标。
……我们确实证明了通过仔细的超参数调整和优良的初始化,基于标准的WMT也可能达到最先进的水平。
很重要的一点,作者将他们的代码作为了开源项目,称作“tf-seq2seq”。2017年,因为其中两位作者时谷歌的大脑训练项目的成员,他们的成果在谷歌研究博客上发布,标题为“Introducing
tf-seq2seq: An Open Source Sequence-to-Sequence Framework in
TensorFlow“。
延伸阅读
如果你想深入了解,这部分提供关于此话题的更多资源。
-
Massive Exploration of Neural Machine Translation Architectures, 2017.
-
Introducing tf-seq2seq: An Open Source Sequence-to-Sequence Framework in TensorFlow, 2017.
-
tf-seq2seq: A general-purpose encoder-decoder framework for Tensorflow
-
Neural machine translation by jointly learning to align and translate, 2015.
总结
本文阐述了在神经网络机器翻译系统和其他自然语言处理任务中,如何最好地配置一个编码-解码循环神经网络。具体是这些:
-
谷歌的研究调查了各个模型针对编码-解码的设计方案,以此来分离出它们的作用效果。
-
关于一些设计方案的结果和建议,诸如关于词嵌入、编码和解码深度以及注意力机制。
-
一系列基础模型设计方案,它们可以作为你自己的序列到序列的项目的起始点。
原文链接:https://machinelearningmastery.com/configure-encoder-decoder-model-neural-machine-translation/
。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/129228.html