14.5 多模型集成 497
BLEU 最高的结果作为 Oracle,也可以选择每个预测结果中使 BLEU 达到最高的译
文单词,这样构成的句子作为 Oracle。当然,并不是说 Oracle 提高,模型集成的结
果一定会变好。因为 Oracle 是最理想情况下的结果,而实际预测的结果与 Oracle 往
往有很大差异。如何使用 Oracle 进行模型优化也是很多研究人员在探索的问题。
此外,如何构建集成用的模型也是非常重要的,甚至说这部分工作会成为模型
集成方法中最困难的部分
[673, 675, 756]
。为了增加模型的多样性,常用的方法有:
• 改变模型宽度和深度,即用不同层数或者不同隐藏层大小得到多个模型;
• 使用不同的参数进行初始化,即使用不同的随机种子初始化参数,训练多个模
型;
• 不同模型(局部)架构的调整,比如,使用不同的位置编码模型
[462]
、多层融合
模型
[463]
等;
• 利用不同数量以及不同数据增强方式产生的伪数据训练模型
[757]
;
• 利用多分支多通道的模型,使得模型能有更好的表示能力
[757]
;
• 利用预训练方法进行参数共享,然后对模型进行微调。
14.5.3 译文重组
假设选择是直接从已经生成的译文中进行选择,因此无法产生“新”的译文,也
就是它的输出只能是某个单模型的输出。此外,预测融合需要同时使用多个模型进
行推断,对计算和内存消耗较大。而且这两种方法有一个共性问题:搜索都是基于一
个个字符串,相比指数级的译文空间,所看到的结果还是非常小的一部分。对于这个
问题,一种方法是利用更加紧凑的数据结构对指数级的译文串进行表示。比如,可
以使用词格(Word Lattice)对多个译文串进行表示
[758]
。图14.17展示了基于 n-best 词
串和基于词格的表示方法的区别。可以看到,词格中从起始状态到结束状态的每一
条路径都表示一个译文,不同译文的不同部分可以通过词格中的节点得到共享
9
。理
论上,词格可以把指数级数量的词串用线性复杂度的结构表示出来。
有了词格这样的结构,多模型集成又有了新的思路。首先,可以将多个模型的
译文融合为词格。注意,这个词格会包含这些模型无法生成的完整译文句子。之后,
用一个更强的模型在词格上搜索最优的结果。这个过程有可能找到一些“新”的译
文,即结果可能是从多个模型的结果中重组而来的。词格上的搜索模型可以基于多
模型的融合,也可以使用一个简单的模型,这里需要考虑的是将神经机器翻译模型
适应到词格上进行推断
[759]
。其过程基本与原始的模型推断没有区别,只是需要把模
型预测的结果附着到词格中的每条边上,再进行推断。
图14.18对比了不同模型集成方法的区别。从系统开发的角度看,假设选择和模
型预测融合的复杂度较低,适合快速开发原型系统,而且性能稳定。译文重组需要
9
本例中的词格也是一个混淆网络(Confusion Network)。