chapter16.tex 141 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
% !Mode:: "TeX:UTF-8"
% !TEX encoding = UTF-8 Unicode

%----------------------------------------------------------------------------------------
% 机器翻译:统计建模与深度学习方法
% Machine Translation: Statistical Modeling and Deep Learning Methods
%
% Copyright 2020
% 肖桐(xiaotong@mail.neu.edu.cn) 朱靖波 (zhujingbo@mail.neu.edu.cn)
%----------------------------------------------------------------------------------------

%----------------------------------------------------------------------------------------
%    CONFIGURATIONS
%----------------------------------------------------------------------------------------

\renewcommand\figurename{}%将figure改为图
\renewcommand\tablename{}%将figure改为图
\chapterimage{fig-NEU-7.jpg} % Chapter heading image

%----------------------------------------------------------------------------------------
%	CHAPTER 16
%----------------------------------------------------------------------------------------
曹润柘 committed
23
\chapter{低资源神经机器翻译}
24

曹润柘 committed
25
\parinterval 神经机器翻译带来的性能提升是显著的,但随之而来的问题是对海量双语训练数据的依赖。不过,不同语言可以使用的数据规模是不同的。比如汉语、英语这种使用范围广泛的语言,存在着大量的双语平行句对,这些语言被称为{\small\bfnew{富资源语言}}\index{富资源语言}(High-resource Language\index{High-resource Language})。而对于其它一些使用范围稍小的语言,如斐济语、古吉拉特语等,相关的数据非常稀少,这些语言被称为{\small\bfnew{低资源语言}}\index{低资源语言}(Low-resource Language\index{Low-resource Language})。世界上现存语言超过5000种,仅有很少一部分为富资源语言,绝大多数均为低资源语言。即使在富资源语言中,对于一些特定的领域,双语平行语料也是十分稀缺的。有时,一些特殊的语种或者领域甚至会面临“零资源”的问题。因此,{\small\bfnew{低资源机器翻译}}\index{低资源机器翻译}(Low-resource Machine Translation)是当下急需解决且颇具挑战的问题。
曹润柘 committed
26

曹润柘 committed
27
\parinterval 本章将对低资源神经机器机器翻译的相关问题、模型和方法展开介绍,内容涉及数据的有效使用、双向翻译模型、多语言翻译建模、无监督机器翻译、领域适应五个方面。下面一一展开讨论。
28 29

%----------------------------------------------------------------------------------------
曹润柘 committed
30
%    NEW SECTION 16.1
31 32
%----------------------------------------------------------------------------------------

曹润柘 committed
33
\section{数据的有效使用}\label{effective-use-of-data}
曹润柘 committed
34

曹润柘 committed
35
\parinterval 数据稀缺是低资源机器翻译所面临的主要问题。因此,充分使用既有数据是一种解决问题的思路。比如,在双语训练不充分的时候,可以简单地对双语数据的部分单词用近义词进行替换,达到丰富双语数据的目的\upcite{DBLP:conf/acl/FadaeeBM17a,DBLP:conf/emnlp/WangPDN18},也可以考虑用转述等方式生成更多的双语训练数据\upcite{DBLP:conf/emnlp/MartonCR09,DBLP:conf/eacl/LapataSM17}
曹润柘 committed
36

曹润柘 committed
37
\parinterval 另一种思路是使用相比双语数据更容易获取的单语数据。实际上,在统计机器翻译时代,使用单语数据训练语言模型是构建机器翻译系统的关键步骤,好的语言模型往往会带来性能的增益。而这个现象在神经机器翻译中似乎并不明显,因为在大多数神经机器翻译的范式中,并不要求使用大规模单语数据来帮助机器翻译系统。甚至,连语言模型都不会作为一个独立的模块。这一方面是由于神经机器翻译系统的解码端本身就起着语言模型的作用,另一方面是由于数据的增多使得翻译模型可以更好的捕捉目标语言的规律。但是,双语数据总是有限的,很多场景下,单语数据的规模会远大于双语数据,如果能够让这些单语数据发挥作用,显然是一种非常好的选择。针对以上问题,下面将从数据增强、基于语言模型的单语数据使用等方面展开讨论。
曹润柘 committed
38 39 40 41 42 43

%----------------------------------------------------------------------------------------
%    NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{数据增强}

曹润柘 committed
44
\parinterval {\small\bfnew{数据增强}}\index{数据增强}(Data Augmentation)\index{Data Augmentation}是一种增加训练数据的方法,通常通过对既有数据进行修改或者生成新的伪数据等方式实现。有时候,数据增强也可以被看做是一种防止模型过拟合的手段\upcite{DBLP:journals/jbd/ShortenK19}。在机器翻译中,典型的数据增强方法包括回译、修改双语数据、双语数据挖掘等。
曹润柘 committed
45

曹润柘 committed
46 47 48
%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
曹润柘 committed
49 50
\subsubsection{1. 回译}

曹润柘 committed
51
\parinterval {\small\bfnew{回译}}\index{回译}(Back Translation, BT\index{Back Translation}是目前机器翻译任务上最常用的一种数据增强方法\upcite{Sennrich2016ImprovingNM,DBLP:conf/emnlp/EdunovOAG18,DBLP:conf/aclnmt/HoangKHC18}。回译的主要思想是:利用目标语言-源语言模型(反向翻译模型)来生成伪双语句对,用于训练源语言-目标语言翻译模型(正向翻译模型)。假设我们的目标是训练一个英汉翻译模型。首先,使用双语数据训练汉英翻译模型,即反向翻译模型。然后通过该模型将额外的汉语单语句子翻译为英语句子,从而得到大量的生成英语- 真实汉语伪双语句对。然后,将回译得到的伪双语句对和真实双语句对混合,训练得到最终的英汉神经机器翻译模型。
曹润柘 committed
52
回译方法是模型无关的,只需要训练一个反向翻译模型,就可以简单有效地利用单语数据来增加训练数据的数量,因此在工业界也得到了广泛采用\upcite{Hassan2018AchievingHP,DBLP:conf/iclr/LampleCDR18,DBLP:conf/emnlp/LampleOCDR18}。图\ref{fig:16-1} 给出了回译方法的一个简要流程。
曹润柘 committed
53 54 55 56 57

%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter16/Figures/figure-application-process-of-back-translation}
曹润柘 committed
58
\caption{回译方法的流程}
曹润柘 committed
59
\label{fig:16-1}
曹润柘 committed
60
\end{figure}
曹润柘 committed
61
%----------------------------------------------
曹润柘 committed
62

曹润柘 committed
63
\parinterval 围绕如何利用回译方法生成伪双语数据,研究人员们进行了详细的分析探讨。一般观点认为,反向模型的性能越好,生成的伪数据质量也就更高,对正向模型的性能提升也就越大\upcite{Sennrich2016ImprovingNM,DBLP:conf/aclnmt/HoangKHC18}。不过,在实践中发现,即使一些简单的策略也能带来性能的增长。比如,对于一些低资源翻译任务,通过将目标语言句子复制到源语言端构造伪数据便能为模型带来增益\upcite{DBLP:conf/wmt/CurreyBH17}。原因在于,即使构造的双语伪数据是不准确的,其目标语言端仍然是真实数据,可以使解码器训练地更加充分,因此保证了神经机器翻译模型生成结果的流畅度。但是,相比这些简单的伪数据生成策略,利用目标语言单语数据进行回译可以获得更高质量的数据\upcite{DBLP:conf/wmt/CurreyBH17}。一种可能的解释是,双语伪数据的源语言是模型生成的翻译结果,保留了两种语言之间的互译信息,相比真实数据又存在一定的噪声。神经机器翻译模型在伪双语句对上进行训练,可以学习到如何处理带有噪声的输入,提高了模型的健壮性。
曹润柘 committed
64

曹润柘 committed
65
\parinterval 在回译方法中,反向翻译模型的训练只依赖于有限的双语数据,因此生成的源语言端伪数据的质量难以保证。为此,可以采用{\small\sffamily\bfnew{迭代式回译}}\index{迭代式回译}(Iterative Back Translation)\index{Iterative Back Translation}的方法\upcite{DBLP:conf/aclnmt/HoangKHC18},同时利用源语言端和目标语言端的单语数据,不断通过回译的方式来提升正向和反向翻译模型的性能。图\ref{fig:16-2}展示了迭代式回译的框架。首先,使用双语数据训练一个正向翻译模型,然后利用额外的源语言单语数据通过回译的方式生成伪双语数据,来提升反向翻译模型的性能,再利用反向翻译模型和额外的目标语言单语数据生成伪双语数据,用于提升正向翻译模型的性能。可以看出,迭代式回译的过程是完全闭环的,因此可以一直重复进行,直到正向和反向翻译模型的性能均不再提升。
曹润柘 committed
66 67 68 69

%----------------------------------------------
\begin{figure}[htp]
\centering
曹润柘 committed
70
\input{./Chapter16/Figures/figure-example-of-iterative-back-translation}
曹润柘 committed
71
\caption{迭代式回译方法的流程}
曹润柘 committed
72
\label{fig:16-2}
曹润柘 committed
73
\end{figure}
曹润柘 committed
74
%----------------------------------------------
曹润柘 committed
75

曹润柘 committed
76
\parinterval 然而,研究人员发现,在低资源场景中,由于缺乏双语数据,高质量的伪双语数据对于模型来说更有帮助。而在富资源场景下,在回译产生的源语言句子中添加一些噪声,提高翻译结果的多样性,反而可以达到更好的效果,比较常用的方法是使用采样、Top-$k$解码和加噪\upcite{DBLP:conf/emnlp/EdunovOAG18,DBLP:conf/aclnmt/ImamuraFS18,DBLP:conf/emnlp/WuWXQLL19}。回译中常用的解码方式为束搜索,在生成每个词的时候只考虑预测概率最高的词,因此生成的翻译结果质量更高,但导致的问题是翻译结果主要集中在部分高频词上,生成的伪数据缺乏多样性,也就很难去准确地覆盖真实的数据分布\upcite{DBLP:conf/icml/OttAGR18}。采样解码是指在解码过程中,对词表中所有的词按照预测概率进行随机采样,因此整个词表中的词都有可能被选中,从而使生成结果多样性更强,但翻译质量和流畅度也会明显下降。Top-$k$解码是对束搜索和采样解码的一个折中方法。在解码过程中,Top-$k$解码对词表中预测概率最高的前$k$个词进行随机采样,这样在保证翻译结果准确性的前提下,也提高了结果的多样性。加噪方法在束搜索的解码结果加入一些噪声,如丢掉或掩码部分词、打乱句子顺序等。这些方法在生成的源语言句子中引入了噪声,不仅提高了对包含低频词或噪声句子的训练次数,同时也可以提高模型的鲁棒性和泛化能力\upcite{DBLP:conf/icml/VincentLBM08}
曹润柘 committed
77

曹润柘 committed
78
\parinterval 与回译方法类似,源语言的单语数据也可以通过一个双语数据训练的正向翻译模型获得对应的目标语言译文,从而构造正向翻译的伪数据\upcite{DBLP:conf/emnlp/ZhangZ16}。与回译方法相反,这时的伪数据中源语言句子是真实的,而目标语言句子是生成的,构造的伪数据对译文的流畅性并没有太大帮助,其主要作用是提升了编码器的特征提取能力。然而,由于伪数据中生成的译文质量很难保证,因此利用正向翻译模型生成伪数据的方法带来的性能提升效果要弱于回译,甚至可能是有害的\upcite{DBLP:conf/emnlp/WuWXQLL19}
曹润柘 committed
79

曹润柘 committed
80 81 82
%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
曹润柘 committed
83
\subsubsection{2. 修改双语数据}
曹润柘 committed
84

曹润柘 committed
85
\parinterval 回译方法是利用单语数据来生成伪数据,而另外一种数据增强技术是对原始双语数据进行修改来得到伪双语数据,常用的方法包括加噪、词替换和转述等。
曹润柘 committed
86

曹润柘 committed
87 88
\parinterval 加噪是自然语言处理任务中广泛使用的一种方法\upcite{DBLP:conf/icml/VincentLBM08,DBLP:journals/ipm/FarhanTAJATT20,DBLP:conf/iclr/LampleCDR18,devlin2019bert}。比如,在广泛使用的{\small\bfnew{降噪自编码器}}\index{降噪自编码器}(Denoising Autoencoder)\index{Denoising Autoencoder}中,在原始数据中加入噪声作为模型的输入,模型通过学习如何预测原始数据进行训练。而在神经机器翻译中,利用加噪方法进行数据增强的常用方法是,在保证句子整体语义的情况下,对原始的双语数据适当加入一些噪声,从而生成伪双语数据来增加训练数据的规模。常用的加噪方法主要有以下三种:
%----------------------------------------------
曹润柘 committed
89 90
\begin{itemize}
    \vspace{0.5em}
曹润柘 committed
91
    \item 丢掉单词:句子中的每个词均有$\funp{P}_{\rm{Drop}}$的概率被丢弃。
曹润柘 committed
92
    \vspace{0.5em}
曹润柘 committed
93
    \item 掩码单词:句子中的每个词均有$\funp{P}_{\rm{Mask}}$的概率被替换为一个额外的[Mask]词。[Mask]的作用类似于占位符,可以理解为一个句子中的部分词被涂抹掉,无法得知该位置词的准确含义。
曹润柘 committed
94
    \vspace{0.5em}
曹润柘 committed
95
    \item 打乱顺序:将句子中距离较近的某些词的位置进行随机交换,打乱句子中的单词顺序。
曹润柘 committed
96 97
    \vspace{0.5em}
\end{itemize}
曹润柘 committed
98
%----------------------------------------------
曹润柘 committed
99

曹润柘 committed
100
\parinterval\ref{fig:16-3}展示了三种加噪方法的示例。这里,$\funp{P}_{\rm{Drop}}$$\funp{P}_{\rm{Mask}}$均设置为0.1,表示每个词有$10\%$的概率被丢弃或掩码。打乱顺序的操作略微复杂,一种实现方法是,通过一个数字来表示每个词在句子中的位置,如“我”是第一个词,“你”是第三个词,然后,在每个位置生成一个$1$$n$的随机数,$n$一般设置为3,然后将每个词的位置数和对应的随机数相加,即图中的$\seq{S}$。 对$\seq{S}$ 按照从小到大排序,根据排序后每个位置的索引从原始句子中选择对应的词,从而得到最终打乱顺序后的结果。比如,在排序后,$S_2$的值小于$S_1$,其余词则保持递增顺序,则将原始句子中的第一个词和第二个词的顺序进行交换,其他词保持不变。
曹润柘 committed
101 102 103 104 105 106

%----------------------------------------------
\begin{figure}[htp]
    \centering
    \input{./Chapter16/Figures/figure-three-common-methods-of-adding-noise}
    \caption{三种加噪方法}
曹润柘 committed
107
    \label{fig:16-3}
曹润柘 committed
108
\end{figure}
曹润柘 committed
109
%----------------------------------------------
曹润柘 committed
110

曹润柘 committed
111
\parinterval 和回译方法相似,加噪方法一般仅在源语言句子上进行操作,既保证了目标语言句子的流畅度,又可以提高训练数据量,增加数据的多样性,也可以提高模型的鲁棒性和泛化能力\upcite{DBLP:conf/icml/VincentLBM08}。加噪作为一种简单有效的方法,实际的应用场景很多,比如:
曹润柘 committed
112
%----------------------------------------------
曹润柘 committed
113 114 115 116 117 118
\begin{itemize}
    \vspace{0.5em}
    \item 对单语数据加噪。通过一个端到端模型预测源语言句子的调序结果,该模型和神经机器翻译模型的编码器共享参数,从而增强编码器的特征提取能力\upcite{DBLP:conf/emnlp/ZhangZ16}
    \vspace{0.5em}
    \item 训练降噪自编码器。将加噪后的句子作为输入,原始句子作为输出,用来训练降噪自编码器,这一思想在无监督机器翻译中得到了广泛应用,详细方法可以参考\ref{unsupervised-NMT}节;
    \vspace{0.5em}
119
    \item 对伪数据进行加噪。比如在上文中提到的对伪数据加入噪声的方法中,通常也使用上述这三种加噪方法来提高伪数据的多样性;
曹润柘 committed
120 121
    \vspace{0.5em}
\end{itemize}
曹润柘 committed
122
%----------------------------------------------
曹润柘 committed
123

曹润柘 committed
124
\parinterval 另外一种方法是进行词替换。将一个句子中的某个词替换为其他词,可能并不会影响句子的合理性和流畅度。比如,对于“我出去玩。”这句话,将“我”替换为“你”、“他”、“我们”或者将“玩”替换为“骑车”、“学习”、“吃饭”等,虽然改变了语义,但句子仍然是合理的。词替换方法即是将双语数据中的部分词替换为词表中的其他词,在保证句子的语义或语法正确性的前提下,增加了训练数据的多样性。
曹润柘 committed
125

曹润柘 committed
126
\parinterval 词替换的另一种策略是将目标语中的稀有词替换为语义相近的词\upcite{DBLP:conf/acl/FadaeeBM17a}。词表中的稀有词由于出现次数较少,很容易导致训练不充分问题,从而无法准确预测稀有词\upcite{DBLP:conf/acl/SennrichHB16a}。通过语言模型将源语言句子中的某个词替换为满足语法或语义条件的稀有词,然后通过词对齐工具找到源语言句子中被替换的词在目标语言句子中对应的位置,借助翻译词典等方法将目标语言句子中的对应位置的词替换为源语言句子中被替换的词对应的翻译结果,从而生成得到伪双语数据。
曹润柘 committed
127

曹润柘 committed
128
\parinterval 此外,通过在源语言或目标语言中随机选择某些词,将这些词替换为词表中随机的一个词,也可以得到伪双语数据\upcite{DBLP:conf/emnlp/WangPDN18}。随机选择句子中的某个词,将这个词的词嵌入替换为其他词的词嵌入加权表示融合,权重可以通过语言模型来计算,相比离散的替换方式(替换为其他词等),这种丰富的分布式表示相比直接使用词嵌入可以包含更多的语义信息,同一个词在不同的上下文中也会被替换为不同的上下文表示\upcite{DBLP:conf/acl/GaoZWXQCZL19}
曹润柘 committed
129

曹润柘 committed
130
\parinterval 相比上述两种方法只是对句子做轻微的修改,{\small\bfnew{转述}}(Paraphrasing)\index{转述}\index{Paraphrasing}方法考虑到了自然语言表达的多样性,通过对原始句子进行改写,使用不同的句式来传达相同含义的信息\upcite{DBLP:journals/coling/BhagatH13,2010Generating}。比如对于“东北大学自然语言处理实验室的室训是精益求精、百炼成钢。”这句话,可以使用其他的句式来表达同样的含义,“精益求精、百炼成钢是东北大学自然语言处理实验室的室训”。转述在机器翻译任务上得到了广泛引用\upcite{DBLP:conf/wmt/GuoH19,DBLP:conf/acl/ZhouSW19,DBLP:conf/eacl/LapataSM17},通过转述方法对原始的双语数据进行改写,训练数据可以覆盖更多的语言学现象,同时由于每个句子可以对应多个不同的翻译,可以避免模型过拟合,提高泛化能力。
曹润柘 committed
131

曹润柘 committed
132 133 134
%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
曹润柘 committed
135 136
\subsubsection{3. 双语句对挖掘}

