谷歌大脑神经机器翻译大规模实验:寻找最优的超参数组合
- 2018-08-09 18:05:00
- 刘大牛 转自文章
- 229
近些年来,神经机器翻译技术发展迅速并已被投入了实际应用。而谷歌大脑的研究者通过大规模实验表明,即使只是经典的编码器-解码器模型,只要经过精心的参数设置,一样能取得非常好的表现。人工智能站技术分析师对该论文进行了解读,本文为解读的中文版。
论文地址: https://arxiv.org/abs/1703.03906
代码: https://github.com/google/seq2seq/
神经机器翻译架构的大规模探索(Massive Exploration of Neural Machine Translation Architectures)
引言
在这篇论文中,研究者在 WMT 英语到德语翻译任务上进行了大量实验,从而对 NMT 的超参数进行了分析。他们宣称,尽管没有带来 NMT 架构上的创新,但对经典的 NMT 基准系统进行精心调节,依然能实现可媲美当前最佳的结果。
NMT 基准数学概述
下图展示了经典的编码器-解码器模型:
如上图所示,编码器是一个双向 RNN。其输入是一个序列(源令牌 x=(x1, x2, ... x_end)),然后输出一个编码器隐藏状态序列。这个编码器隐藏状态是两个方向的状态组合。这个编码器隐藏状态是两个方向的状态组合,即 h_i = [h_i_forward; h_i_backward]。解码器也是一个 RNN。解码器的输入 y 是之前预测的词或基本真值目标词,然后其会被馈送给隐藏层,得到 s_i,这又会进一步进行变换并被用于根据一个 softmax 函数预测目标。注意,当前目标的概率取决于编码器状态 h(可使用一个语境向量 c 建模它)、当前解码器状态 s_i 和之前的词 y_{<i}。整体目标可写成 max P(y_i | y_{<i}, ci, si)。这个语境向量 c 也被称为注意向量,其计算方式为:
这是源隐藏状态 h_i 的加权和,权重变量 a_{ij} 的计算方式为:
其中,att(. , .) 被称为注意函数,这是一个定制的函数;s_i 是第 i 个解码器状态;h_j 是第 j 个编码器状态。在这篇论文中,作者使用了两个注意函数进行比较,第一个是加性注意函数,第二个是点积注意函数,如下所示:
其中 v 是一个可学习的向量,用于计算该分数;W1 和 W2 用于将源隐藏状态和目标隐藏状态转换到同一维度。整体而言,在词汇库 V 上解码器输出的概率可这样计算:
这是解码器目标。此外,你还可以根据更多情况对其进行调节,比如 softmax(W[s_i;c_i;f_i]),其中 f_i 是当前解码器输入的嵌入;或 softmax(W[s_i;c_i;f_i;t_i]),其中 t_i 是一个与预测词的偏差在特定范围内的主题向量。
数据预处理
研究者基于 WMT 英语-德语数据集(其中包含 450 万句子对)进行了大量实验。开发集是 newstest2013,测试集是 newstest2014 和 newstest2015。在使用 Moses 工具 token 化之后,他们使用 BPE(Byte Pair Encoding/双字节编码)对源和目标语料库进行了预处理并创建了 32000 个新符号(每个符号都表示一个字符 n-gram)。所得到的词汇库大小约为 3.7 万。
训练配置
基准训练的配置是:批大小=128,波束大小=10,长度惩罚项=0.6。基准模型基于标准的 2 层堆叠式双向架构和一个 2 层解码器。他们为编码器和解码器都使用了 cell 大小为 512 的 GRU,每一层之间的 dropout 设置为 0.2,输入/输出嵌入大小设置为 512。
大规模实验
嵌入维度
如上表所示,嵌入的大小造成影响不大。即使 128 维的特征也表现良好,同时收敛时间几乎可降低两倍。整体而言,2048 维的特征的效果最好,但是优势比较小。
RNN 单元探索
如上表所示,LSTM 单元的表现优于 GRU 单元。研究者宣称这是因为他们使用的训练数据不是非常大,而时间消耗最多的地方是 softmax 运算,所以他们没观察到 LSTM 和 GRU 之间在训练时间方面有显著差别。注意 LSTM 和 GRU 都优于单纯的解码器,这意味着解码器确实通过其自身的隐藏状态传递了重要的信息,而不仅靠上下文向量和当前的解码器输入。
编码器和解码器深度
如上表所示,基准的双向编码器-解码器的表现已经相当好了。研究者探索了不同深度、有无逆向的单向编码器。结果表明,输入和逆向输入的简单组合总是优于没有逆向输入的情况;这表明通过这种方式,编码器可以为早期的输入词创建更丰富的表征。注意,增加编码器的深度所带来的优势不明显,2 层编码器就足够好了。
注意函数
正如前面 NMT 数学概述一节所提到的,研究者使用了 2 个注意函数(点积和加性)来计算注意分数。研究者将 W1h_j 和 W2s_i 的维度称为“注意维度”,而且取了从 128 到 1024 的不同值。如上表所示,基于加性的注意函数在注意维度变化时表现相当稳定,而且最好的结果(22.47)是使用 512 维的向量得到的。与加性注意函数相比,基于点积的注意函数并不非常稳定,并且其表现在 256 维之后持续下降。注意,加性运算和点积运算的最佳结果很接近(22.33 与 22.47),且都远优于“没有注意”(9.98)和“没有输入”(11.57)的情况。总体而言,注意机制很重要,能帮助得到优良的翻译结果。
波束大小
研究者还调查了波束大小的影响,他们选取了 1 到 100 之间的不同大小:
如上表所示,B1 对应波束大小=1,这是一种贪婪搜索。其表现逊于波束搜索(B3、B5、B10、B25、B100、B10-LP-0.5、B10-LP-1.0)。不同波束大小所得到的结果非常接近,因此我们不能肯定更大的波束大小会有助于翻译。此外,长度惩罚能帮助结果变得更好。比如 B10 (21.57) 对比 B10-LP-0.5 (21.71) 与 B10-LP-1.0 (21.80)。
最优超参数
研究者给出了基于注意的编码器-解码器模型的最优实验参数。相比于很多 NMT 模型,其得到了相当好的结果(在 newstest14 上为 22.19,在 newstest15 上为 25.23)。仅有 GNMT [1](在 newstest14 上为 24.61)优于他们精心调节后的模型。
如上表所示,对基准模型进行很好的调整和初始化,也能让它在很多基准评测中取得优势。
分析师简评
在这篇论文中,研究者大规模地分析了神经机器翻译,并得到了一些明确的结果,比如注意机制总是有用的、双向编码器(或结合逆向输入)优于单向编码器等等。我认为未来还应研究不同的解码技术和结合 SMT 特征(基于单语言数据、双语词典的翻译词汇、分层重新排序、短语表等的语言模型)来帮助编码器学习的混合系统的情况。
参考文献
[1] Yonghui Wu, Mike Schuster, Zhifeng Chen, Quoc V. Le, Mohammad Norouzi, Wolfgang Macherey, Maxim Krikun, Yuan Cao, Qin Gao, Klaus Macherey, Jeff Klingner, Apurva Shah, Melvin Johnson, Xiaobing Liu, Lukasz Kaiser, Stephan Gouws, Yoshikiyo Kato, Taku Kudo, Hideto Kazawa, Keith Stevens, George Kurian, Nishant Patil, Wei Wang, Cliff Young, Jason Smith, Jason Riesa, Alex Rudnick, Oriol Vinyals, Greg Corrado, Macduff Hughes, and Jeffrey Dean. 2016. Google’s neural machine translation system: Bridging the gap between human and machine translation. CoRR abs/1609.08144.
联系人: | 透明七彩巨人 |
---|---|
Email: | weok168@gmail.com |