554 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
GPT 通过 Transformer 模型自回归地训练单向语言模型
[126]
,类似于神经机器翻
译模型的解码器,相比双向 LSTM 等模型,Tranformer 模型的表示能力更强。之后提
出的 BERT 模型更是将预训练的作用提升到了新的水平
[125]
。GPT 模型的一个缺陷在
于模型只能进行单向编码,也就是前面的文本在建模时无法获取到后面的信息。而
BERT 提出了一种自编码的方式,使模型在预训练阶段可以通过双向编码的方式进
行建模,进一步增强了模型的表示能力。
BERT 的核心思想是通过掩码语言模型(Masked Language Model,MLM)任务进
行预训练。掩码语言模型的思想类似于完形填空,随机选择输入句子中的部分词进
行掩码,之后让模型预测这些被掩码的词。掩码的具体做法是将被选中的词替换为
一个特殊的词
<Mask>
,这样模型在训练过程中,无法得到掩码位置词的信息,需要
联合上下文内容进行预测,因此提高了模型对上下文的特征提取能力。而使用掩码
的方式进行训练也给神经机器翻译提供了新的思路,在本章的其它部分中也会使用
到类似方法。
在神经机器翻译任务中,预训练模型可以用于初始化编码器的模型参数
[913, 914, 915]
。
之所以用在编码器端而不是解码器端,主要原因是编码器的作用主要在于特征提取,
训练难度相对较高,而解码器的作用主要在于生成,和编码器提取到的表示是强依
赖的,相对比较脆弱
[916]
。
然而,在实践中发现,参数初始化的方法在一些富资源语种上提升效果并不明
显,甚至会带来性能的下降
[917]
。原因可能在于,预训练阶段的训练数据规模是非常
大的,因此在下游任务数据量较少的情况下帮助较大。而在一些富资源语种上,双
语句对的数据足够充分,因此简单通过预训练模型来初始化模型参数无法带来明显
的提升。此外,预训练模型的训练目标并没有考虑到序列到序列的生成,与神经机
器翻译的训练目标并不完全一致,两者训练得到的模型参数可能存在一些区别。
因此,一种做法将预训练模型和翻译模型进行融合,把预训练模型作为一个独
立的模块来为编码器或者解码器提供句子级表示结果
[917, 918]
。另外一种做法是针对生
成任务进行预训练。机器翻译是一种典型的语言生成任务,不仅包含源语言表示学
习的问题,还有序列到序列的映射,以及目标语言端序列生成的问题,这些知识是
无法单独通过(源语言)单语数据学习到的。因此,可以使用单语数据对编码器-解
码器结构进行预训练
[
919, 920, 921]
。
以掩码端到端预训练(Masked Sequence to Sequence Pre-training,MASS)方法为
例
[919]
,其思想与 BERT 十分相似,也是在预训练过程中采用掩码的方式,随机选择
编码器输入句子中的连续片段替换为特殊词 <Mask>,然后在解码器预测这个连续片
段,如图16.6 所示。这种做法可以使得编码器捕捉上下文信息,同时迫使解码器依赖
于编码器进行自回归的生成,从而学习到编码器和解码器之间的注意力。为了适配
下游的机器翻译任务,使预训练模型可以学习到不同语言的表示,MASS 对不同语
言的句子采用共享词汇表和模型参数的方法,利用同一个预训练模型来进行不同语
言句子的预训练。通过这种方式,模型既学到了对源语言句子的编码,也学习到了