曹润柘 committed
137
\parinterval 在双语平行语料缺乏的时候,从可比语料中挖掘可用的双语句对也是一种有效的方法\upcite{finding2006adafre,method2008keiji,2005Improving,DBLP:conf/naacl/SmithQT10,DBLP:conf/emnlp/WuZHGQLL19}。可比语料是指源语言和目标语言虽然不是完全互译的文本,但是蕴含了丰富的双语对照知识,可以从中挖掘出可用的双语句对来训练。相比双语平行语料来说,可比语料相对容易获取,比如,多种语言报道的新闻事件、多种语言的维基百科词条和多种语言翻译的书籍(如圣经等)等。如图\ref{fig:16-4}中展示的维基百科词条所示。
曹润柘 committed
138 139 140 141 142

%----------------------------------------------
\begin{figure}[htp]
    \centering
    \input{./Chapter16/Figures/figure-examples-of-comparable-corpora}
143
    \caption{维基百科中的可比语料}
曹润柘 committed
144
    \label{fig:16-4}
曹润柘 committed
145
\end{figure}
曹润柘 committed
146
%----------------------------------------------
曹润柘 committed
147

曹润柘 committed
148
\parinterval 可比语料大多存在于网页中,内容较为复杂,可能会存在较大比例的噪声干扰,如HTML字符、乱码等。首先需要对内容进行充分的数据清洗操作,得到干净的可比语料,然后从中抽取出可用的双语句对。传统的抽取方法一般通过统计模型或双语词典来得到,比如,通过计算两个不同语言句子之间的单词重叠数或BLEU值\upcite{finding2006adafre,method2008keiji};通过排序模型或二分类器判断一个目标语言句子和一个源语言句子互译的可能性\upcite{DBLP:journals/coling/MunteanuM05,DBLP:conf/naacl/SmithQT10}
曹润柘 committed
149

曹润柘 committed
150
\parinterval 另外一种比较有效的方法是根据两种语言中每个句子的表示向量来抽取\upcite{DBLP:conf/emnlp/WuZHGQLL19}。首先,对于两种语言的每个句子,分别使用词嵌入加权平均等方法计算得到句子的表示向量,然后计算每个源语言句子和目标语言句子之间的余弦相似度,相似度大于一定阈值的句对则认为是可用的双语句对\upcite{DBLP:conf/emnlp/WuZHGQLL19}。然而,不同语言单独训练得到的词嵌入可能多对应不同的表示空间,因此得到的表示向量无法用于衡量两个句子的相似度\upcite{DBLP:journals/corr/MikolovLS13}。为了解决这个问题,一般使用在同一表示空间的跨语言词嵌入来表示两种语言的单词\upcite{DBLP:journals/jair/RuderVS19}。在跨语言词嵌入中,不同语言相同意思的词对应的词嵌入具有较高的相似性,因此得到的句向量也就可以用于衡量两个句子是否表示相似的语义\upcite{DBLP:conf/icml/LeM14}。关于跨语言词嵌入的具体内容,可以参考\ref{unsupervised-dictionary-induction}小节。
曹润柘 committed
151

曹润柘 committed
152 153 154
%----------------------------------------------------------------------------------------
%    NEW SUB-SECTION
%----------------------------------------------------------------------------------------
155
\subsection{基于语言模型的方法}
曹润柘 committed
156

曹润柘 committed
157 158
\parinterval 除了构造双语数据进行数据增强,直接利用单语数据也是机器翻译中的常用方法。通常,单语数据会被用于语言模型的学习(见{\chaptertwo})。对于机器翻译系统,使用语言模型也是一件十分自然的事情,在目标语言端,语言模型可以帮助系统产生更加流畅的译文;在源语言端,语言模型也可以用于句子编码,进而更好地生成句子的表示结果。在传统方法中,语言模型更多的被使用在目标语端。不过,近些年来随着预训练技术的发展,语言模型也被使用在神经机器翻译的编码端。下面将从语言模型在目标端的融合、预训练词嵌入、预训练编码器和多任务学习等方向介绍基于语言模型的单语数据使用方法。

曹润柘 committed
159
%----------------------------------------------------------------------------------------
曹润柘 committed
160
%    NEW SUB-SUB-SECTION
曹润柘 committed
161
%----------------------------------------------------------------------------------------
曹润柘 committed
162
\subsubsection{1. 语言模型在目标端的融合}
曹润柘 committed
163

曹润柘 committed
164
\parinterval 融合目标语言端的语言模型是一种最直接的使用单语数据的方法\upcite{2015OnGulcehre,DBLP:journals/csl/GulcehreFXCB17,DBLP:conf/wmt/StahlbergCS18}。实际上,神经机器翻译模型本身也具备了语言模型的作用,因为解码器本质上也是一个语言模型,用于描述生成译文词串的规律。类似于语言模型,神经机器翻译模型可以自回归地生成翻译结果。对于一个双语句对$(\seq{x}, \seq{y})$,神经机器翻译模型根据源语言句子$\seq{x}$和前面生成的词来预测当前位置词的概率分布:
曹润柘 committed
165

曹润柘 committed
166
\begin{eqnarray}
曹润柘 committed
167
\log{P(\seq{y} | \seq{x}; \theta)} & = & \sum_{t}{\log{P(y_t | \seq{x}, {\seq{y}}_{<t}; \theta)}}
曹润柘 committed
168
\label{eq:16-1}
曹润柘 committed
169 170
\end{eqnarray}

曹润柘 committed
171
\noindent 这里,$\theta$是神经机器翻译模型的参数,${\seq{y}}_{<t}$表示第$t$个词前面生成的词。可以看出,模型的翻译过程与两部分信息有关,分别是源语言句子$\seq{x}$以及前面生成的翻译序列${\seq{y}}_{<t}$。语言模型可以与解码过程融合,根据${\seq{y}}_{<t}$生成流畅度更高的翻译结果。常用的融合方法主要分为浅融合和深融合\upcite{2015OnGulcehre}
曹润柘 committed
172

曹润柘 committed
173
\parinterval 浅融合方法独立训练翻译模型和语言模型,在生成每个词的时候,对两个模型的预测概率进行加权求和得到最终的预测概率。浅融合的不足在于,解码过程对每个词均采用相同的语言模型权重,这实际上是不合理的。比如,在汉语-英语翻译系统中,英语句子中的冠词可能在汉语句子中没有显式的单词对应,这种情况下,英语语言模型可以提供更多帮助,保证翻译结果更加符合英语的语言结构;而在翻译某些名词的时候,语言模型由于没有源语言句子的信息,反而会对解码过程产生干扰,因此权重越小越好。针对这个问题,深融合联合翻译模型和语言模型进行训练,从而在解码过程中动态地计算语言模型的权重,从而更好地融合翻译模型和语言模型来计算预测概率。
174

曹润柘 committed
175 176
\parinterval 大多数情况下,译文端语言模型的使用可以提高翻译结果的流畅度。不过,它并不会增加翻译结果对源语言句子表达的{\small\bfnew{充分性}}\index{充分性}(Adequacy\index{Adequacy}),即源语言句子的信息是否被充分体现到了译文中。也有一些研究发现,神经机器翻译过于关注译文的流畅度,但是充分性的问题没有很好的考虑,比如,神经机器翻译系统的结果中经常出现漏译等问题。也有一些研究者提出控制翻译充分性的方法,让译文在流畅度和充分性之间达到平衡\upcite{DBLP:conf/acl/TuLLLL16,li-etal-2018-simple,DBLP:journals/tacl/TuLLLL17}

曹润柘 committed
177
%----------------------------------------------------------------------------------------
曹润柘 committed
178
%    NEW SUB-SUB-SECTION
曹润柘 committed
179
%----------------------------------------------------------------------------------------
曹润柘 committed
180
\subsubsection{2. 预训练词嵌入}
曹润柘 committed
181

曹润柘 committed
182
\parinterval 神经机器翻译模型所使用的编码器-解码器框架天然就包含了对输入(源语言)和输出(目标语言)进行表示学习的过程。在编码端,需要学习一种分布式表示来表示源语言句子的信息,这种分布式表示可以包含序列中每个位置的表示结果(见{\chapternine})。从结构上看,神经机器翻译所使用的编码器与神经语言模型无异,或者说神经机器翻译的编码器其实就是一个源语言的语言模型。唯一的区别在于,神经机器翻译的编码器并不直接输出源语言句子的生成概率,而传统语言模型是建立在序列生成任务上的。既然神经机器翻译的编码器可以与解码器一起在双语数据上联合训练,那为什么不使用更大规模的数据单独对编码器进行训练呢?或者说,直接使用一个预先训练好的编码器,与机器翻译的解码器配合完成翻译过程。
曹润柘 committed
183

曹润柘 committed
184
\parinterval 实现上述想法的一种手段是{\small\sffamily\bfnew{预训练}}\index{预训练}(Pre-training)\index{Pre-training,DBLP:conf/nips/DaiL15,DBLP:journals/corr/abs-1802-05365,radford2018improving,devlin2019bert}。预训练的做法相当于将表示模型的学习任务从目标任务中分离出来,这样可以利用额外的更大规模的数据进行学习。常用的一种方法是使用语言建模等方式在大规模单语数据上进行训练,来得到神经机器翻译模型中的一部分(比如词嵌入和编码器等)的模型参数,作为模型的初始值。然后,神经机器翻译模型在双语数据上进行{\small\sffamily\bfnew{微调}}\index{微调}(Fine-tuning)\index{Fine-tuning},以得到最终的翻译模型。
曹润柘 committed
185

曹润柘 committed
186
\parinterval 词嵌入可以被看作是对每个独立单词进行的表示学习,在自然语言处理的众多任务中都扮演着重要角色\upcite{DBLP:conf/icml/CollobertW08,2011Natural,DBLP:journals/corr/abs-1901-09069}。到目前为止已经有大量的词嵌入学习方法被提出(见{\chapternine}),因此可以直接应用这些方法在海量的单语数据上训练得到词嵌入,用来初始化神经机器翻译模型的词嵌入矩阵\upcite{DBLP:conf/aclwat/NeishiSTIYT17,2018When}
曹润柘 committed
187

曹润柘 committed
188
\parinterval 需要注意的是,在神经机器翻译中使用预训练词嵌入有两种方法。一种方法是直接将词嵌入作为固定的输入,也就是在训练机器翻译模型的过程中,并不调整词嵌入的参数。这样做的目的是完全将词嵌入模块独立出来,机器翻译可以被看作是在固定的词嵌入输入上进行的建模,从而降低了机器翻译系统学习的难度。另一种方法是仍然遵循``预训练+微调''的策略,将词嵌入作为翻译模型的初始值。之后在机器翻译训练过程中,词嵌入模型结果会被进一步更新。近些年,在词嵌入预训练的基础上进行微调的方法受到研究者越来越多的青睐。因为在实践中发现,完全用单语数据学习的单词表示,与双语上的翻译任务并不完全匹配。目标语言的信息也会影响源语言的表示学习,在预训练词嵌入的基础上进一步进行微调是更加有效的方案。
曹润柘 committed
189

曹润柘 committed
190
\parinterval 虽然预训练词嵌入在海量的单语数据上学习到了丰富的表示,但词嵌入很主要的一个缺点是无法解决一词多义问题。在不同的上下文中,同一个单词经常表示不同的意思,但词嵌入是完全相同的。模型需要在编码过程中通过上下文去理解每个词在当前语境下的含义,从而增加了建模的复杂度。因此,上下文词向量在近些年得到了广泛的关注\upcite{DBLP:conf/acl/PetersABP17,mccann2017learned,DBLP:conf/naacl/PetersNIGCLZ18}。上下文词嵌入是指一个词的表示不仅依赖于单词自身,还要根据所在的上下文语境来得到。由于在不同的上下文中,每个词对应的词嵌入是不同的,因此无法简单地通过词嵌入矩阵来表示,通常的做法是使用海量的单语数据预训练语言模型任务,使模型具备丰富的特征提取能力\upcite{DBLP:conf/naacl/PetersNIGCLZ18,radford2018improving,devlin2019bert}。比如,{\small\bfnew{来自语言模型的嵌入}}(Embeddings from Language Models,ELMo)\index{ELMo}\index{来自语言模型的嵌入}通过BiLSTM模型预训练语言模型任务,通过线性融合不同层的表示来得到每个词的上下文词嵌入,在很多自然语言处理任务上均得到了最佳的性能\upcite{DBLP:conf/naacl/PetersNIGCLZ18}
曹润柘 committed
191

曹润柘 committed
192 193 194
%----------------------------------------------
\begin{figure}[htp]
    \centering
曹润柘 committed
195 196 197
    \input{./Chapter16/Figures/figure-elmo-model-structure}
    \caption{ELMo模型结构示意图}
    \label{fig:16-5}
曹润柘 committed
198 199 200
\end{figure}
%----------------------------------------------

曹润柘 committed
201 202 203
%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
曹润柘 committed
204
\subsubsection{3. 预训练模型}
曹润柘 committed
205

曹润柘 committed
206 207
\parinterval 相比固定的词嵌入,上下文词嵌入包含了在当前语境中的语义信息,丰富了模型的输入表示,降低了训练难度。但是,模型仍有大量的参数需要从零学习,来进一步提取整个句子的表示。那么,能不能在预训练阶段中直接得到预训练好的模型参数,在下游任务中仅仅通过任务特定的数据对模型参数进行微调,来得到一个较强的模型呢?{\small\bfnew{生成式预训练}}(Generative Pre-Training,GPT)\index{生成式预训练}\index{GPT}和来自Transformer的{\small\bfnew{双向编码器表示}}(Bidirectional Encoder Representations from Transformers,BERT)\index{双向编码器表示}\index{BERT}对这种方法进行了探索,并取得了令人振奋的实验结果。

曹润柘 committed
208 209 210
%----------------------------------------------
\begin{figure}[htp]
    \centering
曹润柘 committed
211 212 213
    \input{./Chapter16/Figures/figure-comparison-of-structure-between-gpt-and-bert-model}
    \caption{GPT模型结构和BERT模型结构对比示意图}
    \label{fig:16-6}
曹润柘 committed
214 215
\end{figure}
%----------------------------------------------
216

曹润柘 committed
217
\parinterval GPT\upcite{radford2018improving}通过Transformer模型自回归地训练单向语言模型,类似于神经机器翻译模型的解码器,相比ELMo中使用的BiLSTM模型,Tranformer架构的表示能力更强。在大规模单语数据上预训练得到的模型结构只需要进行简单的修改,然后通过任务特定的训练数据进行微调,就可以很好地适配到下游任务中,在多个任务中均取得了当时最佳的结果。之后提出的BERT模型更是将预训练的作用提升到了新的水平\upcite{devlin2019bert}。GPT模型十分严重的一个缺陷在于模型只能进行单向编码,也就是前面的文本在建模时无法获取到后面的信息。而BERT提出了一种自编码的方式,使模型在预训练阶段可以通过双向编码的方式进行建模,进一步增强了模型的表示能力。
曹润柘 committed
218

曹润柘 committed
219
\parinterval BERT的核心思想是通过{\small\bfnew{掩码语言模型}}(Masked Language model,MLM)\index{掩码语言模型}\index{MLM}任务进行预训练。掩码语言模型的思想类似于完形填空,随机选择输入句子中的部分词掩码,模型来预测这些被掩码的词。掩码的具体做法是将被选中的词替换为一个特殊的词[Mask],这样模型在训练过程中,无法得到掩码位置词的信息,需要联合上下文内容进行预测,因此提高了模型对上下文的特征提取能力。实验表明,相比在下游任务中仅利用上下文词嵌入,在大规模单语输数据上预训练的模型具有更强的表示能力。同时,对比单向预训练模型GPT,BERT这种双向编码的训练方式也展示出了更好的效果。
曹润柘 committed
220

曹润柘 committed
221
\parinterval 在神经机器翻译任务中,预训练模型可以用于初始化编码器的模型参数\upcite{DBLP:conf/emnlp/ClinchantJN19,DBLP:conf/emnlp/ImamuraS19,DBLP:conf/naacl/EdunovBA19}。之所以用在编码器而不是解码器端,主要原因在于编码器的作用主要在于特征提取,训练难度相对较高,而解码器的作用主要在于生成,和编码器提取到的表示是强依赖的,相对比较脆弱\upcite{DBLP:journals/corr/abs-1908-06259}。模型在预训练阶段的生成过程中并没有考虑到额外的表示信息,因此和神经机器翻译的编码器存在着明显的不一致问题,所以目前主流的做法是仅利用预训练模型对编码器的模型参数进行初始化。
曹润柘 committed
222

曹润柘 committed
223
\parinterval 然而,在实践中发现,参数初始化的方法在一些富资源语种上提升效果并不明显,甚至反而有些下降\upcite{DBLP:journals/corr/abs-2002-06823}。原因可能在于,预训练模型可以带来显著提升的一个重要原因在于预训练阶段的训练数据规模是非常大的,因此在下游任务数据量较少的情况下帮助较大。而在一些富资源语种上,双语句对的数据量可以达到千万级别,因此简单通过预训练模型来初始化模型参数无法带来明显的提升。此外,预训练模型的训练目标并没有考虑到序列到序列的生成,与神经机器翻译的训练目标并不完全一致,两者训练得到的模型参数可能存在一些区别。
曹润柘 committed
224

曹润柘 committed
225 226
\parinterval 因此,一些做法将预训练模型和翻译模型进行融合,将预训练模型作为一个独立的模块来为编码器或者解码器提供句子级表示信息\upcite{DBLP:journals/corr/abs-2002-06823,DBLP:conf/aaai/YangW0Z00020}。另外一种做法是针对生成任务进行预训练。机器翻译是一种典型的语言生成任务,不仅包含源语言表示学习的问题,还有序列到序列的映射,以及目标端序列生成的问题,这些知识是无法单独通过(源语言)单语数据学习到的。因此,可以使用单语数据对编码器-解码器结构进行预训练\upcite{song2019mass,DBLP:conf/acl/LewisLGGMLSZ20,DBLP:conf/emnlp/QiYGLDCZ020}

曹润柘 committed
227
\parinterval{\small\bfnew{掩码端到端预训练}}(MAsked Sequence to Sequence pre-training,MASS)\index{掩码端到端预训练}\index{MASS}方法为例\upcite{song2019mass},其思想与BERT十分相似,也是在预训练过程中采用掩码的方式,随机选择编码器输入句子中的连续片段替换为特殊词[Mask],然后在解码器端预测这个连续片段,如图\ref{fig:16-7} 所示。这种做法可以使得编码器端捕捉上下文信息,同时迫使解码器依赖于编码器进行自回归地生成,从而学习到编码器和解码器之间的注意力。为了适配下游的机器翻译任务,使预训练模型可以学习到不同语言的表示,MASS对不同语言的句子采用共享词汇表和模型参数的方法,利用同一个预训练模型来进行不同语言句子的预训练。通过这种方式,模型既学到了对源语言句子的编码,也学习到了对目标语言句子的生成,之后通过双语句对对预训练模型的参数进行微调,模型可以快速收敛到较好的水平。
曹润柘 committed
228 229 230 231 232

%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter16/Figures/figure-mass}
曹润柘 committed
233
\caption{MASS 预训练方法}
曹润柘 committed
234
\label{fig:16-7}
曹润柘 committed
235
\end{figure}
曹润柘 committed
236
%----------------------------------------------
曹润柘 committed
237

