Commit c51bfc7e by 曹润柘

update 16

parent a97e6dc0
......@@ -17,7 +17,7 @@
\node[anchor=north,circle,fill=red!20,minimum width=6.8em](node2) at ([xshift=-6.0em,yshift=-2.0em]remark1.south) {源语言句子$\seq{x}$};
\node[anchor=north,circle,fill=red!20,minimum width=6.8em](node2-2) at ([yshift=-0.2em]node2.south) {新生成句子$\seq{x'}$};
\draw [->,thick]([yshift=0.2em]node2.north).. controls (-1.93,-1.5) and (-2.0,-0.2)..([xshift=-0.2em]remark1.west);
\node[anchor=north,circle,fill=red!20](node3) at ([xshift=6.5em,yshift=-2.0em]remark1.south) {目标语言句子$\seq{x}$};
\node[anchor=north,circle,fill=red!20](node3) at ([xshift=6.5em,yshift=-2.0em]remark1.south) {目标语言句子$\seq{y}$};
\draw [->,thick]([xshift=0.2em]remark1.east).. controls (2.9,-0.25) and (2.9,-0.7) ..([yshift=0.2em]node3.north);
......
......@@ -32,23 +32,23 @@
\section{数据的有效使用}\label{effective-use-of-data}
\parinterval 数据稀缺是低资源机器翻译所面临的主要问题。充分使用既有数据是一种解决问题的思路。比如,在双语训练不充的时候,可以简单地对双语数据的部分单词用近义词进行替换,达到丰富双语数据的目的\upcite{DBLP:conf/acl/FadaeeBM17a,DBLP:conf/emnlp/WangPDN18},也可以考虑用转述等方式生成更多的双语训练数据\upcite{DBLP:conf/emnlp/MartonCR09,DBLP:conf/eacl/LapataSM17}
\parinterval 数据稀缺是低资源机器翻译所面临的主要问题。充分使用既有数据是一种解决问题的思路。比如,在双语训练不充的时候,可以简单地对双语数据的部分单词用近义词进行替换,达到丰富双语数据的目的\upcite{DBLP:conf/acl/FadaeeBM17a,DBLP:conf/emnlp/WangPDN18},也可以考虑用转述等方式生成更多的双语训练数据\upcite{DBLP:conf/emnlp/MartonCR09,DBLP:conf/eacl/LapataSM17}
\parinterval 另一种思路是使用相比双语数据更容易获取的单语数据。实际上,在统计机器翻译时代,使用单语数据训练语言模型是构建机器翻译系统的关键步骤,好的语言模型往往会带来性能的增益。而这个现象在神经机器翻译中似乎并不明显,因为在大多数神经机器翻译的范式中,并不要求使用大规模单语数据来帮助机器翻译系统。甚至,连语言模型都不会作为一个独立的模块。这一方面是由于神经机器翻译系统的解码端本身就起着语言模型的作用,另一方面是由于数据的增多使得翻译模型可以更好的捕捉目标语言的规律。但是,双语数据总是有限的,很多场景下,单语数据的规模会远大于双语数据,如果能够让这些单语数据发挥作用,显然是一种非常好的选择。针对以上问题,下面将从数据增强、基于语言模型的单语数据使用等方面展开讨论。
\parinterval 另一种思路是使用相比双语数据更容易获取的单语数据。实际上,在统计机器翻译时代,使用单语数据训练语言模型是构建机器翻译系统的关键步骤,好的语言模型往往会带来性能的增益。而这个现象在神经机器翻译中似乎并不明显,因为在大多数神经机器翻译的范式中,并不要求使用大规模单语数据来帮助机器翻译系统。甚至,连语言模型都不会作为一个独立的模块。这一方面是由于神经机器翻译系统的解码端本身就起着语言模型的作用,另一方面是由于双语数据的增多使得翻译模型可以更好的捕捉目标语言的规律。但是,双语数据总是有限的,很多场景下,单语数据的规模会远大于双语数据,如果能够让这些单语数据发挥作用,显然是一种非常好的选择。针对以上问题,下面将从数据增强、基于语言模型的单语数据使用等方面展开讨论。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{数据增强}
\parinterval {\small\bfnew{数据增强}}\index{数据增强}(Data Augmentation)\index{Data Augmentation}是一种增加训练数据的方法,通常通过对既有数据进行修改或者生成新的伪数据等方式实现。有时候,数据增强也可以被看做是一种防止模型过拟合的手段\upcite{DBLP:journals/jbd/ShortenK19}。在机器翻译中,典型的数据增强方法包括回译、修改双语数据、双语数据挖掘等。
\parinterval {\small\bfnew{数据增强}}\index{数据增强}(Data Augmentation)\index{Data Augmentation}是一种增加训练数据的方法,通常通过对既有数据进行修改或者生成新的伪数据等方式实现。有时候,数据增强也可以被看做是一种防止模型过拟合的手段\upcite{DBLP:journals/jbd/ShortenK19}。在机器翻译中,典型的数据增强方法包括回译、修改双语数据、双语句对挖掘等。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 回译}
\parinterval {\small\bfnew{回译}}\index{回译}(Back Translation, BT\index{Back Translation})是目前机器翻译任务上最常用的一种数据增强方法\upcite{Sennrich2016ImprovingNM,DBLP:conf/emnlp/EdunovOAG18,DBLP:conf/aclnmt/HoangKHC18}。回译的主要思想是:利用目标语言-源语言模型(反向翻译模型)来生成伪双语句对,用于训练源语言-目标语言翻译模型(正向翻译模型)。假设现在需要训练一个英汉翻译模型。首先,使用双语数据训练汉英翻译模型,即反向翻译模型。然后通过该模型将额外的汉语单语句子翻译为英语句子,从而得到大量的生成英语- 真实汉语伪双语句对。然后,将回译得到的伪双语句对和真实双语句对混合,训练得到最终的英汉翻译模型。
\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} 给出了回译方法的一个简要流程。
%----------------------------------------------
......@@ -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,7 +73,7 @@
\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}
......@@ -82,7 +82,7 @@
%----------------------------------------------------------------------------------------
\subsubsection{2. 修改双语数据}
\parinterval 回译方法是利用单语数据来生成伪数据,而另外一种数据增强技术是对原始双语数据进行修改来得到伪双语数据,常用的方法包括加噪、词替换和转述等。
\parinterval 回译方法是利用单语数据来生成伪数据,而另外一种数据增强技术是对原始双语数据进行修改来得到伪双语数据,常用的方法包括加噪和转述等。
\parinterval 加噪是自然语言处理任务中广泛使用的一种方法\upcite{DBLP:conf/icml/VincentLBM08,DBLP:journals/ipm/FarhanTAJATT20,DBLP:conf/iclr/LampleCDR18,devlin2019bert}。比如,在广泛使用的{\small\bfnew{降噪自编码器}}\index{降噪自编码器}(Denoising Autoencoder)\index{Denoising Autoencoder}中,向原始数据中加入噪声作为模型的输入,模型通过学习如何预测原始数据进行训练。而在神经机器翻译中,利用加噪方法进行数据增强的常用方法是,在保证句子整体语义不变的情况下,对原始的双语数据适当加入一些噪声,从而生成伪双语数据来增加训练数据的规模。常用的加噪方法主要有以下三种:
%----------------------------------------------
......@@ -108,7 +108,7 @@
\end{figure}
%----------------------------------------------
\parinterval 和回译方法相似,加噪方法一般仅在源语言句子上进行操作,既保证了目标语言句子的流畅度,又可以提高训练数据量,增加数据的多样性,还可以提高模型的健壮性和泛化能力\upcite{DBLP:conf/icml/VincentLBM08}。加噪作为一种简单有效的方法,实际的应用场景很多,比如:
\parinterval 和回译方法相似,加噪方法一般仅在源语言句子上进行操作,既保证了目标语言句子的流畅度,又可以提高训练数据量,增加数据的多样性提高模型的健壮性和泛化能力\upcite{DBLP:conf/icml/VincentLBM08}。加噪作为一种简单有效的方法,实际的应用场景很多,比如:
%----------------------------------------------
\begin{itemize}
\vspace{0.5em}
......@@ -159,16 +159,16 @@
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 语言模型在目标端的融合}
\subsubsection{1. 语言模型在目标语言端的融合}
\parinterval 融合目标语言端的语言模型是一种最直接的使用单语数据的方法\upcite{2015OnGulcehre,DBLP:journals/csl/GulcehreFXCB17,DBLP:conf/wmt/StahlbergCS18}。实际上,神经机器翻译模型本身也具备了语言模型的作用,因为解码器本质上也是一个语言模型,用于描述生成译文词串的规律。类似于语言模型,神经机器翻译模型可以自回归地生成翻译结果。对于一个双语句对$(\seq{x}, \seq{y})$,神经机器翻译模型根据源语言句子$\seq{x}$和前面生成的词来预测当前位置词的概率分布:
\begin{eqnarray}
\log{P(\seq{y} | \seq{x}; \theta)} & = & \sum_{t}{\log{P(y_t | \seq{x}, {\seq{y}}_{<t}; \theta)}}
\log{P(\seq{y} | \seq{x}; \theta)} & = & \sum_{t}{\log{P(y_t | {\seq{y}}_{<t}, \seq{x}; \theta)}}
\label{eq:16-1}
\end{eqnarray}
\noindent 这里,$\theta$是神经机器翻译模型的参数,${\seq{y}}_{<t}$表示第$t$词前面生成的词。可以看出,模型的翻译过程与两部分信息有关,分别是源语言句子$\seq{x}$以及前面生成的翻译序列${\seq{y}}_{<t}$。语言模型可以与解码过程融合,根据${\seq{y}}_{<t}$生成流畅度更高的翻译结果。常用的融合方法主要分为浅融合和深融合\upcite{2015OnGulcehre}
\noindent 这里,$\theta$是神经机器翻译模型的参数,${\seq{y}}_{<t}$表示第$t$位置前面已经生成的词序列。可以看出,模型的翻译过程与两部分信息有关,分别是源语言句子$\seq{x}$以及前面生成的翻译序列${\seq{y}}_{<t}$。语言模型可以与解码过程融合,根据${\seq{y}}_{<t}$生成流畅度更高的翻译结果。常用的融合方法主要分为浅融合和深融合\upcite{2015OnGulcehre}
\parinterval 浅融合方法独立训练翻译模型和语言模型,在生成每个词的时候,对两个模型的预测概率进行加权求和得到最终的预测概率。浅融合的不足在于,解码过程对每个词均采用相同的语言模型权重,这实际上是不合理的。比如,在汉语-英语翻译系统中,英语句子中的冠词可能在汉语句子中没有显式的单词对应,这种情况下,英语语言模型可以提供更多帮助,保证翻译结果更加符合英语的语言结构;而在翻译某些名词的时候,语言模型由于没有源语言句子的信息,反而会对解码过程产生干扰,因此权重越小越好。针对这个问题,深融合联合翻译模型和语言模型进行训练,从而在解码过程中动态地计算语言模型的权重,更好地融合翻译模型和语言模型来计算预测概率。
......@@ -181,7 +181,7 @@
\parinterval 神经机器翻译模型所使用的编码器-解码器框架天然就包含了对输入(源语言)和输出(目标语言)进行表示学习的过程。在编码端,需要学习一种分布式表示来表示源语言句子的信息,这种分布式表示可以包含序列中每个位置的表示结果(见{\chapternine})。从结构上看,神经机器翻译所使用的编码器与语言模型无异,或者说神经机器翻译的编码器其实就是一个源语言的语言模型。唯一的区别在于,神经机器翻译的编码器并不直接输出源语言句子的生成概率,而传统语言模型是建立在序列生成任务上的。既然神经机器翻译的编码器可以与解码器一起在双语数据上联合训练,那为什么不使用更大规模的数据单独对编码器进行训练呢?或者说,直接使用一个预先训练好的编码器,与机器翻译的解码器配合完成翻译过程。
\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 实现上述想法的一种手段是{\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}
......@@ -215,7 +215,7 @@
\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-6} 所示。这种做法可以使得编码器捕捉上下文信息,同时迫使解码器依赖于编码器进行自回归的生成,从而学习到编码器和解码器之间的注意力。为了适配下游的机器翻译任务,使预训练模型可以学习到不同语言的表示,MASS对不同语言的句子采用共享词汇表和模型参数的方法,利用同一个预训练模型来进行不同语言句子的预训练。通过这种方式,模型既学到了对源语言句子的编码,也学习到了对目标语言句子的生成方法,之后通过使用双语句对来对预训练模型的参数进行微调,模型可以快速收敛到较好的水平。
\parinterval{\small\bfnew{掩码端到端预训练}}(Masked Sequence to Sequence Pre-training,MASS)\index{掩码端到端预训练}\index{MASS}方法为例\upcite{song2019mass},其思想与BERT十分相似,也是在预训练过程中采用掩码的方式,随机选择编码器输入句子中的连续片段替换为特殊词[Mask],然后在解码器预测这个连续片段,如图\ref{fig:16-6} 所示。这种做法可以使得编码器捕捉上下文信息,同时迫使解码器依赖于编码器进行自回归的生成,从而学习到编码器和解码器之间的注意力。为了适配下游的机器翻译任务,使预训练模型可以学习到不同语言的表示,MASS对不同语言的句子采用共享词汇表和模型参数的方法,利用同一个预训练模型来进行不同语言句子的预训练。通过这种方式,模型既学到了对源语言句子的编码,也学习到了对目标语言句子的生成方法,之后通过使用双语句对来对预训练模型的参数进行微调,模型可以快速收敛到较好的水平。
%----------------------------------------------
\begin{figure}[htp]
......@@ -281,7 +281,7 @@
\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}。双向联合训练的基本思想是:使用两个方向的翻译模型对单语数据进行解码,之后用解码后的翻译结果与原始的单语数据作为训练语料,通过多次迭代更新两个方向上的机器翻译模型。
\parinterval\ref{fig:16-9}给出了一个双向训练的详细流程,其中$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}$。这种方式本质上也是一种自学习的过程,通过逐步生成更好的伪数据来提升模型质量。
\parinterval\ref{fig:16-9}给出了一个双向训练的详细流程,其中$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_{y \rightarrow x}^{1}$,用$\{ y_i,\hat{x}_i^{0}\} \bigcup \{ y_i,x_i\}$训练$M_{x \rightarrow y}^{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}$。这种方式本质上也是一种自学习的过程,通过逐步生成更好的伪数据来提升模型质量。
%----------------------------------------------
\begin{figure}[h]
......@@ -296,7 +296,7 @@
%----------------------------------------------------------------------------------------
\subsection{对偶学习}
\parinterval 对称,也许是人类最喜欢的美,其始终贯穿在整个人类文明的诞生与发展之中。古语“夫美者,上下、内外、大小、远近皆无害焉,故曰美”描述的即是这样的美。在人工智能的任务中,也存在着这样的对称结构,比如机器翻译中英译汉和汉译英、图像处理中的图像标注和图像生成以及语音处理中的语音识别和文字合成等。利用这些任务的对称性质(也称对偶性),可以使互为对偶的两个任务获得更有效的反馈,从而使对应的模型相互学习、相互提高。目前,对偶学习的思想已经广泛应用于低资源机器翻译领域,它不仅能够提升在有限双语资源下的翻译模型性能({\small\bfnew{有监督对偶学习}},Dual Supervised Learning\index{Dual Supervised Learning}\upcite{DBLP:conf/icml/XiaQCBYL17,DBLP:conf/acl/SuHC19,DBLP:journals/ejasmp/RadzikowskiNWY19},而且能够利用未标注的单语数据来进行学习({\small\bfnew{无监督对偶学习}},Dual Unsupervised Learning\index{Dual Unsupervised Learning}\upcite{qin2020dual,DBLP:conf/iccv/YiZTG17,DBLP:journals/access/DuRZH20}。下面将一一展开讨论。
\parinterval 对称,也许是人类最喜欢的美,其始终贯穿在整个人类文明的诞生与发展之中。古语“夫美者,上下、内外、大小、远近皆无害焉,故曰美”描述的即是这样的美。在人工智能的任务中,也存在着这样的对称结构,比如机器翻译中英译汉和汉译英、图像处理中的图像标注和图像生成以及语音处理中的语音识别和语音合成等。利用这些任务的对称性质(也称对偶性),可以使互为对偶的两个任务获得更有效的反馈,从而使对应的模型相互学习、相互提高。目前,对偶学习的思想已经广泛应用于低资源机器翻译领域,它不仅能够提升在有限双语资源下的翻译模型性能({\small\bfnew{有监督对偶学习}},Dual Supervised Learning\index{Dual Supervised Learning}\upcite{DBLP:conf/icml/XiaQCBYL17,DBLP:conf/acl/SuHC19,DBLP:journals/ejasmp/RadzikowskiNWY19},而且能够利用未标注的单语数据来进行学习({\small\bfnew{无监督对偶学习}},Dual Unsupervised Learning\index{Dual Unsupervised Learning}\upcite{qin2020dual,DBLP:conf/iccv/YiZTG17,DBLP:journals/access/DuRZH20}。下面将一一展开讨论。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
......@@ -329,7 +329,7 @@
%----------------------------------------------------------------------------------------
\subsubsection{2. 无监督对偶学习}
\parinterval 如上一节所述,有监督的对偶学习需要使用双语数据来训练两个翻译模型。幸运的是,存在大量的单语数据可供使用。因此,如何使用这些单语数据来提升翻译模型的性能是一个关键问题。
\parinterval 有监督的对偶学习需要使用双语数据来训练两个翻译模型,但是有些低资源语言仅有少量双语数据可以训练。幸运的是,存在大量的单语数据可供使用。因此,如何使用这些单语数据来提升翻译模型的性能也是一个关键问题。
\parinterval 无监督对偶学习提供了一个解决问题的思路\upcite{qin2020dual}。假设目前有两个比较弱的翻译模型,一个原始任务模型$f$将源语言句子$\seq{x}$翻译成目标语言句子$\seq{y}$,一个对偶任务模型$g$将目标语言句子$\seq{y}$翻译成源语言句子$\seq{x}$。翻译模型可由有限的双语训练或者使用无监督机器翻译的方法得到。如图\ref{fig:16-10}所示,无监督对偶学习的做法是,先通过原始任务模型$f$将一个源语言单语句子$x$翻译为目标语言句子$y$,由于没有参考译文,无法判断$y$的正确性。但通过语言模型,可以判断这个句子是否通顺、符合语法规范,这些信息可用来评估翻译模型$f$的翻译流畅性。随后,再通过对偶任务模型$g$将目标语言句子$y$翻译为源语言句子$x^{'}$。如果模型$f$$g$的翻译性能较好,那么$x^{'}$$x$会十分相似。通过计算二者的{\small\bfnew{重构损失}}\index{重构损失}(Reconstruction Loss)\index{Reconstruction Loss},就可以优化模型$f$$g$的参数。这个过程可以多次迭代,从大量的无标注单语数据上不断提升性能。
......@@ -576,7 +576,7 @@
\parinterval 在得到映射$\mathbi{W}$之后,对于$\mathbi{X}$中的任意一个单词$x_{i}$,通过$\mathbi{W} \mathbi{E}({x}_{i})$将其映射到空间$\mathbi{y}$中($\mathbi{E}({x}_{i})$表示的是单词$x_{i}$的词嵌入向量),然后在$\mathbi{Y}$中找到该点的最近邻点$y_{j}$,于是$y_{j}$就是$x_{i}$的翻译词,重复该过程即可归纳出种子词典$D$,第一阶段结束。事实上,由于第一阶段缺乏监督信号,得到的种子词典$D$会包含大量的噪音,因此需要进行进一步的微调。
\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} \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})来获得近似解:
\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} \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})来获得近似解:
\begin{eqnarray}
\mathbi{W}^{\star} & = &\underset{\mathbi{W} \in O_{d}(\mathbb{R})}{\operatorname{argmin}}\|\mathbi{W} \mathbi{X}'- \mathbi{Y}' \|_{\mathrm{F}} \nonumber \\
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论