Commit 1207799b by 曹润柘

update 16

parent dca850d8
......@@ -5,7 +5,7 @@
\node [rectangle,inner sep=2pt,font=\scriptsize] (top) at ([yshift=3em,xshift=0em]center.north) {
\begin{tabular}{c}
翻译模型 \\
$\textrm{P}(\mathbf t|\mathbf s)$
$\textrm{P}(\ \mathbi{y}|\ \mathbi{x})$
\end{tabular}
};
......@@ -24,7 +24,7 @@ The weather is \\so good today.
\node [rectangle,inner sep=2pt,font=\scriptsize] (down) at ([yshift=-3em,xshift=0em]center.south) {
\begin{tabular}{c}
翻译模型 \\
$\textrm{P}(\mathbf s|\mathbf t)$
$\textrm{P}(\ \mathbi{x}|\ \mathbi{y})$
\end{tabular}
};
......
......@@ -117,25 +117,25 @@
\parinterval 将一个句子中的某个词替换为其他词,可能并不会影响句子的合理性和流畅度。比如,对于“我出去玩。”这句话,将“我”替换为“你”、“他”、“我们”或是将“玩”替换为“骑车”、“学习”、“吃饭”等,虽然改变了语义,但句子仍然是合理的。词替换方法即是将双语数据中的部分词替换为词表中的其他词,在保证句子的语义或语法的前提下,增加了训练数据的多样性。
\parinterval 一种替换策略是对目标语中的稀有词进行替换\upcite{DBLP:conf/acl/FadaeeBM17a}。词表中的稀有词由于出现次数较少,很容易导致训练不充分问题,从而无法准确预测稀有词。对于一个双语句对$(\mathbi{s}, \mathbi{t})$$\mathbi{s} = (s_1, \dots, s_i, \dots, s_n)$$\mathbi{t} = (t_1, \dots, t_j, \dots, t_m)$,假定选择源语言句子$\mathbi{s}$进行替换,那么在源语言句子的位置$i$,可以根据前面的文本和前向语言模型得到前向候选稀有词,如公式所示:
\parinterval 一种替换策略是对目标语中的稀有词进行替换\upcite{DBLP:conf/acl/FadaeeBM17a}。词表中的稀有词由于出现次数较少,很容易导致训练不充分问题,从而无法准确预测稀有词。对于一个双语句对$(\mathbi{x}, \mathbi{y})$$\mathbi{x} = (x_1, \dots, x_i, \dots, x_n)$$\mathbi{y} = (y_1, \dots, y_j, \dots, y_m)$,假定选择源语言句子$\mathbi{x}$进行替换,那么在源语言句子的位置$i$,可以根据前面的文本和前向语言模型得到前向候选稀有词,如公式所示:
\begin{eqnarray}
\overrightarrow{C} = \{s_i^{'} \in V_R: {\rm{TopK}} \funp{P}_{\rm{ForwardLM}}(s_i^{'} | s_i^{i-1})\}
\overrightarrow{C} = \{x_i^{'} \in V_R: {\rm{TopK}} \funp{P}_{\rm{ForwardLM}}(x_i^{'} | x_i^{i-1})\}
\end{eqnarray}
\parinterval 这里,$V_R$表示稀有词词表,可以设定为训练数据中出现次数最少的部分词或出现次数小于一定阈值的部分词,$\funp{{\rm{TopK}}}$表示选择预测概率最高的前K个词。如果这K个词在稀有词词表$V_R$中,则将其加入到前向候选稀有词中。同样,利用后面的文本和反向语言模型得到后向候选稀有词:
\begin{eqnarray}
\overleftarrow{C} = \{s_i^{'} \in V_R: {\rm{TopK}} \funp{P}_{\rm{BackwardLM}}(s_i^{'} | s_i^{i-1})\}
\overleftarrow{C} = \{x_i^{'} \in V_R: {\rm{TopK}} \funp{P}_{\rm{BackwardLM}}(x_i^{'} | x_i^{i-1})\}
\end{eqnarray}
\parinterval 然后,就可以选择同时出现在前向候选稀有词和反向候选稀有词的单词:
\begin{eqnarray}
{C} = \{s_i | s_i^{'} \in \overrightarrow{C} \wedge s_i^{'} \in \overleftarrow{C}\}
{C} = \{x_i | x_i^{'} \in \overrightarrow{C} \wedge x_i^{'} \in \overleftarrow{C}\}
\end{eqnarray}
\parinterval 前向和反向语言模型均可以使用海量的单语数据训练得到。通过这种方法,选取到的稀有词保证了替换后句子的句法合理性以及流畅度。最后,根据词对齐找到替换词在目标语言句子中对应的位置$j$,根据翻译词典等方法,就可以将目标语言句子中的$t_j$替换为$s_i^{'}$对应的翻译结果$t_j^{'}$,从而生成得到伪双语数据。
\parinterval 前向和反向语言模型均可以使用海量的单语数据训练得到。通过这种方法,选取到的稀有词保证了替换后句子的句法合理性以及流畅度。最后,根据词对齐找到替换词在目标语言句子中对应的位置$j$,根据翻译词典等方法,就可以将目标语言句子中的$y_j$替换为$x_i^{'}$对应的翻译结果$y_j^{'}$,从而生成得到伪双语数据。
\vspace{0.5em}
\end{itemize}
......@@ -282,7 +282,7 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\end{itemize}
(扩展阅读)
\parinterval 此外,还有很多工作对如何将语言模型应用到神经机器翻译模型中进行了研究。研究人员分析了预训练词嵌入何时为何在神经机器翻译模型中有效[When and Why are Pre-trained Word Embeddings Useful for NMT];如何在神经机器翻译模型中利用预训练的BERT模型[On the use of BERT for Neural Machine Translation][Recycling a Pre-trained BERT Encoder for Neural Machine Translation][Towards Making the Most of BERT in Neural Machine Translation][Acquiring Knowledge from Pre-trained Model to Neural Machine Translation];如何针对神经机器翻译任务进行预训练[Multilingual Denoising Pre-training for Neural Machine Translation][Cross-Lingual Pre-Training Based Transfer for Zero-Shot Neural Machine Translation][ BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension];针对机器翻译中的Code-switching问题进行预训练[Code-switching pre-training for neural machine translation];如何在微调过程中避免遗忘原始的语言模型任务[Unsupervised Pretraining for Neural Machine Translation Using Elastic Weight Consolidation]
\parinterval 此外,还有很多工作对如何将语言模型应用到神经机器翻译模型中进行了研究。研究人员分析了预训练词嵌入何时为何在神经机器翻译模型中有效\cite{2018When};如何在神经机器翻译模型中利用预训练的BERT模型\cite{DBLP:conf/emnlp/ClinchantJN19,DBLP:conf/emnlp/ImamuraS19,DBLP:conf/aaai/YangW0Z00020,DBLP:conf/aaai/WengYHCL20};如何针对神经机器翻译任务进行预训练\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}
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -294,8 +294,6 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\parinterval 语言模型是使用目标端单语数据最直接的方式,但是翻译模型作为一个受限的语言模型,还需要依赖于源语,并不能直接进行多任务学习。针对这个问题,对原有翻译模型结构进行了修改,在解码器中增加了一个语言模型子层,将这个子层用于语言模型任务(图\ref{fig:16-9-xc})。在训练过程中,分别将双语数据和单语数据送入翻译模型和语言模型进行计算,得到的损失相加用于整体模型参数的梯度计算和参数更新,这里语言模型的参数是翻译模型的一部分。
{\red 参考一下上面的参考文献,图重画,不太准确}
%----------------------------------------------
\begin{figure}[htp]
\centering
......@@ -323,14 +321,14 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\parinterval 到目前为止,神经机器翻译系统都是每次一次只训练一个方向的模型。比如,给定中英的双语数据,一次只训练一个中到英或者英到中的翻译系统。既然两个方向的系统都使用同样的双语数据进行训练,那么是否可以一次训练同时得到两个方向的翻译系统呢?
\parinterval 回顾神经机器翻译系统的建模过程,给定一个互译的句对$(\mathbi{s},\mathbi{t})$,一个从源语言句子$\mathbi{s}$到目标语言句子$\mathbi{t}$的翻译被表示为求条件概率$\funp{P}(\mathbi{t}|\mathbi{s})$的问题。类似地,一个从目标语言句子$\mathbi{t}$到源语言句子$\mathbi{s}$的翻译可以表示为$\funp{P}(\mathbi{s}|\mathbi{t})$。通常来说,神经机器翻译的训练一次只得到一个方向的模型,也就是$\funp{P}(\mathbi{t}|\mathbi{s})$或者$\funp{P}(\mathbi{s}|\mathbi{t})$。这意味着$\funp{P}(\mathbi{t}|\mathbi{s})$$\funp{P}(\mathbi{s}|\mathbi{t})$之间是互相独立的。$\funp{P}(\mathbi{t}|\mathbi{s})$$\funp{P}(\mathbi{s}|\mathbi{t})$是否真的没有关系呢?比如,$\mathbi{s}$$\mathbi{t}$是相同大小的向量,且$\mathbi{s}$$\mathbi{t}$的变换是一个线性变换,也就是与一个方阵$\mathbi{W}$做矩阵乘法:
\parinterval 回顾神经机器翻译系统的建模过程,给定一个互译的句对$(\mathbi{x},\mathbi{y})$,一个从源语言句子$\mathbi{x}$到目标语言句子$\mathbi{y}$的翻译被表示为求条件概率$\funp{P}(\mathbi{y}|\mathbi{x})$的问题。类似地,一个从目标语言句子$\mathbi{y}$到源语言句子$\mathbi{x}$的翻译可以表示为$\funp{P}(\mathbi{x}|\mathbi{y})$。通常来说,神经机器翻译的训练一次只得到一个方向的模型,也就是$\funp{P}(\mathbi{y}|\mathbi{x})$或者$\funp{P}(\mathbi{x}|\mathbi{y})$。这意味着$\funp{P}(\mathbi{y}|\mathbi{x})$$\funp{P}(\mathbi{x}|\mathbi{y})$之间是互相独立的。$\funp{P}(\mathbi{y}|\mathbi{x})$$\funp{P}(\mathbi{x}|\mathbi{y})$是否真的没有关系呢?比如,$\mathbi{x}$$\mathbi{y}$是相同大小的向量,且$\mathbi{x}$$\mathbi{y}$的变换是一个线性变换,也就是与一个方阵$\mathbi{W}$做矩阵乘法:
\begin{eqnarray}
\mathbi{t} = \mathbi{s} \cdot \mathbi{W}
\mathbi{y} = \mathbi{x} \cdot \mathbi{W}
\label{eq:16-6-xc}
\end{eqnarray}
\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}
\parinterval 这里可以把$\mathbi{x}$$\mathbi{y}$都看作分布式的向量表示;$\mathbi{W}$应当是一个满秩矩阵,否则对于任意一个$\mathbi{x}$经过$\mathbi{W}$变换得到的$\mathbi{y}$只落在所有可能的$\mathbi{y}$的一个子空间内,即在给定$\mathbi{W}$的情况下有些$\mathbi{y}$不能被任何一个$\mathbi{x}$表达,而这不符合常识,因为不管是什么句子,我们总能找到它的一种译文。若$\mathbi{W}$是满秩矩阵说明$\mathbi{W}$可逆,也就是给定$\mathbi{x}$$\mathbi{y}$的变换$\mathbi{W}$下,$\mathbi{y}$$\mathbi{x}$的变换必然是$\mathbi{W}$的逆而不是其他矩阵。这个例子说明$\funp{P}(\mathbi{y}|\mathbi{x})$$\funp{P}(\mathbi{x}|\mathbi{y})$直觉上应当存在联系。当然,$\mathbi{x}$$\mathbi{y}$之间是否存在简单的线性变换关系并没有结论,但是上面的例子给出了一种对源语言句子和目标语言句子进行相互转化的思路。实际上,研究人员已经通过一些数学技巧用目标函数来把$\funp{P}(\mathbi{y}|\mathbi{x})$$\funp{P}(\mathbi{x}|\mathbi{y})$联系起来,这样训练神经机器翻译系统一次就可以同时得到两个方向的翻译模型,使得训练变得更加高效\upcite{Hassan2018AchievingHP}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -338,32 +336,32 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\subsection{对偶学习}
\parinterval 除了用条件概率$\funp{P}(\mathbi{t}|\mathbi{s})$建模翻译问题,还可以使用联合分布$\funp{P}(\mathbi{s},\mathbi{t})$进行建模\upcite{DBLP:conf/icml/XiaQCBYL17}。根据条件概率的定义,有:
\parinterval 除了用条件概率$\funp{P}(\mathbi{y}|\mathbi{x})$建模翻译问题,还可以使用联合分布$\funp{P}(\mathbi{x},\mathbi{y})$进行建模\upcite{DBLP:conf/icml/XiaQCBYL17}。根据条件概率的定义,有:
\begin{eqnarray}
\funp{P}(\mathbi{s},\mathbi{t}) &=& \funp{P}(\mathbi{s})\funp{P}(\mathbi{t}|\mathbi{s}) \nonumber \\
&=& \funp{P}(t)\funp{P}(\mathbi{s}|\mathbi{t})
\funp{P}(\mathbi{x},\mathbi{y}) &=& \funp{P}(\mathbi{x})\funp{P}(\mathbi{y}|\mathbi{x}) \nonumber \\
&=& \funp{P}(\mathbi{y})\funp{P}(\mathbi{x}|\mathbi{y})
\label{eq:16-7-xc}
\end{eqnarray}
\parinterval 公式\ref{eq:16-7-xc}很自然地把两个方向的翻译模型$\funp{P}(\mathbi{t}|\mathbi{s})$$\funp{P}(\mathbi{s}|\mathbi{t})$以及两个语言模型$\funp{P}(\mathbi{s})$$\funp{P}(\mathbi{t})$联系起来:$\funp{P}(\mathbi{s})\funp{P}(\mathbi{t}|\mathbi{s})$应该与$\funp{P}(\mathbi{t})\funp{P}(\mathbi{s}|\mathbi{t})$接近,因为它们都表达了同一个联合分布$\funp{P}(\mathbi{s},\mathbi{t})$。因此,在构建训练两个方向的翻译模型的目标函数时,除了它们单独训练时各自使用的极大似然估计目标函数,可以额外增加一个目标项来鼓励两个方向的翻译模型去满足公式\ref{eq:16-8-xc}
\parinterval 公式\ref{eq:16-7-xc}很自然地把两个方向的翻译模型$\funp{P}(\mathbi{y}|\mathbi{x})$$\funp{P}(\mathbi{x}|\mathbi{y})$以及两个语言模型$\funp{P}(\mathbi{x})$$\funp{P}(\mathbi{y})$联系起来:$\funp{P}(\mathbi{x})\funp{P}(\mathbi{y}|\mathbi{x})$应该与$\funp{P}(\mathbi{y})\funp{P}(\mathbi{x}|\mathbi{y})$接近,因为它们都表达了同一个联合分布$\funp{P}(\mathbi{x},\mathbi{y})$。因此,在构建训练两个方向的翻译模型的目标函数时,除了它们单独训练时各自使用的极大似然估计目标函数,可以额外增加一个目标项来鼓励两个方向的翻译模型去满足公式\ref{eq:16-8-xc}
\begin{eqnarray}
\mathcal{L} = (\textrm{log P}(\mathbi{s}) + \textrm{log P}(\mathbi{t}|\mathbi{s}) - \textrm{log P}(\mathbi{t}) - \textrm{log P}(\mathbi{s}|\mathbi{t}))^{2}
\mathcal{L} = (\textrm{log P}(\mathbi{x}) + \textrm{log P}(\mathbi{y}|\mathbi{x}) - \textrm{log P}(\mathbi{y}) - \textrm{log P}(\mathbi{x}|\mathbi{y}))^{2}
\label{eq:16-8-xc}
\end{eqnarray}
\parinterval 这里$\funp{P}(\mathbi{s})$$\funp{P}(\mathbi{t})$这两个语言模型是预先训练好的,并不参与翻译模型的训练。可以看到,对于单独的一个模型来说,其目标函数增加了与另外一个方向的模型相关的项。这样的形式与L1/L2正则化非常类似(见\ref{subsection-7.3.1}),因此可以把这个方法看作是一种任务特定的正则化的手段(由翻译任务本身的性质所启发而来)。由于两个方向的翻译模型和语言模型相互影响,这种方法能得到比基于单个方向训练效果更好的模型。
\parinterval 这里$\funp{P}(\mathbi{x})$$\funp{P}(\mathbi{y})$这两个语言模型是预先训练好的,并不参与翻译模型的训练。可以看到,对于单独的一个模型来说,其目标函数增加了与另外一个方向的模型相关的项。这样的形式与L1/L2正则化非常类似(见\ref{subsection-13.1}{\red{引用正则化一节}}),因此可以把这个方法看作是一种任务特定的正则化的手段(由翻译任务本身的性质所启发而来)。由于两个方向的翻译模型和语言模型相互影响,这种方法能得到比基于单个方向训练效果更好的模型。
{\color{red} 无监督对偶学习?}
\parinterval 在有监督对偶学习对联合分布$\funp{P}(\mathbi{s},\mathbi{t})$建模的基础上,如果把$\mathbf t$看作一个隐变量,那么可以得到边缘分布$\funp{P}(\mathbi{s})$,也就是关于$\mathbi{s}$的语言模型:
\parinterval 在有监督对偶学习对联合分布$\funp{P}(\mathbi{x},\mathbi{y})$建模的基础上,如果把$\mathbi{y}$看作一个隐变量,那么可以得到边缘分布$\funp{P}(\mathbi{x})$,也就是关于$\mathbi{x}$的语言模型:
\begin{eqnarray}
\funp{P}(\mathbi{s}) &=& \sum_{\mathbi{t}}\funp{P}(\mathbi{s},\mathbi{t}) \nonumber \\
&=& \sum_{\mathbi{t}}\funp{P}(\mathbi{s}|\mathbi{t})\funp{P}(\mathbi{t}|\mathbi{s})
\funp{P}(\mathbi{x}) &=& \sum_{\mathbi{y}}\funp{P}(\mathbi{x},\mathbi{y}) \nonumber \\
&=& \sum_{\mathbi{y}}\funp{P}(\mathbi{x}|\mathbi{y})\funp{P}(\mathbi{y}|\mathbi{x})
\label{eq:16-9-xc}
\end{eqnarray}
\noindent 公式\ref{eq:16-9-xc}假设$\funp{P}(\mathbi{s}|\mathbi{t})=\funp{P}(\mathbi{s}|\mathbi{s},\mathbi{t})$。这个假设显然是成立的,因为当知道一个句子的译文时,并不需要知道它的源文就可以把它翻译回去。如果直接优化(最大化)公式\ref{eq:16-9-xc}右侧,相当于对这个等式$\funp{P}(\mathbi{s}|\mathbi{t})$$\funp{P}(\mathbi{t}|\mathbi{s})$施加了{\small\sffamily\bfnew{循环一致性}}\index{循环一致性}(Circle Consistency)\index{Circle Consistency}的约束\upcite{DBLP:conf/iccv/ZhuPIE17},也就是对于一个句子$\mathbi{s}$,通过$\funp{P}(\mathbi{t}|\mathbi{s})$把它翻译成$\mathbi{t}$后,根据$\funp{P}(\mathbi{s}|\mathbi{t})$应该能重新翻译出$\mathbi{s}$,如图\ref{fig:16-7-xc}所示。公式\ref{fig:16-7-xc}给出了同时优化$\funp{P}(\mathbi{s}|\mathbi{t})$$\funp{P}(\mathbi{t}|\mathbi{s})$的一个目标函数形式。这个目标函数的一个额外的好处是它本质上是在学习一个由$\funp{P}(\mathbi{s}|\mathbi{t})$$\funp{P}(\mathbi{t}|\mathbi{s})$组成的语言模型$\funp{P}(\mathbi{s})$,而$\funp{P}(\mathbi{s})$的学习依赖于单语数据,这意味着这个目标函数可以很自然地直接使用大量单语数据来同时训练两个翻译模型。相同的结论可以推广到$\funp{P}(\mathbi{t})$\upcite{DBLP:conf/nips/HeXQWYLM16}
\noindent 公式\ref{eq:16-9-xc}假设$\funp{P}(\mathbi{x}|\mathbi{y})=\funp{P}(\mathbi{x}|\mathbi{x},\mathbi{y})$。这个假设显然是成立的,因为当知道一个句子的译文时,并不需要知道它的源文就可以把它翻译回去。如果直接优化(最大化)公式\ref{eq:16-9-xc}右侧,相当于对这个等式$\funp{P}(\mathbi{x}|\mathbi{y})$$\funp{P}(\mathbi{y}|\mathbi{x})$施加了{\small\sffamily\bfnew{循环一致性}}\index{循环一致性}(Circle Consistency)\index{Circle Consistency}的约束\upcite{DBLP:conf/iccv/ZhuPIE17},也就是对于一个句子$\mathbi{x}$,通过$\funp{P}(\mathbi{y}|\mathbi{x})$把它翻译成$\mathbi{y}$后,根据$\funp{P}(\mathbi{x}|\mathbi{y})$应该能重新翻译出$\mathbi{x}$,如图\ref{fig:16-7-xc}所示。公式\ref{fig:16-7-xc}给出了同时优化$\funp{P}(\mathbi{x}|\mathbi{y})$$\funp{P}(\mathbi{y}|\mathbi{x})$的一个目标函数形式。这个目标函数的一个额外的好处是它本质上是在学习一个由$\funp{P}(\mathbi{x}|\mathbi{y})$$\funp{P}(\mathbi{y}|\mathbi{x})$组成的语言模型$\funp{P}(\mathbi{x})$,而$\funp{P}(\mathbi{x})$的学习依赖于单语数据,这意味着这个目标函数可以很自然地直接使用大量单语数据来同时训练两个翻译模型。相同的结论可以推广到$\funp{P}(\mathbi{y})$\upcite{DBLP:conf/nips/HeXQWYLM16}
%----------------------------------------------
\begin{figure}[htp]
......@@ -378,9 +376,9 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\begin{itemize}
\vspace{0.5em}
\item 计算公式\ref{eq:16-9-xc}要枚举所有可能的隐变量$\mathbi{t}$的取值,也就是所有可能产生的目标语句子,而这是不可能的,因此一般会通过平均多个随机产生的$\mathbi{t}$对应的损失来近似真正的目标函数值;
\item 计算公式\ref{eq:16-9-xc}要枚举所有可能的隐变量$\mathbi{y}$的取值,也就是所有可能产生的目标语句子,而这是不可能的,因此一般会通过平均多个随机产生的$\mathbi{y}$对应的损失来近似真正的目标函数值;
\vspace{0.5em}
\item 从公式\ref{eq:16-9-xc}可以看到,在$\funp{P}(\mathbi{s})$上计算完目标函数值后,得到的梯度首先传递给$\funp{P}(\mathbi{s}|\mathbi{t})$,然后通过$\funp{P}(\mathbi{s}|\mathbi{t})$传递给$\funp{P}(\mathbi{t}|\mathbi{s})$。由于$\funp{P}(\mathbi{s}|\mathbi{t})$的输入$\mathbi{t}$$\funp{P}(\mathbi{t}|\mathbi{s})$采样得到,而采样操作不可导,导致梯度的传播在$\funp{P}(\mathbi{t}|\mathbi{s})$的输出处断开了,因此$\funp{P}(\mathbi{t}|\mathbi{s})$接收不到任何梯度来进行更新。常见的解决方案是使用策略梯度\upcite{DBLP:conf/nips/SuttonMSM99}。它把$\funp{P}(\mathbi{t}|\mathbi{s})$采样得到的$\mathbi{t}$当成$\funp{P}(\mathbi{t}|\mathbi{s})$的目标来学习,并使用$\textrm{log P}(\mathbi{s}|\mathbi{t})$$\funp{P}(\mathbi{t}|\mathbi{s})$的损失进行加权。但是由于仅使用少量样本来近似真正的目标函数,得到的策略梯度方差非常大,系统无法稳定学习,特别是训练的初期,因此通常会需要先使用双语数据预训练两个方向的翻译模型,然后把公式\ref{eq:16-9-xc}作为正常训练的一个正则化项使用。
\item 从公式\ref{eq:16-9-xc}可以看到,在$\funp{P}(\mathbi{x})$上计算完目标函数值后,得到的梯度首先传递给$\funp{P}(\mathbi{x}|\mathbi{y})$,然后通过$\funp{P}(\mathbi{x}|\mathbi{y})$传递给$\funp{P}(\mathbi{y}|\mathbi{x})$。由于$\funp{P}(\mathbi{x}|\mathbi{y})$的输入$\mathbi{y}$$\funp{P}(\mathbi{y}|\mathbi{x})$采样得到,而采样操作不可导,导致梯度的传播在$\funp{P}(\mathbi{y}|\mathbi{x})$的输出处断开了,因此$\funp{P}(\mathbi{y}|\mathbi{x})$接收不到任何梯度来进行更新。常见的解决方案是使用策略梯度\upcite{DBLP:conf/nips/SuttonMSM99}。它把$\funp{P}(\mathbi{y}|\mathbi{x})$采样得到的$\mathbi{y}$当成$\funp{P}(\mathbi{y}|\mathbi{x})$的目标来学习,并使用$\textrm{log P}(\mathbi{x}|\mathbi{y})$$\funp{P}(\mathbi{y}|\mathbi{x})$的损失进行加权。但是由于仅使用少量样本来近似真正的目标函数,得到的策略梯度方差非常大,系统无法稳定学习,特别是训练的初期,因此通常会需要先使用双语数据预训练两个方向的翻译模型,然后把公式\ref{eq:16-9-xc}作为正常训练的一个正则化项使用。
\vspace{0.5em}
\end{itemize}
......@@ -390,14 +388,244 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\subsubsection{4. 翻译中回译}
\parinterval 重新回顾公式\ref{eq:16-9-xc}对应的目标函数,无监督对偶学习跟回译(假设现在只在一个句对$(\mathbi{s},\mathbi{t})$上做回译)之间有着很深的内在联系:给定一个句子$\mathbi{s}$,无监督对偶学习和回译都首先用$\funp{P}(\mathbi{t}|\mathbi{s})$$\mathbi{s}$翻译成$\mathbi{t}$,然后无监督对偶学习最大化$\funp{P}(\mathbi{s}|\mathbi{t})\funp{P}(\mathbi{t}|\mathbi{s})$,而回译则是最大化$\funp{P}(\mathbi{s}|\mathbi{t})$。可以看到,当无监督对偶学习假设$\funp{P}(\mathbi{t}|\mathbi{s})$是一个完美的翻译模型的时候,它与回译是等价的。此外,在共享两个方向的模型参数$\theta$的情况下,可以看到无监督对偶学习的梯度为$\frac{\partial \funp{P}(\mathbi{s})}{\partial \theta} =\funp{P}(\mathbi{t}|\mathbi{s}) \frac{\partial \funp{P}(\mathbi{s}|\mathbi{t})}{\partial \theta}+\funp{P}(\mathbi{s}|\mathbi{t}) \frac{\partial \funp{P}(\mathbi{t}|\mathbi{s})}{\partial \theta} $,而回译的梯度为$\frac{\partial \funp{P}(\mathbi{s}|\mathbi{t})}{\partial \theta}$。从这个角度出发,无监督对偶学习与回译都在优化语言模型$\funp{P}(\mathbi{s})$这个目标函数,只不过回译使用对$\theta$有偏的梯度估计。
\parinterval 重新回顾公式\ref{eq:16-9-xc}对应的目标函数,无监督对偶学习跟回译(假设现在只在一个句对$(\mathbi{x},\mathbi{y})$上做回译)之间有着很深的内在联系:给定一个句子$\mathbi{x}$,无监督对偶学习和回译都首先用$\funp{P}(\mathbi{y}|\mathbi{x})$$\mathbi{x}$翻译成$\mathbi{y}$,然后无监督对偶学习最大化$\funp{P}(\mathbi{x}|\mathbi{y})\funp{P}(\mathbi{y}|\mathbi{x})$,而回译则是最大化$\funp{P}(\mathbi{x}|\mathbi{y})$。可以看到,当无监督对偶学习假设$\funp{P}(\mathbi{y}|\mathbi{x})$是一个完美的翻译模型的时候,它与回译是等价的。此外,在共享两个方向的模型参数$\theta$的情况下,可以看到无监督对偶学习的梯度为$\frac{\partial \funp{P}(\mathbi{x})}{\partial \theta} =\funp{P}(\mathbi{y}|\mathbi{x}) \frac{\partial \funp{P}(\mathbi{x}|\mathbi{y})}{\partial \theta}+\funp{P}(\mathbi{x}|\mathbi{y}) \frac{\partial \funp{P}(\mathbi{y}|\mathbi{x})}{\partial \theta} $,而回译的梯度为$\frac{\partial \funp{P}(\mathbi{x}|\mathbi{y})}{\partial \theta}$。从这个角度出发,无监督对偶学习与回译都在优化语言模型$\funp{P}(\mathbi{x})$这个目标函数,只不过回译使用对$\theta$有偏的梯度估计。
\parinterval 这个事实说明对回译进行适当的增广后应该能取得与无监督对偶学习相似的结果。{\small\sffamily\bfnew{ 翻译中回译}}\index{翻译中回译}(On-the-fly Back-translation)\index{On-the-fly Back-translation}就是这样一个例子。一般回译的过程是先把数据集里所有$\mathbi{s}$都翻译出来,然后只训练$\funp{P}(\mathbi{s}|\mathbi{t})$。区别于回译,从数据集中采集到一个$\mathbi{s}$之后,翻译中回译立刻把$\mathbi{s}$翻译成$\mathbi{t}$,然后训练$\funp{P}(\mathbi{s}|\mathbi{t})$,并且在下一步迭代中采集一个$\mathbi{t}$然后训练$\funp{P}(\mathbi{t}|\mathbi{s})$,这样交替更新$\funp{P}(\mathbi{s}|\mathbi{t})$$\funp{P}(\mathbi{t}|\mathbi{s})$。尽管翻译中回译无法像无监督对偶学习那样在一个样本里通过梯度把$\funp{P}(\mathbi{s}|\mathbi{t})$的信息传到$\funp{P}(\mathbi{t}|\mathbi{s})$,但是它交替更新$\funp{P}(\mathbi{s}|\mathbi{t})$$\funp{P}(\mathbi{t}|\mathbi{s})$的策略允许$\funp{P}(\mathbi{s}|\mathbi{t})$在两个样本间通过其产生的输出$\mathbi{s}$来把信息传递到$\funp{P}(\mathbi{t}|\mathbi{s})$,因此也能获得相近的效果,并且在实现和计算上都非常高效。翻译中回译已经在无监督神经机器翻译系统训练中被广泛使用\upcite{lample2019cross}
\parinterval 这个事实说明对回译进行适当的增广后应该能取得与无监督对偶学习相似的结果。{\small\sffamily\bfnew{ 翻译中回译}}\index{翻译中回译}(On-the-fly Back-translation)\index{On-the-fly Back-translation}就是这样一个例子。一般回译的过程是先把数据集里所有$\mathbi{x}$都翻译出来,然后只训练$\funp{P}(\mathbi{x}|\mathbi{y})$。区别于回译,从数据集中采集到一个$\mathbi{x}$之后,翻译中回译立刻把$\mathbi{x}$翻译成$\mathbi{y}$,然后训练$\funp{P}(\mathbi{x}|\mathbi{y})$,并且在下一步迭代中采集一个$\mathbi{y}$然后训练$\funp{P}(\mathbi{y}|\mathbi{x})$,这样交替更新$\funp{P}(\mathbi{x}|\mathbi{y})$$\funp{P}(\mathbi{y}|\mathbi{x})$。尽管翻译中回译无法像无监督对偶学习那样在一个样本里通过梯度把$\funp{P}(\mathbi{x}|\mathbi{y})$的信息传到$\funp{P}(\mathbi{y}|\mathbi{x})$,但是它交替更新$\funp{P}(\mathbi{x}|\mathbi{y})$$\funp{P}(\mathbi{y}|\mathbi{x})$的策略允许$\funp{P}(\mathbi{x}|\mathbi{y})$在两个样本间通过其产生的输出$\mathbi{x}$来把信息传递到$\funp{P}(\mathbi{y}|\mathbi{x})$,因此也能获得相近的效果,并且在实现和计算上都非常高效。翻译中回译已经在无监督神经机器翻译系统训练中被广泛使用\upcite{lample2019cross}
\subsubsection{三角结构训练}
{\red [Triangular Architecture for Rare Language Translation]也不是利用单语数据,而是类似于枢轴语,在这里加是否合适?}
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\section{无监督机器翻译}
\parinterval 低资源机器翻译的一种极端情况就是:对于想要互译的两个语言,我们没有任何双语数据,只有单语数据。在这种情况下,我们是否仍然可以训练一个有效的翻译模型呢?我们称这种不需要双语数据的机器翻译方法为{\small\bfnew{无监督机器翻译}}
\parinterval 直接进行无监督机器翻译是困难的。一个简单可行的思路是,我们可以先把问题进行分解,然后分别解决各个子问题,最后把完整的解决方案拼凑出来。放到无监督机器翻译里面,我们可以首先使用无监督方法寻找词与词之间的翻译,然后在这基础上,进一步得到句子到句子的翻译模型。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{无监督词典归纳}
\parinterval 词典归纳(Bilingual Dictionary Induction,BDI),也叫词典推断、词对齐,是实现语种间单词级别翻译的任务。在统计机器翻译中,词典归纳是一项核心的任务,它从双语平行语料中发掘互为翻译的单词,是翻译知识的主要来源\cite{黄书剑0统计机器翻译中的词对齐研究}。在端到端的神经机器翻译中,词典归纳通常作为一个下游任务被用到无监督机器翻译、多语言机器翻译、迁移学习等任务中。在神经机器翻译中,单词通过连续化的向量来表示,词表分布在一个高维的空间中,基于人们对embedding空间的观察发现:连续的单词嵌入空间在各种语言中显示出类似的结构,这使得直接利用embedding来诱导双语词典成为可能。其基本想法是先将来自不同语言的embedding投影到共享嵌入空间中,然后在此共享空间中诱导出双语词典。研究人员们进行了众多的尝试,较早的尝试是使用一个包含数千词对的种子词典作为锚点来学习从源语到目标语词嵌入空间的线性映射,将两个语言的词汇投影到共享的嵌入空间之后,执行一些对齐算法即可得到双语词典\cite{DBLP:journals/corr/MikolovLS13}。最近的研究表明,词典归纳可以在更弱的监督信号下被诱导,这些监督信号来自数百对小词典\cite{DBLP:conf/acl/VulicK16}、相同的字符串\cite{DBLP:conf/iclr/SmithTHH17},甚至仅仅是共享的数字\cite{DBLP:conf/acl/ArtetxeLA17}
\parinterval 在最近,有人提出了完全无监督的词典归纳方法,这类方法不依赖于任何种子词典即可实现词典归纳,下面进行介绍。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 方法框架}
\parinterval 无监督词典归纳的核心思想是充分利用embedding空间近似同构的假设,基于一些无监督匹配的方法来得到一个初始化的种子词典,之后利用该种子词典作为起始监督信号不断进行微调进一步提高性能,总结起来,无监督词典归纳系统通常包括以下两个阶段:
\begin{itemize}
\vspace{0.5em}
\item 基于无监督的分布匹配。该步骤利用一些无监督的方法来得到一个包含噪声的初始化词典D。
\vspace{0.5em}
\item 基于有监督的微调。利用两个单语embedding和第一步阶段中学习到的种子字典执行一些对齐算法例如Procrustes Analysis\cite{1966ASchnemann}来迭代微调。
\vspace{0.5em}
\end{itemize}
\parinterval 其原理图如下所示:
\begin{figure}[h]
\centering
\includegraphics[scale=0.6]{Chapter16/Figures/figure-bilingual-dictionary-Induction}
\caption{无监督词典归纳原理图}
\label{fig:16-1}
\end{figure}
\begin{itemize}
\vspace{0.5em}
\item 对于图A中的分布在不同空间中的两个单语embedding X和Y,利用无监督匹配的方法来得到一个粗糙的线性映射W,结果如图B所示。
\vspace{0.5em}
\item 利用映射W可以执行一些对齐算法从而诱导出一个种子词典,如图C所示。
\vspace{0.5em}
\item 利用种子词典不断迭代微调进一步提高映射性能,最终映射的效果如图D所示,之后即可从中推断出词典作为最后的结果。
\vspace{0.5em}
\end{itemize}
\parinterval 不同的无监督方法最大的区别主要在于第一阶段,获得初始种子词典的手段,第二阶段微调的原理都大同小异。第一阶段的主流方法主要有两大类:
\begin{itemize}
\vspace{0.5em}
\item 基于GAN的方法\cite{DBLP:conf/iclr/LampleCRDJ18,DBLP:conf/acl/ZhangLLS17,DBLP:conf/emnlp/XuYOW18}。GAN 是被广泛用于解决无监督学习问题的模型,在这个任务中,通过生成器来产生映射W,鉴别器负责区分随机抽样的元素WX 和Y,两者共同优化收敛后即可得到映射W。
\vspace{0.5em}
\item 基于Gromov-Wasserstein 的方法\cite{DBLP:conf/emnlp/Alvarez-MelisJ18,DBLP:conf/lrec/GarneauGBDL20}。Wasserstein distance是在度量空间中定义两个概率分布之间距离的函数,在这个任务中,它用来衡量不同语言中单词对之间的相似性,利用空间近似同构的信息可以定义出一些目标函数,之后通过优化该目标函数也可以得到映射W。
\vspace{0.5em}
\end{itemize}
\parinterval 在得到映射W之后,对于X中的任意一个单词x,通过 Wx将其映射到空间Y中,然后在Y中找到该点的最近邻点y,于是y就是x的翻译词,重复该过程即可归纳出种子词典D,第一阶段结束。事实上,由于第一阶段缺乏监督信号,因此得到的种子词典D会包含大量的噪音,性能并不高,因此需要进行进一步的微调。微调的原理普遍基于Procrustes\cite{DBLP:journals/corr/MikolovLS13},该方法的原理如下:
\parinterval 假设现在有一个种子词典$D=\left\{x_{i}, y_{i}\right\}_{i \in\{1, n\}}$,和两个单语embedding X、Y,那么我们就可以将D作为映射锚点(anchor)学习一个转移矩阵 W,使得 WX与 Y这两个空间尽可能相近,此外通过对W施加正交约束可以显著提高能\cite{DBLP:conf/naacl/XingWLL15},于是这个优化问题就转变成了Procrustes问题\cite{DBLP:conf/iclr/SmithTHH17},可以通过奇异值分解(Singular Value Decomposition,SVD)来获得近似解:
\begin{eqnarray}
W^{\star}=\underset{W \in O_{d}(\mathbb{R})}{\operatorname{argmin}}\|W X-Y\|_{\mathrm{F}}=U V^{T}, \text { with } U \Sigma V^{T}=\operatorname{SVD}\left(Y X^{T}\right)
\label{eq:16-1}
\end{eqnarray}
\parinterval 上式子中,SVD中的Y和X行对齐,利用上式可以获得新的W,通过W可以归纳出新的D,如此迭代进行微调最后即可以得到收敛的D。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 鲁棒性问题}
\parinterval 目前很多无监督词典归纳方法在相似语言对比如英-法已经取得不错的结果,然而在远距离语言对比如英-中性能仍然很差,很多甚至为0\cite{DBLP:conf/emnlp/VulicGRK19,A2020Li},无监督词典归纳的鲁棒性仍然存在巨大的挑战。这有多个层面的原因:
\begin{itemize}
\vspace{0.5em}
\item 首先词典归纳依赖于基于大规模单语语料训练出来的embedding,而embedding会受到单语数据的来源领域及数量、词向量训练算法等多方面的影响,这很容易导致假设的失效,从而使得模型运行失败。
\vspace{0.5em}
\item 词典归纳强烈依赖于embedding空间近似同构的假设,然而许多语言对由于语言本身天然的差异导致该假设往往很弱,而无监督系统通常是基于pipeline的方法,起始阶段由于缺乏监督信号的引导很容易就失败,从而导致后面的阶段无法有效运行。\cite{DBLP:conf/acl/SogaardVR18,A2020Li}
\vspace{0.5em}
\item 由于embedding本身表示上的局限性,模型无法实现单词多对多的对齐,而且对于一些相似的词或者实体名词模型也很难实现对齐。
\vspace{0.5em}
\end{itemize}
\parinterval 无监督方法的鲁棒性是一个很难解决的问题,对于词典推断这个任务来说,是否有必要无监督值得商榷,因为其作为一个底层任务,不仅可以利用embedding,还可以利用单语、甚至是双语信息,此外,基于弱监督的方法代价也不是很大,只需要数千个词典即可,有了监督信号的引导,鲁棒性问题就能得到一定的缓解。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{无监督统计机器翻译}
\parinterval 上一节提到的无监督词典归纳允许我们在没有任何人类标注的情况下获得双语词典。在这个基础上,我们可以进一步得到句子间的翻译,实现无监督机器翻译\cite{DBLP:journals/talip/MarieF20}
\parinterval 回顾统计机器翻译,它主要涉及短语表,语言模型,调序模型以及模型调优四个模块。其中短语表和模型调优需要双语数据,而语言模型和调序模型只依赖于单语数据。因此,如果我们可以通过无监督的方法完成短语表和模型调优,那么我们就得到了无监督统计机器翻译系统。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 短语表}
\parinterval 回顾短语表的概念,其实它类似于一个词典,对一个源语短语给出相应的目标语短语翻译,只不过词典的基本单元是词,而短语表的是短语。此外短语表还提供短语翻译的得分。
\parinterval 既然短语表跟词典如此相似,那么我们很容易就可以把无监督词典归纳的方法套用到短语的情况,也就是把里面的词替换成短语,就可以无监督地得到短语表。
\parinterval 如上节所示,无监督词典归纳的方法依赖于词的分布式表达,也就是词嵌入,因此当我们想要拓展无监督词典归纳到短语的情景的时候,我们首先需要获得短语的分布式表达。一般训练词嵌入的算法都是基于n-gram,而我们可以对它稍作改动,把n-gram里的词替换成短语,然后借助相同的算法得到短语的分布式表达。最后直接应用无监督词典归纳方法,得到源语短语与目标语短语之间的翻译。
\parinterval 尽管我们已经得到了短语和短语之间的翻译,短语表的另外一个重要的组成部分,也就是短语对的得分(概率)无法直接由词典归纳方法直接给出,而这些得分在统计机器翻译模型中非常重要。在无监督词典归纳中我们知道,在推断词典的时候我们会为一对源语词和目标语词打分(词嵌入之间的相似度),然后根据打分来决定哪一个目标语词更有可能是当前源语词的翻译。在短语的情况下,这样一个打分已经告诉我们一个短语对的质量,因此经过适当的归一化处理后我们就可以得到短语对的得分:
\begin{eqnarray}
P(t|s)=\frac{\mathrm{cos}(s,t)/\tau}{\sum_{t'}\mathrm{cos}(s,t')\tau}
\label{eq:16-2}
\end{eqnarray}
其中$\mathrm{cos}$是余弦相似度,$s$是经过无监督词典归纳里$W$转换的源语短语嵌入,$t$是目标语短语嵌入,$t'$是所有可能的目标语短语嵌入,$\tau$控制产生的分布$P$的尖锐程度的一个超参数。
\parinterval 一个问题是在无监督的情景下我们没有任何双语数据,那么我们如何得到最优的$\tau$?由于$\tau$会影响$P$的大小,而我们通常希望概率越大越好,因此我们可以寻找一个$\tau$使得所有$P(t|s)$最大。通常我们取离一个给定的$t$最接近的$s$而不是给定$s$选取最近的$t$来计算$P(t|s)$,因为给定$s$得到的最近$t$总是$P(t|s)$里概率最大的元素,这时候$\tau$总是可以通过逼近0来使得所有$P$的取值都接近1。实际中为了选取最优$\tau$我们会为$P(t|s)$$P(s|t)$同时优化$\tau$
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 模型调优}
\parinterval 有了短语表之后,最后一个问题就是如何在没有双语数据的情况下进行模型调优,从而把短语表、语言模型、调序模型等模块融合起来。我们知道短语表可以提供短语的翻译,而语言模型可以保证从单个短语的翻译拼装得到的句子的流畅度,因此统计机器翻译模型即使在没有模型调优的基础上已经具备了一定的翻译能力。所以一个简单而有效的无监督方法就是使用未经过模型调优的统计机器翻译模型进行回译,也就是把目标语句子翻译成源语句子后把翻译得到的源语句子当成输入而目标语句子当成目标进行训练,从而达到了模型调优的目的。
\parinterval 经过上述的无监督模型调优后,我们获得了一个比未经调优效果更好的翻译模型。这时候一个自然的想法就是我们可以使用这个更好更强的翻译模型去产生质量更高的数据,然后用这些数据来继续对我们的翻译模型进行调优,如此反复迭代一定次数后停止。这个方法也被称为{\small\bfnew{迭代优化}}(Iterative Refinement)。
\parinterval 迭代优化也会带来另外一个问题:在每一次迭代中都会产生新的模型,我们应该什么时候停止生成新模型,并且最终挑选哪一个模型?因为在无监督的场景当中我们没有任何双语数据,所以我们无法使用监督学习里的校验集来对每个模型进行检验并筛选。另外,即使我们有很少量的双语数据(比如100条双语句对),直接在上面挑选超参数会导致非常严重的过拟合,使得最后结果越来越差。一个经验上非常高效的挑选标准是我们可以挑选一些句子,然后使用我们的模型把这些句子翻译过去之后再翻译回来(源语$\to$目标语$\to$源语或者目标语$\to$源语$\to$目标语),得到的结果跟原始的结果计算BLEU,得分越高则效果越好。这样一个无监督模型挑选标准经验上被证明是跟使用大的双语校验集的结果高度相关\cite{DBLP:conf/emnlp/LampleOCDR18}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{无监督神经机器翻译}
\parinterval 既然神经机器翻译已经证明在大多数情况下都优于统计机器翻译,为什么我们不直接做无监督神经机器翻译呢?实际上由于神经网络的黑盒特性,我们无法像统计机器翻译那样非常直观的定位并解决无监督神经机器翻译。一个折衷的方案是我们借助已经成功的无监督方法来为神经机器翻译模型提供少量双语监督信号,然后在这个基础上训练模型。由于初始的监督信号可能很少或者包含大量噪声,我们需要逐步优化数据来重新训练出更好的模型。这个方案最简单直接的实现就是借助已经成功的无监督统计机器翻译模型产生伪双语数据来训练神经机器翻译模型 ,然后模型进行迭代回译来进行数据优化,如图\ref{fig:16-1}所示\cite{DBLP:conf/acl/ArtetxeLA19}。这个方法的优点是直观,并且性能稳定,容易调试(所有模块都互相独立),缺点是复杂繁琐,涉及许多超参数调整工作。
\begin{figure}[h]
\centering
\includegraphics[scale=0.2,angle=90]{Chapter16/Figures/figure-unmt-idea1.jpg}
\caption{无监督神经机器翻译思路1。}
\label{fig:16-1}
\end{figure}
\parinterval 既然无监督神经机器翻译问题的核心在于通过无监督方法提供初始的监督信号,另一个思路就是直接从无监督词典归纳中得到神经机器翻译模型,从而避免繁琐的无监督统计机器翻译模型训练过程,同时也避免神经机器翻译模型继承统计机器翻译模型的错误,如图\ref{fig:16-2}所示。这种方法的核心就是把翻译看成一个两阶段的过程:无监督词典归纳首先通过双语词典把一个源语句子转换成一个不通顺但是意思完整的目标语译文,然后把这样一个不通顺的句子改写成一个流畅的句子,同时保留原来的含义,最后达到翻译的目的。而第二阶段的改写任务其实也是一个特殊的翻译任务,因为翻译任务本质就是映射两个不同形态的序列并且保持两者之间语义上的一致,只不过现在的源语和目标语都是使用不同的表达方式表达的同一种语言。因此我们可以使用神经机器翻译模型来完成这个任务,而且由于这个任务不再涉及双语数据而只需要单语数据,模型的训练也将是无监督的。尽管这样的方法不再需要无监督统计机器翻译,并且适应能力很强(对于新语种,不需要重新训练神经机器翻译模型,只需要训练无监督词典归纳进行词的翻译,然后使用相同的模型进行改写),但是目前训练数据需要使用其他语种对的双语数据来进行构造(把源语句子里每个词使用双语词典进行翻译作为输入,输出的目标语句子不变)。虽然可以通过把单语句子根据规则或者随机进行打乱来生成训练数据,但是这些句子不符合语言学的规律并且跟实际应用里见到的句子所服从的数据分布不一致,导致训练测试不一致的问题。最后,这个思路简化了部分流程,但是两个阶段的过程无法避免最终翻译模型继承来自无监督词典归纳的错误\cite{DBLP:conf/acl/PourdamghaniAGK19}。一个相对更简洁一些的方法则是把无监督词典归纳得到的词典对单语数据进行逐词的翻译,然后在相应的伪数据上训练最初的翻译模型,最后不断地交替优化数据和模型,得到更好的翻译模型\cite{DBLP:conf/iclr/LampleCDR18}
\begin{figure}[h]
\centering
\includegraphics[scale=0.2,angle=90]{Chapter16/Figures/figure-unmt-idea2.jpg}
\caption{无监督神经机器翻译思路2。}
\label{fig:16-2}
\end{figure}
\parinterval 为了获得更好的神经机器翻译模型,我们需要对目前训练流程和模型做更深度的整合。我们知道,神经机器翻译模型的训练包含两个阶段:初始化和优化,而无监督神经机器翻译的核心思路也是对应的两个阶段:无监督方法提供初始的监督信号和数据优化,因此我们可以考虑通过在模型的初始化阶段使用无监督方法提供初始的监督信号,然后优化过程不但优化模型的参数,还优化训练使用的数据,从而避免流水线带来的错误传播,如图\ref{fig:16-3}所示\cite{DBLP:conf/nips/ConneauL19}
\begin{figure}[h]
\centering
\includegraphics[scale=0.2,angle=90]{Chapter16/Figures/figure-unmt-idea3.jpg}
\caption{无监督神经机器翻译思路3。}
\label{fig:16-3}
\end{figure}
\parinterval 实际中无监督神经机器翻译模型的数据优化并不简单。一般来说我们相信在生成的伪数据上经过参数优化后模型会变得比生成伪数据的时候更好,这时候对这个更好的模型使用数据增强的手段如回译等就可以生成更好的训练数据。这样一个数据优化过程依赖于模型经过参数优化后会生成比原始数据更好的数据的假设,而实际上在数据优化和参数优化共同影响下模型非常容易拟合数据中的简单模式,使得在数据优化过程中模型倾向产生包含这种简单模式的数据,然后模型对这种类型数据过拟合,最后可以得到非常低的损失,然而模型生成的结果却非常差。一个常见的问题解就是模型对任何输入都输出相同的译文,这时候翻译模型无法产生任何有意义的结果,而它的训练过程则退化成普通的语言模型(数据优化产生的数据里无论什么目标语对应的源语都是同一个句子)。这种情况下翻译模型虽然能降低损失(训练语言模型),但是它不能学会任何源语跟目标语之间的对应关系,也就无法翻译。
\parinterval 比较常见的解决方案就是在双语数据对应的目标函数外增加一个语言模型的目标函数。我们希望这样一个额外的语言模型目标函数能在模型在初始化后由于性能较差导致翻译出不通顺的句子的时候把它纠正过来,使得模型能稳定的逐渐生成更好的数据。这个方法在实际中非常有效,尽管目前我们还没有任何理论上的支持来保证无监督神经机器翻译模型的训练一定成功。
\parinterval 无监督神经机器翻译还有两个关键的技巧:
\begin{itemize}
\vspace{0.5em}
\item 词表共享:对于源语和目标语里都一样的词使用同一个词嵌入,而不是源语目标语各自对应一个词嵌入,比如阿拉伯数字或者一些实体名字。这样相当于在模型设计上告诉模型这个词在源语和目标语里面表达同一个意思,隐式地引入了词翻译的监督信号。在无监督神经机器翻译里词表共享搭配子词切分会更加有效,因为子词的覆盖范围广,比如多个不同的词可以包含同一个子词。
\vspace{0.5em}
\item 模型共享:与多语言翻译系统类似,使用同一个翻译模型来进行正向翻译(源语$\to$目标语)和反向翻译(目标语$\to$源语)。这样做降低了模型的参数量,减少了过拟合的风险。
\vspace{0.5em}
\end{itemize}
\parinterval 最后图\ref{fig:16-4}简单总结了无监督神经机器翻译的流程。下面我们详细讨论一下无监督神经机器翻译里面模型的初始化以及语言模型目标函数的选用。
\begin{figure}[h]
\centering
\includegraphics[scale=0.2,angle=90]{Chapter16/Figures/figure-unmt-process.jpg}
\caption{无监督神经机器翻译模型训练流程。}
\label{fig:16-4}
\end{figure}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 初始化}
\parinterval 无监督神经机器翻译的关键在于如何提供最开始的监督信号,从而启动后续的迭代流程,而初始化正是提供这些监督信号的地方。前面章节提到的无监督词典归纳已经可以提供一些可靠的监督信号,那么问题就是如何在模型初始化中融入这些信息。一个直观的做法就是,既然神经机器翻译模型都使用词嵌入层作为输入,而无监督词典归纳总是首先把两个语言各自的单语词嵌入映射到一个空间后才推断双语词典,那么我们可以使用这些映射后的词嵌入来初始化模型的词嵌入层,然后在这个基础上训练模型,因为这些映射后的词嵌入天然就包含了大量的监督信号,比如两个语言里意思相近的词对应的词嵌入会比其他词更靠近对方\cite{DBLP:journals/ipm/FarhanTAJATT20}。为了防止训练过程中模型参数的更新会破坏词嵌入当中的词对齐信息,通常初始化后会固定模型的词嵌入层不让其更新。
\parinterval 后续的研究表明,无监督神经机器翻译能在更少监督信号被提供的情况下启动,也就是我们可以去除无监督词典归纳这一步骤。这时候模型的初始化直接使用共享词表的预训练模型的参数作为起始点。这个预训练模型直接使用前面章节提到的预训练方法如MASS或者MLM的方法进行训练,区别在于模型的大小如宽度和深度需要严格匹配翻译模型。此外,这个模型不仅仅只在一个语言的单语数据上进行训练,而是同时在两个语言的单语数据上进行训练,并且两个语言的词表进行共享。前面我们提到,共享词表特别是共享子词词表的情况下我们已经隐式的告诉模型源语和目标语里一样的(子)词互为翻译,相当于模型使用了少量的监督信号,而在这基础上使用两个语言的单语数据进行预训练则通过模型共享进一步挖掘了语言之间共通的部分,因此使用预训练模型进行初始化后无监督神经机器翻译模型已经得到大量的监督信号,从而得以不断通过优化来提升模型性能。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{4. 语言模型}
\parinterval 前面提到,无监督神经机器翻译的一个重要部分就是来自语言模型的目标函数。因为翻译模型本质上是在完成文本生成任务,所以只有文本生成类型的语言模型建模方法才可以应用到无监督神经机器翻译里。比如经典的给定前文预测下一词就可以运用到无监督神经机器翻译里,而目前在预训练里流行的Masked Language Model就不能直接在无监督神经翻译里使用。
\parinterval 另外一个在无监督神经机器翻译中比较常见的语言模型目标函数则是降噪自编码器。它也是文本生成类型的语言模型建模方法。对于一个句子$x$,我们首先使用一个噪声函数$x'=\mathrm{noise}(x)$来对$x$注入噪声,产生一个质量较差的句子$x'$,然后我们让模型学习如何从$x'$还原出$x$。这样一个目标函数比预测下一词更贴近翻译任务的本质,因为它是一个序列到序列的映射,并且输入输出两个序列在语义上是等价的。通常来说,噪声函数$\mathrm{noise}$有三种形式,如表\ref{tab:16-1}所示。
\begin{table}[h]
\centering
\begin{tabular}{l|l|l}
\hline
\multicolumn{1}{c|}{噪声函数} & \multicolumn{1}{c|}{描述} & \multicolumn{1}{c}{例子} \\
\hline
交换 & 把句子中任意两个词进行交换 & ``我\ 喜欢\ \underline{苹果}\ \underline{}\ 。'' \\
删除 & 把句子中的词按一定概率被删除 & ``我\ 喜欢\ \ 。'' \\
空白 & 把句子中的词按一定概率替换成空白符 & ``我\ \underline{\ \ \ \ \ \ \ \ }\ \ 苹果\ 。'' \\
\hline
\end{tabular}
\caption{三种噪声函数(原句为``我 喜欢 吃 苹果 。'')。}
\label{tab:16-1}
\end{table}
\parinterval 实际当中三种形式的噪声函数都会被使用到,其中在交换方法中越相近的词越容易被交换,并且保证被交换的词的对数有限,而删除和空白方法里词的删除和替换概率通常都非常低,如0.1等。
......@@ -6172,6 +6172,341 @@ author = {Yoshua Bengio and
journal = {Computer Science},
year = {2015},
}
@phdthesis{黄书剑0统计机器翻译中的词对齐研究,
title={统计机器翻译中的词对齐研究},
author={黄书剑},
publisher={南京大学},
year={2012}
}
@article{DBLP:journals/corr/MikolovLS13,
author = {Tomas Mikolov and
Quoc V. Le and
Ilya Sutskever},
title = {Exploiting Similarities among Languages for Machine Translation},
journal = {CoRR},
volume = {abs/1309.4168},
year = {2013}
}
@inproceedings{DBLP:conf/acl/VulicK16,
author = {Ivan Vulic and
Anna Korhonen},
title = {On the Role of Seed Lexicons in Learning Bilingual Word Embeddings},
publisher = {The Association for Computer Linguistics},
year = {2016}
}
@inproceedings{DBLP:conf/iclr/SmithTHH17,
author = {Samuel L. Smith and
David H. P. Turban and
Steven Hamblin and
Nils Y. Hammerla},
title = {Offline bilingual word vectors, orthogonal transformations and the
inverted softmax},
publisher = {International Conference on Learning Representations},
year = {2017}
}
@inproceedings{DBLP:conf/acl/ArtetxeLA17,
author = {Mikel Artetxe and
Gorka Labaka and
Eneko Agirre},
title = {Learning bilingual word embeddings with (almost) no bilingual data},
pages = {451--462},
publisher = {Association for Computational Linguistics},
year = {2017}
}
@article{1966ASchnemann,
title={A generalized solution of the orthogonal procrustes problem},
author={Schnemann, Peter H. },
journal={Psychometrika},
volume={31},
number={1},
pages={1-10},
year={1966},
}
@inproceedings{DBLP:conf/iclr/LampleCRDJ18,
author = {Guillaume Lample and
Alexis Conneau and
Marc'Aurelio Ranzato and
Ludovic Denoyer and
Herv{\'{e}} J{\'{e}}gou},
title = {Word translation without parallel data},
publisher = {International Conference on Learning Representations},
year = {2018}
}
@inproceedings{DBLP:conf/acl/ZhangLLS17,
author = {Meng Zhang and
Yang Liu and
Huanbo Luan and
Maosong Sun},
title = {Adversarial Training for Unsupervised Bilingual Lexicon Induction},
pages = {1959--1970},
publisher = {Association for Computational Linguistics},
year = {2017}
}
@inproceedings{DBLP:conf/emnlp/XuYOW18,
author = {Ruochen Xu and
Yiming Yang and
Naoki Otani and
Yuexin Wu},
title = {Unsupervised Cross-lingual Transfer of Word Embedding Spaces},
pages = {2465--2474},
publisher = {Association for Computational Linguistics},
year = {2018}
}
@inproceedings{DBLP:conf/emnlp/Alvarez-MelisJ18,
author = {David Alvarez-Melis and
Tommi S. Jaakkola},
title = {Gromov-Wasserstein Alignment of Word Embedding Spaces},
pages = {1881--1890},
publisher = {Association for Computational Linguistics},
year = {2018}
}
@inproceedings{DBLP:conf/lrec/GarneauGBDL20,
author = {Nicolas Garneau and
Mathieu Godbout and
David Beauchemin and
Audrey Durand and
Luc Lamontagne},
title = {A Robust Self-Learning Method for Fully Unsupervised Cross-Lingual
Mappings of Word Embeddings: Making the Method Robustly Reproducible
as Well},
pages = {5546--5554},
publisher = {European Language Resources Association},
year = {2020}
}
@inproceedings{DBLP:conf/naacl/XingWLL15,
author = {Chao Xing and
Dong Wang and
Chao Liu and
Yiye Lin},
title = {Normalized Word Embedding and Orthogonal Transform for Bilingual Word
Translation},
pages = {1006--1011},
publisher = {The Association for Computational Linguistics},
year = {2015}
}
@inproceedings{DBLP:conf/iclr/SmithTHH17,
author = {Samuel L. Smith and
David H. P. Turban and
Steven Hamblin and
Nils Y. Hammerla},
title = {Offline bilingual word vectors, orthogonal transformations and the
inverted softmax},
publisher = {International Conference on Learning Representations},
year = {2017}
}
@inproceedings{DBLP:conf/emnlp/VulicGRK19,
author = {Ivan Vulic and
Goran Glavas and
Roi Reichart and
Anna Korhonen},
title = {Do We Really Need Fully Unsupervised Cross-Lingual Embeddings?},
pages = {4406--4417},
publisher = {Association for Computational Linguistics},
year = {2019}
}
@inproceedings{DBLP:conf/acl/SogaardVR18,
author = {Anders S{\o}gaard and
Sebastian Ruder and
Ivan Vulic},
title = {On the Limitations of Unsupervised Bilingual Dictionary Induction},
pages = {778--788},
publisher = {Association for Computational Linguistics},
year = {2018}
}
@article{DBLP:journals/talip/MarieF20,
author = {Benjamin Marie and
Atsushi Fujita},
title = {Iterative Training of Unsupervised Neural and Statistical Machine
Translation Systems},
journal = {{ACM} Trans. Asian Low Resour. Lang. Inf. Process.},
volume = {19},
number = {5},
pages = {68:1--68:21},
year = {2020}
}
@inproceedings{DBLP:conf/acl/ArtetxeLA19,
author = {Mikel Artetxe and
Gorka Labaka and
Eneko Agirre},
title = {An Effective Approach to Unsupervised Machine Translation},
pages = {194--203},
publisher = {Association for Computational Linguistics},
year = {2019}
}
@inproceedings{DBLP:conf/acl/PourdamghaniAGK19,
author = {Nima Pourdamghani and
Nada Aldarrab and
Marjan Ghazvininejad and
Kevin Knight and
Jonathan May},
title = {Translating Translationese: {A} Two-Step Approach to Unsupervised
Machine Translation},
pages = {3057--3062},
publisher = {Association for Computational Linguistics},
year = {2019}
}
@inproceedings{DBLP:conf/iclr/LampleCDR18,
author = {Guillaume Lample and
Alexis Conneau and
Ludovic Denoyer and
Marc'Aurelio Ranzato},
title = {Unsupervised Machine Translation Using Monolingual Corpora Only},
publisher = {International Conference on Learning Representations},
year = {2018}
}
@inproceedings{DBLP:conf/nips/ConneauL19,
author = {Alexis Conneau and
Guillaume Lample},
title = {Cross-lingual Language Model Pretraining},
pages = {7057--7067},
year = {2019}
}
@article{DBLP:journals/ipm/FarhanTAJATT20,
author = {Wael Farhan and
Bashar Talafha and
Analle Abuammar and
Ruba Jaikat and
Mahmoud Al-Ayyoub and
Ahmad Bisher Tarakji and
Anas Toma},
title = {Unsupervised dialectal neural machine translation},
journal = {Information Processing \& Management},
volume = {57},
number = {3},
pages = {102181},
year = {2020}
}
@article{A2020Li,
title={A Simple and Effective Approach to Robust Unsupervised Bilingual Dictionary Induction},
author={Yanyang Li and Yingfeng Luo and Ye Lin and Quan Du and Huizhen Wang and Shujian Huang and Tong Xiao and Jingbo Zhu},
publisher={International Conference on Computational Linguistics},
year={2020}
}
@inproceedings{2018When,
title={When and Why are Pre-trained Word Embeddings Useful for Neural Machine Translation?},
author={ Qi, Ye and Sachan, Devendra Singh and Felix, Matthieu and Padmanabhan, Sarguna Janani and Neubig, Graham },
publisher={Annual Conference of the North American Chapter of the Association for Computational Linguistics},
year={2018},
}
@inproceedings{DBLP:conf/emnlp/ClinchantJN19,
author = {St{\'{e}}phane Clinchant and
Kweon Woo Jung and
Vassilina Nikoulina},
title = {On the use of {BERT} for Neural Machine Translation},
pages = {108--117},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2019}
}
@inproceedings{DBLP:conf/emnlp/ImamuraS19,
author = {Kenji Imamura and
Eiichiro Sumita},
title = {Recycling a Pre-trained {BERT} Encoder for Neural Machine Translation},
booktitle = {Proceedings of the 3rd Workshop on Neural Generation and Translation@EMNLP-IJCNLP
2019, Hong Kong, November 4, 2019},
pages = {23--31},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2019}
}
@inproceedings{DBLP:conf/aaai/YangW0Z00020,
author = {Jiacheng Yang and
Mingxuan Wang and
Hao Zhou and
Chengqi Zhao and
Weinan Zhang and
Yong Yu and
Lei Li},
title = {Towards Making the Most of {BERT} in Neural Machine Translation},
pages = {9378--9385},
publisher = {AAAI Conference on Artificial Intelligence},
year = {2020}
}
@inproceedings{DBLP:conf/aaai/WengYHCL20,
author = {Rongxiang Weng and
Heng Yu and
Shujian Huang and
Shanbo Cheng and
Weihua Luo},
title = {Acquiring Knowledge from Pre-Trained Model to Neural Machine Translation},
pages = {9266--9273},
publisher = {AAAI Conference on Artificial Intelligence},
year = {2020}
}
@article{DBLP:journals/corr/abs-2001-08210,
author = {Yinhan Liu and
Jiatao Gu and
Naman Goyal and
Xian Li and
Sergey Edunov and
Marjan Ghazvininejad and
Mike Lewis and
Luke Zettlemoyer},
title = {Multilingual Denoising Pre-training for Neural Machine Translation},
journal = {CoRR},
volume = {abs/2001.08210},
year = {2020}
}
@inproceedings{DBLP:conf/aaai/JiZDZCL20,
author = {Baijun Ji and
Zhirui Zhang and
Xiangyu Duan and
Min Zhang and
Boxing Chen and
Weihua Luo},
title = {Cross-Lingual Pre-Training Based Transfer for Zero-Shot Neural Machine
Translation},
pages = {115--122},
publisher = {AAAI Conference on Artificial Intelligence},
year = {2020}
}
@inproceedings{DBLP:conf/acl/LewisLGGMLSZ20,
author = {Mike Lewis and
Yinhan Liu and
Naman Goyal and
Marjan Ghazvininejad and
Abdelrahman Mohamed and
Omer Levy and
Veselin Stoyanov and
Luke Zettlemoyer},
title = {{BART:} Denoising Sequence-to-Sequence Pre-training for Natural Language
Generation, Translation, and Comprehension},
pages = {7871--7880},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2020}
}
@article{DBLP:journals/corr/abs-2009-08088,
author = {Zhen Yang and
Bojie Hu and
Ambyera Han and
Shen Huang and
Qi Ju},
title = {Code-switching pre-training for neural machine translation},
journal = {CoRR},
volume = {abs/2009.08088},
year = {2020}
}
@article{DBLP:journals/corr/abs-2010-09403,
author = {Dusan Varis and
Ondrej Bojar},
title = {Unsupervised Pretraining for Neural Machine Translation Using Elastic
Weight Consolidation},
journal = {CoRR},
volume = {abs/2010.09403},
year = {2020}
}
@inproceedings{DBLP:conf/emnlp/LampleOCDR18,
author = {Guillaume Lample and
Myle Ott and
Alexis Conneau and
Ludovic Denoyer and
Marc'Aurelio Ranzato},
title = {Phrase-Based {\&} Neural Unsupervised Machine Translation},
pages = {5039--5049},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2018}
}
%%%%% chapter 16------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论