曹润柘 committed
238
\parinterval  此外,还有很多工作对如何将语言模型应用到神经机器翻译模型中进行了研究。研究人员分析了预训练词嵌入为何在神经机器翻译模型中有效\cite{2018When};如何在神经机器翻译模型中利用预训练的BERT模型\cite{DBLP:conf/emnlp/ClinchantJN19,DBLP:conf/emnlp/ImamuraS19,DBLP:conf/aaai/YangW0Z00020,DBLP:conf/aaai/WengYHCL20,DBLP:conf/emnlp/ImamuraS19};如何针对神经机器翻译任务进行预训练\cite{DBLP:journals/corr/abs-2001-08210,DBLP:conf/aaai/JiZDZCL20,DBLP:conf/acl/LewisLGGMLSZ20};针对机器翻译中的Code-switching问题进行预训练\cite{DBLP:journals/corr/abs-2009-08088};如何在微调过程中避免遗忘原始的语言模型任务\cite{DBLP:journals/corr/abs-2010-09403}
曹润柘 committed
239

曹润柘 committed
240
%----------------------------------------------------------------------------------------
曹润柘 committed
241
%    NEW SUB-SUB-SECTION
曹润柘 committed
242
%----------------------------------------------------------------------------------------
曹润柘 committed
243
\subsubsection{4. 多任务学习}
曹润柘 committed
244

曹润柘 committed
245
\parinterval 在训练一个神经网络的时候,往往会给定模型一个训练目标,希望模型通过不断训练在这个目标上表现地越来越好。我们希望模型在训练过程中可以自动提取到与训练目标相关的所有信息。然而,过分地关注单个训练目标,可能使模型忽略掉其他可能有帮助的信息,这些信息可能来自于一些其他相关的任务\upcite{DBLP:journals/corr/Ruder17a}。通过联合多个独立但相关的任务共同学习,任务之间相互``促进'',就是{\small\sffamily\bfnew{多任务学习}}\index{多任务学习}(Multitask Learning)\index{Multitask Learning}方法\upcite{DBLP:journals/corr/Ruder17a,DBLP:books/sp/98/Caruana98,liu2019multi}。多任务学习的常用做法是针对多个相关的任务,共享模型的部分参数来学习不同任务之间相似的特征,并通过特定的模块来学习每个任务独立的特征。常用的策略是对底层的模型参数进行共享,顶层的模型参数用于独立学习各个不同的任务,具体示意图可以参考\ref{subsec-15.3.2}小节中的{\red{多任务结构图}}
曹润柘 committed
246

曹润柘 committed
247
\parinterval 在神经机器翻译中,应用多任务学习的主要策略是将翻译任务作为主任务,同时设置一些仅使用单语数据的子任务,通过这些子任务来捕捉单语数据中的语言知识\upcite{DBLP:conf/emnlp/DomhanH17,DBLP:conf/emnlp/ZhangZ16,DBLP:journals/corr/LuongLSVK15}。一种多任务学习的方法是利用源语言单语数据,通过单个编码器对源语言数据进行建模,然后分别使用两个解码器来学习源语言排序和翻译任务。源语言排序任务是指对句子的顺序进行调整,可以通过单语数据来构造训练数据,从而使编码器训练地更加充分\upcite{DBLP:conf/emnlp/ZhangZ16},如图\ref{fig:16-8}所示。
曹润柘 committed
248 249 250
%----------------------------------------------
\begin{figure}[htp]
    \centering
曹润柘 committed
251 252
    \input{./Chapter16/Figures/figure-multitask-learning-in-machine-translation-1}
    \caption{利用源语言单语数据的多任务学习}
曹润柘 committed
253
    \label{fig:16-8}
曹润柘 committed
254 255
\end{figure}
%----------------------------------------------
曹润柘 committed
256

曹润柘 committed
257
\parinterval 虽然神经翻译模型可以看作一个受限的语言模型,但生成过程中却依赖于源语言信息,因此无法直接利用目标语言单语数据进行多任务学习。针对这个问题,可以对原有翻译模型结构进行修改,在解码器底层增加一个语言模型子层,这个子层用于学习语言模型任务,与编码器端是完全独立的,如图\ref{fig:16-9}所示\upcite{DBLP:conf/emnlp/DomhanH17}。在训练过程中,可以分别将双语数据和单语数据送入翻译模型和语言模型进行计算,双语数据训练产生的梯度用于对整个模型进行参数更新,而单语数据产生的梯度只对语言模型子层进行参数更新。通过这种方式,可以有效利用单语数据使解码器端的底层网络训练地更加充分,从而提取到更有效的特征来生成翻译结果。
曹润柘 committed
258 259 260 261

%----------------------------------------------
\begin{figure}[htp]
\centering
曹润柘 committed
262 263
\input{./Chapter16/Figures/figure-multitask-learning-in-machine-translation-2}
\caption{利用语言模型的多任务学习}
曹润柘 committed
264
\label{fig:16-9}
曹润柘 committed
265
\end{figure}
曹润柘 committed
266
%----------------------------------------------
曹润柘 committed
267

曹润柘 committed
268
\parinterval 此外,还有一些工作对多任务学习进行了探讨。比如利用多任务学习来训练多到一模型(多个编码器,单个解码器)、一到多模型(单个编码器、多个解码器)和多到多模型(多个编码器、多个解码器),从而借助单语数据或其他数据来使编码器或解码器训练地更加充分\upcite{DBLP:journals/corr/LuongLSVK15},任务的形式包括翻译任务、成分句法分析任务、图像标注等。另外一种策略是利用多任务学习的思想同时训练多个语言的翻译任务\upcite{DBLP:conf/acl/DongWHYW15,DBLP:journals/tacl/JohnsonSLKWCTVW17},同样包括多到一翻译(多个语种到一个语种)、一到多翻译(一个语种到多个语种)以及多到多翻译(多个语种到多个语种),这种方法可以利用多种语言的训练数据进行学习,具有较大的潜力,逐渐受到了研究人员们的关注,具体内容可以参考\ref{multilingual-translation-model}一节。
曹润柘 committed
269 270

%----------------------------------------------------------------------------------------
曹润柘 committed
271
%    NEW SECTION 16.2
曹润柘 committed
272 273
%----------------------------------------------------------------------------------------

274
\section{双向翻译模型}
曹润柘 committed
275

曹润柘 committed
276
\parinterval 机器翻译主要是通过双语数据训练一种语言到另外一种语言的翻译。显然这是一种双向任务。对于给定的双语数据,可以同时学习源语言到目标语言和目标语言到源语言的翻译模型。那么,两个方向的翻译模型能否联合起来,相辅相成呢?下面将从双向训练和对偶学习两方面对双向翻译模型进行介绍。这些方法被大量使用在低资源翻译系统中,比如,可以用双向翻译模型反复迭代构造伪数据。
277

曹润柘 committed
278
%----------------------------------------------------------------------------------------
曹润柘 committed
279
%    NEW SUB-SUB-SECTION
曹润柘 committed
280
%----------------------------------------------------------------------------------------
281
\subsection{双向训练}
曹润柘 committed
282

曹润柘 committed
283
\parinterval 回顾神经机器翻译系统的建模过程,给定一个互译的句对$(\seq{x},\seq{y})$,一个从源语言句子$\seq{x}$到目标语言句子$\seq{y}$的翻译被表示为求条件概率$\funp{P}(\seq{y}|\seq{x})$的问题。类似地,一个从目标语言句子$\seq{y}$到源语言句子$\seq{x}$的翻译可以表示为$\funp{P}(\seq{x}|\seq{y})$。通常来说,神经机器翻译的训练一次只得到一个方向的模型,也就是$\funp{P}(\seq{y}|\seq{x})$或者$\funp{P}(\seq{x}|\seq{y})$。这意味着$\funp{P}(\seq{y}|\seq{x})$$\funp{P}(\seq{x}|\seq{y})$之间是互相独立的。但$\funp{P}(\seq{y}|\seq{x})$$\funp{P}(\seq{x}|\seq{y})$是否真的没有关系呢?比如,假设$\seq{x}$$\seq{y}$是相同大小的向量,且$\seq{x}$$\seq{y}$的变换是一个线性变换,也就是与一个方阵$\seq{W}$做矩阵乘法:
曹润柘 committed
284
\begin{eqnarray}
曹润柘 committed
285
\seq{y} & = & \seq{x} \cdot \seq{W}
曹润柘 committed
286
\label{eq:16-2}
曹润柘 committed
287 288
\end{eqnarray}

曹润柘 committed
289
\parinterval 这里可以把$\seq{x}$$\seq{y}$都看作分布式的向量表示;$\seq{W}$应当是一个满秩矩阵,否则对于任意一个$\seq{x}$经过$\seq{W}$变换得到的$\seq{y}$只落在所有可能的$\seq{y}$的一个子空间内,即在给定$\seq{W}$的情况下有些$\seq{y}$不能被任何一个$\seq{x}$表达,而这不符合常识,因为不管是什么句子,我们总能找到它的一种译文。若$\seq{W}$是满秩矩阵说明$\seq{W}$可逆,也就是给定$\seq{x}$$\seq{y}$的变换$\seq{W}$下,$\seq{y}$$\seq{x}$的变换必然是$\seq{W}$的逆而不是其他矩阵。
290

曹润柘 committed
291
\parinterval 这个例子说明$\funp{P}(\seq{y}|\seq{x})$$\funp{P}(\seq{x}|\seq{y})$直觉上应当存在联系。当然,$\seq{x}$$\seq{y}$之间是否存在简单的线性变换关系并没有结论,但是上面的例子给出了一种对源语言句子和目标语言句子进行相互转化的思路。实际上,研究人员已经通过一些数学技巧用目标函数来把$\funp{P}(\seq{y}|\seq{x})$$\funp{P}(\seq{x}|\seq{y})$联系起来,这样训练神经机器翻译系统一次就可以同时得到两个方向的翻译模型,使得训练变得更加高效\upcite{Hassan2018AchievingHP,DBLP:conf/aaai/Zhang0LZC18,DBLP:conf/wmt/SunJXHWW19}。双向联合训练的基本思想是:使用两个方向的翻译模型对单语数据进行解码,之后用解码后的翻译结果与原始的单语数据作为训练语料,通过多次迭代更新两个方向上的机器翻译模型。
292

曹润柘 committed
293
\parinterval\ref{fig:16-10}给出了一个双向训练的详细流程,其中$M_{x \rightarrow y}^{k}$表示第$k$轮得到的$x$$y$的翻译模型,$M_{y \rightarrow x}^{k}$表示第$k$轮得到的$y$$x$的翻译模型。这里只展示了前两轮迭代。在第一次迭代开始之前,首先使用双语数据对两个初始翻译模型进行预训练。为了保持一致性,这里称之为第0 轮迭代。在第一轮迭代中,首先使用这两个翻译模型$M_{x \rightarrow y}^{0}$$M_{y \rightarrow x}^{0}$ 翻译单语数据$X=\{ x_i \}$$Y= \{ y_i \}$ 后得到译文$\{\hat{y}_i^{0} \}$$\{ \hat{x}_i^{0}\}$。进一步,构建伪训练数据集$\{ x_i,\hat{y}_i^{0}\}$$\{ \hat{x}_i^{0},y_i \}$。然后使用上面的两个伪训练集和原始双语数据混合训练得到模型$M_{x \rightarrow y}^{1}$$M_{y \rightarrow x}^{1}$并执行参数更新,即用$\{ x_i,\hat{y}_i^{0}\} \bigcup \{ x_i,y_i\}$训练$M_{x \rightarrow y}^{1}$,用$\{ y_i,\hat{x}_i^{0}\} \bigcup \{ y_i,x_i\}$训练$M_{y \rightarrow x}^{1}$。第二轮迭代继续重复上述过程,使用更新参数后的翻译模型$M_{x \rightarrow y}^{1}$$M_{y \rightarrow x}^{1}$ 得到新的伪数据集$\{ x_i,\hat{y}_i^{1}\}$$\{ \hat{x}_i^{1},y_i \}$。然后,进一步得到翻译模型$M_{x \rightarrow y}^{2}$$M_{y \rightarrow x}^{2}$。这种方式本质上也是一种自学习的过程,通过逐步生成更好的伪数据来提升模型质量。
294

曹润柘 committed
295 296 297
%----------------------------------------------
\begin{figure}[h]
\centering
曹润柘 committed
298
\input{Chapter16/Figures/figure-the-iterative-process-of-bidirectional-training}
曹润柘 committed
299
\caption{双向训练的迭代过程}
曹润柘 committed
300
\label{fig:16-10}
曹润柘 committed
301 302
\end{figure}
%----------------------------------------------
曹润柘 committed
303
%----------------------------------------------------------------------------------------
304
%    NEW SUB-SECTION
曹润柘 committed
305
%----------------------------------------------------------------------------------------
306
\subsection{对偶学习}
曹润柘 committed
307

曹润柘 committed
308 309 310 311 312 313 314 315
\parinterval 对称,也许是人类最喜欢的美,其始终贯穿在整个人类文明的诞生与发展之中。古语“夫美者,上下、内外、大小、远近皆无害焉,故曰美”描述的即是这样的美。在人工智能的任务中,也存在着这样的对称结构,比如机器翻译中英译汉和汉译英、图像处理中的图像标注和图像生成以及语音处理中的语音识别和文字合成等。利用这些任务的对称性质(也称对偶性),可以使互为对偶的两个任务获得更有效的反馈,从而使对应的模型相互学习、相互提高。目前,对偶学习的思想已经广泛应用于低资源机器翻译领域,其不仅能够提升在有限双语资源下的翻译模型性能({\small\bfnew{有监督对偶学习}},Supervised Dual Learning)\upcite{DBLP:conf/icml/XiaQCBYL17,DBLP:conf/acl/SuHC19,DBLP:journals/ejasmp/RadzikowskiNWY19},而且能够利用未标注的单语数据来进行学习({\small\bfnew{无监督对偶学习}},Dual Unsupervised Learning)\upcite{qin2020dual,DBLP:conf/iccv/YiZTG17,DBLP:journals/access/DuRZH20}。下面将一一展开讨论。

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 有监督对偶学习}

\parinterval 对偶学习涉及两个任务,分别是原始任务和它的对偶任务。在机器翻译任务中,给定一个互译的句对$(\seq{x},\seq{y})$,原始任务学习一个条件概率$\funp{P}(\seq{y}|\seq{x})$将源语言句子$\seq{x}$翻译成目标语言句子$\seq{y}$;对偶任务同样学习一个条件概率$\funp{P}(\seq{x}|\seq{y})$将目标语言句子$\seq{y}$翻译成源语言句子$\seq{x}$。除了使用条件概率建模翻译问题,还可以使用联合分布$\funp{P}(\seq{x},\seq{y})$进行建模。根据条件概率定义,有:
曹润柘 committed
316
\begin{eqnarray}
曹润柘 committed
317 318
\funp{P}(\seq{x},\seq{y}) &=& \funp{P}(\seq{x})\funp{P}(\seq{y}|\seq{x}) \nonumber \\
&=& \funp{P}(\seq{y})\funp{P}(\seq{x}|\seq{y})
曹润柘 committed
319
\label{eq:16-3}
曹润柘 committed
320 321
\end{eqnarray}

曹润柘 committed
322
\parinterval 公式\eqref{eq:16-3}很自然地把两个方向的翻译模型$\funp{P}(\seq{y}|\seq{x})$$\funp{P}(\seq{x}|\seq{y})$以及两个语言模型$\funp{P}(\seq{x})$$\funp{P}(\seq{y})$联系起来:$\funp{P}(\seq{x})\funp{P}(\seq{y}|\seq{x})$应该与$\funp{P}(\seq{y})\funp{P}(\seq{x}|\seq{y})$接近,因为它们都表达了同一个联合分布$\funp{P}(\seq{x},\seq{y})$。因此,在构建训练两个方向的翻译模型的目标函数时,除了它们单独训练时各自使用的极大似然估计目标函数,可以额外增加一个目标项来鼓励两个方向的翻译模型:
曹润柘 committed
323
\begin{eqnarray}
曹润柘 committed
324
{L}_{\rm{dual}} & = & (\log{\funp{P}(\seq{x})} + \log{\funp{P}(\seq{y}|\seq{x})} - \log{\funp{P}(\seq{y})} - \log{\funp{P}(\seq{x}|\seq{y}))^{2}}
曹润柘 committed
325
\label{eq:16-4}
曹润柘 committed
326 327
\end{eqnarray}

曹润柘 committed
328
\parinterval 通过该正则化项,我们将互为对偶的两个任务放在一块学习,通过任务对偶性加强监督学习的过程,就是有监督对偶学习\upcite{DBLP:conf/icml/XiaQCBYL17,qin2020dual}。这里,$\funp{P}(\seq{x})$$\funp{P}(\seq{y})$这两个语言模型是预先训练好的,并不参与翻译模型的训练。可以看到,对于单独的一个模型来说,其目标函数增加了与另外一个方向的模型相关的项。这样的形式与L1/L2正则化非常类似(见{\chapterthirteen}),因此可以把这个方法看作是一种任务特定的正则化的手段(由翻译任务本身的性质所启发而来)。有监督对偶学习实际上要优化下面这个损失函数:
曹润柘 committed
329
\begin{eqnarray}
曹润柘 committed
330
{L} & = &  \log{\funp{P}(\seq{y}|\seq{x})}+\log{\funp{P}(\seq{x}|\seq{y})}+{L}_{\rm{dual}}
曹润柘 committed
331
\label{eq:16-5}
曹润柘 committed
332 333
\end{eqnarray}

曹润柘 committed
334 335 336 337 338 339 340
\parinterval 由于两个方向的翻译模型和语言模型相互影响,这种共同训练、共同提高的方法能得到比基于单个方向训练效果更好的模型。

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 无监督对偶学习}

341
\parinterval 如上一节所述,有监督的对偶学习需要使用双语数据来训练两个翻译模型。幸运的是,存在大量的单语数据可供使用。因此,如何使用这些单语数据来提升翻译模型的性能是一个关键问题。
曹润柘 committed
342

曹润柘 committed
343
\parinterval 无监督对偶学习为我们提供了一个思路\upcite{qin2020dual}。假设目前有两个比较弱的翻译模型,一个原始任务模型f将源语言句子$\seq{x}$翻译成目标语言句子$\seq{y}$和一个对偶任务模型g将目标语言句子$\seq{y}$翻译成源语言句子$\seq{x}$。翻译模型可由有限的双语训练或者使用无监督机器翻译的方法得到。如图\ref{fig:16-11}所示,无监督对偶学习的做法是,先通过原始任务模型$f$将一个源语言单语句子$x$翻译为目标语言句子$y$,由于没有参考译文,我们无法判断$y$的正确性。但通过语言模型,可以判断这个句子是否通顺、符合语法规范,这些信息可用来评估翻译模型$f$的翻译流畅性。随后,再通过对偶任务模型$g$将目标语言句子$y$再翻译为源语言句子$x^{'}$。如果模型$f$$g$的翻译性能较好,那么$x^{'}$$x$会十分相似。通过计算二者的{\small\bfnew{重构损失}}\index{重构损失}(Reconstruction Loss)\index{Reconstruction Loss},就可以优化模型$f$$g$的参数。这个过程可以多次迭代,从大量的无标注单语数据上不断提升性能。
曹润柘 committed
344

345
\parinterval 从统计建模的角度看,如果在有监督对偶学习对联合分布$\funp{P}(y|x)$建模的基础上把$y$看作一个隐变量,那么可以得到边缘分布$\funp{P}(x)$,也就是关于$x$的语言模型:
曹润柘 committed
346
\begin{eqnarray}
曹润柘 committed
347 348
\funp{P}(\seq{x}) &=& \sum_{\seq{y}}\funp{P}(\seq{x},\seq{y}) \nonumber \\
&=& \sum_{\seq{y}}\funp{P}(\seq{x}|\seq{y})\funp{P}(\seq{y}|\seq{x})
曹润柘 committed
349
\label{eq:16-6}
曹润柘 committed
350 351
\end{eqnarray}

