14. 神经机器翻译模型推断
推断是神经机器翻译中的核心问题。训练时双语句子对模型是可见的,但是在
推断阶段,模型需要根据输入的源语言句子预测译文,因此神经机器翻译的推断和
训练过程有着很大的不同。特别是,推断系统往往对应着机器翻译实际部署的需要,
因此机器翻译推断系统的精度和速度等因素也是实践中需要考虑的。
本章对神经机器翻译模型推断中的若干问题进行讨论。主要涉及三方面内容:
神经机器翻译的基本问题,如推断方向、译文长度控制等。
神经机器翻译的推断加速方法,如轻量模型、非自回归翻译模型等。
多模型集成推断。
14.1 面临的挑战
神经机器翻译的推断是指:对于输入的源语言句子 x使用已经训练好的模型找
到最佳译文 ˆy 的过程,其中 ˆy = argmax
y
P (y|x)。这个过程也被称作解码。但是为了
避免与神经机器翻译中编码器-解码器造成概念上的混淆,这里统一把翻译新句子的
操作称作推断。以上这个过程是一个典型的搜索问题(见第二章)比如,可以使用
贪婪搜索或者束搜索完成神经机器翻译的推断(见第十章)
通用的神经机器翻译推断包括如下几步:
对输入的源语言句子进行编码;
472 Chapter 14. 神经机器翻译模型推断 肖桐 朱靖波
使用源语言句子的编码结果,在目标语言端自左向右逐词生成译文;
在目标语言的每个位置计算模型得分,同时进行剪枝;
当满足某种条件时终止搜索。
这个过程与统计机器翻译中自左向右翻译是一样的(见第七章)即在目标语言
的每个位置,根据已经生成的部分译文和源语言的信息,生成下一个译文单
[80, 81]
它可以由两个模块实现
[671]
预测模块,它根据已经生成的部分译文和源语言信息,预测下一个要生成的译
文单词的概率分布
1
。因此预测模块实际上就是一个模型打分装置;
搜索模块它会利用预测结果,对当前的翻译假设进行打分,并根据模型得分
对翻译假设进行排序和剪枝。
预测模块是由模型决定的,而搜索模块可以与模型无关。也就是说,不同的模型
可以共享同一个搜索模块完成推断。比如,对于基于循环神经网络的模型,预测模块
需要读入前一个状态的信息和前一个位置的译文单词,然后预测当前位置单词的概
率分布;对于 Transformer预测模块需要对前面的所有位置做注意力运算,之后预测
当前位置单词的概率分布。不过,这两个模型都可以使用同一个搜索模块。14.1
出了神经机器翻译推断系统的结构示意图。
预测模块
源语言句子(编码器输出)
搜索模块
译文中已经生成的单词
预测当前位置的单词概率分布
14.1 神经机器翻译推断系统的结构
这是一个非常通用的结构框架,同样适用于计机器翻译模型。因此,神经机
器翻译推断中的很多问题与统计机器翻译是一致的,比如:束搜索的宽度、解码终
止条件等等。
一般来说,设计机器翻译推断系统需要考虑个因素:搜索的准确性、搜索的
时延、搜索所需要的存储。通常,准确性是研究人员最关心的问题,比如可以通过增
大搜索空间来找到模型得分更高的结果。而搜索的时延和存储消耗是实践中必须要
考虑的问题,比如可以设计更小的模型和更高效的推断方法来提高系统的可用性。
1
在统计机器翻译中,也可以同时预测若干个连续的单词,即短语。在神经机器翻译中也有类似于生
成短语的方法,但是主流的方法还是按单词为单位进行生成。
14.1 面临的挑战 473
虽然,上述问题在统计机器翻译中均有讨论,但是在神经机器翻译中又面临着
新的挑战。
搜索的基本问题在神经机器翻译中有着特殊的现象。比如,在统计机器翻译中,
减少搜索错误是提升翻译品质的一种手段。但是神经机器翻译中,简单的减少
搜索错误可能无法带来性能的提升,甚至会造成翻译品质的下降
[474, 672]
搜索高,系署的高。与统译系是,
神经机器翻译系统依赖大量的浮点运算。这导致神经机器翻译系统的推断会比
统计机器翻译系统慢很多。虽然可以使 GPU 来提高神经机器翻译的推断速
度,但是也大大增加了成本;
神经机器翻译在优化过程中容易陷入局部最优,单模型的表现并不稳定。由于
神经机器翻译优化的目标函数非常不光滑,每次训练得到的模型往往只是一个
局部最优解。在新数据上使用这个局部最优模型进行推断时,模型的表现可能
不稳定。
研究人员也针对以上问题开展了大量的研究工作。14.2节中,会对神经机器翻
译推断中所涉及的一些基本问题进行讨论。虽然这些问题在统计机器翻译中也有涉
及,但是在神经机器翻译中却有着不同的现象和解决思路。14.3-14.5节中,会围绕
如何改进神经机器翻译推断效率和怎样进行多模型融合这两个问题展开讨论。