Commit 59a8c428 by xiaotong

wording (sec 16, back-translation)

parent 8c9e62b0
......@@ -3,13 +3,13 @@
\node [anchor=center] (node1) at (4.9,1) {\small{训练:}};
\node [anchor=center] (node11) at (5.5,1) {};
\node [anchor=center] (node12) at (6.7,1) {};
\node [anchor=center] (node2) at (4.9,0.5) {\small{}};
\node [anchor=center] (node2) at (4.9,0.5) {\small{}};
\node [anchor=center] (node21) at (5.5,0.5) {};
\node [anchor=center] (node22) at (6.7,0.5) {};
\node [anchor=west,line width=0.6pt,draw=black,minimum width=5.6em,minimum height=2.2em,fill=blue!20,rounded corners=2pt] (node1-1) at (0,0) {\footnotesize{双语数据}};
\node [anchor=south,line width=0.6pt,draw=black,minimum width=4.5em,minimum height=2.2em,fill=blue!20,rounded corners=2pt] (node1-2) at ([yshift=-5em]node1-1.south) {\footnotesize{目标语伪数据}};
\node [anchor=west,line width=0.6pt,draw=black,minimum width=4.5em,minimum height=2.2em,fill=red!20,rounded corners=2pt] (node2-1) at ([xshift=-8.8em,yshift=-2.5em]node1-1.west) {\footnotesize{反向NMT系统}};
\node [anchor=west,line width=0.6pt,draw=black,minimum width=4.5em,minimum height=2.2em,fill=red!20,rounded corners=2pt] (node3-1) at ([xshift=3em,yshift=-2.5em]node1-1.east) {\footnotesize{前向NMT系统}};
\node [anchor=west,line width=0.6pt,draw=black,minimum width=4.5em,minimum height=2.2em,fill=red!20,rounded corners=2pt] (node2-1) at ([xshift=-8.8em,yshift=-2.5em]node1-1.west) {\footnotesize{反向翻译系统}};
\node [anchor=west,line width=0.6pt,draw=black,minimum width=4.5em,minimum height=2.2em,fill=red!20,rounded corners=2pt] (node3-1) at ([xshift=3em,yshift=-2.5em]node1-1.east) {\footnotesize{前向翻译系统}};
\draw [->,line width=1pt](node1-1.west)--([xshift=3em]node2-1.north);
\draw [->,line width=1pt](node1-1.east)--([xshift=-3em]node3-1.north);
......
......@@ -235,7 +235,7 @@
\end{pgfonlayer}
{\scriptsize
\node [anchor=center] (cy00-2) at ([xshift=6.7em,yshift=0.2em]pos4-212) {\tiny{TopK}};
\node [anchor=center] (cy00-2) at ([xshift=6.7em,yshift=0.2em]pos4-212) {\tiny{$n$-best}};
\node [anchor=center,minimum height=1.8em,minimum width=0.8em,fill=orange!30] (cy11-2) at ([xshift=0.0em,yshift=-1.8em]pos4-212) {};
\node [anchor=center,minimum height=1.5em,minimum width=0.8em,fill=blue!30] (cy12-2) at ([xshift=1.3em,yshift=-0.15em]cy11-2) {};
\node [anchor=center,minimum height=2.5em,minimum width=0.8em,fill=black!30] (cy13-2) at ([xshift=1.3em,yshift=0.5em]cy12-2) {};
......
......@@ -35,22 +35,19 @@
\parinterval 数据稀缺是低资源机器翻译所面临的主要问题。因此,充分使用既有的数据是一种解决问题的思路。比如,在双语训练不充分的时候,可以考虑用转述等方式生成更多的双语训练数据({\color{red} 参考文献!})。也可以简单地对双语数据的部分单词用近义词进行替换,达到丰富双语数据的目的({\color{red} 参考文献!})。
\parinterval 另一种思路是充分利用单语数据。实际上,在统计机器翻译时代,使用单语数据训练语言模型是构建机器翻译系统的关键步骤。好的语言模型往往会带来性能的增益。而这个现象在神经机器翻译中似乎并不明显,因为在大多数神经机器翻译的范式中,并不要求使用大规模单语数据来帮助机器翻译系统。甚至,连语言模型都不会作为一个独立的模块。这一方面是由于神经机器翻译系统的解码端本身就起着语言模型的作用,另一方面是由于数据的增多使得翻译模型可以更好的捕捉目标语言的规律。但是,双语数据总是有限的。很多场景下,单语数据的规模会远大于双语数据。如果能够让这些单语数据发挥作用,显然是一种非常好的选择。
\parinterval 下面将从数据增强、基于语言模型的单语数据使用等方面展开讨论。
\parinterval 另一种思路是充分利用单语数据。实际上,在统计机器翻译时代,使用单语数据训练语言模型是构建机器翻译系统的关键步骤。好的语言模型往往会带来性能的增益。而这个现象在神经机器翻译中似乎并不明显,因为在大多数神经机器翻译的范式中,并不要求使用大规模单语数据来帮助机器翻译系统。甚至,连语言模型都不会作为一个独立的模块。这一方面是由于神经机器翻译系统的解码端本身就起着语言模型的作用,另一方面是由于数据的增多使得翻译模型可以更好的捕捉目标语言的规律。但是,双语数据总是有限的。很多场景下,单语数据的规模会远大于双语数据。如果能够让这些单语数据发挥作用,显然是一种非常好的选择。针对以上问题,下面将从数据增强、基于语言模型的单语数据使用等方面展开讨论。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{数据增强}
\parinterval {\small\bfnew{数据增强}}(Data Augmentation)是为了缓解双语数据稀缺这一问题,利用单语数据来得到伪双语数据,从而增加训练数据量的方法。
常用的数据增强方法包括回译、加噪和双语数据挖掘等。
\parinterval {\small\bfnew{数据增强}}(Data Augmentation)是一种增加训练数据的方法,通常通过对既有数据进行修改或者生成新的伪数据等方式实现。有时候,数据增强也可以被看做是一种防止模型过拟合的手段({\color{red} ref: A survey on Image Data Augmentation for Deep Learning})。在机器翻译中,典型的数据增强方法包括回译、加噪和双语数据挖掘等。
\subsubsection{1. 回译}
\parinterval {\small\bfnew{回译}}(Back Translation, BT)是目前机器翻译任务上最常用的一种数据增强的方法。回译的主要思想是利用目标语言-源语言模型(反向翻译模型)来生成伪双语句对,用于训练源语言-目标语言翻译模型(正向翻译模型)。比如我们的目标是训练一个英汉翻译模型,首先使用双语数据训练汉英翻译模型,然后通过该模型将汉语的单语句子翻译为英语句子,从而得到大量的生成英语-真实汉语伪双语句对。然后,将回译得到的伪双语句对和真实双语句对混合,训练得到英汉神经机器翻译模型。
回译方法是模型无关的,只需要训练一个反向翻译模型,就可以简单有效地利用单语数据来提高训练数据的数量,因此在工业界也得到了广泛采用。图\ref{fig:16-1-xc}给出了回译方法的一个简要流程。
\parinterval {\small\bfnew{回译}}(Back Translation, BT)是目前机器翻译任务上最常用的一种数据增强的方法{\color{red} 参考文献!有很多})。回译的主要思想是:利用目标语言-源语言模型(反向翻译模型)来生成伪双语句对,用于训练源语言-目标语言翻译模型(前向翻译模型)。假设我们的目标是训练一个英汉翻译模型。首先,使用双语数据训练汉英翻译模型,即反向翻译模型。然后通过该模型将汉语单语句子翻译为英语句子,从而得到大量的生成英语- 真实汉语伪双语句对。然后,将回译得到的伪双语句对和真实双语句对混合,训练得到最终的英汉神经机器翻译模型。
回译方法是模型无关的,只需要训练一个反向翻译模型,就可以简单有效地利用单语数据来提高训练数据的数量,因此在工业界也得到了广泛采用{\color{red} 参考文献!可以引用google和fb的论文,是不是多语言或者无监督的方法里有})。图\ref{fig:16-1-xc} 给出了回译方法的一个简要流程。
%----------------------------------------------
\begin{figure}[htp]
......@@ -61,17 +58,9 @@
\end{figure}
%-------------------------------------------
\parinterval 一般情况下,我们认为,反向模型的性能越好,生成的源语言译文质量越高,从而伪数据的分布和真实数据的分布越接近。不过,在实践中发现,即使一些简单的策略也能带来性能的增长。比如,在一些低资源的语种,仅仅通过将目标语句子复制到源语言端构造的伪数据都能为模型带来增益\upcite{DBLP:conf/wmt/CurreyBH17}。相比这些简单的构造策略,利用目标语言单语数据进行回译可以获得更高质量的伪数据。原因主要包括以下两点:
\parinterval 通常认为,反向模型的性能越好,生成的源语言译文质量越高,从而伪数据的分布和真实数据的分布越接近。不过,在实践中发现,即使一些简单的策略也能带来性能的增长。比如,对于一些低资源翻译任务,通过将目标语句子复制到源语言端构造的伪数据都能为模型带来增益\upcite{DBLP:conf/wmt/CurreyBH17}。原因在于,即使构造的双语伪数据是不准确的,其目标语言端仍然是真实数据,因此保证了神经机器翻译模型生成结果的流畅度。相比这些简单的伪数据生成策略,利用目标语言单语数据进行回译可以获得更高质量的数据。这是因为,双语伪数据的源语言是模型生成的翻译结果,保留了两种语言之间的互译信息,相比真实数据又存在一定的噪声。神经机器翻译模型在伪双语句对上进行训练,可以学习到如何处理带有噪声的输入,提高了模型的鲁棒性。
\begin{itemize}
\vspace{0.5em}
\item 伪双语句对的源语言是模型生成的翻译结果,保留了两种语言之间的互译信息,相比真实数据又存在一定的噪声。神经机器翻译模型在伪双语句对上进行训练,可以学习到如何处理带有噪声的输入,提高了模型的鲁棒性;
\vspace{0.5em}
\item 伪双语句对的目标语言是真实的句子,保证了神经机器翻译模型生成结果的流畅度,因此可以得到更符合人类阅读习惯的翻译结果。
\vspace{0.5em}
\end{itemize}
\parinterval 围绕如何利用回译方法生成对模型更有帮助的伪双语数据,研究人员们进行了详细的分析探讨。一般观点认为,反向模型的性能越好,生成的伪数据质量也就更高,对前向模型的性能提升也就越大。回译方法面临的一个问题是:反向翻译模型的训练只依赖于有限的双语数据,生成的源语言端伪数据的质量难以保证。为此,可以采用{\small\sffamily\bfnew{迭代式回译}}\index{迭代式回译}(Iterative Back Translation)\index{Iterative Back Translation}的方法\upcite{DBLP:conf/aclnmt/HoangKHC18},同时利用源语言端和目标语言端的单语数据,不断通过回译的方式来提升前向和反向翻译模型的性能。图\ref{fig:16-2-xc}展示了迭代式回译的框架。首先,使用双语数据训练一个前向翻译模型,然后利用源语言单语数据通过回译的方式生成伪双语数据,来提升反向翻译模型的性能,最后由反向翻译模型和目标语言单语数据生成的伪双语数据来提升前向翻译模型的性能。可以看出,这个往复的过程是闭环的,因此可以一直重复进行,直到两个翻译模型的性能均不再提升。
\parinterval 围绕如何利用回译方法生成对模型更有帮助的伪双语数据,研究人员们进行了详细的分析探讨。一般观点认为,反向模型的性能越好,生成的伪数据质量也就更高,对前向模型的性能提升也就越大({\color{red} 参考文献!})。回译方法面临的一个问题是:反向翻译模型的训练只依赖于有限的双语数据,生成的源语言端伪数据的质量难以保证。为此,可以采用{\small\sffamily\bfnew{迭代式回译}}\index{迭代式回译}(Iterative Back Translation)\index{Iterative Back Translation}的方法\upcite{DBLP:conf/aclnmt/HoangKHC18},同时利用源语言端和目标语言端的单语数据,不断通过回译的方式来提升前向和反向翻译模型的性能。图\ref{fig:16-2-xc}展示了迭代式回译的框架。首先,使用双语数据训练一个前向翻译模型,然后利用源语言单语数据通过回译的方式生成伪双语数据,来提升反向翻译模型的性能,最后由反向翻译模型和目标语言单语数据生成的伪双语数据来提升前向翻译模型的性能。可以看出,这个往复的过程是闭环的,因此可以一直重复进行,直到两个翻译模型的性能均不再提升。
%----------------------------------------------
\begin{figure}[htp]
......@@ -82,20 +71,11 @@
\end{figure}
%-------------------------------------------
\parinterval 然而,研究人员发现,在低资源语种上,由于缺乏双语数据,高质量的伪双语数据对于模型来说更有帮助。而在富资源语种中,对回译产生的源语言句子添加一些噪声,提高翻译结果的多样性,反而可以达到更好的效果,比较常用的方法是使用采样或{\rm{TopK}}解码\upcite{DBLP:conf/emnlp/EdunovOAG18}
\parinterval 然而,研究人员发现,对于低资源语种,由于缺乏双语数据,高质量的伪双语数据对于模型来说更有帮助。而在富资源语种中,对回译产生的源语言句子添加一些噪声,提高翻译结果的多样性,反而可以达到更好的效果,比较常用的方法是使用采样或$n$-best解码\upcite{DBLP:conf/emnlp/EdunovOAG18}{\color{red} 其它参考文献?}
\parinterval 回译常用的解码方式为束搜索,在生成每个词的时候只考虑预测概率最高的词,因此生成的翻译结果质量更高,但导致的问题是翻译结果主要都是一些高频词,缺乏多样性,生成的伪数据也就很难去准确地覆盖真实的数据分布\upcite{DBLP:conf/icml/OttAGR18}。采样解码是指在解码过程中,对词表中所有的词按照预测概率进行随机采样,因此整个词表中的词都有可能被选中,从而使生成结果更具多样性,但翻译质量和流畅度也会明显下降。{\rm{TopK}}解码是对束搜索和采样解码的一个折中方法。在解码过程中,{\rm{TopK}}解码对词表中预测概率最高的前K个词进行随机采样,这样在保证翻译结果准确性的前提下,也提高了结果的多样性。由于采样和{\rm{TopK}}解码只在生成的源语言句子中引入了多样性,因此也可以提高对包含低频词或噪声句子的训练次数。三种方法如图\ref{fig:16-3-xc}所示
\parinterval 回译常用的解码方式为束搜索,在生成每个词的时候只考虑预测概率最高的词,因此生成的翻译结果质量更高,但导致的问题是翻译结果主要都是一些高频词,缺乏多样性,生成的伪数据也就很难去准确地覆盖真实的数据分布\upcite{DBLP:conf/icml/OttAGR18}。采样解码是指在解码过程中,对词表中所有的词按照预测概率进行随机采样,因此整个词表中的词都有可能被选中,从而使生成结果更具多样性,但翻译质量和流畅度也会明显下降。$n$-best解码是对束搜索和采样解码的一个折中方法。在解码过程中,$n$-best解码对词表中预测概率最高的前$n$个词进行随机采样,这样在保证翻译结果准确性的前提下,也提高了结果的多样性。由于采样和$n$-best解码只在生成的源语言句子中引入了多样性,因此也可以提高对包含低频词或噪声句子的训练次数
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter16/Figures/figure-contrast-diagram-of-beam-search-TopK-and-sampling}
\caption{回译的三种解码方式}
\label{fig:16-3-xc}
\end{figure}
%-------------------------------------------
\parinterval 与回译方法类似,源语言的单语数据也可以通过一个双语数据训练的前向翻译模型获得对应的目标语译文,从而构造{\small\sffamily\bfnew{前向翻译}}\index{前向翻译}(Forward Translation)\index{Forward Translation}的伪数据。与回译方法相反,前向翻译伪数据中源语言句子是真实的,而目标语言句子是生成的,构造的伪数据对译文的流畅性并没有太大帮助,甚至有害,其主要作用是丰富了训练数据中源语言的表示,提升翻译模型中编码器的性能。大多数情况下,利用前向翻译模型生成伪数据的方法带来的性能提升效果要弱于回译。
\parinterval 与回译方法类似,源语言的单语数据也可以通过一个双语数据训练的前向翻译模型获得对应的目标语译文,从而构造前向翻译的伪数据。与回译方法相反,前向翻译伪数据中源语言句子是真实的,而目标语言句子是生成的,构造的伪数据对译文的流畅性并没有太大帮助,甚至有害,其主要作用是丰富了训练数据中源语言的表示,提升翻译模型中编码器的性能。很多时候,利用前向翻译模型生成伪数据的方法带来的性能提升效果要弱于回译({\color{red} 参考文献!})。
\subsubsection{2. 修改双语数据}
......@@ -328,10 +308,10 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\parinterval 除了多任务学习,还有一些方法将前向模型和反向模型一起训练,在训练过程中同时使用源语言端和目标语言端的单语数据来提升模型性能,在下一节中进行详细介绍。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
% NEW SECTION
%----------------------------------------------------------------------------------------
\subsection{同时学习双向翻译模型}
\section{双向翻译模型}
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -339,7 +319,7 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
{\red 下面这部分是从以前的内容中拷贝过来的,对偶学习和无监督部分的关联比较大,可以把对偶学习拆出去变成新的一小节?把Semi-Supervised Learning for Neural Machine Translation和Mirror-Generative Neural Machine Translation加进来?}{\color{blue} [肖]:我同意,不过感觉Semi-Supervised Learning for Neural Machine Translation有些意思,Mirror-Generative Neural Machine Translation一般,不过可以简单提及一下,或者对核心思想进行介绍。还有,无监督对偶学习是不是应该放到李炎洋那部分?这里面我们还是放有监督的方法,可以和李炎洋讨论一下。}
\subsubsection{1. 双向训练}
\subsection{双向训练}
\parinterval 到目前为止,神经机器翻译系统都是每次一次只训练一个方向的模型。比如,给定中英的双语数据,一次只训练一个中到英或者英到中的翻译系统。既然两个方向的系统都使用同样的双语数据进行训练,那么是否可以一次训练同时得到两个方向的翻译系统呢?
......@@ -353,10 +333,10 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\parinterval 这里可以把$\mathbi{s}$$\mathbi{t}$都看作分布式的向量表示;$\mathbi{W}$应当是一个满秩矩阵,否则对于任意一个$\mathbi{s}$经过$\mathbi{W}$变换得到的$\mathbi{t}$只落在所有可能的$\mathbi{t}$的一个子空间内,即在给定$\mathbi{W}$的情况下有些$\mathbi{t}$不能被任何一个$\mathbi{s}$表达,而这不符合常识,因为不管是什么句子,我们总能找到它的一种译文。若$\mathbi{W}$是满秩矩阵说明$\mathbi{W}$可逆,也就是给定$\mathbi{s}$$\mathbi{t}$的变换$\mathbi{W}$下,$\mathbi{t}$$\mathbi{s}$的变换必然是$\mathbi{W}$的逆而不是其他矩阵。这个例子说明$\funp{P}(\mathbi{t}|\mathbi{s})$$\funp{P}(\mathbi{s}|\mathbi{t})$直觉上应当存在联系。当然,$\mathbi{s}$$\mathbi{t}$之间是否存在简单的线性变换关系并没有结论,但是上面的例子给出了一种对源语言句子和目标语言句子进行相互转化的思路。实际上,研究人员已经通过一些数学技巧用目标函数来把$\funp{P}(\mathbi{t}|\mathbi{s})$$\funp{P}(\mathbi{s}|\mathbi{t})$联系起来,这样训练神经机器翻译系统一次就可以同时得到两个方向的翻译模型,使得训练变得更加高效\upcite{Hassan2018AchievingHP}
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 有监督对偶学习}
\subsection{对偶学习}
\parinterval 除了用条件概率$\funp{P}(\mathbi{t}|\mathbi{s})$建模翻译问题,还可以使用联合分布$\funp{P}(\mathbi{s},\mathbi{t})$进行建模\upcite{DBLP:conf/icml/XiaQCBYL17}。根据条件概率的定义,有:
\begin{eqnarray}
......@@ -373,11 +353,7 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\parinterval 这里$\funp{P}(\mathbi{s})$$\funp{P}(\mathbi{t})$这两个语言模型是预先训练好的,并不参与翻译模型的训练。可以看到,对于单独的一个模型来说,其目标函数增加了与另外一个方向的模型相关的项。这样的形式与L1/L2正则化非常类似(见\ref{subsection-7.3.1}节),因此可以把这个方法看作是一种任务特定的正则化的手段(由翻译任务本身的性质所启发而来)。由于两个方向的翻译模型和语言模型相互影响,这种方法能得到比基于单个方向训练效果更好的模型。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 无监督对偶学习({\color{red} 放到李炎洋那部分?}}
{\color{red} 无监督对偶学习?}
\parinterval 在有监督对偶学习对联合分布$\funp{P}(\mathbi{s},\mathbi{t})$建模的基础上,如果把$\mathbf t$看作一个隐变量,那么可以得到边缘分布$\funp{P}(\mathbi{s})$,也就是关于$\mathbi{s}$的语言模型:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论