曹润柘 committed
352
\parinterval 公式\eqref{eq:16-6}假设$\funp{P}(\seq{x}|\seq{y})=\funp{P}(\seq{x}|\seq{x},\seq{y})$。这个假设显然是成立的,因为当知道一个句子的译文时,并不需要知道它的源文就可以把它翻译回去。如果直接优化(最大化)公式\eqref{eq:16-6}右侧,相当于对这个等式$\funp{P}(\seq{x}|\seq{y})$$\funp{P}(\seq{y}|\seq{x})$施加了{\small\sffamily\bfnew{循环一致性}}\index{循环一致性}(Circle Consistency)\index{Circle Consistency}的约束\upcite{DBLP:conf/iccv/ZhuPIE17},也就是对于一个句子$\seq{x}$,通过$\funp{P}(\seq{y}|\seq{x})$把它翻译成$\seq{y}$后,根据$\funp{P}(\seq{x}|\seq{y})$应该能重新翻译出$\seq{x}$,如图\ref{fig:16-11}所示。公式\eqref{eq:16-6}给出了同时优化$\funp{P}(\seq{x}|\seq{y})$$\funp{P}(\seq{y}|\seq{x})$的一个目标函数形式。这个目标函数的一个额外的好处是它本质上是在学习一个由$\funp{P}(\seq{x}|\seq{y})$$\funp{P}(\seq{y}|\seq{x})$组成的语言模型$\funp{P}(\seq{x})$,而$\funp{P}(\seq{x})$的学习依赖于单语数据,这意味着这个目标函数可以很自然地直接使用大量单语数据来同时训练两个翻译模型。相同的结论可以推广到$\funp{P}(\seq{y})$\upcite{DBLP:conf/nips/HeXQWYLM16}
曹润柘 committed
353

354 355 356
%----------------------------------------------
\begin{figure}[htp]
\centering
曹润柘 committed
357
\input{./Chapter16/Figures/figure-unsupervised-dual-learning-process}
曹润柘 committed
358
\caption{无监督对偶学习流程}
曹润柘 committed
359
\label{fig:16-11}
360 361 362
\end{figure}
%----------------------------------------------

曹润柘 committed
363
\parinterval 但是直接使用公式\eqref{eq:16-6}作为目标函数需要解决两个问题:
曹润柘 committed
364 365 366

\begin{itemize}
\vspace{0.5em}
曹润柘 committed
367
\item 计算公式\eqref{eq:16-6}要枚举所有可能的隐变量$\seq{y}$的取值,也就是所有可能产生的目标语句子,而这是不可能的,因此一般会通过平均多个随机产生的$\seq{y}$对应的损失来近似真正的目标函数值;
曹润柘 committed
368

曹润柘 committed
369
\vspace{0.5em}
曹润柘 committed
370
\item 从公式\eqref{eq:16-6}可以看到,在$\funp{P}(\seq{x})$上计算完目标函数值后,得到的梯度首先传递给$\funp{P}(\seq{x}|\seq{y})$,然后通过$\funp{P}(\seq{x}|\seq{y})$传递给$\funp{P}(\seq{y}|\seq{x})$。由于$\funp{P}(\seq{x}|\seq{y})$的输入$\seq{y}$是由$\funp{P}(\seq{y}|\seq{x})$采样得到,而采样操作不可导,这会导致梯度的传播在$\funp{P}(\seq{y}|\seq{x})$的输出处断开了,因此$\funp{P}(\seq{y}|\seq{x})$接收不到任何梯度来进行更新。常见的解决方案是使用策略梯度\upcite{DBLP:conf/nips/SuttonMSM99}。策略梯度的基本思想如下:如果在执行某个动作之后,获得了一个不错的反馈,那么可以调整策略来增加这个状态下执行该动作的概率;反之,如果采取某个动作后获得了一个负反馈,就需要调整策略来降低这个状态下执行该动作的概率。在算法的实现上,首先对两个翻译模型求梯度,然后在策略调整时选择将梯度加到模型上(获得正反馈)或者减去该梯度(获得负反馈)。
曹润柘 committed
371

曹润柘 committed
372 373 374 375
\vspace{0.5em}
\end{itemize}

%----------------------------------------------------------------------------------------
曹润柘 committed
376 377
%    NEW SECTION
%----------------------------------------------------------------------------------------
曹润柘 committed
378
\section{多语言翻译模型}\label{multilingual-translation-model}
曹润柘 committed
379

曹润柘 committed
380
\parinterval 低资源机器翻译面临的主要挑战是缺乏大规模高质量的双语数据。这个问题往往伴随着多语言的翻译任务\upcite{dabre2019brief,dabre2020survey}。也就是,要同时开发多个不同语言之间的机器翻译系统,其中少部分语言是富资源语言,而其它语言是低资源语言。针对低资源语种双语数据稀少或者缺失的情况,一种常见的思路是利用富资源语种的数据或者系统帮助低资源机器翻译系统。这也构成了多语言翻译的思想,并延伸出大量的研究工作,有三个典型研究方向:
曹润柘 committed
381 382 383

\begin{itemize}
\vspace{0.5em}
384
\item 基于枢轴语言的方法,即以资源丰富的语言(通常为英语、汉语等)为中心,在语言对之间进行翻译\upcite{DBLP:conf/emnlp/KimPPKN19}
曹润柘 committed
385
\vspace{0.5em}
386
\item 基于知识蒸馏的方法,即用枢轴语言到目标语言的训练指导源语言到目标语言的训练\upcite{DBLP:conf/acl/ChenLCL17}
曹润柘 committed
387 388 389 390 391
\vspace{0.5em}
\item 基于迁移学习的方法,即从富资源语言对中转移翻译知识以改善低资源语言对的翻译\upcite{DBLP:conf/emnlp/KimPPKN19},比如,将富资源的翻译知识迁移到零资源翻译模型上,即在没有双语训练数据的语言对之间进行翻译\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17}
\vspace{0.5em}
\end{itemize}

曹润柘 committed
392
\parinterval 本小节将对上面三种典型方法进行讨论。
曹润柘 committed
393 394 395 396 397

%----------------------------------------------------------------------------------------
%    NEW SUB-SECTION
%----------------------------------------------------------------------------------------

398
\subsection{基于枢轴语言的方法}
曹润柘 committed
399

曹润柘 committed
400
\parinterval 传统的多语言翻译中,广泛使用的是{\small\bfnew{基于枢轴语言的翻译}}(Pivot-based Translation)\upcite{DBLP:conf/emnlp/KimPPKN19}。在这种方法中,会使用一种数据丰富语言作为{\small\bfnew{中介语言}}\index{中介语言}或者{\small\bfnew{枢轴语言}}\index{枢轴语言}(Pivot Language)\index{Pivot Language},之后让源语言和目标语言向枢轴语言进行翻译。这样,通过资源丰富的中介语言将源语言和目标语言桥接在一起,达到解决源语言-目标语言双语数据缺乏的问题。比如,想要得到泰语到波兰语的翻译,可以通过英语做枢轴语言。通过“泰语$\to$英语$\to$波兰语”的翻译过程完成泰语到波兰语的转换。
曹润柘 committed
401

曹润柘 committed
402
\parinterval 基于枢轴语的方法很早就出现在基于统计机器翻译中。在基于短语的机器翻译中,已经有很多方法建立了源到枢轴和枢轴到目标的短语/单词级别特征,并基于这些特征开发了源语言到目标语言的系统\upcite{DBLP:conf/naacl/UtiyamaI07,DBLP:journals/mt/WuW07,Farsi2010somayeh,DBLP:conf/acl/ZahabiBK13,DBLP:conf/emnlp/ZhuHWZWZ14,DBLP:conf/acl/MiuraNSTN15},这些系统也已经广泛用于翻译稀缺资源语言对\upcite{DBLP:conf/acl/CohnL07,DBLP:journals/mt/WuW07,DBLP:conf/acl/WuW09}。由于基于枢轴语的方法与模型结构无关,因此该方法也快速适用于神经机器翻译,并且取得了不错的效果\upcite{DBLP:conf/emnlp/KimPPKN19,DBLP:journals/corr/ChengLYSX16}。比如,可以直接使用源语言到枢轴语言和枢轴语言到目标语言这两个神经机器翻译模型,之后分别用两个模型进行翻译,得到最终的结果\upcite{DBLP:conf/interspeech/KauersVFW02,de2006catalan}。在实现过程中,可以在枢轴语言中保留多个最佳翻译假设,以减少预测偏差\upcite{DBLP:conf/naacl/UtiyamaI07},并通过多系统融合改进最终翻译\upcite{DBLP:conf/ijcnlp/Costa-JussaHB11}
曹润柘 committed
403

曹润柘 committed
404
\parinterval 基于枢轴语言的方法可以被描述为如图\ref{fig:16-12}所示的过程。这里,使用虚线表示具有双语平行语料库的语言对,并使用带有箭头的实线表示翻译方向,令$\seq{x}$$\seq{y}$$\seq{p}$分别表示源语言,目标语言和枢轴语言,对于输入源语言句子$\seq{x}$和目标语言句子$\seq{y}$,其翻译过程可以被建模为如下公式:
曹润柘 committed
405
%----------------------------------------------
曹润柘 committed
406 407
\begin{figure}[h]
\centering
曹润柘 committed
408
\input{Chapter16/Figures/figure-pivot-based-translation-process}
409
\caption{基于枢轴语言的翻译过程}
曹润柘 committed
410
\label{fig:16-12}
曹润柘 committed
411
\end{figure}
曹润柘 committed
412 413
%----------------------------------------------
\begin{eqnarray}
曹润柘 committed
414
{\funp{P}(\seq{y}|\seq{x})} & = & {\sum_{\seq{p}}{\funp{P}(\seq{p}|\seq{x})\funp{P}(\seq{y}|\seq{p})}}
曹润柘 committed
415
\label{eq:16-7}
曹润柘 committed
416
\end{eqnarray}
曹润柘 committed
417

曹润柘 committed
418
\noindent 其中,$\seq{p}$表示一个枢轴语言句子, $\funp{P(\seq{y}|\seq{x})}$为从源语言句子$\seq{x}$翻译到目标语言句子$\seq{y}$的概率,$\funp{P}(\seq{p}|\seq{x})$为从源语言句子$\seq{x}$翻译到枢轴语言语句子$\seq{p}$的概率,$\funp{P}(\seq{y}|\seq{p})$为从枢轴语言句子$\seq{p}$到目标语言句子$\seq{y}$的概率。
曹润柘 committed
419

曹润柘 committed
420
\parinterval $\funp{P}(\seq{p}|\seq{x})$$\funp{P}(\seq{y}|\seq{p})$可以直接复用既有的模型和方法。不过,枚举所有的枢轴语言句子$\seq{p}$是不可行的。因此一部分研究工作也探讨了如何选择有效的路径,从$\seq{x}$经过少量$\seq{p}$到达$\seq{y}$\upcite{DBLP:conf/naacl/PaulYSN09}
曹润柘 committed
421

曹润柘 committed
422
\parinterval 虽然基于枢轴语言的方法简单且易于实现,但该方法仍有一些不足。例如,它需要两次翻译过程,因此增加了翻译时间。而且在两次翻译中,翻译错误会进行累积从而产生错误传播问题,导致模型翻译准确性降低。此外,基于枢轴的语言仍然假设源语言和枢轴语言(或者目标语言和枢轴语言)之间存在一定规模的双语平行数据,但是这个假设在很多情况下并不成立。比如,对于一些资源极度稀缺的语言,其到英语或者汉语的双语数据仍然十分缺乏,这时使用基于枢轴语言的方法的效果往往也并不理想。虽然存在以上问题,但是基于枢轴语言的方法仍然受到工业界的青睐,很多在线翻译引擎也在大量使用这种方法进行多语言的翻译。
曹润柘 committed
423 424 425 426 427

%----------------------------------------------------------------------------------------
%    NEW SUB-SECTION
%----------------------------------------------------------------------------------------

428
\subsection{基于知识蒸馏的方法}
曹润柘 committed
429

曹润柘 committed
430
\parinterval 为了解决基于枢轴语言的问题,研究人员提出基于知识蒸馏的方法\upcite{DBLP:conf/acl/ChenLCL17,DBLP:conf/iclr/TanRHQZL19}。知识蒸馏是一种常用的模型压缩方法\upcite{Hinton2015Distilling},基于教师-学生框架,在第十三章已经进行了详细介绍。针对稀缺资源任务,基于教师-学生框架的方法基本思想如图\ref{fig:16-13}所示。其中,虚线表示具有平行语料库的语言对,带有箭头的实线表示翻译方向。这里,将枢轴语言($\seq{p}$)到目标语言($\seq{y}$)的翻译模型$\funp{P}(\seq{y}|\seq{p})$当作教师模型,源语言($\seq{x}$)到目标语言($\seq{y}$)的翻译模型$\funp{P}(\seq{y}|\seq{x})$当作学生模型。然后,用教师模型来指导学生模型的训练,这个过程中学习的目标就是让$\funp{P}(\seq{y}|\seq{x})$尽可能地接近$\funp{P}(\seq{y}|\seq{p})$,这样学生模型就可以学习到源语言到目标语言的翻译知识。
曹润柘 committed
431
%----------------------------------------------
曹润柘 committed
432 433
\begin{figure}[h]
\centering
曹润柘 committed
434
\input{Chapter16/Figures/figure-knowledge-distillation-based-translation-process}
曹润柘 committed
435
\caption{基于知识蒸馏的翻译过程}
曹润柘 committed
436
\label{fig:16-13}
曹润柘 committed
437
\end{figure}
曹润柘 committed
438
%----------------------------------------------
曹润柘 committed
439

曹润柘 committed
440
\parinterval 需要注意的是,基于知识蒸馏的方法需要基于翻译对等假设,该假设为:如果源语言句子$\seq{x}$、枢轴语言句子$\seq{p}$和目标语言句子$\seq{y}$这三个句子互译,则从源语言句子$\seq{x}$生成目标语言句子$\seq{y}$的概率$\funp{P}(\seq{y}|\seq{x})$应接近从枢轴语言句子$\seq{p}$生成目标语言句子$\seq{y}$的概率$\funp{P}(\seq{y}|\seq{p})$,即:
曹润柘 committed
441

曹润柘 committed
442
\begin{eqnarray}
曹润柘 committed
443
{\funp{P}(\seq{y}|\seq{x})} & \approx & {\funp{P}(\seq{y}|\seq{p})}
曹润柘 committed
444
\label{eq:16-8}
曹润柘 committed
445
\end{eqnarray}
曹润柘 committed
446

曹润柘 committed
447
\parinterval 和基于枢轴语言的方法相比,基于教师-学生框架的方法无需训练源语言到枢轴语言的翻译模型,也就无需经历两次翻译过程,翻译效率有所提升,又避免了两次翻译所面临的错误传播问题。举个例子,假设图\ref{fig:16-13}$\seq{x}$为源语言德语 “hallo”,$\seq{p}$为中间语言英语 “hello”,$\seq{y}$为目标语言法语“bonjour”,则德语“hallo”翻译为法语“bonjour”的概率应该与英语“hello”翻译为法语“bonjour”的概率相近。
曹润柘 committed
448

曹润柘 committed
449
\parinterval 相较于基于枢轴语言的方法,基于知识蒸馏的方法无论在性能还是效率上都具有一定优势。但是,它仍然需要显性的使用枢轴语言进行桥接,因此仍然面临着“源语言$\to$枢轴语言$\to$目标语言”转换中信息丢失的问题。比如,当枢轴语言到目标语言翻译效果较差时,由于教师模型无法提供准确的指导,学生模型也无法取得很好的学习效果。
曹润柘 committed
450 451 452 453 454 455 456

%----------------------------------------------------------------------------------------
%    NEW SUB-SECTION
%----------------------------------------------------------------------------------------

\subsection{基于迁移学习的方法}

曹润柘 committed
457
\parinterval {\small\bfnew{迁移学习}}\index{迁移学习}(Transfer Learning)\index{Transfer Learning}是一种机器学习的方法,指的是一个预训练的模型被重新用在另一个任务中,而并不是从头训练一个新的模型\upcite{DBLP:conf/ijcnlp/Costa-JussaHB11,DBLP:journals/corr/HintonVD15}。迁移学习的目标是将某个领域或任务上学习到的知识应用到不同但相关的领域或问题中。在机器翻译中,可以用资源丰富的语言对中的知识来改进稀缺资源语言对上的神经机器翻译性能,即将富资源语言对中的知识迁移到稀缺资源知识中。
曹润柘 committed
458

曹润柘 committed
459
\parinterval 基于枢轴语言的方法需要显性地建立“源语言$\to$枢轴语言$\to$目标语言”的路径。这时,如果路径中某处出现了问题,就会成为整个路径的瓶颈。如果使用多个枢轴语言,这个问题就会更加严重。不同于基于枢轴语言的方法,迁移学习无需进行两步解码,也就避免了翻译路径中累积错误的问题。
曹润柘 committed
460

曹润柘 committed
461
\parinterval 基于迁移学习的方法思想非常简单,如图\ref{fig:16-14}所示。这种方法无需像传统的机器学习一样为每个任务单独训练一个模型,它将所有任务分类为源任务和目标任务,目标就是将源任务中的知识迁移到目标任务当中
曹润柘 committed
462
%----------------------------------------------
曹润柘 committed
463 464
\begin{figure}[h]
\centering
曹润柘 committed
465
\input{Chapter16/Figures/figure-contrast-of-traditional-machine-learning&transfer-learning}
曹润柘 committed
466
\caption{传统机器学习和迁移学习方法对比}
曹润柘 committed
467
\label{fig:16-14}
曹润柘 committed
468
\end{figure}
曹润柘 committed
469
%----------------------------------------------
曹润柘 committed
470 471 472 473 474 475

\parinterval 在迁移学习中,所有任务的输出空间(词表)一样,但是服从不同的数据分布。由于不同语言空间(词表)不一样,所以多语言任务本身并不是迁移学习问题,因此可以进行共享词表,让所有语言使用同一个空间(词表)来使得多语言任务变成迁移学习问题。

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
曹润柘 committed
476
\subsubsection{1. 参数初始化方法}
曹润柘 committed
477

曹润柘 committed
478
\parinterval 在解决多语言翻译这个问题的具体做法中,首先需要在富资源语言对上训练一个模型,将其称为{\small\bfnew{父模型}}\index{父模型}(Parent Model)\index{Parent Model}。在父模型的参数进行模型初始化基础上,训练资源不足的稀缺资源语言对模型,称之为{\small\bfnew{子模型}}\index{子模型}(Child Model)\index{Child Model},这意味着低资源翻译模型将不会从随机权重开始学习,而是从父模型的权重开始\upcite{gu2018meta,DBLP:conf/icml/FinnAL17,DBLP:conf/naacl/GuHDL18},参数初始化也是迁移学习的核心方法。在图\ref{fig:16-15}中,左侧模型为父模型,右侧模型为子模型。这里假设从英语到汉语的翻译为富资源翻译,从英语到德语的翻译为稀缺资源翻译,则首先用英中双语平行语料库训练出一个初始化的父模型,之后再用英语到德语的数据在父模型上微调得到子模型,这个子模型即为我们想要得到的迁移学习的模型。此过程可以看作是在富资源训练模型上对稀缺资源语言对进行微调,将富资源语言对中的知识迁移到稀缺资源语言对中,从而提升稀缺资源语言对的模型性能。
曹润柘 committed
479
%----------------------------------------------
曹润柘 committed
480 481
\begin{figure}[h]
\centering
曹润柘 committed
482
\input{Chapter16/Figures/figure-parameter-initialization-method-diagram}
曹润柘 committed
483
\caption{参数初始化方法图}
曹润柘 committed
484
\label{fig:16-15}
曹润柘 committed
485
\end{figure}
曹润柘 committed
486
%----------------------------------------------
曹润柘 committed
487 488 489 490 491 492 493 494

