16. 低资源神经机器翻译
神经机器翻译带来的性能提升是显著的,但随之而来的问题是对海量双语训
数据的依赖。不同语言可使用的数据规模是不同的。比如汉语、英语这种使用范围广
泛的语言,存在着大量的双语平行句对,这些语言被称为富资源语言High-resource
Language而对于其它一些使用范围稍小的语言,如斐济语、古吉拉特语等,相关的
数据非常稀少,这些语言被称为低资源语言Low-resource Language世界上现存语
言超过 5000 种,仅有很少一部分为富资源语言,绝大多数均为低资源语言。即使在富
资源语言中,对于一些特定的领域,双语平行语料也是十分稀缺的。有时,一些特殊
的语种或者领域甚至会面临“零资源”的问题。因此,低资源机器翻译Low-resource
Machine Translation)是当下急需解决且颇具挑战的问题。
本章将对低资源神经机器翻译的相关题、模型和方法展开介绍,内容涉及
据的有效使用、双向翻译模型、多语言翻译模型、无监督机器翻译、领域适应五个方
面。
16.1 数据的有效使用
数据稀缺是低资源机器翻译所面临的主要问题,充分使用既有数据是一种解
问题的思路。比如,在双语训练不充足的时候,可以对双语数据的部分单词用近
词进行替换,达到丰富双语数据的目的
[878, 879]
,也可以考虑用转述等方式生成更多的
双语训练数据
[880, 881]
另一种思路是使用更容获取的单语数据。实际上,统计机器翻译时代,使
546 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
用单语数据训练语言模型是构建机器翻译系统的关键步骤,好的语言模型往往会
来性能的增益。而这个现象在神经机器翻译中似乎并不明显,因为在大多数神经
器翻译的范式中,并不要求使用大规模单语数据来帮助机器翻译系统。甚至,连
言模型都不会作为一个独立的模块。这一方面是由于神经机器翻译系统的解码端
身就起着语言模型的作用,另一方面是由于双语数据的增多使得翻译模型可以很
地捕捉目标语言的规律。但是,双语数据总是有限的,很多场景下,单语数据的规模
会远大于双语数据,如果能够让这些单语数据发挥作用,显然是一种非常好的选择。
针对以上问题,下面将从数据增强、基于语言模型的单语数据使用等方面展开讨论。
16.1.1 数据增强
数据增强Data Augmentation)是一种增加训练数据的方法,通常通过对既有数
据进行修改或者生成新的伪数据等方式实现。有时候,数据增强也可以被看做是
种防止模型过拟合的手段
[882]
。在机器翻译中,典型的数据增强方法包括回译、修改
双语数据、双语句对挖掘等。
1. 回译
Back Translation, BT
[606, 667, 883]
回译的主要思想是:利用目标语言-源语言翻译模型(反向翻译模型)
生成伪双语句对,用于训练源语言-目标语言翻译模型(正向翻译模型)假设现在需
要训练一个英汉翻译模型。首先,使用双语数据训练汉英翻译模型,即反向翻译
型。然后通过该模型将额外的汉语单语句子翻译为英语句子,从而得到大量的英语-
真实汉语伪双语句对。然后,将回译得到的伪双语句对和真实双语句对混合,训
得到最终的英汉翻译模型。回译方法只需要训练一个反向翻译模型,就可以利用
语数据来增加训练数据的数量,因此得到了广泛使用
[459, 884, 885]
16.1 给出了回译方
法的一个简要流程。
汉语
英语
反向翻译模型
汉语
英语
训练
汉语
英语
翻译
模型翻译
使用反向
混合
英语
汉语
英语
汉语
英语
汉语
正向翻译模型
训练
真实双语数据:
伪数据:
额外单语数据:
16.1 回译方法的简要流程
围绕如何利用回译方法生成伪双语数据这一问题,研究人员进行了详细地分
探讨。一般观点认为,反向翻译模型的性能越好,生成的伪数据质量也就越高,对正
16.1 数据的有效使用 547
向翻译模型的性能提升也就越大
[667, 883]
。不过,在实践中发现,即使一些简单的策略
也能带来性能的增长。比如,对于一些低资源翻译任务,通过将目标语言句子复
到源语言端构造伪数据便能带来增
[886]
。原因在于,即使构造的双语伪数据是不准
确的,其目标语言端仍然是真实数据,可以使解码器训练得更加充分,进而提升
经机器翻译模型生成结果的流畅度。但是,相比这些简单的伪数据生成策略,利
目标语言单语数据进行回译可以带来更大的性能提升
[886]
。一种可能的解释是,双语
伪数据的源语言是模型生成的翻译结果,保留了两种语言之间的互译信息,相比
实数据又存在一定的噪声。神经机器翻译模型在伪双语句对上进行训练,可以学
到如何处理带有噪声的输入,提高了模型的健壮性。
在回译方法中,反向翻译模型的训练只依赖于有限的双语数据,因此生成的源语
言端伪数据的质量难以保证。为此,可以采用迭代式回译Iterative Back Translation
的方法
[883]
,同时利用源语言端和目标语言端的单语数据,不断通过回译的方式来
升正向和反向翻译模型的性能。16.2展示了迭代式回译的框架,图中带圈的数字代
表了迭代式回译方法执行的顺序。首先,使用双语数据训练一个正向翻译模型,
后利用额外的源语言单语数据通过回译的方式生成伪双语数据,来提升反向翻译
型的性能。之后,再利用反向翻译模型和额外的目标语言单语数据生成伪双语数据,
用于提升正向翻译模型的性能。可以看出,迭代式回译的过程是完全闭环的,因
可以一直重复进行,直到正向和反向翻译模型的性能均不再提升。
汉语
英语
汉语
英语
正向
翻译模型
1
2
3
3
反向
翻译模型
4
英语
汉语
英语
汉语
正向
翻译模型
5
5
真实双语数据:
伪数据:
额外单语数据:
训练:
推断:
16.2 迭代式回译方法的流程
进一步,研究人员发现,在低资源场景中,由于缺乏双语数据,高质量的伪双语
数据对于模型来说更有帮助。而在富资源场景中,在回译产生的源语言句子中添
一些噪声,提高翻译结果的多样性,反而可以达到更好的效果,比较常用的方法是使
用采样解码、Top-k 解码和加噪
[606, 887, 888]
。回译中常用的解码方式为束搜索,在生
每个词的时候只考虑预测概率最高的几个词,因此生成的翻译结果质量更高,但
致的问题是翻译结果主要集中在部分高频词上,生成的伪数据缺乏多样性,也就
难去准确地覆盖真实的数据分布
[889]
。采样解码是指在解码过程中,对词表中所有的
词按照预测概率进行随机采样,因此整个词表中的词都有可能被选中,从而使生
548 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
结果多样性更强,但翻译质量和流畅度也会明显下降。Top-k 解码是对束搜索和采样
解码的一个折中方法。在解码过程中,Top-k 解码对词表中预测概率最高的前 k 个词
进行随机采样,这样在保证翻译结果准确的前提下,提高了结果的多样性。加噪
法在束搜索的解码结果加入一些噪声,如丢掉或屏蔽部分词、打乱句子顺序等。
些方法在生成的源语言句子中引入了噪声,不仅增加了对包含低频词或噪声句子
训练次数,同时也提高了模型的健壮性和泛化能力
[597]
与回译方法类似,源语言单语数据也可以通过一个双语数据训练的正向翻译
型获得对应的目标语言翻译结果,从而构造正向翻译的伪数据
[890]
与回译方法相反,
这时的伪数据中源语言句子是真实的,而目标语言句子是自动生成的,构造的伪
据对译文的流畅性并没有太大帮助,其主要作用是提升编码器的特征提取能力。
而,由于伪数据中生成的译文质量很难保证,因此利用正向翻译模型生成伪数据
方法带来的性能提升效果要弱于回译,甚至可能是有害的
[888]
2. 修改双语数据
回译方法是利用单语数据来生成伪数据,而另外一种数据增强技术是对原始
语数据进行修改来得到伪双语数据,常用的方法包括加噪和转述等。
加噪是自然语言处理任务中广泛使用的一种方法
[125, 597, 884, 891]
比如,在广泛使用
自编Denoising Autoencoder)中,向原始据中入噪声作模型
入,模型通过学习如何预测原始数据进行训练。而在神经机器翻译中,利用加噪
法进行数据增强的常用方法是,在保证句子整体语义不变的情况下,对原始的双
数据适当加入一些噪声,从而生成伪双语数据来增加训练数据的规模。常用的加
方法主要有以下三种:
丢掉单词:句子中的每个词均有 P
Drop
的概率被丢弃。
掩码单词:句子中的每个词均有 P
Mask
的概率被替换为一个额外的 <Mask> 词。
<Mask> 的作用类似于占位符,可以理解为一句子中的部分词被蔽掉,
法得知该位置词的准确含义。
打乱顺序:将句子中距离较近的某些词的位置进行随机交换。
16.3展示了三种加噪方法的示例。这里,P
Drop
P
Mask
均设置为 0.1表示每
个词有 10% 概率被丢弃或掩码。打乱句子内部顺序的操作略微复杂,一种实现方
法是:通过一个数字来表示每个词在句子中的位置,如“我”是第一个词,“你”是
第三个词,然后,在每个位置生成一个 1 n 的随机数,n 一般设置为 3然后将每
个词的位置数和对应的随机数相加,即图中的 S。对 S 按照从小到大排序,根据排
序后每个位置的索引从原始句子中选择对应的词,从而得到最终打乱顺序后的结果。
比如,在计算后,除了 S
2
的值小于 S
1
外,其余单词的 S 值均为递增顺序,则将原
句中第一个词和第二个词进行交换,其他词保持不变。
和回译方法相似,加噪方法一般仅在源言句子上进行操作,既保证了目标
16.1 数据的有效使用 549
感到
满意
1
2
3
4
5
P = 0.1
P = 0.1
P = 0.1
P = 0.1
P = 0.1
感到
满意
1
3
4
5
源语言
P
丢弃的结果
部分词随机
(a) 部分词随机丢弃的加噪方法
感到
满意
1
2
3
4
5
P = 0.1
P = 0.1
P = 0.1
P = 0.1
P = 0.1
[mask]
感到
满意
1
2
3
4
5
源语言
P
屏蔽的结果
部分词随机
(b) 部分词随机屏蔽的加噪方法
感到
满意
1
2
3
4
5
+
+
+
+
+
2.54
0.63
1.77
1.32
2.15
=
=
=
=
=
S
1
= 3.54
S
2
= 2.63
S
3
= 4.77
S
4
= 5.33
S
5
= 7.15
S
2
= 2.63
S
1
= 3.54
S
3
= 4.77
S
4
= 5.33
S
5
= 7.15
感到
满意
2
1
3
4
5
源语言
n=3
S
进行排序
由小到大
后的结果
打乱顺序
(c) 轻微打乱单词顺序的加噪方法
16.3 三种数据加噪方法
言句子的流畅度,又可以增加数据的多样性,提高模型的健壮性和泛化能力
[597]
。加
噪作为一种简单有效的方法,实际的应用场景很多,比如:
对单语数加噪通过端到型预源语子的序结果,模型
神经机器翻译模型的编码器共享参数,从而增强编码器的特征提取能力
[890]
训练降噪自编码器将加噪后的句子作为输入,原始句子作为输出,用来训练降
噪自编码器,这一思想在无监督机器翻译中得到了广泛应用,详细方法可以参
16.4.3节;
对伪数据进行加噪比如在上文中提到的对伪数据加入噪声的方法中,通常也使
用上述这三种加噪方法来提高伪数据的多样性;
另外一种加噪方法是进行词替换:将双语数据中的部分词替换为词表中的其
词,在保证句子的语义或语法正确性的前提下,增加了训练数据的多样性。比如,
于“我/出去/玩。”这句话,将“我”替换为“你”“他”“我们”或者,将“玩”
替换为“骑车”“学习”“吃饭”等,虽然改变了语义,但句子在语法上仍然是合
理的。
词替换的另一种策略是将源语言中的稀有词替换为语义相近的词
[878]
。词表中的
稀有词由于出现次数较少,很容易导致训练不充分问
[89]
。通过语言模型将源语
550 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
句子中的某个词替换为满足语法或语义条件的稀有词,再通过词对齐工具找到源
言句子中被替换的词在目标语言句子中对应的位置,借助翻译词典将这个目标语
位置的单词替换为词典中的翻译结果,从而得到伪双语数据。
此外,通过在源语言或目标语言中随机择某些词,将这些词替换为词表中
个随机词,也可以得到伪双语数据
[879]
。随机选择句子中的某个词,将这个词的词嵌
入替换为其他词的词嵌入的加权结果。相比直接替换单词,这种丰富的分布式表
相比直接使用词嵌入可以包含更多的语义信息,同一个词在不同的上下文中也会
替换为不同的上下文表示结果
[592]
相比上述两种方法是对句子做轻的修改,Paraphrasing方法考虑
了自然语言表达的多样性:通过对原始句子进行改写,使用不同的句式来传达相
含义的信息
[892, 893]
。比如对于“东北大学的校训是自强不息、知行合一”这句话,可
以使用其他的句式来表达同样的含义,例如:“自强不息、知行合一是东北大学的校
训”。转述在机器翻译任务上得到了广泛引用
[881, 894, 895]
,通过转述方法对原始的双
数据进行改写,训练数据可以覆盖更多的语言学现象。同时由于每个句子可以对
多个不同的翻译,转述方法可以避免模型过拟合,提高模型的泛化能力。
3. 双语句对挖掘
在双语平行语料缺乏的时候,从可比语料中挖掘可用的双语句对也是一种有
的方法
[896, 897, 898]
可比语料是指源语言和目标语言虽然不是完全互译的文本,但是蕴
含了丰富的双语对照知识,可以从中挖掘出可用的双语句对来训练。相比双语平
语料来说, 可比语料相对容易获取,比如,多种语言报道的新闻事件、多种语言的维
基百科词条(图16.4)和多种语言翻译的书籍等。
Machine Translation, sometimes referred to by the abbreviation MT (not to be
confused with computer-aided translation,machine-aided human translation inter
-active translation), is a subfield of computational linguistics that investigates the
use of software to translate text or speech from one language to another.
WIKIPEDIA
维基百科
机器翻译(英语:Machine Translation,经常简写为 MT,简称机译或机翻)
属于计算语言学的范畴,其研究借由计算机程序将文字或演说从一种自然
语言翻译成另一种自然语言。
16.4 维基百科中的可比语料
可比语料大多存在于网中,内容较为复杂,可能会在较大比例的噪声,
HTML 字符、乱码等。首先需要对内容进行充分的数据清洗,得到干净的可比语料,
16.1 数据的有效使用 551
后从中抽取出可用的双语句对。传统的抽取方法一般通过统计模型或双语词典来
到双语句对。比如,通过计算两个不同语言句子之间的单词重叠数或 BLEU
[896, 899]
或者通过排序模型或二分类器判断一个目标语言句子和一个源语言句子互译的可
[897, 900]
另外一种比较有效的方法是根据两种语言中每个句子的表示向量来抽取数据
[898]
首先,对于两种语言的每个句子,分别使用词嵌入加权平均等方法计算得到句子的表
示向量,然后计算每个源语言句子和目标语言句子之间的余弦相似度,相似度大于一
定阈值的句对则认为是可用的双语句对
[898]
。然而,不同语言单独训练得到的词嵌入
可能对应不同的表示空间,因此得到的表示向量无法用于衡量两个句子的相似度
[901]
为了解决这个问题,一般使用在同一表示空间的跨语言词嵌入来表示两种语言的
[902]
在跨语言词嵌入中,不同语言相同意思的词对应的词嵌入具有较高的相似性,
因此得到的句子表示向量也就可以用于衡量两个句子是否表示相似的语
[165]
。关于
跨语言词嵌入的具体内容,可以参考16.4.1节的内容。
16.1.2 基于语言模型的方法
除了构造双语数据进行数据增强,直接利用单语数据也是机器翻译中的常用
法。通常,单语数据会被用于训练语言模型(见第二章)。对于机器翻译系统,使用
语言模型也是一件十分自然的事情,在目标语言端,语言模型可以帮助系统选择
加流畅的译文;在源语言端,语言模型也可以用于句子编码,进而更好地生成句
的表示结果。在传统方法中,语言模型更多地被使用在目标语言端。不过,近些年来
随着预训练技术的发展,语言模型也被使用在神经机器翻译的编码器端。下面将
语言模型在目标语言端的融合、预训练词嵌入、预训练模型和多任务学习四方面
绍基于语言模型的单语数据使用方法。
1. 语言模型在目标语言端的融合
融合目标语言端的语言模型是一种最直接的使用单语数据的方法
[903, 904, 905]
实际
上,神经机器翻译模型本身也具备了语言模型的作用,因为解码器本质上也是一
语言模型,用于描述生成译文词串的规律。对于一个双语句对 (x,y)神经机器翻译
模型可以被描述为:
log P (y|x;θ) =
X
t
log P (y
j
|y
<j
,x;θ) (16.1)
这里,θ 神经器翻模型参数,y
<j
表示 j 个位置前已经生成词序列。
可以看出,模型的翻译过程与两部分信息有关,分别是源语言句 x 以及前面生
的译文序列 y
<j
语言模型可以与解码过程融合,根据 y
<j
生成流畅度更高的翻译结
果。常用的融合方法主要分为浅融合和深融合
[903]
552 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
浅融合方法独立训练翻译模型和语言型,在生成每个词的时候,对两个模
的预测概率进行加权求和得到最终的预测概率。浅融合的不足在于,解码过程对
个词均采用相同的语言模型权重,缺乏灵活性。针对这个问题,深融合联合翻译
型和语言模型进行训练,从而在解码过程中动态地计算语言模型的权重,更好地
合翻译模型和语言模型来计算预测概率。
大多数情况下,目标语言语言模型的使用可以提译文的流畅度。不过,
并不会增加翻译结果对源语言句子表达的充分性,即源语言句子的信息是否被充
体现到了译文中。也有一些研究发现,神经机器翻译过于关注译文的流畅度,但
充分性的问题没有得到很好考虑,比如,神经机器翻译系统的结果中经常出现漏
等问题。也有一些研究人员提出控制翻译充分性的方法,让译文在流畅度和充分
之间达到平衡
[474, 475, 906]
2. 预训练词嵌入
神经所使-框架输入(源言)
和输出(目标语言)进行表示学习的过程。编码端,需要学习一种分布式表示
表示源语言句子的信息,这种分布式表示可以包含序列中每个位置的表示结果(见
第九章)从结构上看,神经机器翻译所使用的编码器与语言模型无异,或者说神经
机器翻译的编码器其实就是一个源语言的语言模型。唯一的区别在于,神经机器
译的编码器并不直接输出源语言句子的生成概率,而传统语言模型是建立在序列
成任务上的。既然神经机器翻译的编码器可以与解码器一起在双语数据上联合训练,
那为什么不使用更大规模的数据单独对编码器进行训练呢?或者说,直接使用一
预先训练好的编码器,与机器翻译的解码器配合完成翻译过程。
实现上述法的一种段是预训Pre-training
[125, 126, 167, 907]
。预训练做法
当于将句子的表示学习任务从目标任务中分离出来,这样可以利用额外的更大规
的数据进行学习。常用的一种方法是使用语言建模等方式在大规模单语数据上进
训练,得到神经机器翻译模型中的部分模型(如词嵌入和编码器等)的参数初始值。
然后,神经机器翻译模型在双语数据上进行微调Fine-tuning,以得到最终的翻译
模型。
词嵌入可以被看作是对每个独立单词进行的表示学习的结果,在自然语言处
的众多任务中都扮演着重要角色
[102, 908, 909]
到目前为止已经有大量的词嵌入学习方法
被提出(见第九章)因此可以直接应用这些方法在海量的单语数据上训练得到词嵌
入,用来初始化神经机器翻译模型的词嵌入参数矩阵
[910, 911]
需要注意的是,在神经机器翻译中使用训练词嵌入有两种方法。一种方法
直接将词嵌入作为固定的输入,也就是在训练神经机器翻译模型的过程中,并不
整词嵌入的参数。这样做的目的是完全将词嵌入模块独立出来,机器翻译可以被
作是在固定的词嵌入输入上进行的建模,从而降低了机器翻译模型学习的难度。
一种方法是仍然遵循 预训练 + 微调 的策略,将词嵌入作为机器翻译模型部分参数
16.1 数据的有效使用 553
的初始值。在之后机器翻译训练过程中,词嵌入模型结果会被进一步更新。近些年,
在词嵌入预训练的基础上进行微调的方法越来越受到研究者的青睐。因为在实践
发现,完全用单语数据学习的单词表示,与双语数据上的翻译任务并不完全匹配。
时目标语言的信息也会影响源语言的表示学习。
虽然预训练词嵌入在海量的单语数据上学习到了丰富的表示,但词嵌入一个
要的缺点是无法解决一词多义问题。在不同的上下文中,同一个单词经常表示不
的意思,但它的词嵌入是完全相同的,模型需要在编码过程中通过上下文去理解
个词在当前语境下的含义。因此,上下文词向量在近些年得到了广泛的关注
[167, 450, 912]
上下文词嵌入是指一个词的表示不仅依赖于单词自身,还依赖于上下文语境。由
在不同的上下文中,每个词对应的词嵌入是不同的,因此无法简单地通过词嵌入
阵来表示。通常的做法是使用海量的单语数据预训练语言模型任务,以期望句子
每个位置对应的表示结果包含了一定的上下文信息
[125, 126, 167]
这本质上和下面即将介
绍的句子级预训练模型是一样。
3. 预训练模型
相比固定的词嵌入,上下文词嵌入包含在当前语境中的语义信息,丰富了
型的输入表示,降低了训练难度。但是,模型仍有大量的参数需要从零学习,来进一
步提取整个句子的表示。一种可行的方案是在预训练阶段中直接得到预训练好的
型参数,在下游任务中仅仅通过任务特定的数据对模型参数进行微调,来得到一
较强的模型。基于这个想法,有大量的预训练模型被提出。比如,生成式预训练Gen-
erative Pre-trainingGPT来自 Transformer 的双向编码器表示Bidirectional Encoder
Representations From Transformers
BERT
就是两种典型的预训练模型。
16.5对比
了二者的模型结构。
TRM TRM
...
TRM TRM TRM
...
TRM
e
1
e
2
...
e
n
TRM TRM
...
TRM TRM TRM
...
TRM
P
1
P
2
...
P
n
e
1
e
2
...
e
n
P
1
P
2
...
P
n
(a) GPT 模型结构 (b) BERT 模型结构
TRM:标准 Transformer 模块
16.5 GPT 模型结构和 BERT 模型结构对比示意图
554 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
GPT Transformer 自回训练向语模型
[126]
,类于神机器
译模型的解码器,相比双向 LSTM 等模型,Tranformer 模型的表示能力更强。之后提
出的 BERT 模型更是将预训练的作用提升到了新的水平
[125]
GPT 模型的一个缺陷在
于模型只能进行单向编码,也就是前面的文本在建模时无法获取到后面的信息。
BERT 一种的方式,使型在段可双向方式
行建模,进一步增强了模型的表示能力。
BERT 的核心思想是通过掩码语言模型Masked Language ModelMLM任务进
行预训练。掩码语言模型的思想类似于完形填空,随机选择输入句子中的部分词
行掩码,之后让模型预测这些被掩码的词。掩码的具体做法是将被选中的词替换
一个特殊的词
<Mask>
这样模型在训练过程中,无法得到掩码位置词的信息,需要
联合上下文内容进行预测,因此提高了模型对上下文的特征提取能力。而使用掩
的方式进行训练也给神经机器翻译提供了新的思路,在本章的其它部分中也会使
到类似方法。
在神经机器翻译任务中,预训练模型可以用于初始化编码器的模型参数
[913, 914, 915]
之所以用在编码器端而不是解码器端,主要原因是编码器的作用主要在于特征提取,
训练难度相对较高,而解码器的作用主要在于生成,和编码器提取到的表示是强
赖的,相对比较脆弱
[916]
然而,在实践中发现,参数初始化的方法一些富资源语种上提升效果并不
显,甚至会带来性能的下降
[917]
。原因可能在于,预训练阶段的训练数据规模是非常
大的,因此在下游任务数据量较少的情况下帮助较大。而在一些富资源语种上,
语句对的数据足够充分,因此简单通过预训练模型来初始化模型参数无法带来明
的提升。此外,预训练模型的训练目标并没有考虑到序列到序列的生成,与神经
器翻译的训练目标并不完全一致,两者训练得到的模型参数可能存在一些区别。
因此,一种做法将预训练模型和翻译模进行融合,把预训练模型作为一个
立的模块来为编码器或者解码器提供句子级表示结果
[917, 918]
。另外一种做法是针对生
成任务进行预训练。机器翻译是一种典型的语言生成任务,不仅包含源语言表示
习的问题,还有序列到序列的映射,以及目标语言端序列生成的问题,这些知识
无法单独通过(源语言)单语数据学习到的。因此,可以使用单语数据对编码器-
码器结构进行预训练
[
919, 920, 921]
掩码端到端预训练Masked Sequence to Sequence Pre-trainingMASS)方法为
[919]
,其思想与 BERT 十分相似,也是在预训练过程中采用掩码的方式,随机选择
编码器输入句子中的连续片段替换为特殊词 <Mask>然后在解码器预测这个连续片
段,如图16.6 所示。这种做法可以使得编码器捕捉上下文信息,同时迫使解码器依赖
于编码器进行自回归的生成,从而学习到编码器和解码器之间的注意力。为了适
下游的机器翻译任务,使训练模型可以学习到不语言的表示,MASS 对不同语
言的句子采用共享词汇表和模型参数的方法,利用同一个预训练模型来进行不同
言句子的预训练。通过这种方式,模型既学到了对源语言句子的编码,也学习到
16.1 数据的有效使用 555
对目标语言句子的生成方法,之后通过使用双语句对来对预训练模型进行微调,
型可以快速收敛到较好的状态。
解码器
x
3
x
4
<M><M><M><M> <M>
x
4
x
3
x
5
编码器
<M> <M>
x
6
<M>
x
2
x
1
x
7
<M><Mask>
16.6 MASS 预训练方法
此外,还有很多问题值得讨。例如,为何预训练词嵌在神经机器翻译模
中有效
[911]
如何在神经机器翻译模型中利用预训练的 BERT 模型
[913, 914, 918, 922]
如何针
对神经机器翻译任务进行预训练
[920, 923, 924]
;如何针对机器翻译中的 Code-switching
题进行预训练
[925]
;如何在微调过程中避免灾难性遗忘
[
926]
4. 多任务学习
在训练一个神经网络的时候,如果过分关注单个训练目标,可能使模型忽
掉其他可能有帮助的信息,这些信息可能来自于一些其他相关的任务
[927]
。通过联合
多个独立但相的任务共学习,任务间相 ,就是多务学
[927, 928, 929]
多任务学习的常用做法是,针对多个相关的任务,共享模型的部分参数来学习不
任务之间相似的特征,并通过特定的模块来学习每个任务独立的特征(见第十五章)
常用的策略是对底层的模型参数进行共享,顶层的模型参数用于独立学习各个不
的任务。
y
解码器
编码器
y
<
x
y
解码器
编码器
y
<
x
解码器
ˆx
翻译
调整语序
x,y:双语数据
y
<
:目标语言文本数据
(a) 单任务学习 (b) 多任务学习
16.7 使用源语言单语数据的多任务学习
在神经机器翻译中,应用多任务学习的要策略是将翻译任务作为主任务,
556 Chapter 16. 低资源神经机器翻译 肖桐 朱靖波
时设置一些仅使用单语数据的子任务,通过这些子任务来捕捉单语数据中的语言
[837, 890, 930]
一种多任务学习的方法是利用源语言单语数据,通过单个编码器对源语
言数据进行建模,再分别使用两个解码器来学习源语言排序和翻译任务。源语言
序任务是指利用预排序规则对源语言句子中词的顺序进行调整
[305]
,可以通过单语数
据来构造训练数据,从而使编码器被训练得更加充分
[890]
如图16.7所示,图中 y
<
示当前时刻之前的单词序列,x
<
表示源语言句子中词的顺序调整后的句子。
虽然神经机器翻译模型可以看作一种语言生成模型,但生成过程中却依赖于
语言信息,因此无法直接利用目标语言单语数据进行多任务学习。针对这个问题,
以对原有翻译模型结构进行修改,在解码器底层增加一个语言模型子层,这个子
用于学习语言模型任务,与编码器端是完全独立的,如图16.8所示
[930]
图中 y
<
表示
当前时刻之前的单词序列,z
<
表示当前时刻之前的单语数据。在训练过程中,分别
将双语数据和单语数据送入翻译模型和语言模型进行计算,双语数据训练产生的
度用于对整个模型进行参数更新,而单语数据产生的梯度只对语言模型子层进行
数更新。
y
解码器
编码器
y
<
x
x
编码器
解码器
y
语言模型
y
<
+ z
<
z
x,y:双语数据
y
<
:目标语言文本数据
z:单语数据
(a) 单任务学习 (b) 多任务学习
16.8 使用语言模型的多任务学习
此外,一种策略是利用多任务学习的思想来训练多到一模型(多个编码器、单个
解码器)一到多模型(单个编码器、多个解码器)和多到多模型(多个编码器、多
个解码器),从而借助单语数据或其他数据来使编码器或解码器训练得更加充
[
837]
任务的形式包括翻译任务、句法分析任务、图像分类等。另外一种策略是利用多
务学习的思想同时训练多个语言的翻译任务
[931, 932]
,同样包括多到一翻译(多个语种
到一个语种)一到多翻译(一个语种到多个语种)以及多到多翻译(多个语种到多
个语种)这种方法可以利用多种语言的训练数据进行学习,具有较大的潜力,逐渐
受到了研究人员们的关注,具体内容可以参考16.3节。