14.5 多模型集成 495
14.5 多模型集成
域,
法。比如,在经典 AdaBoost 方法
[751]
,用多个“弱”分类器构建的“强”
器可以使模型在训练集上的分类错误率无限接 0。类似的思想也被应用到机器
译中
[709, 752, 753, 754]
被称为系统融合System Combination在各种机器翻译比赛中,
统融合已经成为经常使用的技术之一。由于许多模型融合方法都是在推断阶段完成,
因此此类方法开发的代价较低。
广义上来讲,使用多个特征组合的方式都可以被看作是一种模型的融合。融
多个神经机器翻译系统的方法有很多,可以分为假设选择、局部预测融合、译文
组三类,下面分别进行介绍。
14.5.1 假设选择
假设选择Hypothesis Selection)是最简单的系统融合方法
[708]
。其思想是:给定
一个翻译假设集合,综合多个模型对每一个翻译假设进行打分,之后选择得分最
的假设作为结果输出。
假设选择中首先需要考虑的问题是假设生成。构建翻译假设集合是假设选择
第一步,也是最重要的一步。理想的情况下,这个集合应该尽可能包含更多高质
的翻译假设,这样后面有更大的几率选出更好的结果。不过,由于单个模型的性
是有上限的,因此无法期望这些翻译假设的品质超越单个模型的上限。研究人员
加关心的是翻译假设的多样性,因为已经证明多样的翻译假设非常有助于提升系
融合的性能
[396, 755]
为了生成多样的翻译假设,通常有两种思路:1使用不同的模型
生成翻译假设;2使用同一个模型的不同参数和设置生成翻译假设。图14.15 展示
了二者的区别。比如,可以使用基于循环神经网络的模型和 Transformer 模型生成不
同的翻译假设,之后都放入集合中;也可以只用 Transformer 模型,但是用不同的模
型参数构建多个系统,之后分别生成翻译假设。在神经机器翻译中,经常采用的
第二种方式,因为系统开发的成本更低。
系统 n
系统 2
系统 1
输出 n
输出 2
输出 1
最终
输出
.
.
.
输出 n
输出 2
输出 1
单系统
最终
输出
.
.
.
(a) 多系统输出结果融合
(b) 单系统多输出结果融合
14.15 多模型翻译假设生成 vs 单模型翻译假设生成
此外,模型的选择也十分重要。所谓假设选择实际上就是要用一个更强的模
在候选中进行选择。这个“强”模型一般是由更多、更复杂的子模型组合而成。常用
496 Chapter 14. 神经机器翻译模型推断 肖桐 朱靖波
的方法是直接使用翻译假设生成时的模型构建“强”模型。比如,使用两个模型
成了翻译假设集合,之后对所有翻译假设都分别用这两个模型进行打分。最后,
合两个模型的打分(如线性插值)得到翻译假设的最终得分,并进行选择。当然,
可以使用更强大的统计模型对多个子模型进行组合,如使用更深、更宽的神经网络。
假设选择也可以被看作是一种简单的投票模型,对所有的候选用多个模型投票,
选出最好的结果输出。包括重排序在内的很多方法也是假设选择的一种特例。比如,
在重排序中,可以把生成 n-best 列表的过程看作是翻译假设生成过程,而重排序的
过程可以被看作是融合多个子模型进行最终结果选择的过程。
14.5.2 局部预测融合
经机翻译模型每个标语位置 j 词的概率布进预测
8
假设
K 个神机器翻译系统,那么每个系统 k 都可以独立计算这个概率分布,记
P
k
(y
j
|y
<j
,x)。于是,可以用如下方式融合这 K 个系统的预测:
P (y
j
|y
<j
,x) =
K
X
k=1
γ
k
·P
k
(y
j
|y
<j
,x) (14.10)
其中,γ
k
表示第 k 个系统的权重,且满足
P
K
k=1
γ
k
= 1。权重 {γ
k
} 可以在开发集上
自动调整,比如,使用最小错误率训练得到最优的权重(见第七章)不过在实践中
发现,如果这 K 个模型都是由一个基础模型衍生出来的,权重 {γ
k
} 对最终结果
影响并不大。因此,有时候也简单的将权重设置为 γ
k
=
1
K
14.16展示了对三个模
型预测结果的集成。
Have 0.5
Has 0.1
.
.
.
.
.
P
1
Have 0.2
Has 0.3
.
.
.
.
.
P
2
Have 0.4
Has 0.3
.
.
.
.
.
P
3
Have 0.37
Has 0.23
.
.
.
.
.
P =
3
P
i=1
1
3
P
i
14.16 基于三个模型预测结果的集成
公式(14.10)一种典型的线性插值模型,这类模型在语言建模等任务中已经得
到成功应用。从统计学习的角度,多个模型的插值可以有效地降低经验错误率。
过,多模型集成依赖一个假设:这些模型之间需要有一定的互补性。这种互补性
时也体现在多个模型预测的上限上,称为 Oracle。比如,可以把这 K 个模型输出中
8
即对于目标语言词汇表中的每个单词 w
r
,计算 P (y
j
= w
r
|y
<j
,x)
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
498 Chapter 14. 神经机器翻译模型推断 肖桐 朱靖波
I
have
He
has
I
He
She
Have
Has
(b) 基于词格的词串表示
She
has
(a) n-best 词串表示
14.17 n-best 词串表示 vs 基于词格的词串表示
更多的模块,系统调试的复杂度较高,但是由于看到了更大的搜索空间,因此系
性能提升的潜力较大
10
模型 3
模型 2
模型 1
输出 3
输出 2
输出 1
最终
输出
选择
(a) 假设选择
模型 3
模型 2
模型 1
模型
最终
输出
融合
(b) 预测融合
词格
模型 3
模型 2
模型 1
输出 3
输出 2
输出 1 模型
最终输出
(c) 译文重组
14.18 不同的模型集成方法对比
10
一般来说词格上的 Oracle 要比 n-best 译文上的 Oracle 的质量高。