\parinterval 尽管这种方法在某些资源匮乏的语言对中取得了成功,但在资源极度匮乏或零资源的翻译方案中仍然表现不佳。具体而言,如果没有任何子模型训练数据,则父模型在子测试集上的性能会很糟糕\upcite{DBLP:conf/wmt/KocmiB18}

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 多语言单模型系统}

495
\parinterval 多语言单模型方法也可以被看做是一种迁移学习。多语言单模型方法能够有效地改善低资源神经机器翻译性能\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17,DBLP:conf/lrec/RiktersPK18,dabre2019brief},尤其适用于翻译方向较多的情况,因为为每一个翻译方向单独训练一个模型是不实际的,不仅由于设备资源和时间上的限制,还由于很多翻译方向都没有双语平行数据。比如,要翻译100个语言之间的互译的系统,理论上就需要训练$100 \times 99$个翻译模型,代价是十分巨大的。这时就需要用到{\small\bfnew{多语言单模型方法}}\index{多语言单模型方法}(Multi-lingual Single Model-based Method\index{Multi-lingual Single Model-based Method})。
曹润柘 committed
496

曹润柘 committed
497
\parinterval 多语言单模型系统即用单个模型训练具有多个语言翻译方向的系统。对于源语言集合$\seq{G}_x$和目标语言集合$\seq{G}_y$,多语言单模型的学习目标是学习一个单一的模型,这个模型可以进行任意源语言到任意目标语言的翻译,即同时支持所有$(x,y) \in (\seq{G}_x,\seq{G}_y)$的翻译。多语言单模型方法又可以进一步分为一对多\upcite{DBLP:conf/acl/DongWHYW15}、多对一\upcite{DBLP:journals/tacl/LeeCH17}和多对多\upcite{DBLP:conf/naacl/FiratCB16}的方法。不过这些方法本质上是相同的,因此这里以多对多翻译为例进行介绍。
曹润柘 committed
498

曹润柘 committed
499
\parinterval 在模型结构方面,多语言模型与普通的神经机器翻译模型相同,都是标准的编码器-解码器结构。多语言单模型方法的一个假设是:不同语言可以共享同一个表示空间。因此,该方法使用同一个编码器处理所有的源语言句子,使用同一个解码器处理所有的目标语言句子。为了使多个语言共享同一个解码器(或编码器),一种简单的方法是直接在输入句子上加入语言标记,让模型显性地知道当前句子属于哪个语言。如图\ref{fig:16-16}所示,在此示例中,标记“ <spanish>”表示目标句子为西班牙语,标记“ <german>”表示目标句子为德语,则模型在进行翻译时便会将句子开头加有<spanish>标签的句子翻译为西班牙语\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17}。假设训练时有英语到西班牙语 “<spanish> Hello”$\to$“Hola”和法语到德语“<german> Bonjour”$\to$“Hallo” 的双语句对,则在解码时候输入英语“<german> Hello”时就会得到解码结果“Hallo”。
曹润柘 committed
500
%----------------------------------------------
曹润柘 committed
501 502
\begin{figure}[h]
\centering
曹润柘 committed
503
\input{Chapter16/Figures/figure-multi-language-single-model-system-diagram}
曹润柘 committed
504
\caption{参数初始化方法图}
曹润柘 committed
505
\label{fig:16-16}
曹润柘 committed
506
\end{figure}
曹润柘 committed
507
%----------------------------------------------
曹润柘 committed
508

曹润柘 committed
509
\parinterval 多语言单模型系统无需训练基于枢轴语言的翻译系统,而是共享多个语言的编码器和解码器,因此极大地提升了训练效率,同时更适用于某些语言翻译方向训练数据极度稀缺的情况。
曹润柘 committed
510 511 512 513 514 515

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 零资源翻译}

曹润柘 committed
516
\parinterval 零资源翻译是一种较为极端的情况:源语言和目标语言之间没有任何对齐的数据。这时,需要学到一个模型,即使在没看到这个翻译任务中的训练数据的情况下,它仍然能通过这个模型得到这个翻译任务上的译文结果。本质上,零资源翻译也是一种迁移学习\upcite{DBLP:books/crc/aggarwal14/Pan14,DBLP:journals/tkde/PanY10},只是迁移的目标任务没有直接可以用的数据。
曹润柘 committed
517

518
\parinterval 以德语到西班牙语的翻译为例,假设此翻译语言方向为零资源,即没有德语到西班牙语的训练数据,因此不适用于多语言单模型系统中提到的一对多或多对一的情况,只适用于多对多的翻译情况。在翻译时,训练数据的源语言可以进行加标签指定或是不指定目标语言种类,若不进行指定,存在潜在的缺点就是具有相同拼写但属于不同源语言的不同含义的单词可能难以翻译,但优点是整个多语言翻译的流程更简单。在翻译时假设多语言单模型系统中已经学习到了德语到英语和英语到西班牙语的翻译,那么模型也可以进行德语到西班牙语的翻译。从这个角度说,零资源神经机器翻译也需要枢轴语言,只是这些枢轴语言数据仅在训练期间使用\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17},而无需生成伪并行语料库。
曹润柘 committed
519 520 521 522 523

\parinterval 需要注意的是,零资源翻译中多个语言共享同一个表示模型这个假设并不是永远成立。比如,汉语和英语的文字符号不同,因此用同一个表示模型对其进行表示会产生较大的偏差。因此,对于语言差异较大,且数据量不充分的情况,使用多语言单模型方法仍然有较大挑战:

\begin{itemize}
\vspace{0.5em}
曹润柘 committed
524
\item 父模型和子模型之间的语言空间不匹配问题:父模型使用的语言跟子模型使用的语言的数据很少甚至没有(零资源)的情况下,无法通过训练弥补父模型跟子模型之间的差异,因此微调的结果很差。一种解决方案是先预训练一个多语言的模型,然后固定这个预训练模型的部分参数后训练父模型,最后从父模型中微调子模型\upcite{ji2020cross}。这样做的好处在于先用预训练提取父模型的任务和子模型的任务之间通用的信息(保存在模型参数里),然后强制在训练父模型的时候保留这些信息(通过固定参数),这样最后微调子模型的时候就可以利用这些通用信息,减少父模型和子模型之间的差异,使得微调的结果得到提升\upcite{DBLP:conf/emnlp/LinPWQFZL20}
曹润柘 committed
525
\vspace{0.5em}
曹润柘 committed
526
\item 脱靶翻译问题:多语言单模型系统经常出现脱靶翻译问题,即把源语言翻译成错误的目标语言,比如要求翻译成英语,结果却是汉语或者英语夹杂其他语言的字符。这是因为多语言单模型系统对所有语言都使用一样的参数,导致每个语言竞争系统固定的建模能力。针对这个问题研究人员提出在原来共享参数的基础上为每种语言添加额外的独立的参数,使得每种语言拥有足够的建模能力,以便于特定语言的翻译\upcite{DBLP:conf/acl/ZhangWTS20,DBLP:journals/corr/abs-2010-11125}
曹润柘 committed
527 528 529 530
\vspace{0.5em}
\end{itemize}

%----------------------------------------------------------------------------------------
曹润柘 committed
531
%    NEW SECTION 16.4
曹润柘 committed
532 533 534 535
%----------------------------------------------------------------------------------------

\section{无监督机器翻译}

曹润柘 committed
536
\parinterval 低资源机器翻译的一种极端情况是:没有任何可以用于模型训练的双语平行数据。一种思路是借用多语言翻译方面的技术(参考\ref{multilingual-translation-model}节),利用基于枢轴语言或者零资源的方法构建翻译系统。但是,这类方法仍然需要多个语种的平行数据。对于某一个语言对,在只有源语言和目标语言单语数据的前提下,是否仍然可以训练一个有效的翻译模型呢?我们称这种不需要双语数据的机器翻译方法为{\small\bfnew{无监督机器翻译}}\index{无监督机器翻译}(Un-supervised Machine Translation\index{Un-supervised Machine Translation})。
曹润柘 committed
537

曹润柘 committed
538
\parinterval 直接进行无监督机器翻译是困难的。一个简单可行的思路是先把问题进行分解,然后分别解决各个子问题,最后形成完整的解决方案。放到无监督机器翻译里面,可以首先使用无监督方法寻找词与词之间的翻译,然后在此基础上,进一步得到句子到句子的翻译模型。
曹润柘 committed
539 540 541


%----------------------------------------------------------------------------------------
曹润柘 committed
542
%    NEW SUB-SECTION 16.4.1
曹润柘 committed
543 544
%----------------------------------------------------------------------------------------

曹润柘 committed
545
\subsection{无监督词典归纳}\label{unsupervised-dictionary-induction}
曹润柘 committed
546

曹润柘 committed
547
\parinterval {\small\bfnew{词典归纳}}\index{词典归纳}(Bilingual Dictionary Induction,BDI\index{Bilingual Dictionary Induction}),也叫{\small\bfnew{词典推断}},是实现语种间单词级别翻译的任务。在统计机器翻译中,词典归纳是一项核心的任务,它从双语平行语料中发掘互为翻译的单词,是翻译知识的主要来源\upcite{黄书剑0统计机器翻译中的词对齐研究}。在端到端神经机器翻译中,词典归纳通常作为一个下游任务被用到无监督机器翻译、多语言机器翻译等任务中。在神经机器翻译中,单词通过连续化的向量来表示,即词嵌入。所有单词分布在一个高维的空间中,基于人们对词嵌入空间的观察发现:连续的单词嵌入空间在各种语言中显示出类似的结构,这使得直接利用词嵌入来构建双语词典成为可能\upcite{DBLP:journals/corr/MikolovLS13}。其基本想法是先将来自不同语言的词嵌入投影到共享嵌入空间中,然后在此共享空间中归纳出双语词典,原理图如图\ref{fig:16-17}所示。研究人员进行了众多的尝试,较早的尝试是使用一个包含数千词对的种子词典作为锚点来学习从源语言到目标语词言嵌入空间的线性映射,将两个语言的词汇投影到共享的嵌入空间之后,执行一些对齐算法即可得到双语词典\upcite{DBLP:journals/corr/MikolovLS13}。最近的研究表明,词典归纳可以在更弱的监督信号下完成,这些监督信号来自数百对小词典\upcite{DBLP:conf/acl/VulicK16}、 相同的字符串\upcite{DBLP:conf/iclr/SmithTHH17},甚至仅仅是共享的数字\upcite{DBLP:conf/acl/ArtetxeLA17}
曹润柘 committed
548
%----------------------------------------------
曹润柘 committed
549 550
\begin{figure}[h]
\centering
曹润柘 committed
551 552
\input{Chapter16/Figures/figure-shared-space-inductive-bilingual-dictionary.tex}
\caption{词典归纳原理图}
曹润柘 committed
553
\label{fig:16-17}
曹润柘 committed
554
\end{figure}
曹润柘 committed
555
%----------------------------------------------
曹润柘 committed
556

曹润柘 committed
557
\parinterval 研究人员也提出了完全无监督的词典归纳方法,这类方法不依赖于任何种子词典即可实现词典归纳,下面进行介绍。
曹润柘 committed
558 559

%----------------------------------------------------------------------------------------
曹润柘 committed
560
%    NEW SUB-SUB-SECTION
曹润柘 committed
561 562 563
%----------------------------------------------------------------------------------------
\subsubsection{1. 方法框架}

曹润柘 committed
564
\parinterval 无监督词典归纳的核心思想是充分利用词嵌入空间近似同构的假设\upcite{DBLP:conf/emnlp/XuYOW18},基于一些无监督匹配的方法来得到一个初始化的种子词典,之后利用该种子词典作为起始监督信号不断进行微调进一步提高性能。总结起来,无监督词典归纳系统通常包括以下两个阶段:
曹润柘 committed
565 566 567

