Commit 434b9d48 by xiaotong

wording (sec 16)

parent efc3f8f0
......@@ -3,9 +3,9 @@
\tikzstyle{circle} = [draw,black,line width=0.6pt,inner sep=3.5pt,rounded corners=4pt,minimum width=2em]
\tikzstyle{word} = [inner sep=3.5pt]
\node [anchor=center] (node1-1) at (0,0) {\small{\seq{x}}};
\node [anchor=west] (node1-2) at ([xshift=0.8em]node1-1.east) {\small{\seq{y}}};
\node [anchor=north] (node1-3) at ([xshift=1.0em]node1-1.south) {\small{翻译模型f}};
\node [anchor=center] (node1-1) at (0,0) {\small{$\seq{x}$}};
\node [anchor=west] (node1-2) at ([xshift=0.8em]node1-1.east) {\small{$\seq{y}$}};
\node [anchor=north] (node1-3) at ([xshift=1.0em]node1-1.south) {\small{翻译模型$f$}};
\draw [->,line width=0.6pt](node1-1.east)--(node1-2.west);
\begin{pgfonlayer}{background}
......@@ -21,9 +21,9 @@
\draw [->,thick]([xshift=0.2em]remark1.east).. controls (2.9,-0.25) and (2.9,-0.7) ..([yshift=0.2em]node3.north);
\node [anchor=north] (node4-1) at ([xshift=-1.0em,yshift=-7.0em]remark1.south) {\small{\seq{y}}};
\node [anchor=west] (node4-2) at ([xshift=0.8em]node4-1.east) {\small{\seq{x}}};
\node [anchor=north] (node4-3) at ([xshift=1.0em]node4-1.south) {\small{翻译模型g}};
\node [anchor=north] (node4-1) at ([xshift=-1.0em,yshift=-7.0em]remark1.south) {\small{$\seq{y}$}};
\node [anchor=west] (node4-2) at ([xshift=0.8em]node4-1.east) {\small{$\seq{x}$}};
\node [anchor=north] (node4-3) at ([xshift=1.0em]node4-1.south) {\small{翻译模型$g$}};
\draw [->,line width=0.6pt](node4-1.east)--(node4-2.west);
\begin{pgfonlayer}{background}
......
......@@ -24,7 +24,7 @@
\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)是当下急需解决且颇具挑战的问题。
\parinterval 本章将对低资源神经机器翻译的相关问题、模型和方法展开介绍,内容涉及数据的有效使用、双向翻译模型、多语言翻译建模、无监督机器翻译、领域适应五个方面。下面一一展开讨论。
\parinterval 本章将对低资源神经机器翻译的相关问题、模型和方法展开介绍,内容涉及数据的有效使用、双向翻译模型、多语言翻译建模、无监督机器翻译、领域适应五个方面。
%----------------------------------------------------------------------------------------
% NEW SECTION 16.1
......@@ -48,8 +48,8 @@
%----------------------------------------------------------------------------------------
\subsubsection{1. 回译}
\parinterval {\small\bfnew{回译}}\index{回译}(Back Translation, BT\index{Back Translation}是目前机器翻译任务上最常用的一种数据增强方法\upcite{Sennrich2016ImprovingNM,DBLP:conf/emnlp/EdunovOAG18,DBLP:conf/aclnmt/HoangKHC18}。回译的主要思想是:利用目标语言-源语言模型(反向翻译模型)来生成伪双语句对,用于训练源语言-目标语言翻译模型(正向翻译模型)。假设我们的目标是训练一个英汉翻译模型。首先,使用双语数据训练汉英翻译模型,即反向翻译模型。然后通过该模型将额外的汉语单语句子翻译为英语句子,从而得到大量的生成英语- 真实汉语伪双语句对。然后,将回译得到的伪双语句对和真实双语句对混合,训练得到最终的英汉神经机器翻译模型。
回译方法是模型无关的,只需要训练一个反向翻译模型,就可以简单有效地利用单语数据来增加训练数据的数量,因此在工业界也得到了广泛采\upcite{Hassan2018AchievingHP,DBLP:conf/iclr/LampleCDR18,DBLP:conf/emnlp/LampleOCDR18}。图\ref{fig:16-1} 给出了回译方法的一个简要流程。
\parinterval {\small\bfnew{回译}}\index{回译}(Back Translation, BT\index{Back Translation}是目前机器翻译任务上最常用的一种数据增强方法\upcite{Sennrich2016ImprovingNM,DBLP:conf/emnlp/EdunovOAG18,DBLP:conf/aclnmt/HoangKHC18}。回译的主要思想是:利用目标语言-源语言模型(反向翻译模型)来生成伪双语句对,用于训练源语言-目标语言翻译模型(正向翻译模型)。假设我们的目标是训练一个英汉翻译模型。首先,使用双语数据训练汉英翻译模型,即反向翻译模型。然后通过该模型将额外的汉语单语句子翻译为英语句子,从而得到大量的生成英语- 真实汉语伪双语句对。然后,将回译得到的伪双语句对和真实双语句对混合,训练得到最终的英汉神经机器翻译模型。
回译方法是模型无关的,只需要训练一个反向翻译模型,就可以简单有效地利用单语数据来增加训练数据的数量,因此得到了广泛使\upcite{Hassan2018AchievingHP,DBLP:conf/iclr/LampleCDR18,DBLP:conf/emnlp/LampleOCDR18}。图\ref{fig:16-1} 给出了回译方法的一个简要流程。
%----------------------------------------------
\begin{figure}[htp]
......@@ -60,7 +60,7 @@
\end{figure}
%----------------------------------------------
\parinterval 围绕如何利用回译方法生成伪双语数据,研究人员们进行了详细的分析探讨。一般观点认为,反向模型的性能越好,生成的伪数据质量也就更高,对正向模型的性能提升也就越大\upcite{Sennrich2016ImprovingNM,DBLP:conf/aclnmt/HoangKHC18}。不过,在实践中发现,即使一些简单的策略也能带来性能的增长。比如,对于一些低资源翻译任务,通过将目标语言句子复制到源语言端构造伪数据便能为模型带来增益\upcite{DBLP:conf/wmt/CurreyBH17}。原因在于,即使构造的双语伪数据是不准确的,其目标语言端仍然是真实数据,可以使解码器训练地更加充分,因此保证了神经机器翻译模型生成结果的流畅度。但是,相比这些简单的伪数据生成策略,利用目标语言单语数据进行回译可以获得更高质量的数据\upcite{DBLP:conf/wmt/CurreyBH17}。一种可能的解释是,双语伪数据的源语言是模型生成的翻译结果,保留了两种语言之间的互译信息,相比真实数据又存在一定的噪声。神经机器翻译模型在伪双语句对上进行训练,可以学习到如何处理带有噪声的输入,提高了模型的健壮性。
\parinterval 围绕如何利用回译方法生成伪双语数据,研究人员们进行了详细的分析探讨。一般观点认为,反向模型的性能越好,生成的伪数据质量也就更高,对正向模型的性能提升也就越大\upcite{Sennrich2016ImprovingNM,DBLP:conf/aclnmt/HoangKHC18}。不过,在实践中发现,即使一些简单的策略也能带来性能的增长。比如,对于一些低资源翻译任务,通过将目标语言句子复制到源语言端构造伪数据便能带来增益\upcite{DBLP:conf/wmt/CurreyBH17}。原因在于,即使构造的双语伪数据是不准确的,其目标语言端仍然是真实数据,可以使解码器训练地更加充分,因此保证了神经机器翻译模型生成结果的流畅度。但是,相比这些简单的伪数据生成策略,利用目标语言单语数据进行回译可以获得更高质量的数据\upcite{DBLP:conf/wmt/CurreyBH17}。一种可能的解释是,双语伪数据的源语言是模型生成的翻译结果,保留了两种语言之间的互译信息,相比真实数据又存在一定的噪声。神经机器翻译模型在伪双语句对上进行训练,可以学习到如何处理带有噪声的输入,提高了模型的健壮性。
\parinterval 在回译方法中,反向翻译模型的训练只依赖于有限的双语数据,因此生成的源语言端伪数据的质量难以保证。为此,可以采用{\small\sffamily\bfnew{迭代式回译}}\index{迭代式回译}(Iterative Back Translation)\index{Iterative Back Translation}的方法\upcite{DBLP:conf/aclnmt/HoangKHC18},同时利用源语言端和目标语言端的单语数据,不断通过回译的方式来提升正向和反向翻译模型的性能。图\ref{fig:16-2}展示了迭代式回译的框架。首先,使用双语数据训练一个正向翻译模型,然后利用额外的源语言单语数据通过回译的方式生成伪双语数据,来提升反向翻译模型的性能,再利用反向翻译模型和额外的目标语言单语数据生成伪双语数据,用于提升正向翻译模型的性能。可以看出,迭代式回译的过程是完全闭环的,因此可以一直重复进行,直到正向和反向翻译模型的性能均不再提升。
......@@ -73,9 +73,9 @@
\end{figure}
%----------------------------------------------
\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}
\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}
\parinterval 与回译方法类似,源语言的单语数据也可以通过一个双语数据训练的正向翻译模型获得对应的目标语言译文,从而构造正向翻译的伪数据\upcite{DBLP:conf/emnlp/ZhangZ16}。与回译方法相反,这时的伪数据中源语言句子是真实的,而目标语言句子是生成的,构造的伪数据对译文的流畅性并没有太大帮助,其主要作用是提升了编码器的特征提取能力。然而,由于伪数据中生成的译文质量很难保证,因此利用正向翻译模型生成伪数据的方法带来的性能提升效果要弱于回译,甚至可能是有害的\upcite{DBLP:conf/emnlp/WuWXQLL19}
\parinterval 与回译方法类似,源语言单语数据也可以通过一个双语数据训练的正向翻译模型获得对应的目标语言译文,从而构造正向翻译的伪数据\upcite{DBLP:conf/emnlp/ZhangZ16}。与回译方法相反,这时的伪数据中源语言句子是真实的,而目标语言句子是自动生成的,构造的伪数据对译文的流畅性并没有太大帮助,其主要作用是提升了编码器的特征提取能力。然而,由于伪数据中生成的译文质量很难保证,因此利用正向翻译模型生成伪数据的方法带来的性能提升效果要弱于回译,甚至可能是有害的\upcite{DBLP:conf/emnlp/WuWXQLL19}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
......@@ -92,7 +92,7 @@
\vspace{0.5em}
\item 掩码单词:句子中的每个词均有$\funp{P}_{\rm{Mask}}$的概率被替换为一个额外的[Mask]词。[Mask]的作用类似于占位符,可以理解为一个句子中的部分词被涂抹掉,无法得知该位置词的准确含义。
\vspace{0.5em}
\item 打乱顺序:将句子中距离较近的某些词的位置进行随机交换,打乱句子中的单词顺序
\item 打乱顺序:将句子中距离较近的某些词的位置进行随机交换。
\vspace{0.5em}
\end{itemize}
%----------------------------------------------
......@@ -103,12 +103,12 @@
\begin{figure}[htp]
\centering
\input{./Chapter16/Figures/figure-three-common-methods-of-adding-noise}
\caption{三种加噪方法}
\caption{三种数据加噪方法}
\label{fig:16-3}
\end{figure}
%----------------------------------------------
\parinterval 和回译方法相似,加噪方法一般仅在源语言句子上进行操作,既保证了目标语言句子的流畅度,又可以提高训练数据量,增加数据的多样性,也可以提高模型的鲁棒性和泛化能力\upcite{DBLP:conf/icml/VincentLBM08}。加噪作为一种简单有效的方法,实际的应用场景很多,比如:
\parinterval 和回译方法相似,加噪方法一般仅在源语言句子上进行操作,既保证了目标语言句子的流畅度,又可以提高训练数据量,增加数据的多样性,也可以提高模型的健壮性和泛化能力\upcite{DBLP:conf/icml/VincentLBM08}。加噪作为一种简单有效的方法,实际的应用场景很多,比如:
%----------------------------------------------
\begin{itemize}
\vspace{0.5em}
......@@ -121,20 +121,20 @@
\end{itemize}
%----------------------------------------------
\parinterval 另外一种方法是进行词替换。将一个句子中的某个词替换为其他词,可能并不会影响句子的合理性和流畅度。比如,对于“我出去玩。”这句话,将“我”替换为“你”、“他”、“我们”或者将“玩”替换为“骑车”、“学习”、“吃饭”等,虽然改变了语义,但句子仍然是合理的。词替换方法即是将双语数据中的部分词替换为词表中的其他词,在保证句子的语义或语法正确性的前提下,增加了训练数据的多样性。
\parinterval 另外一种方法是进行词替换。将一个句子中的某个词替换为其他词,可能并不会影响句子的合理性和流畅度。比如,对于“我/出去/玩。”这句话,将“我”替换为“你”、“他”、“我们”或者将“玩”替换为“骑车”、“学习”、“吃饭”等,虽然改变了语义,但句子在语法上仍然是合理的。词替换方法即是将双语数据中的部分词替换为词表中的其他词,在保证句子的语义或语法正确性的前提下,增加了训练数据的多样性。
\parinterval 词替换的另一种策略是将目标语中的稀有词替换为语义相近的词\upcite{DBLP:conf/acl/FadaeeBM17a}。词表中的稀有词由于出现次数较少,很容易导致训练不充分问题,从而无法准确预测稀有词\upcite{DBLP:conf/acl/SennrichHB16a}。通过语言模型将源语言句子中的某个词替换为满足语法或语义条件的稀有词,然后通过词对齐工具找到源语言句子中被替换的词在目标语言句子中对应的位置,借助翻译词典等方法将目标语言句子中的对应位置的词替换为源语言句子中被替换的词对应的翻译结果,从而生成得到伪双语数据。
\parinterval 词替换的另一种策略是将目标语中的稀有词替换为语义相近的词\upcite{DBLP:conf/acl/FadaeeBM17a}。词表中的稀有词由于出现次数较少,很容易导致训练不充分问题,从而无法准确预测稀有词\upcite{DBLP:conf/acl/SennrichHB16a}。通过语言模型将源语言句子中的某个词替换为满足语法或语义条件的稀有词,然后通过词对齐工具找到源语言句子中被替换的词在目标语言句子中对应的位置,借助翻译词典将这位目标语言位置的单词替换为词典中的翻译结果,从而生成得到伪双语数据。
\parinterval 此外,通过在源语言或目标语言中随机选择某些词,将这些词替换为词表中随机的一个词,也可以得到伪双语数据\upcite{DBLP:conf/emnlp/WangPDN18}。随机选择句子中的某个词,将这个词的词嵌入替换为其他词的词嵌入加权表示融合,权重可以通过语言模型来计算,相比离散的替换方式(替换为其他词等),这种丰富的分布式表示相比直接使用词嵌入可以包含更多的语义信息,同一个词在不同的上下文中也会被替换为不同的上下文表示\upcite{DBLP:conf/acl/GaoZWXQCZL19}
\parinterval 此外,通过在源语言或目标语言中随机选择某些词,将这些词替换为词表中随机的一个词,也可以得到伪双语数据\upcite{DBLP:conf/emnlp/WangPDN18}。随机选择句子中的某个词,将这个词的词嵌入替换为其他词的词嵌入加权表示融合,权重可以通过语言模型来计算,相比离散的替换方式(替换为其他词等),这种丰富的分布式表示相比直接使用词嵌入可以包含更多的语义信息,同一个词在不同的上下文中也会被替换为不同的上下文表示结果\upcite{DBLP:conf/acl/GaoZWXQCZL19}
\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},通过转述方法对原始的双语数据进行改写,训练数据可以覆盖更多的语言学现象,同时由于每个句子可以对应多个不同的翻译,可以避免模型过拟合,提高泛化能力。
\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},通过转述方法对原始的双语数据进行改写,训练数据可以覆盖更多的语言学现象,同时由于每个句子可以对应多个不同的翻译,可以避免模型过拟合,提高泛化能力。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 双语句对挖掘}
\parinterval 在双语平行语料缺乏的时候,从可比语料中挖掘可用的双语句对也是一种有效的方法\upcite{finding2006adafre,method2008keiji,2005Improving,DBLP:conf/naacl/SmithQT10,DBLP:conf/emnlp/WuZHGQLL19}。可比语料是指源语言和目标语言虽然不是完全互译的文本,但是蕴含了丰富的双语对照知识,可以从中挖掘出可用的双语句对来训练。相比双语平行语料来说,可比语料相对容易获取,比如,多种语言报道的新闻事件、多种语言的维基百科词条和多种语言翻译的书籍(如圣经等)等。如图\ref{fig:16-4}中展示的维基百科词条所示。
\parinterval 在双语平行语料缺乏的时候,从可比语料中挖掘可用的双语句对也是一种有效的方法\upcite{finding2006adafre,2005Improving,DBLP:conf/emnlp/WuZHGQLL19}。可比语料是指源语言和目标语言虽然不是完全互译的文本,但是蕴含了丰富的双语对照知识,可以从中挖掘出可用的双语句对来训练。相比双语平行语料来说,可比语料相对容易获取,比如,多种语言报道的新闻事件、多种语言的维基百科词条和多种语言翻译的书籍(如圣经等)等。如图\ref{fig:16-4}中展示的维基百科词条所示。
%----------------------------------------------
\begin{figure}[htp]
......@@ -145,16 +145,16 @@
\end{figure}
%----------------------------------------------
\parinterval 可比语料大多存在于网页中,内容较为复杂,可能会存在较大比例的噪声干扰,如HTML字符、乱码等。首先需要对内容进行充分的数据清洗操作,得到干净的可比语料,然后从中抽取出可用的双语句对。传统的抽取方法一般通过统计模型或双语词典来得到,比如,通过计算两个不同语言句子之间的单词重叠数或BLEU值\upcite{finding2006adafre,method2008keiji};通过排序模型或二分类器判断一个目标语言句子和一个源语言句子互译的可能性\upcite{DBLP:journals/coling/MunteanuM05,DBLP:conf/naacl/SmithQT10}
\parinterval 可比语料大多存在于网页中,内容较为复杂,可能会存在较大比例的噪声,如HTML字符、乱码等。首先需要对内容进行充分的数据清洗操作,得到干净的可比语料,然后从中抽取出可用的双语句对。传统的抽取方法一般通过统计模型或双语词典来得到,比如,通过计算两个不同语言句子之间的单词重叠数或BLEU值\upcite{finding2006adafre,method2008keiji};通过排序模型或二分类器判断一个目标语言句子和一个源语言句子互译的可能性\upcite{DBLP:journals/coling/MunteanuM05,DBLP:conf/naacl/SmithQT10}
\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}小节
\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}节的内容
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{基于语言模型的方法}
\parinterval 除了构造双语数据进行数据增强,直接利用单语数据也是机器翻译中的常用方法。通常,单语数据会被用于语言模型的学习(见{\chaptertwo})。对于机器翻译系统,使用语言模型也是一件十分自然的事情,在目标语言端,语言模型可以帮助系统产生更加流畅的译文;在源语言端,语言模型也可以用于句子编码,进而更好地生成句子的表示结果。在传统方法中,语言模型更多的被使用在目标语端。不过,近些年来随着预训练技术的发展,语言模型也被使用在神经机器翻译的编码端。下面将从语言模型在目标端的融合、预训练词嵌入、预训练编码器和多任务学习等方向介绍基于语言模型的单语数据使用方法。
\parinterval 除了构造双语数据进行数据增强,直接利用单语数据也是机器翻译中的常用方法。通常,单语数据会被用于语言模型的学习(见{\chaptertwo})。对于机器翻译系统,使用语言模型也是一件十分自然的事情,在目标语言端,语言模型可以帮助系统选择更加流畅的译文输出;在源语言端,语言模型也可以用于句子编码,进而更好地生成句子的表示结果。在传统方法中,语言模型更多的被使用在目标语端。不过,近些年来随着预训练技术的发展,语言模型也被使用在神经机器翻译的编码端。下面将从语言模型在目标端的融合、预训练词嵌入、预训练编码器和多任务学习等方向介绍基于语言模型的单语数据使用方法。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
......@@ -172,7 +172,7 @@
\parinterval 浅融合方法独立训练翻译模型和语言模型,在生成每个词的时候,对两个模型的预测概率进行加权求和得到最终的预测概率。浅融合的不足在于,解码过程对每个词均采用相同的语言模型权重,这实际上是不合理的。比如,在汉语-英语翻译系统中,英语句子中的冠词可能在汉语句子中没有显式的单词对应,这种情况下,英语语言模型可以提供更多帮助,保证翻译结果更加符合英语的语言结构;而在翻译某些名词的时候,语言模型由于没有源语言句子的信息,反而会对解码过程产生干扰,因此权重越小越好。针对这个问题,深融合联合翻译模型和语言模型进行训练,从而在解码过程中动态地计算语言模型的权重,从而更好地融合翻译模型和语言模型来计算预测概率。
\parinterval 大多数情况下,译文端语言模型的使用可以提高翻译结果的流畅度。不过,它并不会增加翻译结果对源语言句子表达的{\small\bfnew{充分性}}\index{充分性}(Adequacy\index{Adequacy}),即源语言句子的信息是否被充分体现到了译文中。也有一些研究发现,神经机器翻译过于关注译文的流畅度,但是充分性的问题没有很好的考虑,比如,神经机器翻译系统的结果中经常出现漏译等问题。也有一些研究提出控制翻译充分性的方法,让译文在流畅度和充分性之间达到平衡\upcite{DBLP:conf/acl/TuLLLL16,li-etal-2018-simple,DBLP:journals/tacl/TuLLLL17}
\parinterval 大多数情况下,译文端语言模型的使用可以提高翻译结果的流畅度。不过,它并不会增加翻译结果对源语言句子表达的{\small\bfnew{充分性}}\index{充分性}(Adequacy\index{Adequacy}),即源语言句子的信息是否被充分体现到了译文中。也有一些研究发现,神经机器翻译过于关注译文的流畅度,但是充分性的问题没有很好的考虑,比如,神经机器翻译系统的结果中经常出现漏译等问题。也有一些研究人员提出控制翻译充分性的方法,让译文在流畅度和充分性之间达到平衡\upcite{DBLP:conf/acl/TuLLLL16,li-etal-2018-simple,DBLP:journals/tacl/TuLLLL17}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
......@@ -183,27 +183,18 @@
\parinterval 实现上述想法的一种手段是{\small\sffamily\bfnew{预训练}}\index{预训练}(Pre-training)\index{Pre-training}\upcite{DBLP:conf/nips/DaiL15,DBLP:journals/corr/abs-1802-05365,radford2018improving,devlin2019bert}。预训练的做法相当于将表示模型的学习任务从目标任务中分离出来,这样可以利用额外的更大规模的数据进行学习。常用的一种方法是使用语言建模等方式在大规模单语数据上进行训练,来得到神经机器翻译模型中的一部分(比如词嵌入和编码器等)的模型参数,作为模型的初始值。然后,神经机器翻译模型在双语数据上进行{\small\sffamily\bfnew{微调}}\index{微调}(Fine-tuning)\index{Fine-tuning},以得到最终的翻译模型。
\parinterval 词嵌入可以被看作是对每个独立单词进行的表示学习,在自然语言处理的众多任务中都扮演着重要角色\upcite{DBLP:conf/icml/CollobertW08,2011Natural,DBLP:journals/corr/abs-1901-09069}。到目前为止已经有大量的词嵌入学习方法被提出(见{\chapternine}),因此可以直接应用这些方法在海量的单语数据上训练得到词嵌入,用来初始化神经机器翻译模型的词嵌入矩阵\upcite{DBLP:conf/aclwat/NeishiSTIYT17,2018When}
\parinterval 词嵌入可以被看作是对每个独立单词进行的表示学习,在自然语言处理的众多任务中都扮演着重要角色\upcite{DBLP:conf/icml/CollobertW08,2011Natural,DBLP:journals/corr/abs-1901-09069}。到目前为止已经有大量的词嵌入学习方法被提出(见{\chapternine}),因此可以直接应用这些方法在海量的单语数据上训练得到词嵌入,用来初始化神经机器翻译模型的词嵌入参数矩阵\upcite{DBLP:conf/aclwat/NeishiSTIYT17,2018When}
\parinterval 需要注意的是,在神经机器翻译中使用预训练词嵌入有两种方法。一种方法是直接将词嵌入作为固定的输入,也就是在训练机器翻译模型的过程中,并不调整词嵌入的参数。这样做的目的是完全将词嵌入模块独立出来,机器翻译可以被看作是在固定的词嵌入输入上进行的建模,从而降低了机器翻译系统学习的难度。另一种方法是仍然遵循``预训练+微调''的策略,将词嵌入作为翻译模型的初始值。之后在机器翻译训练过程中,词嵌入模型结果会被进一步更新。近些年,在词嵌入预训练的基础上进行微调的方法受到研究者越来越多的青睐。因为在实践中发现,完全用单语数据学习的单词表示,与双语上的翻译任务并不完全匹配。目标语言的信息也会影响源语言的表示学习,在预训练词嵌入的基础上进一步进行微调是更加有效的方案。
\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}
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter16/Figures/figure-elmo-model-structure}
\caption{ELMo模型结构示意图}
\label{fig:16-5}
\end{figure}
%----------------------------------------------
\parinterval 虽然预训练词嵌入在海量的单语数据上学习到了丰富的表示,但词嵌入很主要的一个缺点是无法解决一词多义问题。在不同的上下文中,同一个单词经常表示不同的意思,但词嵌入是完全相同的。模型需要在编码过程中通过上下文去理解每个词在当前语境下的含义,从而增加了建模的复杂度。因此,上下文词向量在近些年得到了广泛的关注\upcite{DBLP:conf/acl/PetersABP17,mccann2017learned,DBLP:conf/naacl/PetersNIGCLZ18}。上下文词嵌入是指一个词的表示不仅依赖于单词自身,还要根据所在的上下文语境来得到。由于在不同的上下文中,每个词对应的词嵌入是不同的,因此无法简单地通过词嵌入矩阵来表示,通常的做法是使用海量的单语数据预训练语言模型任务,使模型具备丰富的特征提取能力\upcite{DBLP:conf/naacl/PetersNIGCLZ18,radford2018improving,devlin2019bert}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 预训练模型}
\parinterval 相比固定的词嵌入,上下文词嵌入包含了在当前语境中的语义信息,丰富了模型的输入表示,降低了训练难度。但是,模型仍有大量的参数需要从零学习,来进一步提取整个句子的表示。那么,能不能在预训练阶段中直接得到预训练好的模型参数,在下游任务中仅仅通过任务特定的数据对模型参数进行微调,来得到一个较强的模型呢?{\small\bfnew{生成式预训练}}(Generative Pre-Training,GPT)\index{生成式预训练}\index{GPT}和来自Transformer的{\small\bfnew{双向编码器表示}}(Bidirectional Encoder Representations from Transformers,BERT)\index{双向编码器表示}\index{BERT}对这种方法进行了探索,并取得了令人振奋的实验结果
\parinterval 相比固定的词嵌入,上下文词嵌入包含了在当前语境中的语义信息,丰富了模型的输入表示,降低了训练难度。但是,模型仍有大量的参数需要从零学习,来进一步提取整个句子的表示。那么,能不能在预训练阶段中直接得到预训练好的模型参数,在下游任务中仅仅通过任务特定的数据对模型参数进行微调,来得到一个较强的模型呢?{\small\bfnew{生成式预训练}}(Generative Pre-Training,GPT)\index{生成式预训练}\index{GPT}和来自Transformer的{\small\bfnew{双向编码器表示}}(Bidirectional Encoder Representations from Transformers,BERT)\index{双向编码器表示}\index{BERT}对这个问题进行了探索
%----------------------------------------------
\begin{figure}[htp]
......@@ -214,17 +205,17 @@
\end{figure}
%----------------------------------------------
\parinterval GPT\upcite{radford2018improving}通过Transformer模型自回归地训练单向语言模型,类似于神经机器翻译模型的解码器,相比ELMo中使用的BiLSTM模型,Tranformer架构的表示能力更强。在大规模单语数据上预训练得到的模型结构只需要进行简单的修改,然后通过任务特定的训练数据进行微调,就可以很好地适配到下游任务中,在多个任务中均取得了当时最佳的结果。之后提出的BERT模型更是将预训练的作用提升到了新的水平\upcite{devlin2019bert}。GPT模型十分严重的一个缺陷在于模型只能进行单向编码,也就是前面的文本在建模时无法获取到后面的信息。而BERT提出了一种自编码的方式,使模型在预训练阶段可以通过双向编码的方式进行建模,进一步增强了模型的表示能力。
\parinterval GPT\upcite{radford2018improving}通过Transformer模型自回归地训练单向语言模型,类似于神经机器翻译模型的解码器,相比双向LSTM等模型,Tranformer架构的表示能力更强。在大规模单语数据上预训练得到的模型结构只需要进行简单的修改,然后通过任务特定的训练数据进行微调,就可以很好地适配到下游任务中。之后提出的BERT模型更是将预训练的作用提升到了新的水平\upcite{devlin2019bert}。GPT模型的一个缺陷在于模型只能进行单向编码,也就是前面的文本在建模时无法获取到后面的信息。而BERT提出了一种自编码的方式,使模型在预训练阶段可以通过双向编码的方式进行建模,进一步增强了模型的表示能力。
\parinterval BERT的核心思想是通过{\small\bfnew{掩码语言模型}}(Masked Language model,MLM)\index{掩码语言模型}\index{MLM}任务进行预训练。掩码语言模型的思想类似于完形填空,随机选择输入句子中的部分词掩码,模型来预测这些被掩码的词。掩码的具体做法是将被选中的词替换为一个特殊的词[Mask],这样模型在训练过程中,无法得到掩码位置词的信息,需要联合上下文内容进行预测,因此提高了模型对上下文的特征提取能力。实验表明,相比在下游任务中仅利用上下文词嵌入,在大规模单语输数据上预训练的模型具有更强的表示能力。同时,对比单向预训练模型GPT,BERT这种双向编码的训练方式也展示出了更好的效果
\parinterval BERT的核心思想是通过{\small\bfnew{掩码语言模型}}(Masked Language model,MLM)\index{掩码语言模型}\index{MLM}任务进行预训练。掩码语言模型的思想类似于完形填空,随机选择输入句子中的部分词掩码,模型来预测这些被掩码的词。掩码的具体做法是将被选中的词替换为一个特殊的词[Mask],这样模型在训练过程中,无法得到掩码位置词的信息,需要联合上下文内容进行预测,因此提高了模型对上下文的特征提取能力。实验表明,相比在下游任务中仅利用上下文词嵌入,在大规模单语输数据上预训练的模型具有更强的表示能力。而使用掩妈的方式训练也给机器翻译提供了新的思路,在本章的部分内容中也会使用到类似方法
\parinterval 在神经机器翻译任务中,预训练模型可以用于初始化编码器的模型参数\upcite{DBLP:conf/emnlp/ClinchantJN19,DBLP:conf/emnlp/ImamuraS19,DBLP:conf/naacl/EdunovBA19}。之所以用在编码器而不是解码器端,主要原因在于编码器的作用主要在于特征提取,训练难度相对较高,而解码器的作用主要在于生成,和编码器提取到的表示是强依赖的,相对比较脆弱\upcite{DBLP:journals/corr/abs-1908-06259}。模型在预训练阶段的生成过程中并没有考虑到额外的表示信息,因此和神经机器翻译的编码器存在着明显的不一致问题,所以目前主流的做法是仅利用预训练模型对编码器的模型参数进行初始化。
\parinterval 然而,在实践中发现,参数初始化的方法在一些富资源语种上提升效果并不明显,甚至反而有些下降\upcite{DBLP:journals/corr/abs-2002-06823}。原因可能在于,预训练模型可以带来显著提升的一个重要原因在于预训练阶段的训练数据规模是非常大的,因此在下游任务数据量较少的情况下帮助较大。而在一些富资源语种上,双语句对的数据量可以达到千万级别,因此简单通过预训练模型来初始化模型参数无法带来明显的提升。此外,预训练模型的训练目标并没有考虑到序列到序列的生成,与神经机器翻译的训练目标并不完全一致,两者训练得到的模型参数可能存在一些区别。
\parinterval 然而,在实践中发现,参数初始化的方法在一些富资源语种上提升效果并不明显,甚至反而会带来性能的下降\upcite{DBLP:journals/corr/abs-2002-06823}。原因可能在于,预训练阶段的训练数据规模是非常大的,因此在下游任务数据量较少的情况下帮助较大。而在一些富资源语种上,双语句对的数据量可以达到千万级别,因此简单通过预训练模型来初始化模型参数无法带来明显的提升。此外,预训练模型的训练目标并没有考虑到序列到序列的生成,与神经机器翻译的训练目标并不完全一致,两者训练得到的模型参数可能存在一些区别。
\parinterval 因此,一些做法将预训练模型和翻译模型进行融合,将预训练模型作为一个独立的模块来为编码器或者解码器提供句子级表示信息\upcite{DBLP:journals/corr/abs-2002-06823,DBLP:conf/aaai/YangW0Z00020}。另外一种做法是针对生成任务进行预训练。机器翻译是一种典型的语言生成任务,不仅包含源语言表示学习的问题,还有序列到序列的映射,以及目标端序列生成的问题,这些知识是无法单独通过(源语言)单语数据学习到的。因此,可以使用单语数据对编码器-解码器结构进行预训练\upcite{song2019mass,DBLP:conf/acl/LewisLGGMLSZ20,DBLP:conf/emnlp/QiYGLDCZ020}
\parinterval{\small\bfnew{掩码端到端预训练}}(MAsked Sequence to Sequence pre-training,MASS)\index{掩码端到端预训练}\index{MASS}方法为例\upcite{song2019mass},其思想与BERT十分相似,也是在预训练过程中采用掩码的方式,随机选择编码器输入句子中的连续片段替换为特殊词[Mask],然后在解码器端预测这个连续片段,如图\ref{fig:16-7} 所示。这种做法可以使得编码器端捕捉上下文信息,同时迫使解码器依赖于编码器进行自回归地生成,从而学习到编码器和解码器之间的注意力。为了适配下游的机器翻译任务,使预训练模型可以学习到不同语言的表示,MASS对不同语言的句子采用共享词汇表和模型参数的方法,利用同一个预训练模型来进行不同语言句子的预训练。通过这种方式,模型既学到了对源语言句子的编码,也学习到了对目标语言句子的生成,之后通过双语句对对预训练模型的参数进行微调,模型可以快速收敛到较好的水平。
\parinterval{\small\bfnew{掩码端到端预训练}}(MAsked Sequence to Sequence pre-training,MASS)\index{掩码端到端预训练}\index{MASS}方法为例\upcite{song2019mass},其思想与BERT十分相似,也是在预训练过程中采用掩码的方式,随机选择编码器输入句子中的连续片段替换为特殊词[Mask],然后在解码器端预测这个连续片段,如图\ref{fig:16-7} 所示。这种做法可以使得编码器端捕捉上下文信息,同时迫使解码器依赖于编码器进行自回归地生成,从而学习到编码器和解码器之间的注意力。为了适配下游的机器翻译任务,使预训练模型可以学习到不同语言的表示,MASS对不同语言的句子采用共享词汇表和模型参数的方法,利用同一个预训练模型来进行不同语言句子的预训练。通过这种方式,模型既学到了对源语言句子的编码,也学习到了对目标语言句子的生成方法,之后通过使用双语句对来对预训练模型的参数进行微调,模型可以快速收敛到较好的水平。
%----------------------------------------------
\begin{figure}[htp]
......@@ -235,16 +226,16 @@
\end{figure}
%----------------------------------------------
\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}
\parinterval 此外,还有很多工作对如何将语言模型应用到神经机器翻译模型中进行了研究。研究人员分析了预训练词嵌入为何在神经机器翻译模型中有效\upcite{2018When};如何在神经机器翻译模型中利用预训练的BERT模型\upcite{DBLP:conf/emnlp/ClinchantJN19,DBLP:conf/emnlp/ImamuraS19,DBLP:conf/aaai/YangW0Z00020,DBLP:conf/aaai/WengYHCL20,DBLP:conf/emnlp/ImamuraS19};如何针对神经机器翻译任务进行预训练\upcite{DBLP:journals/corr/abs-2001-08210,DBLP:conf/aaai/JiZDZCL20,DBLP:conf/acl/LewisLGGMLSZ20};针对机器翻译中的Code-switching问题进行预训练\upcite{DBLP:journals/corr/abs-2009-08088};如何在微调过程中避免遗忘原始的语言模型任务\upcite{DBLP:journals/corr/abs-2010-09403}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{4. 多任务学习}
\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}小节中的多任务结构图
\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}。多任务学习的常用做法是针对多个相关的任务,共享模型的部分参数来学习不同任务之间相似的特征,并通过特定的模块来学习每个任务独立的特征(见\chapterfifteen)。常用的策略是对底层的模型参数进行共享,顶层的模型参数用于独立学习各个不同的任务
\parinterval 在神经机器翻译中,应用多任务学习的主要策略是将翻译任务作为主任务,同时设置一些仅使用单语数据的子任务,通过这些子任务来捕捉单语数据中的语言知识\upcite{DBLP:conf/emnlp/DomhanH17,DBLP:conf/emnlp/ZhangZ16,DBLP:journals/corr/LuongLSVK15}。一种多任务学习的方法是利用源语言单语数据,通过单个编码器对源语言数据进行建模,然后分别使用两个解码器来学习源语言排序和翻译任务。源语言排序任务是指对句子的顺序进行调整,可以通过单语数据来构造训练数据,从而使编码器训练地更加充分\upcite{DBLP:conf/emnlp/ZhangZ16},如图\ref{fig:16-8}所示。
\parinterval 在神经机器翻译中,应用多任务学习的主要策略是将翻译任务作为主任务,同时设置一些仅使用单语数据的子任务,通过这些子任务来捕捉单语数据中的语言知识\upcite{DBLP:conf/emnlp/DomhanH17,DBLP:conf/emnlp/ZhangZ16,DBLP:journals/corr/LuongLSVK15}。一种多任务学习的方法是利用源语言单语数据,通过单个编码器对源语言数据进行建模,然后分别使用两个解码器来学习源语言排序和翻译任务。源语言排序任务是指对句子的顺序进行调整,可以通过单语数据来构造训练数据,从而使编码器被训练得更加充分\upcite{DBLP:conf/emnlp/ZhangZ16},如图\ref{fig:16-8}所示。
%----------------------------------------------
\begin{figure}[htp]
\centering
......@@ -254,7 +245,7 @@
\end{figure}
%----------------------------------------------
\parinterval 虽然神经翻译模型可以看作一个受限的语言模型,但生成过程中却依赖于源语言信息,因此无法直接利用目标语言单语数据进行多任务学习。针对这个问题,可以对原有翻译模型结构进行修改,在解码器底层增加一个语言模型子层,这个子层用于学习语言模型任务,与编码器端是完全独立的,如图\ref{fig:16-9}所示\upcite{DBLP:conf/emnlp/DomhanH17}。在训练过程中,可以分别将双语数据和单语数据送入翻译模型和语言模型进行计算,双语数据训练产生的梯度用于对整个模型进行参数更新,而单语数据产生的梯度只对语言模型子层进行参数更新。通过这种方式,可以有效利用单语数据使解码器端的底层网络训练地更加充分,从而提取到更有效的特征来生成翻译结果。
\parinterval 虽然神经翻译模型可以看作一种语言生成模型,但生成过程中却依赖于源语言信息,因此无法直接利用目标语言单语数据进行多任务学习。针对这个问题,可以对原有翻译模型结构进行修改,在解码器底层增加一个语言模型子层,这个子层用于学习语言模型任务,与编码器端是完全独立的,如图\ref{fig:16-9}所示\upcite{DBLP:conf/emnlp/DomhanH17}。在训练过程中,可以分别将双语数据和单语数据送入翻译模型和语言模型进行计算,双语数据训练产生的梯度用于对整个模型进行参数更新,而单语数据产生的梯度只对语言模型子层进行参数更新。通过这种方式,可以有效利用单语数据使解码器端的底层网络训练得更加充分,从而提取到更有效的特征来生成翻译结果。
%----------------------------------------------
\begin{figure}[htp]
......@@ -305,7 +296,7 @@
%----------------------------------------------------------------------------------------
\subsection{对偶学习}
\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}。下面将一一展开讨论。
\parinterval 对称,也许是人类最喜欢的美,其始终贯穿在整个人类文明的诞生与发展之中。古语“夫美者,上下、内外、大小、远近皆无害焉,故曰美”描述的即是这样的美。在人工智能的任务中,也存在着这样的对称结构,比如机器翻译中英译汉和汉译英、图像处理中的图像标注和图像生成以及语音处理中的语音识别和文字合成等。利用这些任务的对称性质(也称对偶性),可以使互为对偶的两个任务获得更有效的反馈,从而使对应的模型相互学习、相互提高。目前,对偶学习的思想已经广泛应用于低资源机器翻译领域,其不仅能够提升在有限双语资源下的翻译模型性能({\small\bfnew{有监督对偶学习}},Supervised Dual Learning\index{Supervised Dual Learning}\upcite{DBLP:conf/icml/XiaQCBYL17,DBLP:conf/acl/SuHC19,DBLP:journals/ejasmp/RadzikowskiNWY19},而且能够利用未标注的单语数据来进行学习({\small\bfnew{无监督对偶学习}},Unsupervised Dual Learning\index{Unsupervised Dual Learning}\upcite{qin2020dual,DBLP:conf/iccv/YiZTG17,DBLP:journals/access/DuRZH20}。下面将一一展开讨论。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
......@@ -319,13 +310,13 @@
\label{eq:16-3}
\end{eqnarray}
\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})$。因此,在构建训练两个方向的翻译模型的目标函数时,除了它们单独训练时各自使用的极大似然估计目标函数,可以额外增加一个目标项来鼓励两个方向的翻译模型:
\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})$。因此,在构建训练两个方向的翻译模型的目标函数时,除了它们单独训练时各自使用的极大似然估计目标函数,可以额外增加一个目标项来鼓励两个方向的翻译模型,例如
\begin{eqnarray}
{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}}
\label{eq:16-4}
\end{eqnarray}
\parinterval 通过该正则化项,我们将互为对偶的两个任务放在一块学习,通过任务对偶性加强监督学习的过程,就是有监督对偶学习\upcite{DBLP:conf/icml/XiaQCBYL17,qin2020dual}。这里,$\funp{P}(\seq{x})$$\funp{P}(\seq{y})$这两个语言模型是预先训练好的,并不参与翻译模型的训练。可以看到,对于单独的一个模型来说,其目标函数增加了与另外一个方向的模型相关的项。这样的形式与L1/L2正则化非常类似(见{\chapterthirteen}),因此可以把这个方法看作是一种任务特定的正则化的手段(由翻译任务本身的性质所启发而来)。有监督对偶学习实际上要优化下面这个损失函数:
\parinterval 通过该正则化项,我们将互为对偶的两个任务放在一块学习,通过任务对偶性加强监督学习的过程,就是有监督对偶学习\upcite{DBLP:conf/icml/XiaQCBYL17,qin2020dual}。这里,$\funp{P}(\seq{x})$$\funp{P}(\seq{y})$这两个语言模型是预先训练好的,并不参与翻译模型的训练。可以看到,对于单独的一个模型来说,其目标函数增加了与另外一个方向的模型相关的项。这样的形式与L1/L2正则化非常类似(见{\chapterthirteen}),因此可以把这个方法看作是一种任务特定的正则化的手段(由翻译任务本身的性质所启发而来)。有监督对偶学习实际上要优化如下的损失函数:
\begin{eqnarray}
{L} & = & \log{\funp{P}(\seq{y}|\seq{x})}+\log{\funp{P}(\seq{x}|\seq{y})}+{L}_{\rm{dual}}
\label{eq:16-5}
......@@ -340,16 +331,16 @@
\parinterval 如上一节所述,有监督的对偶学习需要使用双语数据来训练两个翻译模型。幸运的是,存在大量的单语数据可供使用。因此,如何使用这些单语数据来提升翻译模型的性能是一个关键问题。
\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$的参数。这个过程可以多次迭代,从大量的无标注单语数据上不断提升性能。
\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$的参数。这个过程可以多次迭代,从大量的无标注单语数据上不断提升性能。
\parinterval 从统计建模的角度看,如果在有监督对偶学习对联合分布$\funp{P}(y|x)$建模的基础上把$y$看作一个隐变量,那么可以得到边缘分布$\funp{P}(x)$,也就是关于$x$的语言模型:
\begin{eqnarray}
\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})
& \ge & \sum_{\seq{y}}\funp{P}(\seq{x}|\seq{y})\funp{P}(\seq{y}|\seq{x})
\label{eq:16-6}
\end{eqnarray}
\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}
\parinterval 公式\eqref{eq:16-6}使用了$\funp{P}(\seq{x}|\seq{x},\seq{y}) \ge \funp{P}(\seq{x}|\seq{y})$。这样,$\sum_{\seq{y}}\funp{P}(\seq{x}|\seq{y})\funp{P}(\seq{y}|\seq{x})$描述了$\funp{P}(\seq{x})$的一个下界。因此,如果直接优化(最大化)公式\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}
%----------------------------------------------
\begin{figure}[htp]
......@@ -389,7 +380,7 @@
\vspace{0.5em}
\end{itemize}
\parinterval节将对上面三种典型方法进行讨论。
\parinterval 本节将对上面三种典型方法进行讨论。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -613,15 +604,15 @@
\noindent 其中, $\operatorname{SVD}(\cdot)$表示奇异值分解,$\mathbi{Y}'$$\mathbi{X}'$中的单词来自$D$且行对齐。利用上式可以获得新的$\mathbi{W}$,通过$\mathbi{W}$可以归纳出新的$D$,如此迭代进行微调最后即可以得到收敛的$D$
\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}
\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}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 鲁棒性问题}
\subsubsection{2. 健壮性问题}
\parinterval 目前很多无监督词典归纳方法在相似语言对比如英-法,英-德已经取得不错的结果,然而在远距离语言对比如英-中,英-日等性能仍然很差\upcite{DBLP:conf/emnlp/VulicGRK19,A2020Li}。无监督词典归纳的鲁棒性仍然存在巨大的挑战。这有多个层面的原因:
\parinterval 目前很多无监督词典归纳方法在相似语言对比如英-法,英-德已经取得不错的结果,然而在远距离语言对比如英-中,英-日等性能仍然很差\upcite{DBLP:conf/emnlp/VulicGRK19,A2020Li}。无监督词典归纳的健壮性仍然存在巨大的挑战。这有多个层面的原因:
\begin{itemize}
\vspace{0.5em}
......@@ -635,7 +626,7 @@
\vspace{0.5em}
\end{itemize}
\parinterval 无监督方法的鲁棒性是一个很难解决的问题。对于词典推断这个任务来说,是否有必要无监督仍然值得商榷,因为其作为一个底层任务,不仅可以利用词嵌入,还可以利用单语、甚至是双语信息。此外,基于弱监督的方法代价也不是很大,只需要数千个词典即可,有了监督信号的引导,鲁棒性问题就能得到一定的缓解。
\parinterval 无监督方法的健壮性是一个很难解决的问题。对于词典推断这个任务来说,是否有必要无监督仍然值得商榷,因为其作为一个底层任务,不仅可以利用词嵌入,还可以利用单语、甚至是双语信息。此外,基于弱监督的方法代价也不是很大,只需要数千个词典即可,有了监督信号的引导,健壮性问题就能得到一定的缓解。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION 16.4.2
......@@ -824,7 +815,7 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
\parinterval 在统计机器翻译时代,使用基于数据或模型的方法来提升机器翻译模型在特定领域上的翻译性能就已经备受关注,而这些技术和思想也为神经机器翻译中的领域适应技术提供了参考。
\parinterval 统计机器翻译中,领域适应可以分为基于混合模型的方法\upcite{DBLP:conf/iwslt/BisazzaRF11,niehues2012detailed,DBLP:conf/acl/SennrichSA13}、基于数据加权的方法\upcite{DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10,shah2012general}、基于数据选择的方法\upcite{DBLP:conf/lrec/EckVW04,DBLP:conf/acl/MooreL10,DBLP:conf/acl/DuhNST13,DBLP:conf/coling/HoangS14}和基于伪数据的方法\upcite{DBLP:conf/iwslt/Ueffing06,DBLP:conf/coling/WuWZ08,DBLP:conf/iwslt/Schwenk08,DBLP:conf/wmt/BertoldiF09},本节将对这四种方法进行简单介绍。
\parinterval 统计机器翻译中,领域适应可以分为基于混合模型的方法\upcite{DBLP:conf/iwslt/BisazzaRF11,niehues2012detailed,DBLP:conf/acl/SennrichSA13}、基于数据加权的方法\upcite{DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10,shah2012general}、基于数据选择的方法\upcite{DBLP:conf/lrec/EckVW04,DBLP:conf/acl/MooreL10,DBLP:conf/acl/DuhNST13,DBLP:conf/coling/HoangS14}和基于伪数据的方法\upcite{DBLP:conf/iwslt/Ueffing06,DBLP:conf/coling/WuWZ08,DBLP:conf/iwslt/Schwenk08,DBLP:conf/wmt/BertoldiF09},本节将对这四种方法进行简单介绍。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论