我们之前的基于短语的统计技术很有用,但也有其局限性。基于短语的系统最主要的缺点是它们将句子拆分成独立的单词或词组,系统在输出翻译结果时一次只考虑几个单词。这使得词序差别显著的语言间的翻译非常困难。为改进该系统、构建我们的神经网络系统,我们开始使用一种循环神经网络,叫作带有注意力机制的序列到序列 LSTM(长短期记忆)。该网络可以考虑到源语言句子的上下文和已经生成的所有内容,以创建更准确、流畅的译文。该网络允许长距调序,正如在英语和土耳其语翻译中遇到的那样。我们来看一下基于短语的土耳其语-英语翻译系统输出的译文: 再比较一下基于新型神经网络的土耳其语-英语翻译系统输出的译文: 我们看到,新系统在所有语言对上的 BLEU 值与基于短语的系统相比平均增长了 11 个百分点。 解决未知单词 在许多案例中,原句子中的单词并没有直接对应于目标词汇表中的翻译。这种情况下,神经系统将为未知单词生成占位符。所以我们采用注意力机制在源单词和目标单词中产生软对齐,从而将单词汇传递到目标句子中。然后,我们从使用训练数据构建的双语词典中查找该单词的翻译,并替代目标句子中的未知词。这个方法要比使用传统词典的方法更加鲁棒,特别是对于有噪声的输入。例如,在英语到西班牙语的翻译中, 我们能够将"tmrw(tomorrow)"翻译为「mañana」。虽然添加一个词典在 BLEU 分值上只有少量的提升,但是它令人们在 Facebook 翻译上有更高的评分。 词汇量简化 典型的神经机器翻译模型会计算所有单词在目标词汇表中的概率分布。该分布包含的单词量越大,计算所用的时间就越多。我们使用一种词汇量简化(vocabulary reduction)的建模技术在训练和推理时间上修正该问题。通过词汇量简化,我们将目标词汇中最常出现的单词与给定句子单个词汇的一组可能翻译相结合,以减少目标词汇的大小。过滤目标词汇会减少输出映射层的大小,这有助于使计算更快,而且不会使质量降低太多。 模型调参 神经网络基本上总是具有可调整的参数以控制模型的学习速率等模型性质。选择这些超参数的最优集非常有益于性能的提升。然而,调参对于大规模机器翻译提出了重大的挑战,因为具有独特超参数的唯一模型才能表征一个翻译方向。因为每个模型的最优值可能不同,因此我们必须独立地对生产中的每个系统进行超参数调整。我们在数月内进行了数千次端对端翻译实验,并利用 FBLearner Flow 平台微调超参数(如学习速率,注意力类型和集成大小等)。这对一些系统有重大影响。比如说我们仅基于调优模型超参数就可以令英语到西班牙语的 BLEU 分值相对提高了 3.7%。 使用 Caffe2 调整神经机器翻译的规模 向神经系统过渡的一个挑战是使模型运行的速度和效率适用于 Facebook 的规模。我们在深度学习框架 Caffe2 中实现了该翻译系统。Caffe2 追根溯源和灵活的本质使得我们可以在我们的 GPU 和 CPU 平台上进行训练和推断时,能够调整翻译模型的性能。 对于训练,我们实现了记忆优化,如 blob 循环(blob recycling)和 blob 再计算(blob recomputation),帮助我们训练更大规模的数据,更快地完成训练。关于推断,我们使用专门的向量数学库和加权量化来提高计算效率。现有模型的早期基准显示能够支持 2000 多个翻译方向的计算资源已经相当高了。但是,Caffe2 的灵活性本质和已经实现的优化使我们在效率上实现了 2.5x 的提升,这使得我们可以将神经机器翻译应用到产品中。 我们在解码时间使用束搜索来改善我们对模型输出的最高似然句子的评估,这是机器翻译中的常见做法。我们利用 RNN 抽象在 Caffe2 中的泛化性能来实现束搜索,将其作为单一前向网络计算,以获得快速高效的推断。 在整个过程中,atv直播,我们开发了 RNN 构件,如 LSTM、乘法积分 LSTM(multiplicative integration LSTM)、注意力机制。我们很高兴能够将该技术作为 Caffe2 的一部分来分享,以及和开源社区共享我们的研究成果。 正在进行的工作 (责任编辑:本港台直播) |