\begin{itemize}
\vspace{0.5em}
曹润柘 committed
568
\item 基于无监督的分布匹配。该步骤利用一些无监督的方法来得到一个包含噪声的初始化词典D。
曹润柘 committed
569
\vspace{0.5em}
曹润柘 committed
570
\item 基于有监督的微调。利用两个单语词嵌入和第一步中学习到的种子字典执行一些对齐算法来迭代微调,例如,{\small\bfnew{普氏分析}}\index{普氏分析}(Procrustes Analysis\index{Procrustes Analysis}\upcite{1966ASchnemann}
曹润柘 committed
571 572 573
\vspace{0.5em}
\end{itemize}

曹润柘 committed
574
\parinterval 其具体流程图如\ref{fig:16-18}所示,包括:
曹润柘 committed
575 576 577

\begin{itemize}
\vspace{0.5em}
曹润柘 committed
578
\item 对于图\ref{fig:16-18}(a)中的分布在不同空间中的两个单语词嵌入$\mathbi{X}$$\mathbi{Y}$,基于两者近似同构的假设,利用无监督匹配的方法来得到一个粗糙的线性映射$\mathbi{W}$,使得两个空间能大致对齐,结果如图\ref{fig:16-18}(b)所示。
曹润柘 committed
579
\vspace{0.5em}
曹润柘 committed
580
\item 在此共享空间中执行对齐算法从而归纳出一个种子词典,如图\ref{fig:16-18}(c)所示。
曹润柘 committed
581
\vspace{0.5em}
曹润柘 committed
582
\item 利用种子词典不断迭代微调进一步提高映射$\mathbi{W}$的性能,最终映射的效果如图\ref{fig:16-18}(d)所示,之后即可从中推断出词典作为最后的结果。
曹润柘 committed
583 584
\vspace{0.5em}
\end{itemize}
曹润柘 committed
585
%----------------------------------------------
曹润柘 committed
586 587
\begin{figure}[h]
\centering
曹润柘 committed
588 589
\input{Chapter16/Figures/figure-bilingual-dictionary-Induction}
\caption{无监督词典归纳流程图\upcite{DBLP:conf/iclr/LampleCRDJ18}}
曹润柘 committed
590
\label{fig:16-18}
曹润柘 committed
591
\end{figure}
曹润柘 committed
592
%----------------------------------------------
曹润柘 committed
593

曹润柘 committed
594 595 596 597
\parinterval 不同的无监督方法最大的区别主要在于第一阶段,获得初始种子词典的手段,第二阶段微调的原理都大同小异。第一阶段的主流方法主要有两大类:

\begin{itemize}
\vspace{0.5em}
曹润柘 committed
598
\item 基于GAN的方法\upcite{DBLP:conf/iclr/LampleCRDJ18,DBLP:conf/acl/ZhangLLS17,DBLP:conf/emnlp/XuYOW18,DBLP:conf/naacl/MohiuddinJ19}。在这个方法中,通过生成器来产生映射$\mathbi{W}$,鉴别器负责区分随机抽样的元素$\mathbi{W}\cdot \mathbi{X}$$\mathbi{Y}$,两者共同优化收敛后即可得到映射$\mathbi{W}$
曹润柘 committed
599
\vspace{0.5em}
曹润柘 committed
600
\item 基于Gromov-Wasserstein 的方法\upcite{DBLP:conf/emnlp/Alvarez-MelisJ18,DBLP:conf/lrec/GarneauGBDL20,DBLP:journals/corr/abs-1811-01124,DBLP:conf/emnlp/XuYOW18}。Wasserstein距离是度量空间中定义两个概率分布之间距离的函数。在这个任务中,它用来衡量不同语言中单词对之间的相似性,利用空间近似同构的信息可以定义出一些目标函数,之后通过优化该目标函数也可以得到映射$\mathbi{W}$
曹润柘 committed
601 602 603
\vspace{0.5em}
\end{itemize}

曹润柘 committed
604
\parinterval 在得到映射$\mathbi{W}$之后,对于$\mathbi{X}$中的任意一个单词$x_{i}$,通过$\mathbi{W}\cdot \mathbi{E}({x}_{i})$将其映射到空间$\mathbi{y}$中($\mathbi{E}({x}_{i})$表示的是单词$x_{i}$的词嵌入向量),然后在$\mathbi{Y}$中找到该点的最近邻点$y_{j}$,于是$y_{j}$就是$x_{i}$的翻译词,重复该过程即可归纳出种子词典$D$,第一阶段结束。事实上,由于第一阶段缺乏监督信号,得到的种子词典$D$会包含大量的噪音,性能并不高,因此需要进行进一步的微调。
曹润柘 committed
605

曹润柘 committed
606
\parinterval 微调的原理普遍基于普氏分析\upcite{DBLP:journals/corr/MikolovLS13}。假设现在有一个种子词典$D=\left\{x_{i}, y_{i}\right\}$其中${i \in\{1, n\}}$,和两个单语词嵌入$\mathbi{X}$$\mathbi{Y}$,那么就可以将$D$作为{\small\bfnew{映射锚点}}\index{映射锚点}(Anchor\index{Anchor})学习一个转移矩阵$\mathbi{W}$,使得$\mathbi{W}\cdot \mathbi{X}$$\mathbi{Y}$这两个空间尽可能相近,此外通过对$\mathbi{W}$施加正交约束可以显著提高能\upcite{DBLP:conf/naacl/XingWLL15},于是这个优化问题就转变成了{\small\bfnew{普鲁克问题}}\index{普鲁克问题}(Procrustes Problem\index{Procrustes Problem}\upcite{DBLP:conf/iclr/SmithTHH17},可以通过{\small\bfnew{奇异值分解}}\index{奇异值分解}(Singular Value Decomposition,SVD\index{Singular Value Decomposition,SVD})来获得近似解:
曹润柘 committed
607 608

\begin{eqnarray}
曹润柘 committed
609
\mathbi{W}^{\star} & = &\underset{\mathbi{W} \in O_{d}(\mathbb{R})}{\operatorname{argmin}}\|\mathbi{W}\cdot \mathbi{X}'- \mathbi{Y}' \|_{\mathrm{F}}=\mathbi{U}\cdot \mathbi{V}^{\rm{T}} \\ \label{eq:16-9}
曹润柘 committed
610
\textrm{s.t.\ \ \ \ } \mathbi{U} \Sigma \mathbi{V}^{\rm{T}} &= &\operatorname{SVD}\left(\mathbi{Y}'\cdot \mathbi{X}'^{\rm{T}}\right)
曹润柘 committed
611
\label{eq:16-10}
曹润柘 committed
612 613
\end{eqnarray}

曹润柘 committed
614
\noindent 其中, $\operatorname{SVD}(\cdot)$表示奇异值分解,$\mathbi{Y}'$$\mathbi{X}'$中的单词来自$D$且行对齐。利用上式可以获得新的$\mathbi{W}$,通过$\mathbi{W}$可以归纳出新的$D$,如此迭代进行微调最后即可以得到收敛的$D$
曹润柘 committed
615

曹润柘 committed
616
\parinterval 较早的无监督方法是基于GAN的方法\upcite{DBLP:conf/acl/ZhangLLS17,DBLP:conf/emnlp/ZhangLLS17,DBLP:conf/iclr/LampleCRDJ18},这是一个很自然的想法,利用生成器产生映射然后用判别器来区别两个空间,尽管它取得了不错的效果,然而研究表明GAN缺乏稳定性,容易在低资源语言对上失败\upcite{hartmann2018empirical},因此有不少改进的工作,比如:利用{\small\bfnew{变分自编码器}}\index{变分自编码器}(Variational Autoencoders,VAEs)\index{Variational Autoencoders}来捕获更深层次的语义信息并结合对抗训练的方法\upcite{DBLP:conf/emnlp/DouZH18,DBLP:conf/naacl/MohiuddinJ19};通过改进最近邻点的度量函数来提升性能的方法\upcite{DBLP:conf/acl/HuangQC19,DBLP:conf/emnlp/JoulinBMJG18};利用多语言信号来提升性能的方法\upcite{DBLP:conf/emnlp/ChenC18,DBLP:conf/emnlp/TaitelbaumCG19,DBLP:journals/corr/abs-1811-01124,DBLP:conf/naacl/HeymanVVM19};也有一些工作舍弃GAN,通过直接优化度量空间距离来进行匹配的方法\upcite{DBLP:conf/emnlp/HoshenW18,DBLP:conf/emnlp/XuYOW18,DBLP:conf/emnlp/Alvarez-MelisJ18,DBLP:conf/emnlp/MukherjeeYH18}。此外,也有另外一些工作是旨在分析或提升无监督词典归纳的鲁棒性。比如通过大量实验来分析无监督词典归纳任务的局限性、难点以及挑战\upcite{DBLP:conf/acl/SogaardVR18,DBLP:conf/acl/OrmazabalALSA19,DBLP:conf/emnlp/VulicGRK19,DBLP:conf/emnlp/HartmannKS18};分析和对比目前各种无监督方法的性能\upcite{DBLP:conf/nips/HartmannKS19};通过实验分析指出目前所用的数据集存在的问题\upcite{DBLP:conf/emnlp/Kementchedjhieva19}
曹润柘 committed
617

曹润柘 committed
618

曹润柘 committed
619
%----------------------------------------------------------------------------------------
曹润柘 committed
620
%    NEW SUB-SUB-SECTION
曹润柘 committed
621 622 623
%----------------------------------------------------------------------------------------
\subsubsection{2. 鲁棒性问题}

曹润柘 committed
624
\parinterval 目前很多无监督词典归纳方法在相似语言对比如英-法,英-德已经取得不错的结果,然而在远距离语言对比如英-中,英-日等性能仍然很差\upcite{DBLP:conf/emnlp/VulicGRK19,A2020Li}。无监督词典归纳的鲁棒性仍然存在巨大的挑战。这有多个层面的原因:
曹润柘 committed
625 626 627

\begin{itemize}
\vspace{0.5em}
曹润柘 committed
628
\item 首先词典归纳依赖于基于大规模单语语料训练出来的词嵌入,而词嵌入会受到单语数据的来源领域及数量、词向量训练算法、超参数配置等多方面因素的影响,这很容易导致假设的失效,从而使得模型运行失败。
曹润柘 committed
629 630
\vspace{0.5em}

曹润柘 committed
631
\item 词典归纳强烈依赖于词嵌入空间近似同构的假设,然而许多语言对由于语言本身天然的差异导致该假设往往很弱,无监督系统通常是基于两阶段的方法,起始阶段由于缺乏监督信号的引导很容易就失败,从而导致后面的阶段无法有效运行。\upcite{DBLP:conf/acl/SogaardVR18,A2020Li}
曹润柘 committed
632 633
\vspace{0.5em}

曹润柘 committed
634
\item 由于词嵌入这种表示方式的局限性,模型无法实现单词多对多的对齐,而且对于一些相似的词或者实体名词模型也很难实现对齐。
曹润柘 committed
635 636 637
\vspace{0.5em}
\end{itemize}

曹润柘 committed
638
\parinterval 无监督方法的鲁棒性是一个很难解决的问题。对于词典推断这个任务来说,是否有必要无监督仍然值得商榷,因为其作为一个底层任务,不仅可以利用词嵌入,还可以利用单语、甚至是双语信息。此外,基于弱监督的方法代价也不是很大,只需要数千个词典即可,有了监督信号的引导,鲁棒性问题就能得到一定的缓解。
曹润柘 committed
639 640

%----------------------------------------------------------------------------------------
曹润柘 committed
641
%    NEW SUB-SECTION 16.4.2
曹润柘 committed
642 643 644 645
%----------------------------------------------------------------------------------------

\subsection{无监督统计机器翻译}

曹润柘 committed
646
\parinterval 在无监督词典归纳的基础上,可以进一步得到句子间的翻译,实现无监督机器翻译\upcite{DBLP:journals/talip/MarieF20}。统计机器翻译作为机器翻译的主流方法,对其进行无监督学习可以帮助我们构建初始的无监督机器翻译系统。这样,它可以进一步被用于训练更为先进的无监督神经机器翻译系统。以基于短语的统计机器翻译为例,系统主要包含短语表、语言模型、调序模型以及权重调优等模块(见{\chapterseven})。其中短语表和模型调优需要双语数据,而语言模型和调序模型只依赖于单语数据。因此,如果可以通过无监督的方法完成短语表和权重调优,那么就得到了无监督统计机器翻译系统\upcite{DBLP:conf/emnlp/ArtetxeLA18}
曹润柘 committed
647 648 649 650

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
曹润柘 committed
651
\subsubsection{1. 无监督短语归纳}
曹润柘 committed
652

曹润柘 committed
653
\parinterval 回顾统计机器翻译中的短语表,其实它类似于一个词典,对一个源语言短语给出相应的短语翻译\upcite{DBLP:conf/ki/ZensON02}。只不过词典的基本单元是词,而短语表的基本单元是短语(或$n$-gram)。此外短语表还提供短语翻译的得分。既然短语表跟词典如此相似,那么很容易就可以把无监督词典归纳的方法移植到处理短语上,也就是把里面的词替换成短语,就可以无监督地得到短语表。
曹润柘 committed
654

曹润柘 committed
655
\parinterval\ref{unsupervised-dictionary-induction}节所示,无监督词典归纳的方法依赖于词的分布式表达,也就是词嵌入。因此当把无监督词典归纳拓展到短语上时,首先需要获得短语的分布式表达。比较简单的方法是把词换成短语,然后借助无监督词典归纳相同的算法得到短语的分布式表达。最后直接应用无监督词典归纳方法,得到源语言短语与目标语言短语之间的对应。
曹润柘 committed
656

曹润柘 committed
657
\parinterval 尽管已经得到了短语的翻译,短语表的另外一个重要的组成部分,也就是短语对的得分(概率)无法直接由词典归纳方法直接给出,而这些得分在统计机器翻译模型中非常重要。在无监督词典归纳中,在推断词典的时候会为一对源语言单词和目标语言单词打分(词嵌入之间的相似度),然后根据打分来决定哪一个目标语言单词更有可能是当前源语言单词的翻译。在无监督短语归纳中,这样一个打分已经提供了对短语对质量的度量,因此经过适当的归一化处理后就可以得到短语对的得分:
曹润柘 committed
658 659

\begin{eqnarray}
曹润柘 committed
660
P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\sum_{\seq{y}^{'}}\mathrm{cos}(\mathbi{x},\mathbi{y}^{'})\tau}
曹润柘 committed
661
\label{eq:16-11}
曹润柘 committed
662 663
\end{eqnarray}

曹润柘 committed
664
\noindent 其中,$\mathrm{cos}$是余弦相似度,$\mathbi{x}$是经过无监督词典归纳里$\mathbi{W}$转换的源语言短语嵌入,$\mathbi{y}$是目标语言短语嵌入,$\mathbi{y}^{'}$是所有可能的目标语短语嵌入,$\tau$是控制产生分布$P$的尖锐程度的一个超参数。
曹润柘 committed
665

曹润柘 committed
666
\parinterval 一个问题是在无监督的情景下我们没有任何双语数据,那么如何得到最优的$\tau$?这里,可以寻找一个$\tau$使得所有$P(\mathbi{y}|\mathbi{x})$ 最大\upcite{DBLP:conf/emnlp/ArtetxeLA18}。通常,取离一个给定的$\mathbi{y}$最接近的$\mathbi{x}$ 而不是给定$\mathbi{x}$ 选取最近的$\mathbi{y}$来计算$P(\mathbi{y}|\mathbi{x})$,因为给定$\mathbi{x}$得到的最近$\mathbi{y}$总是$P(\mathbi{y}|\mathbi{x})$里概率最大的元素,这时候$\tau$总是可以通过逼近0来使得所有$P$的取值都接近1。实际中为了选取最优$\tau$我们会为$P(\mathbi{y}|\mathbi{x})$$P(\mathbi{x}|\mathbi{y})$ 同时优化$\tau$
曹润柘 committed
667 668 669 670

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
曹润柘 committed
671
\subsubsection{2. 无监督权重调优}
曹润柘 committed
672

曹润柘 committed
673
\parinterval 有了短语表之后,剩下的问题是如何在没有双语数据的情况下进行模型调优,从而把短语表、语言模型、调序模型等模块融合起来\upcite{DBLP:conf/acl/Och03}。在统计机器翻译系统中,短语表可以提供短语的翻译,而语言模型可以保证从短语的翻译拼装得到的句子的流畅度,因此统计机器翻译模型即使在没有权重调优的基础上也已经具备了一定的翻译能力。所以一个简单而有效的无监督方法就是使用未经过模型调优的统计机器翻译模型进行回译,也就是把目标语言句子翻译成源语言句子后把翻译得到的源语句言子当成输入而目标语言句子当成标准答案,完成权重调优。
曹润柘 committed
674

曹润柘 committed
675
\parinterval 经过上述的无监督模型调优后,就获得了一个比未经调优效果更好的翻译模型。这时候一个自然的想法就是可以使用这个更好更强的翻译模型去产生质量更高的数据,然后用这些数据来继续对翻译模型进行调优,如此反复迭代一定次数后停止。这个方法也被称为{\small\bfnew{迭代优化}}\index{迭代优化}(Iterative Refinement\index{Iterative Refinement}\upcite{DBLP:conf/emnlp/ArtetxeLA18}
曹润柘 committed
676

曹润柘 committed
677
\parinterval 迭代优化也会带来另外一个问题:在每一次迭代中都会产生新的模型,应该什么时候停止生成新模型,挑选哪一个模型?因为在无监督的场景当中,没有任何真实的双语数据可以使用,所以无法使用监督学习里的校验集来对每个模型进行检验并筛选。另外,即使有很少量的双语数据(比如数百条双语句对),直接在上面挑选模型和调整超参数会导致过拟合问题,使得最后结果越来越差。一个经验上非常高效的模型选择方法是:事先从训练集里挑选一部分句子作为校验集不参与训练,然后使用当前的模型把这些句子翻译过去之后再翻译回来(源语言$\to $目标语言$\to$源语言,或者目标语言$\to$源语言$\to$目标语言),得到的结果跟原始的结果计算BLEU,得分越高则效果越好。这样一种无监督模型挑选标准在经验上已被证明跟使用大的双语校验集的结果是高度相关的\upcite{DBLP:conf/emnlp/LampleOCDR18}
曹润柘 committed
678 679 680 681 682

%----------------------------------------------------------------------------------------
%    NEW SUB-SECTION
%----------------------------------------------------------------------------------------

曹润柘 committed
683
\subsection{无监督神经机器翻译}\label{unsupervised-NMT}
曹润柘 committed
684

685
\parinterval 既然神经机器翻译已经在很多任务上优于统计机器翻译,为什么不直接做无监督神经机器翻译呢?实际上,由于神经网络的黑盒特性使得我们无法像统计机器翻译那样对其进行拆解,并定位问题。因此需要借用其它无监督翻译系统来训练神经机器翻译模型。
曹润柘 committed
686

687 688 689
%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
曹润柘 committed
690
\subsubsection{1. 基于无监督统计机器翻译的方法}
691

曹润柘 committed
692
\parinterval 一个简单的方法是,借助已经成功的无监督方法来为神经机器翻译模型提供少量双语监督信号,然后在这个基础上训练模型。由于初始的监督信号可能很少或者包含大量噪声,因此需要逐步优化数据来重新训练出更好的模型。这也是目前所有无监督神经机器翻译方法的核心思路。这个方案最简单最直接的实现就是借助已经成功的无监督统计机器翻译模型产生伪双语数据来训练神经机器翻译模型 ,然后模型进行迭代回译来进行数据优化\upcite{DBLP:conf/acl/ArtetxeLA19}。这个方法的优点是直观,并且性能稳定,容易调试(所有模块都互相独立)。缺点是复杂繁琐,涉及许多超参数调整工作,而且训练代价较大。
曹润柘 committed
693

694 695 696
%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
曹润柘 committed
697
\subsubsection{2. 基于无监督词典归纳的方法}
698

曹润柘 committed
699
\parinterval 既然无监督神经机器翻译问题的核心在于通过无监督方法提供初始的监督信号,另一个思路就是直接从无监督词典归纳中得到神经机器翻译模型,从而避免繁琐的无监督统计机器翻译模型训练过程,同时也避免神经机器翻译模型继承统计机器翻译模型的错误。这种方法的核心就是把翻译看成一个两阶段的过程:
700 701 702

\begin{itemize}
\vspace{0.5em}
曹润柘 committed
703
\item 首先,无监督词典归纳通过双语词典把一个源语言句子转换成一个不通顺但是意思完整的目标语言译文。
704 705 706 707 708
\vspace{0.5em}
\item 然后,把这样一个不通顺的句子改写成一个流畅的句子,同时保留原来的含义,最后达到翻译的目的。
\vspace{0.5em}
\end{itemize}

曹润柘 committed
709 710
\parinterval 而第二阶段的改写任务其实也是一个特殊的翻译任务,只不过现在的源语言和目标语言是使用不同的方式表达的同一种语言的句子。因此可以使用神经机器翻译模型来完成这个任务,而且由于这里不涉及双语数据而只需要单语数据,模型的训练也将是无监督的。这样的方法不再需要无监督统计机器翻译,并且适应能力很强。对于新语种,不需要重新训练神经机器翻译模型,只需要训练无监督词典归纳进行词的翻译,然后使用相同的模型进行改写。但是,目前训练数据需要使用其他语种的双语数据来进行构造(把源语言句子里每个词使用双语词典进行翻译作为输入,输出的目标语言句子不变)。虽然可以通过把单语句子根据规则或者随机进行打乱来生成训练数据,但是这些句子不符合语言学的规律,并且跟真实句子所服从的数据分布不一致,导致训练测试不一致的问题。而且这样一个两阶段的过程会产生错误传播的问题,比如无监督词典归纳对一些词进行了错误的翻译,那么这些错误的翻译会被送到神经机器翻译模型里进行改写,而因为翻译模型这时候已经无法看到源语言句子来进行修正,所以最终的结果将继承无监督词典归纳的错误\upcite{DBLP:conf/acl/PourdamghaniAGK19}

711 712 713
%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
曹润柘 committed
714
\subsubsection{3. 更深层的融合}
715

曹润柘 committed
716
\parinterval 为了获得更好的神经机器翻译模型,可以对训练流程和模型做更深度的整合。{\chapternine}已经介绍,神经机器翻译模型的训练包含两个阶段:初始化和优化,而无监督神经机器翻译的核心思路也是对应的两个阶段:无监督方法提供初始的监督信号和数据优化,因此可以考虑在模型的初始化阶段使用无监督方法提供初始的监督信号,然后优化过程不但优化模型的参数,还优化训练使用的数据,从而避免流水线带来的错误传播。其中初始的监督信号可以通过两种方法提供给模型,一种是直接使用无监督方法提供最初的伪双语数据来训练最初的翻译模型,另一种则是借助无监督方法来初始化模型,得到最初的翻译模型后直接使用初始化好的翻译模型产生伪双语数据来训练自己,如图\ref{fig:16-19}所示。图\ref{fig:16-19}(a)的一个简单实现是利用无监督词典归纳得到的词典对单语数据进行逐词的翻译,得到最初的伪双语数据,然后在这些数据上训练最初的翻译模型,最后不断地交替优化数据和模型,得到更好的翻译模型和质量更好的伪数据\upcite{DBLP:conf/iclr/LampleCDR18}。这样的做法通过不断优化训练用的双语数据,摆脱了无监督词典归纳在最初的伪双语数据中遗留下来的错误,同时也避免了使用无监督统计机器翻译模型的繁琐和代价。图\ref{fig:16-19}(b)的实现则依赖于具体的翻译模型初始化方法,我们将在下一节讨论翻译模型的不同初始化方法。
曹润柘 committed
717
%----------------------------------------------
曹润柘 committed
718 719
\begin{figure}[h]
\centering
曹润柘 committed
720
\input{Chapter16/Figures/figure-optimization-of-the-model-initialization-method}
xiaotong committed
721
\caption{模型初始化方法的优化}
曹润柘 committed
722
\label{fig:16-19}
曹润柘 committed
723
\end{figure}
曹润柘 committed
724
%----------------------------------------------
曹润柘 committed
725

726 727 728 729 730
%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{4. 其它问题}

曹润柘 committed
731
\parinterval 实际上无监督神经机器翻译模型的训练并不简单。一般来说,可以相信在生成的伪数据上经过参数优化后模型会变得比生成伪数据的时候更好,这时候对这个更好的模型使用数据增强的手段(如回译等)就可以生成更好的训练数据。这样的一个数据优化过程依赖于一个假设:模型经过参数优化后会生成比原始数据更好的数据。而在数据优化和参数优化的共同影响下,模型非常容易拟合数据中的简单模式,使得在数据优化过程中模型倾向产生包含这种简单模式的数据,然后模型对这种类型数据过拟合,最后训练模型的损失可以下降到很低,然而模型生成的结果却非常差。一个常见的问题解就是模型对任何输入都输出相同的译文,这时候翻译模型无法产生任何有意义的结果,而它的训练过程则退化成普通的语言模型(数据优化产生的数据里无论什么目标语言对应的源语言都是同一个句子)。这种情况下翻译模型虽然能降低损失(训练语言模型),但是它不能学会任何源语言跟目标语言之间的对应关系,也就无法翻译。这个现象也反映出无监督机器翻译训练的脆弱性。
曹润柘 committed
732

曹润柘 committed
733
\parinterval 比较常见的解决方案是在双语数据对应的目标函数外增加一个语言模型的目标函数。因为,在初始阶段,由于数据中存在大量不通顺的句子,额外的语言模型目标函数能把部分句子纠正过来,使得模型逐渐生成更好的数据\upcite{DBLP:conf/emnlp/LampleOCDR18}。这个方法在实际中非常有效,尽管目前还没有理论上的支持。
曹润柘 committed
734 735 736 737

\parinterval 无监督神经机器翻译还有两个关键的技巧:
\begin{itemize}
\vspace{0.5em}
738
\item 词表共享:对于源语言和目标语言里都一样的词使用同一个词嵌入,而不是源语言和目标语言各自对应一个词嵌入,比如,阿拉伯数字或者一些实体名字。这样相当于在模型设计上告诉模型这个词在源语言和目标语言里面表达同一个意思,隐式地引入了单词翻译的监督信号。在无监督神经机器翻译里词表共享搭配子词切分会更加有效,因为子词的覆盖范围广,比如,多个不同的词可以包含同一个子词。
曹润柘 committed
739 740

\vspace{0.5em}
曹润柘 committed
741
\item 模型共享:与多语言翻译系统类似,使用同一个翻译模型来进行正向翻译(源语言$\to$目标语言)和反向翻译(目标语言$\to$源语言)。这样做降低了模型的参数量,减少了过拟合的风险。
曹润柘 committed
742 743 744
\vspace{0.5em}
\end{itemize}

曹润柘 committed
745
\parinterval 最后图\ref{fig:16-20}简单总结了无监督神经机器翻译的流程。下面分别讨论:无监督神经机器翻译里面模型的初始化,以及语言模型目标函数的选用。
曹润柘 committed
746
%----------------------------------------------
曹润柘 committed
747 748
\begin{figure}[h]
\centering
曹润柘 committed
749 750
\input{Chapter16/Figures/figure-unmt-process}
\caption{无监督神经机器翻译模型训练流程}
曹润柘 committed
751
\label{fig:16-20}
曹润柘 committed
752
\end{figure}
曹润柘 committed
753
%----------------------------------------------
曹润柘 committed
754
\begin{itemize}
755
\vspace{0.5em}
曹润柘 committed
756
\item {\small\bfnew{模型参数初始化}}。无监督神经机器翻译的关键在于如何提供最开始的监督信号,从而启动后续的迭代流程。无监督词典归纳已经可以提供一些可靠的监督信号,那么如何在模型初始化中融入这些信息?既然神经机器翻译模型都使用词嵌入层作为输入,而无监督词典归纳总是先把两个语言各自的单语词嵌入映射到一个空间后才归纳双语词典,那么可以使用这些映射后的词嵌入来初始化模型的词嵌入层,然后在这个基础上训练模型,因为这些映射后的词嵌入天然就包含了大量的监督信号,比如,两个语言里意思相近的词对应的词嵌入会比其他词更靠近对方\upcite{DBLP:journals/ipm/FarhanTAJATT20}。 为了防止训练过程中模型参数的更新会破坏词嵌入当中的词对齐信息,通常初始化后会固定模型的词嵌入层不让其更新\upcite{DBLP:conf/emnlp/ArtetxeLA18}
曹润柘 committed
757

曹润柘 committed
758
\parinterval 进一步的研究表明,无监督神经机器翻译能在提供更少监督信号的情况下启动,也就是可以去除无监督词典归纳这一步骤\upcite{DBLP:conf/nips/ConneauL19}。这时候模型的初始化直接使用共享词表的预训练模型的参数作为起始点。这个预训练模型直接使用前面提到的预训练方法(如MASS)进行训练,区别在于模型的大小如宽度和深度需要严格匹配翻译模型。此外,这个模型不仅仅只在一个语言的单语数据上进行训练,而是同时在两个语言的单语数据上进行训练,并且两个语言的词表进行共享。前面提到,在共享词表特别是共享子词词表的情况下,已经隐式地告诉模型源语言和目标语言里一样的(子)词互为翻译,相当于模型使用了少量的监督信号。在这基础上使用两个语言的单语数据进行预训练,则通过模型共享进一步挖掘了语言之间共通的部分。因此,使用预训练模型进行初始化后,无监督神经机器翻译模型已经得到大量的监督信号,从而得以不断通过优化来提升模型性能。
曹润柘 committed
759

760
\vspace{0.5em}
曹润柘 committed
761
\item {\small\bfnew{语言模型的使用}}。无监督神经机器翻译的一个重要部分就是来自语言模型的目标函数。因为翻译模型本质上是在完成文本生成任务,所以只有文本生成类型的语言模型建模方法才可以应用到无监督神经机器翻译里。比如,经典的给定前文预测下一词就是一个典型的自回归生成任务(见{\chaptertwo}),因此可以运用到无监督神经机器翻译里。但是,目前在预训练里流行的BERT等模型是掩码语言模型\upcite{devlin2019bert},就不能直接在无监督神经翻译里使用。
曹润柘 committed
762

曹润柘 committed
763
\parinterval 另外一个在无监督神经机器翻译中比较常见的语言模型目标函数则是降噪自编码器。它也是文本生成类型的语言模型建模方法。对于一个句子$\seq{x}$,首先使用一个噪声函数$\seq{x}^{'}=\mathrm{noise}(\seq{x})$ 来对$\seq{x}$注入噪声,产生一个质量较差的句子$\seq{x}^{'}$。然后,让模型学习如何从$\seq{x}^{'}$还原出$\seq{x}$。这样一个目标函数比预测下一词更贴近翻译任务的本质,因为它是一个序列到序列的映射,并且输入输出两个序列在语义上是等价的。我们之所以采用$\seq{x}^{'}$而不是$\seq{x}$自己来预测$\seq{x}^{'}$,是因为模型可以通过简单的复制输入作为输出来完成从$\seq{x}$预测$\seq{x}$的任务,并且在输入中注入噪声会让模型更加鲁棒,因此模型可以通过训练集数据学会如何利用句子中噪声以外的信息来处理其中噪声并得到正确的输出。通常来说,噪声函数$\mathrm{noise}$有三种形式,如表\ref{tab:16-1}所示。
曹润柘 committed
764
%----------------------------------------------
曹润柘 committed
765 766
\begin{table}[h]
\centering
曹润柘 committed
767
\caption{三种噪声函数(原句为``我\ 喜欢\ \ 苹果\ 。'')}
曹润柘 committed
768 769 770
\begin{tabular}{l|l|l}
\multicolumn{1}{c|}{噪声函数} & \multicolumn{1}{c|}{描述} & \multicolumn{1}{c}{例子} \\
\hline
曹润柘 committed
771 772 773
\rule{0pt}{15pt}交换 & 句子中任意两个词进行交换 & ``我\ 喜欢\ \underline{苹果}\ \underline{}\ 。'' \\
\rule{0pt}{15pt}删除 & 句子中的词按一定概率被删除 & ``我\ 喜欢\ \ 。'' \\
\rule{0pt}{15pt}空白 & 句子中的词按一定概率被替换成空白符 & ``我\ \underline{\ \ \ \ \ \ \ \ }\ \ 苹果\ 。'' \\
曹润柘 committed
774 775 776
\end{tabular}
\label{tab:16-1}
\end{table}
曹润柘 committed
777
%----------------------------------------------
曹润柘 committed
778

779
\parinterval 实际当中三种形式的噪声函数都会被使用到,其中在交换方法中越相近的词越容易被交换,并且保证被交换的词的对数有限,而删除和空白方法里词的删除和替换概率通常都非常低,如$0.1$等。
曹润柘 committed
780 781
\vspace{0.5em}
\end{itemize}
曹润柘 committed
782
%----------------------------------------------------------------------------------------
曹润柘 committed
783
%    NEW SECTION 16.5
曹润柘 committed
784 785 786 787
%----------------------------------------------------------------------------------------

\section{领域适应}

曹润柘 committed
788
\parinterval 机器翻译常常面临训练时与应用时所处领域不一致的问题,比如,一个在新闻类数据上训练的系统应用在医学文献翻译任务上。不同领域的句子通常存在着很大的区别,比如,日常用语的结构较为简单,而化学领域中论文的单词和句子结构较为复杂。此外,不同领域之间存在着较为严重的一词多义问题,即同一个词在不同领域中经常会有不同的含义,实例\ref{eg:16-1}展示了英语单词pitch在不同领域的不同词义。
曹润柘 committed
789
%----------------------------------------------
曹润柘 committed
790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805
\begin{example}
单词pitch在不同领域的不同词义

体育领域:The rugby tour was a disaster both on and off the {\red{pitch}}.

\qquad\qquad \hspace{0.8em} 这次橄榄球巡回赛在{\red{}}上、{\red{}}下都彻底失败。

 化学领域:The timbers of similar houses were painted with {\red{pitch}}.

\qquad\qquad \hspace{0.8em} 类似房屋所用的栋木刷了{\red{沥青}}

 声学领域:A basic sense of rhythm and {\red{pitch}} is essential in a music teacher.

\qquad\qquad \hspace{0.8em} 基本的韵律感和{\red{音高感}}是音乐教师的必备素质。
\label{eg:16-1}
\end{example}
曹润柘 committed
806
%----------------------------------------------
曹润柘 committed
807

曹润柘 committed
808
\parinterval 在机器翻译任务中,像新闻等领域的双语数据相对容易获取,所以机器翻译在这些领域上表现较佳。然而,即使在富资源语种上,化学、医学等专业领域的双语数据依然十分有限。如果直接使用低资源领域的数据来训练机器翻译模型,由于数据稀缺问题,会导致模型的性能较差\upcite{DBLP:conf/iccv/SunSSG17}。而混合多个领域的数据进行训练,不同领域的数据量不平衡会导致数据较少的领域训练不充分,模型容易忽略低资源领域的知识,使得在低资源领域上的翻译结果差强人意\upcite{DBLP:conf/acl/DuhNST13}
曹润柘 committed
809

曹润柘 committed
810
\parinterval {\small\bfnew{领域适应}}(Domain Adaptation)方法是利用其他领域(Source Domain\index{Source Domain}, 又称{\small\bfnew{源领域}}\index{源领域})的知识来改进特定领域(Target Domain\index{Target Domain}, 又称{\small\bfnew{目标领域}}\index{目标领域})翻译效果的方法,该方法可以有效地减少模型对目标领域数据的依赖。领域适应的研究方向主要有以下两点:
曹润柘 committed
811 812 813

\begin{itemize}
\vspace{0.5em}
曹润柘 committed
814
\item 基于数据的方法。利用源领域的双语数据或目标领域单语数据进行数据选择或数据增强,来提升模型训练的数据量。
曹润柘 committed
815 816 817 818 819 820 821 822 823 824
\vspace{0.5em}
\item 基于模型的方法。针对领域适应开发特定的模型结构或训练策略、推断方法。
\vspace{0.5em}
\end{itemize}

%----------------------------------------------------------------------------------------
%    NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{统计机器翻译中的领域适应}

曹润柘 committed
825 826 827
\parinterval 在统计机器翻译时代,使用基于数据或模型的方法来提升机器翻译模型在特定领域上的翻译性能就已经备受关注,而这些技术和思想也为神经机器翻译中的领域适应技术提供了参考。

\parinterval 统计机器翻译中,领域适应可以分为基于混合模型的方法\upcite{DBLP:conf/wmt/FosterK07,DBLP:conf/iwslt/BisazzaRF11,niehues2012detailed,DBLP:conf/acl/SennrichSA13,joty2015using,imamura2016multi}、基于数据加权的方法\upcite{DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10,shah2012general,DBLP:conf/iwslt/MansourN12,DBLP:conf/cncl/ZhouCZ15}、基于数据选择的方法\upcite{DBLP:conf/lrec/EckVW04,DBLP:conf/coling/ZhaoEV04,DBLP:conf/acl/MooreL10,DBLP:conf/acl/DuhNST13,DBLP:conf/coling/HoangS14,joty2015using,chen2016bilingual}和基于伪数据的方法\upcite{DBLP:conf/iwslt/Ueffing06,DBLP:conf/coling/WuWZ08,DBLP:conf/iwslt/Schwenk08,DBLP:conf/wmt/BertoldiF09,DBLP:conf/wmt/LambertSSA11},本小节将对这四种方法进行简单介绍。
曹润柘 committed
828 829 830 831 832 833

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 基于混合模型的方法}

曹润柘 committed
834 835
\parinterval 不同领域的数据存在着共性,但是又有各自的风格,因此使用多领域数据训练出不同的模型,分情况处理问题可能会带来更好的效果,例如对疑问句和陈述句分别使用两个模型进行推断
可以使翻译效果更好\upcite{DBLP:conf/eacl/Sennrich12}。混合模型是统计机器学习理论中的传统实现技术之一,通过训练与每个语料库分别对应的多个统计机器翻译子模型,如语言模型、翻译模型和重排序模型,然后将它们进行组合以实现最佳性能\upcite{DBLP:conf/wmt/FosterK07}。该方法的主要步骤如下:
曹润柘 committed
836 837 838 839 840 841

\begin{itemize}
\vspace{0.5em}
\item 将训练数据根据所在的领域分为几个不同的部分。

\vspace{0.5em}
曹润柘 committed
842
\item 利用每一部分数据训练对应的子模型。
曹润柘 committed
843 844

\vspace{0.5em}
曹润柘 committed
845
\item 根据测试数据的上下文信息为每个子模型调整权重。
曹润柘 committed
846 847

\vspace{0.5em}
曹润柘 committed
848
\item 针对不同领域,使用调整后的最佳权重,并加权整合多个子模型的输出。
曹润柘 committed
849 850
\vspace{0.5em}
\end{itemize}
曹润柘 committed
851
\parinterval 混合模型方法把统计机器翻译的每个模块分为多个模型同时解决问题,有权重地组合多个模型的结果。这个想法对后来出现的神经机器翻译中的模型融合、加权推断等方法也有一定的启发(见{\chapterfourteen})。
曹润柘 committed
852 853 854 855 856 857

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 基于数据加权的方法}

曹润柘 committed
858
\parinterval 在真实场景中,由于每个领域的数据量有限,同时领域数量较多,针对每个领域单独训练一个机器翻译模型是不现实的。所以,通常的策略是训练一个机器翻译模型来支持多领域的翻译。虽然混合多个领域的数据可以有效增加训练数据规模,但正如前面所说,由于各个领域样本的数据量不平衡,在训练数据稀缺的领域上,模型表现往往差强人意。一种观点认为,数据量较少的领域数据具有更大的学习价值,可以提供较为珍贵的知识和信息,应该在训练过程中获得更大的权重,从而使这些更有价值的数据发挥出更大的作用\upcite{DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10}。数据加权方法使用规则或统计方法对每个实例或领域进行评分,作为它们的权重,然后赋予每个样本或领域不同的权重来训练统计机器翻译模型。
曹润柘 committed
859

曹润柘 committed
860
\parinterval 上述思想本质上在解决{\small\bfnew{类别不均衡问题}}\upcite{DBLP:conf/emnlp/ZhuH07}\index{类别不均衡问题}(Class Imbalance Problem\index{Class Imbalance Problem})。另一种方法是通过数据重新采样对语料库进行加权\upcite{DBLP:conf/wmt/ShahBS10,rousseau2011lium}。语料库加权方法通过构建目标领域的语言模型,比较各个语料库与目标领域的相似性,赋予相似的语料库更高的权重。
曹润柘 committed
861 862 863 864 865 866

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 基于数据选择的方法}

曹润柘 committed
867
\parinterval 源领域大规模的双语数据中通常会包含一些和目标领域相似的句子,基于数据选择的方法通过相似度函数选择出与目标领域相似的源领域数据,再把选择出的源领域数据与原始目标领域数据进行混合,之后训练模型,增加目标领域的双语数据规模,从而提高模型在目标领域的性能。相似度可以通过语言模型\upcite{DBLP:conf/lrec/EckVW04,DBLP:conf/coling/ZhaoEV04,moore2010intelligent,DBLP:conf/acl/DuhNST13}、 多模型联合\upcite{DBLP:conf/coling/HoangS14,joty2015using}、卷积神经网络\upcite{chen2016bilingual}等方法进行计算。
曹润柘 committed
868 869 870 871 872 873

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{4. 基于伪数据的方法}

曹润柘 committed
874
\parinterval 数据选择方法可以从源领域中选择出和目标领域相似的训练数据,但可用的数据量是较为有限的。因此,另外一种思路是对现有的双语数据进行修改或通过单语数据生成伪数据来增加数据量。常用方法包括信息检索\upcite{DBLP:conf/acl/UtiyamaI03}、平行词嵌入\upcite{DBLP:conf/acl/MarieF17}等,通过生成一些伪平行句对或平行短语对\upcite{DBLP:conf/coling/WangZLUS16,chu2015integrated}来增加可使用的伪双语数据。
曹润柘 committed
875

曹润柘 committed
876
\parinterval 其中,{\small\bfnew{自学习}}\index{自学习}(Self-training)\index{Self-training}是一种具有代表性的生成伪数据的方法\upcite{DBLP:journals/tit/Scudder65a}。自学习利用源领域的双语训练数据训练一个基准翻译系统,然后对目标领域的单语数据进行翻译,再从翻译候选集合中选择高质量的译文和源语言句子组合成为双语句对,之后将其加入到训练数据中重新训练翻译系统,该过程将一直迭代到翻译性能稳定为止\upcite{DBLP:conf/iwslt/Ueffing06}。基于自学习的统计机器翻译可以从一个性能较好的源领域机器翻译模型出发,逐步引入目标领域的知识,可以显著提高目标领域的翻译性能。
曹润柘 committed
877

曹润柘 committed
878
\parinterval 随着神经机器翻译的不断发展,许多基于神经网络的领域适应方法也被提出\upcite{DBLP:conf/coling/ChuW18},但其核心思想仍和统计机器翻译时期相似,也是从数据角度和模型角度两方面进行改进。不同之处在于,统计机器翻译模型是多个独立模型的组合,而神经机器翻译是一个整体的模型,因此统计机器翻译中基于模型的方法并不能直接应用于神经机器翻译。
曹润柘 committed
879 880 881 882 883

%----------------------------------------------------------------------------------------
%    NEW SUB-SECTION
%----------------------------------------------------------------------------------------

884
\subsection{基于数据的神经机器翻译领域适应}
曹润柘 committed
885 886 887 888 889 890 891 892 893

\parinterval 增加训练数据是解决低资源领域性能较差问题的一个主要思路。受统计机器翻译时代技术的启发,可以通过类似的思想来增加神经机器翻译的训练数据量。下面分别介绍基于多领域数据的方法、基于数据选择的方法和基于单语数据的方法。

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------

\subsubsection{1. 基于多领域数据的方法}

曹润柘 committed
894
\parinterval 一种简单的思路是利用其他领域的数据来辅助低资源领域上的模型训练,即基于多领域数据的领域适应\upcite{DBLP:conf/acl/ChuDK17,DBLP:journals/corr/abs-1708-08712,DBLP:conf/acl/WangTNYCP20,DBLP:conf/acl/JiangLWZ20}。实际上,多领域建模也可以看作是一种多语言建模问题(相关内容见本章\ref{multilingual-translation-model}节)。通过借助其他相似领域的训练数据,可以缓解目标领域数据缺乏的问题。比如,想要训练网络小说领域的翻译系统,可以通过加入文学、字幕等领域的翻译数据来增加数据量。
曹润柘 committed
895

896
\parinterval 但在神经机器翻译中,多领域数据不平衡问题也会导致数据量较少的领域训练不充分,带来较低的翻译品质。目前比较常用的多领域数据方法是在数据中加入标签来提高神经机器翻译模型对不同领域的区分能力\upcite{DBLP:conf/acl/ChuDK17},该方法主要通过两种策略来缓解领域不平衡问题:
曹润柘 committed
897 898 899

\begin{itemize}
\vspace{0.5em}
曹润柘 committed
900
\item 在不同领域的源语言句子句首加上不同的标签来指定该句子所对应的领域,让神经机器翻译模型在预测过程中可以生成更符合领域特性的句子。
曹润柘 committed
901 902 903 904 905 906

\item 把数据量较小的领域数据复制数倍,来对各个领域的数据量进行平衡,使模型对各个领域给与平等的关注。

\vspace{0.5em}
\end{itemize}

曹润柘 committed
907
\parinterval 基于多领域数据的方法优点在于思路简单、易于实现,可以大大提高可用的数据量,但不同领域的数据不可避免地会产生一些干扰,在实际使用中可能会产生词汇预测错误的问题。
曹润柘 committed
908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 基于数据选择的方法}

\parinterval 既然多领域数据的方法会对模型产生一些干扰,那么能否从其他领域数据中选择与目标领域比较相近的数据来提升数据量呢?与统计机器翻译相似,可以通过使用困惑度\upcite{DBLP:conf/emnlp/AxelrodHG11}或JS散度\upcite{DBLP:conf/icdm/Remus12}等方法计算源领域数据与目标领域数据的相似度,从而选择较为相似的数据以增加目标领域的数据量,提升模型能力。

\parinterval 一种相似度衡量方法是根据句子的词嵌入来计算\upcite{DBLP:conf/acl/WangFUS17},即把其他领域的双语数据根据与目标领域句子的词嵌入相似度进行排序,设定一个阈值来选择与目标领域比较相似的句子,将其与目标领域的数据混合用于模型训练。除了直接混合两部分数据,还可以修改数据的训练方式,从而更有效地利用训练数据,具体方法可以参考\ref{modeling-methods-in neural-machine-translation}节的内容。

\parinterval 数据选择充分地利用了其他领域的双语数据,使低资源问题得到了一定程度的缓解,模型可以学到更多目标领域相关的语言学知识,是目前比较常用的一个方法。

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 基于单语数据的方法}

曹润柘 committed
925
\parinterval 虽然目标领域的双语数据十分有限,但通常存在大量可用的单语数据。例如在网络小说翻译任务中,只有少量的双语数据可用,但是网络上有丰富的小说单语数据可以使用。本章\ref{effective-use-of-data}节中提到了很多在低资源场景下利用单语数据的模型方法,比如进行数据增强或利用语言模型等,这些方法均可以直接应用在领域适应任务上,有效地利用领域内的单语数据可以显著提高机器翻译性能。
曹润柘 committed
926

曹润柘 committed
927
\parinterval 此外,如果目标领域的双语数据极度稀缺,甚至没有任何双语数据,这时可以使用\ref{unsupervised-dictionary-induction}节中提到的无监督词典归纳方法从目标领域中归纳出双语词典,然后将目标领域的目标端单语数据通过逐词翻译的方法生成伪数据\upcite{DBLP:conf/acl/HuXNC19},即对每个单词根据双语词典进行对应翻译,构建伪平行语料,用来训练目标领域的神经机器翻译模型。
曹润柘 committed
928 929 930 931 932

%----------------------------------------------------------------------------------------
%    NEW SUB-SECTION
%----------------------------------------------------------------------------------------

933
\subsection{基于模型的神经机器翻译领域适应}\label{modeling-methods-in neural-machine-translation}
曹润柘 committed
934

曹润柘 committed
935
\parinterval 一个神经机器翻译模型的实现主要分为三个部分:设计神经网络模型结构、制定训练策略训练模型、模型推断生成翻译结果。因此,领域适应也可以体现在这三个步骤中:
曹润柘 committed
936 937 938

\begin{itemize}
\vspace{0.5em}
曹润柘 committed
939
\item 基于模型结构的方法,设计一个更适用于领域适应问题的模型结构\upcite{2015OnGulcehre,DBLP:conf/naacl/BapnaF19,britz2017effective,DBLP:conf/ranlp/KobusCS17}
曹润柘 committed
940
\vspace{0.5em}
曹润柘 committed
941
\item 基于训练策略的方法,制定能够更好利用多领域数据的训练方法\upcite{DBLP:conf/emnlp/WangULCS17,DBLP:conf/emnlp/WeesBM17,DBLP:conf/acl/ChuDK17}
曹润柘 committed
942 943 944 945 946 947 948 949 950 951 952
\vspace{0.5em}
\item 基于模型推断的方法,生成更符合目标适应领域的翻译结果\upcite{DBLP:conf/emnlp/DouWHN19,khayrallah2017neural,DBLP:journals/corr/FreitagA16,DBLP:conf/acl/SaundersSGB19}

\vspace{0.5em}
\end{itemize}

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 基于模型结构的方法}

953
\parinterval 统计机器翻译时代基于模型结构的方法集中在提升词对齐模型、语言模型等子模型的领域适应性,从而提升统计机器翻译模型在特定领域的表现。而神经机器翻译模型是一个端到端的框架,因此对模型的调整往往体现在整体结构上。
曹润柘 committed
954

曹润柘 committed
955
\parinterval 在使用多领域数据时,神经机器翻译的结构无法有效地利用多领域语料库的信息多样性,混合多个相差较大的领域数据进行训练会使单个领域的翻译性能下降\upcite{DBLP:conf/eacl/NegriTFBF17}。为了解决这一问题,一个比较典型的做法是在使用多领域数据训练时,如图\ref{fig:16-21}所示,在神经机器翻译模型的编码器中添加一个判别器,使用判别器预测输入句子的领域\upcite{DBLP:conf/wmt/BritzLP17},具体的做法为:在编码器的顶部添加一个判别器网络,这个判别器使用源语言句子$x$的编码器表示$\mathbi{x}'$作为输入,预测句子所属的领域标签$d$。为了使预测领域标签d的正确概率$\funp{P(d|H)}$最大,模型在训练过程中最小化如下损失函数$\funp{L}_{\rm{disc}}$
曹润柘 committed
956
%----------------------------------------------
曹润柘 committed
957 958
\begin{figure}[h]
\centering
曹润柘 committed
959
\input{Chapter16/Figures/figure-schematic-of-the-domain-discriminator}
曹润柘 committed
960
\caption{领域判别器示意图}
曹润柘 committed
961
\label{fig:16-21}
曹润柘 committed
962
\end{figure}
曹润柘 committed
963
%----------------------------------------------
曹润柘 committed
964
\begin{eqnarray}
965
\funp{L}_{\rm{disc}}& = &-\log\funp{P}(d|H)
曹润柘 committed
966
\label{eq:16-12}
曹润柘 committed
967 968
\end{eqnarray}

969 970 971
\noindent 其中,$H$是编码器的隐藏状态。同时,原始的翻译模型损失为:

\begin{eqnarray}
曹润柘 committed
972
\funp{L}_{\rm{gen}}& = & -\log\funp{P}(y|x)\label{eq:16-13}
973 974 975 976
\end{eqnarray}

\noindent 神经机器翻译模型同时优化对领域标签的预测和对翻译结果的预测,如下:

曹润柘 committed
977
\begin{eqnarray}
曹润柘 committed
978
\funp{L} & = & \funp{L}_{\rm{disc}}+\funp{L}_{\rm{gen}}\label{eq:16-14}
曹润柘 committed
979 980
\end{eqnarray}

曹润柘 committed
981
\parinterval 这种方法使模型具备了识别不同领域数据的能力,从而可以针对不同领域进行特定的建模,生成符合领域特征的翻译结果。此外,还可以利用词频-逆文档频率方法\upcite{DBLP:journals/ibmrd/Luhn58}预测输入句子的领域标签,在词嵌入层加上领域特定的嵌入表示。还有一些对模型结构进行更改的工作比如融合语言模型到神经机器翻译模型中\upcite{2015OnGulcehre,DBLP:conf/emnlp/DomhanH17}
曹润柘 committed
982 983 984 985 986 987 988 989

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 基于训练策略的方法}

\parinterval 因为特定领域的训练数据通常十分稀缺,所以如何更充分地利用数据是一个重要问题。基于训练策略的领域适应方法是神经机器翻译中较为广泛使用的方法,具有易于实现、作用显著的优点\upcite{DBLP:conf/naacl/SimianerWD19}。基于训练策略的领域适应方法是指在模型的训练阶段改变获得训练目标的过程,通过加权或者微调等方法更加高效地利用数据。

曹润柘 committed
990
\parinterval 受到统计机器翻译中数据加权方法的启发,一个简单的思路是给神经机器翻译的训练数据分配不同的训练权重,从而使和目标领域更相似的数据发挥更大的作用,并减少不相似数据的干扰。一种常用的做法是使用目标领域内和领域外语言模型来计算样本的权重\upcite{DBLP:conf/emnlp/WangULCS17}。领域内语言模型对句子的打分越高,表示该句子与目标领域越相似,反之,领域外语言模型对句子的打分越高,表示该句子可能与目标领域无关,会对训练过程造成一些干扰。
曹润柘 committed
991 992 993

\parinterval 与句子级别进行加权方法相似,加权思想还可以应用在词级别,即对每个词进行权重评分,对目标领域中的词赋予更高的权重,以使模型倾向于生成更多目标领域的词\upcite{DBLP:journals/corr/abs-1906-03129}

曹润柘 committed
994
\parinterval 数据选择方法会降低训练数据的数据量,而在数据量较少的时候模型性能表现可能较差,针对这个问题,一种方法是在不同的训练轮次动态地改变训练数据子集。动态数据选择使得每轮的训练数据均小于全部数据量,但是在每轮中的训练数据均不同,可能前一轮没有训练的数据在当前轮被包括进来,由此可以缓解训练数据减小的问题。另一种做法是先将完整的数据送入模型,再根据相似度逐次减少每轮的数据量,最后得到在目标领域上效果最好的领域适应模型\upcite{DBLP:conf/emnlp/WeesBM17}。或者将最相似的句子最先送入模型,让模型可以最先学到跟目标领域最相关的知识,奠定良好的基础\upcite{DBLP:conf/naacl/ZhangSKMCD19}
曹润柘 committed
995

曹润柘 committed
996
\parinterval 还有一种方法是不从随机状态开始训练网络,而是使用翻译性能较好的源领域模型作为初始状态,因为源领域模型中包含着一些通用知识可以被目标领域借鉴。比如,想获得口语领域的机器翻译模型,可以使用新闻领域模型作为初始状态来训练口语领域模型。同时,微调方法经常配合预训练使用。微调方法的具体过程如下:
曹润柘 committed
997 998 999 1000 1001 1002 1003 1004 1005

\begin{itemize}
\vspace{0.5em}
\item 在资源丰富的源领域语料库上对系统进行训练直至收敛。
\vspace{0.5em}
\item 在资源贫乏的目标领域语料库上进行训练,对系统参数进行微调使其更适应目标领域。
\vspace{0.5em}
\end{itemize}

曹润柘 committed
1006
\parinterval 然而微调的方法会带来严重的灾难性遗忘问题,即在目标领域上过拟合,导致在源领域上的翻译性能大幅度下降。如果想要保证模型在目标领域上有较好翻译性能的同时在源领域的翻译性能也不下降,一个比较常用的方法是进行混合微调\upcite{DBLP:conf/acl/ChuDK17}。具体做法是先在源领域数据上训练一个神经机器翻译模型,然后将目标领域数据复制数倍和源领域数据量相等,之后将数据混合后对神经机器翻译模型进行微调。混合微调方法既降低了目标领域数据量小导致的过拟合问题,又带来了更好的微调性能。除了混合微调外,还有研究人员使用\ref{multilingual-translation-model}节的知识蒸馏方法缓解灾难性遗忘问题,即对源领域和目标领域进行多次循环知识蒸馏,迭代学习对方领域的知识,可以保证在源领域和目标领域上的翻译性能共同逐步上升\upcite{DBLP:conf/emnlp/ZengLSGLYL19}。过拟合导致的灾难性遗忘问题还可以使用\ref{subsection-13.2}一节中的L2正则化和Dropout方法来缓解\upcite{barone2017regularization}
曹润柘 committed
1007 1008 1009 1010 1011 1012

%----------------------------------------------------------------------------------------
%    NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 基于模型推断的方法}

1013
\parinterval 推断是指将输入序列转换成的向量再次转化为输出序列的过程,是机器翻译模型生成翻译结果的最后一步。典型的工作是优化推断算法\upcite{khayrallah2017neural},即通过更适用于领域适应任务的推断算法去选择最佳的结果,大部分基于模型推断的方法的相关工作集中在把多个模型融合成一个模型以增强模型的推断能力,来获得更适应目标领域的序列。目前比较常用的方法是集成推断,即把多个领域的模型使用{\chapterfourteen}的模型集成方法融合为一个模型用于推断\upcite{DBLP:journals/corr/FreitagA16},具体过程如下:
曹润柘 committed
1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025

\begin{itemize}
\vspace{0.5em}
\item 在目标领域和多个源领域数据上分别训练多个独立的机器翻译模型。
\vspace{0.5em}
\item 把多个模型集成为一个模型。
\vspace{0.5em}
\item 使用目标领域数据对集成模型进行微调。
\vspace{0.5em}
\item 使用微调后的模型进行推断。
\vspace{0.5em}
\end{itemize}
1026

曹润柘 committed
1027
\parinterval 集成推断方法相较于直接使用大量数据训练成一个模型的主要优势在于速度快,多个领域的模型可以独立训练,使训练时间大大缩短。集成推断也可以结合加权的思想,对不同领域的句子,赋予每个模型不同的先验权重进行推断,来获得最佳的推断结果\upcite{DBLP:conf/acl/SaundersSGB19}。还有部分工作研究在推断过程中融入语言模型\upcite{2015OnGulcehre,DBLP:conf/emnlp/DomhanH17}或目标领域的罕见词\upcite{DBLP:conf/naacl/BapnaF19}
曹润柘 committed
1028

曹润柘 committed
1029 1030 1031 1032
%----------------------------------------------------------------------------------------
%    NEW SECTION
%----------------------------------------------------------------------------------------

xiaotong committed
1033 1034 1035
\section{小结及扩展阅读}

低资源机器翻译是机器翻译大规模应用所面临的挑战之一,因此也备受关注。一方面,小样本学习和零样本学习技术的发展,使得研究者可以有更多的手段对问题求解;另一方面,从多语言之间的联系出发,也可以进一步挖掘语料背后的知识,并应用于低资源翻译任务。本章从多个方面介绍了低资源机器翻译方法,并结合多语言、零资源翻译等问题给出了不同场景下解决问题的思路。除此之外,还有几方面工作值得进一步关注:
曹润柘 committed
1036

曹润柘 committed
1037
\parinterval 如何更高效地利用已有双语数据或单语数据进行数据增强始终是一个热点问题。研究人员分别探索了源语言单语和目标语言单语的使用方法\upcite{DBLP:conf/emnlp/ZhangZ16,DBLP:conf/emnlp/WuWXQLL19,DBLP:conf/acl/XiaKAN19},以及如何对已有双语数据进行修改\upcite{DBLP:conf/emnlp/WangPDN18,DBLP:conf/acl/GaoZWXQCZL19}。经过数据增强得到的伪数据的质量时好时坏,如何提高伪数据的质量以及更好地利用伪数据进行训练也是十分重要的问题\upcite{DBLP:conf/emnlp/FadaeeM18,DBLP:conf/nlpcc/XuLXLLXZ19,DBLP:conf/wmt/CaswellCG19,DBLP:journals/corr/abs200403672,DBLP:conf/emnlp/WangLWLS19}。此外,还有一些工作对数据增强技术进行了理论分析\upcite{DBLP:conf/emnlp/LiLHZZ19,DBLP:conf/acl/MarieRF20}
曹润柘 committed
1038 1039
 
\parinterval 语言模型除了应用在解码过程中来提高翻译结果的流畅度之外,另外一种常用的做法是用来对翻译结果进行重排序。翻译模型在解码过程中可以生成多个候选,可以利用语言模型、不同的翻译模型等分别对每个候选打分,选择分数最高的句子作为最终的翻译结果\upcite{DBLP:conf/wmt/WangCJYCLSWY17,ng2019facebook,DBLP:conf/wmt/WangLLJZLLXZ18,DBLP:conf/wmt/LiLXLLLWZXWFCLL19},这一方法在各种机器翻译评测任务中得到了广泛使用。
曹润柘 committed
1040

曹润柘 committed
1041
\parinterval 预训练模型BERT的提出引发了人们对预训练方法的关注,从多个维度对预训练方法进行了更广泛和更深入的探讨。预训练模型的目标最早主要是语言模型或掩码语言模型,之后又提出了新的预训练任务,如排列语言模型\upcite{DBLP:conf/nips/YangDYCSL19}、降噪自编码器\upcite{lewis2019bart}\upcite{DBLP:conf/iclr/LanCGGSS20,DBLP:conf/acl/ZhangHLJSL19}。预训练技术也逐渐向多语言领域扩展\upcite{DBLP:conf/nips/ConneauL19,DBLP:conf/emnlp/HuangLDGSJZ19,song2019mass},甚至不再只局限于文本任务,逐渐向更多模态探索\upcite{DBLP:conf/iccv/SunMV0S19,DBLP:journals/corr/abs-2010-12831,DBLP:conf/nips/LuBPL19,DBLP:conf/interspeech/ChuangLLL20}。对于如何将预训练模型高效地应用到下游任务中,也进行了很多的经验性对比与分析\upcite{DBLP:journals/corr/abs-1802-05365,DBLP:conf/rep4nlp/PetersRS19,DBLP:conf/cncl/SunQXH19}。但将预训练模型应用于下游任务存在的一个问题是,由于模型巨大的参数量会带来较大的延时及显存消耗。因此,很多工作对如何压缩预训练模型进行了研究\upcite{shen2020q,Lan2020ALBERTAL,DBLP:journals/corr/abs-1910-01108,Jiao2020TinyBERTDB}
曹润柘 committed
1042

曹润柘 committed
1043
\parinterval 最早的多语言方向的工作开始于多任务学习,通过共享编码器模块或是注意力模块来进行一对多\upcite{DBLP:conf/acl/DongWHYW15}或多对一\upcite{DBLP:journals/tacl/LeeCH17}或多对多\upcite{DBLP:conf/naacl/FiratCB16}的学习,然而这些方法需要为每个翻译语言对设计单独的编码器和解码器,限制了其可扩展性。为了解决以上问题,研究人员进一步探索了用于多语言翻译的单个机器翻译模型的方法,也就是我们所说的多语言单模型系统\upcite{DBLP:journals/corr/HaNW16,DBLP:journals/tacl/JohnsonSLKWCTVW17}。为了弥补多语言单模型系统中缺乏语言表示多样性的问题,可以重新组织分享模块,设计特定任务相关模块\upcite{DBLP:conf/coling/BlackwoodBW18,DBLP:conf/wmt/SachanN18,DBLP:conf/wmt/LuKLBZS18,DBLP:conf/acl/WangZZZXZ19};可以将多语言单词编码和语言聚类分离,用一种多语言词典编码框架智能地共享词汇级别的信息,有助于语言间的泛化\upcite{DBLP:conf/iclr/WangPAN19};可以将语言聚类为不同的组,并为每个聚类单独训练一个多语言模型\upcite{DBLP:conf/emnlp/TanCHXQL19}。零资源翻译是多语言翻译领域一个非常重要的问题,近两年受到了广泛的关注,零资源翻译不仅可以解决低资源语种双语数据缺失的问题,还可以显著提高数据使用效率,在零资源翻译中,仅在$O(k)$并行语料库上进行训练之后,单个多语言翻译模型就能在任何$O(k^{2})$语言对之间进行概括和转换\upcite{DBLP:conf/naacl/Al-ShedivatP19}。但是,零资源翻译的性能通常很不稳定并且明显落后于有监督的翻译方向。为了改善零资源翻译,可以开发新的跨语言正则器,例如对齐正则器\upcite{DBLP:journals/corr/abs-1903-07091},一致性正则器\upcite{DBLP:conf/naacl/Al-ShedivatP19};可以通过反向翻译\upcite{DBLP:conf/acl/GuWCL19,DBLP:conf/emnlp/FiratSAYC16}或基于枢轴的翻译\upcite{DBLP:conf/emnlp/CurreyH19}生成人工并行数据;也可以尝试通过微调来改善零资源翻译性能\upcite{firat2016zero,DBLP:journals/corr/abs-1805-10338}
曹润柘 committed
1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066























曹润柘 committed
1067 1068