Commit 7494992a by 曹润柘

合并分支 'master' 到 'caorunzhe'

Master

查看合并请求 !622
parents 086edd8f 2149702b
......@@ -14,7 +14,7 @@
\draw [->,thick] ([yshift=1pt]data.north) .. controls +(90:2em) and +(90:2em) .. ([yshift=1pt]model.north) node[above,midway] {\small{参数优化}};
\draw [->,thick] ([yshift=1pt]model.south) .. controls +(-90:2em) and +(-90:2em) .. ([yshift=1pt]data.south) node[below,midway] {\small{数据优化}};
\node[word] at ([xshift=-0.5em,yshift=-4em]data.south){\small{(a) 思路1}};
\node[word] at ([xshift=-0.5em,yshift=-4em]data.south){\small{(a) 基于数据的初始化方法}};
\end{scope}
\end{tikzpicture}
......@@ -33,7 +33,7 @@
\draw [->,thick] ([yshift=1pt]data.north) .. controls +(90:2em) and +(90:2em) .. ([yshift=1pt]model.north) node[above,midway] {\small{参数优化}};
\draw [->,thick] ([yshift=1pt]model.south) .. controls +(-90:2em) and +(-90:2em) .. ([yshift=1pt]data.south) node[below,midway] {\small{数据优化}};
\node[word] at ([xshift=-0.5em,yshift=-4em]model.south){\small{(b) 思路2}};
\node[word] at ([xshift=-0.5em,yshift=-4em]model.south){\small{(b) 基于模型的初始化方法}};
\end{scope}
\end{tikzpicture}
......
......@@ -41,8 +41,8 @@
\node[](circle2) at ([xshift=3.0em]circle1.east) {\input{Chapter16/Figures/figure-shared-space-inductive-bilingual-dictionary-b}};
\node[](circle3) at ([xshift=5.5em]circle2.east) {\input{Chapter16/Figures/figure-shared-space-inductive-bilingual-dictionary-c}};
\node[](circle4) at ([xshift=5.5em]circle3.east) {\input{Chapter16/Figures/figure-shared-space-inductive-bilingual-dictionary-d}};
\draw[->,very thick] ([xshift=-0.5em]circle2.east)--([xshift=0.5em]circle3.west)node [pos=0.5,above] (pos1) {\scriptsize{Y空间}};
\node [anchor=south](pos1-2) at ([yshift=-0.5em]pos1.north){\scriptsize{X映射到}};
\draw[->,very thick] ([xshift=-0.5em]circle2.east)--([xshift=0.5em]circle3.west)node [pos=0.5,above] (pos1) {\scriptsize{$\mathbi{Y}$空间}};
\node [anchor=south](pos1-2) at ([yshift=-0.5em]pos1.north){\scriptsize{\mathbi{X}映射到}};
\draw[->,very thick] ([xshift=-0.5em]circle3.east)--([xshift=0.5em]circle4.west)node [pos=0.5,above] (pos2) {\scriptsize{推断}};
\node [anchor=south](pos2-2) at ([yshift=-0.5em]pos2.north){\scriptsize{词典}};
......
......@@ -296,7 +296,7 @@
%----------------------------------------------------------------------------------------
\subsection{对偶学习}
\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}。下面将一一展开讨论。
\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
......@@ -340,7 +340,7 @@
\label{eq:16-6}
\end{eqnarray}
\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}
\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]
......@@ -355,7 +355,7 @@
\begin{itemize}
\vspace{0.5em}
\item 计算公式\eqref{eq:16-6}要枚举所有可能的隐变量$\seq{y}$的取值,也就是所有可能产生的目标语句子,而这是不可能的,因此一般会通过平均多个随机产生的$\seq{y}$对应的损失来近似真正的目标函数值;
\item 计算公式\eqref{eq:16-6}要枚举所有可能的隐变量$\seq{y}$的取值,也就是所有可能产生的目标语句子,而这是不可能的,因此一般会通过平均多个随机产生的$\seq{y}$对应的损失来近似真正的目标函数值;
\vspace{0.5em}
\item 从公式\eqref{eq:16-6}可以看到,在$\funp{P}(\seq{x})$上计算完目标函数值后,得到的梯度首先传递给$\funp{P}(\seq{x}|\seq{y})$,然后通过$\funp{P}(\seq{x}|\seq{y})$传递给$\funp{P}(\seq{y}|\seq{x})$。由于$\funp{P}(\seq{x}|\seq{y})$的输入$\seq{y}$是由$\funp{P}(\seq{y}|\seq{x})$采样得到,而采样操作不可导,这会导致梯度的传播在$\funp{P}(\seq{y}|\seq{x})$的输出处断开了,因此$\funp{P}(\seq{y}|\seq{x})$接收不到任何梯度来进行更新。常见的解决方案是使用策略梯度\upcite{DBLP:conf/nips/SuttonMSM99}。策略梯度的基本思想如下:如果在执行某个动作之后,获得了一个不错的反馈,那么可以调整策略来增加这个状态下执行该动作的概率;反之,如果采取某个动作后获得了一个负反馈,就需要调整策略来降低这个状态下执行该动作的概率。在算法的实现上,首先对两个翻译模型求梯度,然后在策略调整时选择将梯度加到模型上(获得正反馈)或者减去该梯度(获得负反馈)。
......@@ -466,33 +466,34 @@
%----------------------------------------------------------------------------------------
\subsubsection{1. 参数初始化方法}
\parinterval 在解决多语言翻译这个问题的具体做法中,首先需要在富资源语言对上训练一个模型,将其称为{\small\bfnew{父模型}}\index{父模型}(Parent Model)\index{Parent Model}。在父模型的参数进行模型初始化基础上,训练资源不足的稀缺资源语言对模型,称之为{\small\bfnew{子模型}}\index{子模型}(Child Model)\index{Child Model},这意味着低资源翻译模型将不会从随机权重开始学习,而是从父模型的权重开始\upcite{gu2018meta,DBLP:conf/icml/FinnAL17,DBLP:conf/naacl/GuHDL18},参数初始化也是迁移学习的核心方法。在图\ref{fig:16-15}中,左侧模型为父模型,右侧模型为子模型。这里假设从英语到汉语的翻译为富资源翻译,从英语到德语的翻译为稀缺资源翻译,则首先用英中双语平行语料库训练出一个初始化的父模型,之后再用英语到德语的数据在父模型上微调得到子模型,这个子模型即为我们想要得到的迁移学习的模型。此过程可以看作是在富资源训练模型上对稀缺资源语言对进行微调,将富资源语言对中的知识迁移到稀缺资源语言对中,从而提升稀缺资源语言对的模型性能。
\parinterval 在解决多语言翻译问题时,首先需要在富资源语言上训练一个翻译模型,将其称为{\small\bfnew{父模型}}\index{父模型}(Parent Model)\index{Parent Model}。在对父模型的参数进行初始化的基础上,训练低资源语言的翻译模型,称之为{\small\bfnew{子模型}}\index{子模型}(Child Model)\index{Child Model},这意味着低资源翻译模型将不会从随机初始化的参数开始学习,而是从父模型的参数开始\upcite{gu2018meta,DBLP:conf/icml/FinnAL17,DBLP:conf/naacl/GuHDL18}。这时,也可以把参数初始化看作是迁移学习。在图\ref{fig:16-15}中,左侧模型为父模型,右侧模型为子模型。这里假设从英语到汉语的翻译为富资源翻译,从英语到德语的翻译为低资源翻译,则首先用英中双语平行语料库训练出一个初始化的父模型,之后再用英语到德语的数据在父模型上微调得到子模型,这个子模型即为我们想要得到的迁移学习的模型。此过程可以看作是在富资源训练模型上对低资源语言进行微调,将富资源语言中的知识迁移到低资源语言中,从而提升低资源语言的模型性能。
%----------------------------------------------
\begin{figure}[h]
\centering
\input{Chapter16/Figures/figure-parameter-initialization-method-diagram}
\caption{参数初始化方法图}
\caption{参数初始化方法示意}
\label{fig:16-15}
\end{figure}
%----------------------------------------------
\parinterval 尽管这种方法在某些资源匮乏的语言对中取得了成功,但在资源极度匮乏或零资源的翻译方案中仍然表现不佳。具体而言,如果没有任何子模型训练数据,则父模型在子测试集上的性能会很糟糕\upcite{DBLP:conf/wmt/KocmiB18}
\parinterval 尽管这种方法在某些低语言上取得了成功,但在资源极度匮乏或零资源的翻译任务中仍然表现不佳。具体而言,如果没有任何子模型训练数据,则父模型在子测试集上的性能会很糟糕\upcite{DBLP:conf/wmt/KocmiB18}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 多语言单模型系统}
\parinterval 多语言单模型方法也可以被看做是一种迁移学习。多语言单模型方法能够有效地改善低资源神经机器翻译性能\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17,DBLP:conf/lrec/RiktersPK18,dabre2019brief},尤其适用于翻译方向较多的情况,因为为每一个翻译方向单独训练一个模型是不实际的,不仅由于设备资源和时间上的限制,还由于很多翻译方向都没有双语平行数据。比如,要翻译100个语言之间的互译的系统,理论上就需要训练$100 \times 99$个翻译模型,代价是十分巨大的。这时就需要用到{\small\bfnew{多语言单模型方法}}\index{多语言单模型方法}(Multi-lingual Single Model-based Method\index{Multi-lingual Single Model-based Method})。
\parinterval 多语言单模型方法也可以被看做是一种迁移学习。多语言单模型方法能够有效地改善低资源神经机器翻译性能\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17,DBLP:conf/lrec/RiktersPK18,dabre2019brief},尤其适用于翻译方向较多的情况,因为为每一个翻译方向单独训练一个模型是不实际的,不仅因为设备资源和时间上的限制,还因为很多翻译方向都没有双语平行数据。比如,要翻译100个语言之间互译的系统,理论上就需要训练$100 \times 99$个翻译模型,代价是十分巨大的。这时就需要用到{\small\bfnew{多语言单模型方法}}\index{多语言单模型方法}(Multi-lingual Single Model-based Method\index{Multi-lingual Single Model-based Method})。
\parinterval 多语言单模型系统用单个模型训练具有多个语言翻译方向的系统。对于源语言集合$\seq{G}_x$和目标语言集合$\seq{G}_y$,多语言单模型的学习目标是学习一个单一的模型,这个模型可以进行任意源语言到任意目标语言的翻译,即同时支持所有$(x,y) \in (\seq{G}_x,\seq{G}_y)$的翻译。多语言单模型方法又可以进一步分为一对多\upcite{DBLP:conf/acl/DongWHYW15}、多对一\upcite{DBLP:journals/tacl/LeeCH17}和多对多\upcite{DBLP:conf/naacl/FiratCB16}的方法。不过这些方法本质上是相同的,因此这里以多对多翻译为例进行介绍。
\parinterval 多语言单模型系统是指用单个模型训练具有多个语言翻译方向的系统。对于源语言集合$\seq{G}_x$和目标语言集合$\seq{G}_y$,多语言单模型的学习目标是学习一个单一的模型,这个模型可以进行任意源语言到任意目标语言的翻译,即同时支持所有$(x,y) \in (\seq{G}_x,\seq{G}_y)$的翻译。多语言单模型方法又可以进一步分为一对多\upcite{DBLP:conf/acl/DongWHYW15}、多对一\upcite{DBLP:journals/tacl/LeeCH17}和多对多\upcite{DBLP:conf/naacl/FiratCB16}的方法。不过这些方法本质上是相同的,因此这里以多对多翻译为例进行介绍。
\parinterval 在模型结构方面,多语言模型与普通的神经机器翻译模型相同,都是标准的编码器-解码器结构。多语言单模型方法的一个假设是:不同语言可以共享同一个表示空间。因此,该方法使用同一个编码器处理所有的源语言句子,使用同一个解码器处理所有的目标语言句子。为了使多个语言共享同一个解码器(或编码器),一种简单的方法是直接在输入句子上加入语言标记,让模型显性地知道当前句子属于哪个语言。如图\ref{fig:16-16}所示,在此示例中,标记“ <spanish>”表示目标句子为西班牙语,标记“ <german>”表示目标句子为德语,则模型在进行翻译时便会将句子开头加有<spanish>标签的句子翻译为西班牙语\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17}。假设训练时有英语到西班牙语 “<spanish> Hello”$\to$“Hola”和法语到德语“<german> Bonjour”$\to$“Hallo” 的双语句对,则在解码时候输入英语“<german> Hello”时就会得到解码结果“Hallo”。
%----------------------------------------------
\begin{figure}[h]
\centering
\input{Chapter16/Figures/figure-multi-language-single-model-system-diagram}
\caption{参数初始化方法}
\caption{多语言单模型结构示意}
\label{fig:16-16}
\end{figure}
%----------------------------------------------
......@@ -504,9 +505,9 @@
%----------------------------------------------------------------------------------------
\subsubsection{3. 零资源翻译}
\parinterval 零资源翻译是一种较为极端的情况:源语言和目标语言之间没有任何对齐的数据。这时,需要学到一个模型,即使在没看到这个翻译任务中的训练数据的情况下,它仍然能通过这个模型得到这个翻译任务上的译文结果。本质上,零资源翻译也是一种迁移学习\upcite{DBLP:books/crc/aggarwal14/Pan14,DBLP:journals/tkde/PanY10},只是迁移的目标任务没有直接可以用的数据。
\parinterval 零资源翻译是一种较为特殊的情况:源语言和目标语言之间没有任何对齐的数据。这时,需要学到一个模型,即使在没看到这个翻译任务中的训练数据的情况下,它仍然能通过这个模型得到这个翻译任务上的译文结果。本质上,零资源翻译也是一种迁移学习\upcite{DBLP:books/crc/aggarwal14/Pan14,DBLP:journals/tkde/PanY10},只是迁移的目标任务没有直接可以用的双语平行数据。
\parinterval 以德语到西班牙语的翻译为例,假设此翻译语言方向为零资源,即没有德语到西班牙语的训练数据,因此不适用于多语言单模型系统中提到的一对多或多对一的情况,只适用于多对多的翻译情况。在翻译时,训练数据的源语言可以进行加标签指定或是不指定目标语言种类,若不进行指定,存在潜在的缺点就是具有相同拼写但属于不同源语言的不同含义的单词可能难以翻译,但优点是整个多语言翻译的流程更简单。在翻译时假设多语言单模型系统中已经学习到了德语到英语和英语到西班牙语的翻译,那么模型也可以进行德语到西班牙语的翻译。从这个角度说,零资源神经机器翻译也需要枢轴语言,只是这些枢轴语言数据仅在训练期间使用\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17},而无需生成伪并行语料库。
\parinterval 以德语到西班牙语的翻译为例,假设此翻译语言方向为零资源,即没有德语到西班牙语的双语平行数据,但是有德语到其他语言的双语平行数据,也有其他语言到西班牙语的双语平行数据。在模型训练时,训练数据的源语言句子可以增加一个语言标签。若没有语言标签,具有相同拼写但属于不同源语言的不同含义的单词可能难以翻译,但整个多语言翻译的流程更简单。假设,多语言单模型系统已经学习到了德语到英语和英语到西班牙语的翻译能力,那么这个系统也可以进行德语到西班牙语的翻译。从这个角度说,零资源神经机器翻译也需要枢轴语言,只是这些枢轴语言数据仅在训练期间使用\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17},而无需生成伪并行语料库。
\parinterval 需要注意的是,零资源翻译中多个语言共享同一个表示模型这个假设并不是永远成立。比如,汉语和英语的文字符号不同,因此用同一个表示模型对其进行表示会产生较大的偏差。因此,对于语言差异较大,且数据量不充分的情况,使用多语言单模型方法仍然有较大挑战:
......@@ -514,7 +515,7 @@
\vspace{0.5em}
\item 父模型和子模型之间的语言空间不匹配问题:父模型使用的语言跟子模型使用的语言的数据很少甚至没有(零资源)的情况下,无法通过训练弥补父模型跟子模型之间的差异,因此微调的结果很差。一种解决方案是先预训练一个多语言的模型,然后固定这个预训练模型的部分参数后训练父模型,最后从父模型中微调子模型\upcite{ji2020cross}。这样做的好处在于先用预训练提取父模型的任务和子模型的任务之间通用的信息(保存在模型参数里),然后强制在训练父模型的时候保留这些信息(通过固定参数),这样最后微调子模型的时候就可以利用这些通用信息,减少父模型和子模型之间的差异,使得微调的结果得到提升\upcite{DBLP:conf/emnlp/LinPWQFZL20}
\vspace{0.5em}
\item 脱靶翻译问题:多语言单模型系统经常出现脱靶翻译问题,即把源语言翻译成错误的目标语言,比如要求翻译成英语,结果却是汉语或者英语夹杂其他语言的字符。这是因为多语言单模型系统对所有语言都使用一样的参数,导致每个语言竞争系统固定的建模能力。针对这个问题研究人员提出在原来共享参数的基础上为每种语言添加额外的独立的参数,使得每种语言拥有足够的建模能力,以便于特定语言的翻译\upcite{DBLP:conf/acl/ZhangWTS20,DBLP:journals/corr/abs-2010-11125}
\item 脱靶翻译问题:多语言单模型系统经常出现脱靶翻译问题,即把源语言翻译成错误的目标语言,比如要求翻译成英语,结果却是汉语或者英语夹杂其他语言的字符。这是因为多语言单模型系统对所有语言都使用一样的参数,导致不同语言字符混合时不容易让模型进行区分。针对这个问题研究人员提出在原来共享参数的基础上为每种语言添加额外的独立的参数,使得每种语言拥有足够的建模能力,以便于更好地完成特定语言的翻译\upcite{DBLP:conf/acl/ZhangWTS20,DBLP:journals/corr/abs-2010-11125}
\vspace{0.5em}
\end{itemize}
......@@ -524,9 +525,9 @@
\section{无监督机器翻译}
\parinterval 低资源机器翻译的一种极端情况是:没有任何可以用于模型训练的双语平行数据。一种思路是借用多语言翻译方面的技术(参考\ref{multilingual-translation-model}节),利用基于枢轴语言或者零资源的方法构建翻译系统。但是,这类方法仍然需要多个语种的平行数据。对于某一个语言对,在只有源语言和目标语言单语数据的前提下,是否仍然可以训练一个有效的翻译模型呢?我们称这种不需要双语数据的机器翻译方法为{\small\bfnew{无监督机器翻译}}\index{无监督机器翻译}(Un-supervised Machine Translation\index{Un-supervised Machine Translation})。
\parinterval 低资源机器翻译的一种极端情况是:没有任何可以用于模型训练的双语平行数据。一种思路是借用多语言翻译方面的技术(\ref{multilingual-translation-model}节),利用基于枢轴语言或者零资源的方法构建翻译系统。但是,这类方法仍然需要多个语种的平行数据。对于某一个语言对,在只有源语言和目标语言单语数据的前提下,是否仍然可以训练一个有效的翻译模型呢?这里称这种不需要双语数据的机器翻译方法为{\small\bfnew{无监督机器翻译}}\index{无监督机器翻译}(Un-supervised Machine Translation\index{Un-supervised Machine Translation})。
\parinterval 直接进行无监督机器翻译是困难的。一个简单可行的思路是先把问题进行分解,然后分别解决各个子问题,最后形成完整的解决方案。放到无监督机器翻译里面,可以首先使用无监督方法寻找词与词之间的翻译,然后在此基础上,进一步得到句子到句子的翻译模型
\parinterval 直接进行无监督机器翻译是困难的。一个简单可行的思路是把问题进行分解,然后分别解决各个子问题,最后形成完整的解决方案。放到无监督机器翻译里面,可以首先使用无监督方法寻找词与词之间的翻译,然后在此基础上,进一步得到句子到句子的翻译模型。这种“由小到大”的建模思路十分类似于统计机器翻译中的方法(见\chapterseven
%----------------------------------------------------------------------------------------
......@@ -535,7 +536,7 @@
\subsection{无监督词典归纳}\label{unsupervised-dictionary-induction}
\parinterval {\small\bfnew{词典归纳}}\index{词典归纳}(Bilingual Dictionary Induction,BDI\index{Bilingual Dictionary Induction}),也叫{\small\bfnew{词典推断}},是实现语种间单词级别翻译的任务。在统计机器翻译中,词典归纳是一项核心的任务,它从双语平行语料中发掘互为翻译的单词,是翻译知识的主要来源\upcite{黄书剑0统计机器翻译中的词对齐研究}。在端到端神经机器翻译中,词典归纳通常作为一个下游任务被用到无监督机器翻译、多语言机器翻译等任务中。在神经机器翻译中,单词通过连续化的向量来表示,即词嵌入。所有单词分布在一个高维的空间中,基于人们对词嵌入空间的观察发现:连续的单词嵌入空间在各种语言中显示出类似的结构,这使得直接利用词嵌入来构建双语词典成为可能\upcite{DBLP:journals/corr/MikolovLS13}。其基本想法是先将来自不同语言的词嵌入投影到共享嵌入空间中,然后在此共享空间中归纳出双语词典,原理图如图\ref{fig:16-17}所示。研究人员进行了众多的尝试,较早的尝试是使用一个包含数千词对的种子词典作为锚点来学习从源语言到目标语词言嵌入空间的线性映射,将两个语言的词汇投影到共享的嵌入空间之后,执行一些对齐算法即可得到双语词典\upcite{DBLP:journals/corr/MikolovLS13}。最近的研究表明,词典归纳可以在更弱的监督信号下完成,这些监督信号来自数百对小词典\upcite{DBLP:conf/acl/VulicK16}、 相同的字符串\upcite{DBLP:conf/iclr/SmithTHH17},甚至仅仅是共享的数字\upcite{DBLP:conf/acl/ArtetxeLA17}
\parinterval {\small\bfnew{词典归纳}}\index{词典归纳}(Bilingual Dictionary Induction,BDI\index{Bilingual Dictionary Induction}),也叫{\small\bfnew{词典推断}},是实现语种间单词级别翻译的任务。在统计机器翻译中,词典归纳是一项核心的任务,它从双语平行语料中发掘互为翻译的单词,是翻译知识的主要来源\upcite{黄书剑0统计机器翻译中的词对齐研究}。在端到端神经机器翻译中,词典归纳通常被用到无监督机器翻译、多语言机器翻译等任务中。在神经机器翻译中,单词通过实数向量来表示,即词嵌入。所有单词分布在一个多维空间中,而且研究人员发现:单词嵌入空间在各种语言中显示出类似的结构,这使得直接利用词嵌入来构建双语词典成为可能\upcite{DBLP:journals/corr/MikolovLS13}。其基本想法是先将来自不同语言的词嵌入投影到共享嵌入空间中,然后在这个共享空间中归纳出双语词典,原理图如图\ref{fig:16-17}所示。较早的尝试是使用一个包含数千词对的种子词典作为锚点来学习从源语言到目标语词言嵌入空间的线性映射,将两个语言的单词投影到共享的嵌入空间之后,执行一些对齐算法即可得到双语词典\upcite{DBLP:journals/corr/MikolovLS13}。最近的研究表明,词典归纳可以在更弱的监督信号下完成,这些监督信号来自更小的种子词典\upcite{DBLP:conf/acl/VulicK16}、 相同的字符串\upcite{DBLP:conf/iclr/SmithTHH17},甚至仅仅是共享的数字\upcite{DBLP:conf/acl/ArtetxeLA17}
%----------------------------------------------
\begin{figure}[h]
\centering
......@@ -550,13 +551,13 @@
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 方法框架}
\subsubsection{1. 基本框架}
\parinterval 无监督词典归纳的核心思想是充分利用词嵌入空间近似同构的假设\upcite{DBLP:conf/emnlp/XuYOW18},基于一些无监督匹配的方法来得到一个初始化的种子词典,之后利用该种子词典作为起始监督信号不断进行微调进一步提高性能。总结起来,无监督词典归纳系统通常包括以下两个阶段:
\begin{itemize}
\vspace{0.5em}
\item 基于无监督的分布匹配。该步骤利用一些无监督的方法来得到一个包含噪声的初始化词典D
\item 基于无监督的分布匹配。该步骤利用一些无监督的方法来得到一个包含噪声的初始化词典$D$
\vspace{0.5em}
\item 基于有监督的微调。利用两个单语词嵌入和第一步中学习到的种子字典执行一些对齐算法来迭代微调,例如,{\small\bfnew{普氏分析}}\index{普氏分析}(Procrustes Analysis\index{Procrustes Analysis}\upcite{1966ASchnemann}
\vspace{0.5em}
......@@ -592,19 +593,20 @@
\vspace{0.5em}
\end{itemize}
\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 在得到映射$\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})来获得近似解:
\begin{eqnarray}
\mathbi{W}^{\star} & = &\underset{\mathbi{W} \in O_{d}(\mathbb{R})}{\operatorname{argmin}}\|\mathbi{W} \mathbi{X}'- \mathbi{Y}' \|_{\mathrm{F}}=\mathbi{U} \mathbi{V}^{\rm{T}} \\ \label{eq:16-9}
\mathbi{W}^{\star} & = &\underset{\mathbi{W} \in O_{d}(\mathbb{R})}{\operatorname{argmin}}\|\mathbi{W} \mathbi{X}'- \mathbi{Y}' \|_{\mathrm{F}} \nonumber \\
& = & \mathbi{U} \mathbi{V}^{\rm{T}} \\ \label{eq:16-9}
\textrm{s.t.\ \ \ \ } \mathbi{U} \Sigma \mathbi{V}^{\rm{T}} &= &\operatorname{SVD}\left(\mathbi{Y}' \mathbi{X}'^{\rm{T}}\right)
\label{eq:16-10}
\end{eqnarray}
\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}
%----------------------------------------------------------------------------------------
......@@ -612,17 +614,17 @@
%----------------------------------------------------------------------------------------
\subsubsection{2. 健壮性问题}
\parinterval 目前很多无监督词典归纳方法在相似语言对比如英-法,英-德已经取得不错的结果,然而在远距离语言对比如英-中,英-日等性能仍然很差\upcite{DBLP:conf/emnlp/VulicGRK19,A2020Li}。无监督词典归纳的健壮性仍然存在巨大的挑战。这有多个层面的原因:
\parinterval 目前很多无监督词典归纳方法在相似语言对比如英-法、英-德上已经取得不错的结果,然而在远距离语言对比如英-中,英-日上的性能仍然很差\upcite{DBLP:conf/emnlp/VulicGRK19,A2020Li}。研发健壮的无监督词典归纳方法仍然存在挑战。这有多个层面的原因:
\begin{itemize}
\vspace{0.5em}
\item 首先词典归纳依赖于基于大规模单语语料训练出来的词嵌入,而词嵌入会受到单语数据的来源领域及数量、词向量训练算法、超参数配置等多方面因素的影响,这很容易导致假设的失效,从而使得模型运行失败
\item 首先词典归纳依赖于基于大规模单语语料训练出来的词嵌入,而词嵌入会受到单语数据的来源领域及数量、词向量训练算法、超参数配置等多方面因素的影响,这很容易导致不同情况下词嵌入结果的差异很大
\vspace{0.5em}
\item 词典归纳强烈依赖于词嵌入空间近似同构的假设,然而许多语言对由于语言本身天然的差异导致该假设往往很弱,无监督系统通常是基于两阶段的方法,起始阶段由于缺乏监督信号的引导很容易就失败,从而导致后面的阶段无法有效运行。\upcite{DBLP:conf/acl/SogaardVR18,A2020Li}
\item 词典归纳强烈依赖于词嵌入空间近似同构的假设,然而许多语言之间天然的差异导致该假设并不成立。由于无监督系统通常是基于两阶段的方法,起始阶段由于缺乏监督信号的引导很容易就失败,从而导致后面的阶段无法有效运行。\upcite{DBLP:conf/acl/SogaardVR18,A2020Li}
\vspace{0.5em}
\item 由于词嵌入这种表示方式的局限性,模型无法实现单词多对多的对齐,而且对于一些相似的词或者实体名词模型也很难实现对齐。
\item 由于词嵌入这种表示方式的局限性,模型无法实现单词多对多的对齐,而且对于一些相似的词或者实体模型也很难实现对齐。
\vspace{0.5em}
\end{itemize}
......@@ -643,29 +645,29 @@
\parinterval 回顾统计机器翻译中的短语表,其实它类似于一个词典,对一个源语言短语给出相应的短语翻译\upcite{DBLP:conf/ki/ZensON02}。只不过词典的基本单元是词,而短语表的基本单元是短语(或$n$-gram)。此外短语表还提供短语翻译的得分。既然短语表跟词典如此相似,那么很容易就可以把无监督词典归纳的方法移植到处理短语上,也就是把里面的词替换成短语,就可以无监督地得到短语表。
\parinterval\ref{unsupervised-dictionary-induction}节所示,无监督词典归纳的方法依赖于词的分布式表达,也就是词嵌入。因此当把无监督词典归纳拓展到短语上时,首先需要获得短语的分布式表达。比较简单的方法是把词换成短语,然后借助无监督词典归纳相同的算法得到短语的分布式表达。最后直接应用无监督词典归纳方法,得到源语言短语与目标语言短语之间的对应。
\parinterval\ref{unsupervised-dictionary-induction}节所述,无监督词典归纳的方法依赖于词的分布式表示,也就是词嵌入。因此当把无监督词典归纳拓展到短语上时,首先需要获得短语的分布式表示。比较简单的方法是把词换成短语,然后借助无监督词典归纳相同的算法得到短语的分布式表示。最后直接应用无监督词典归纳方法,得到源语言短语与目标语言短语之间的对应。
\parinterval 尽管已经得到了短语的翻译,短语表的另外一个重要的组成部分,也就是短语对的得分(概率)无法直接由词典归纳方法直接给出,而这些得分在统计机器翻译模型中非常重要。在无监督词典归纳中,在推断词典的时候会为一对源语言单词和目标语言单词打分(词嵌入之间的相似度),然后根据打分来决定哪一个目标语言单词更有可能是当前源语言单词的翻译。在无监督短语归纳中,这样一个打分已经提供了对短语对质量的度量,因此经过适当的归一化处理后就可以得到短语对的得分:
\begin{eqnarray}
P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\sum_{\seq{y}^{'}}\mathrm{cos}(\mathbi{x},\mathbi{y}^{'})\tau}
P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\sum_{\mathbi{y}^{'}}\mathrm{cos}(\mathbi{x},\mathbi{y}^{'})/\tau}
\label{eq:16-11}
\end{eqnarray}
\noindent 其中,$\mathrm{cos}$是余弦相似度,$\mathbi{x}$是经过无监督词典归纳里$\mathbi{W}$转换的源语言短语嵌入,$\mathbi{y}$是目标语言短语嵌入,$\mathbi{y}^{'}$是所有可能的目标语短语嵌入,$\tau$是控制产生分布$P$的尖锐程度的一个超参数。
\parinterval 一个问题是在无监督的情景下我们没有任何双语数据,那么如何得到最优的$\tau$?这里,可以寻找一个$\tau$使得所有$P(\mathbi{y}|\mathbi{x})$ 最大\upcite{DBLP:conf/emnlp/ArtetxeLA18}。通常,取离一个给定的$\mathbi{y}$最接近的$\mathbi{x}$ 而不是给定$\mathbi{x}$ 选取最近的$\mathbi{y}$来计算$P(\mathbi{y}|\mathbi{x})$,因为给定$\mathbi{x}$得到的最近$\mathbi{y}$总是$P(\mathbi{y}|\mathbi{x})$里概率最大的元素,这时候$\tau$总是可以通过逼近0来使得所有$P$的取值都接近1。实际中为了选取最优$\tau$我们会为$P(\mathbi{y}|\mathbi{x})$$P(\mathbi{x}|\mathbi{y})$ 同时优化$\tau$
\parinterval 一个问题是在无监督的情景下我们没有任何双语数据,那么如何得到最优的$\tau$?这里,可以寻找一个$\tau$使得所有$P(\mathbi{y}|\mathbi{x})$ 最大\upcite{DBLP:conf/emnlp/ArtetxeLA18}。通常,取离一个给定的$\mathbi{y}$最接近的$\mathbi{x}$ 而不是给定$\mathbi{x}$ 选取最近的$\mathbi{y}$来计算$P(\mathbi{y}|\mathbi{x})$,因为给定$\mathbi{x}$得到的最近$\mathbi{y}$总是$P(\mathbi{y}|\mathbi{x})$里概率最大的元素,这时候总是可以调整$\tau$使得所有$P$的取值都接近1。实际中为了选取最优$\tau$会为$P(\mathbi{y}|\mathbi{x})$$P(\mathbi{x}|\mathbi{y})$ 同时优化$\tau$
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 无监督权重调优}
\parinterval 有了短语表之后,剩下的问题是如何在没有双语数据的情况下进行模型调优,从而把短语表、语言模型、调序模型等模块融合起来\upcite{DBLP:conf/acl/Och03}。在统计机器翻译系统中,短语表可以提供短语的翻译,而语言模型可以保证从短语的翻译拼装得到的句子的流畅度,因此统计机器翻译模型即使在没有权重调优的基础上也已经具备了一定的翻译能力。所以一个简单而有效的无监督方法就是使用未经过模型调优的统计机器翻译模型进行回译,也就是把目标语言句子翻译成源语言句子后把翻译得到的源语句言子当成输入而目标语言句子当成标准答案,完成权重调优。
\parinterval 有了短语表之后,剩下的问题是如何在没有双语数据的情况下进行模型调优,从而把短语表、语言模型、调序模型等模块融合起来\upcite{DBLP:conf/acl/Och03}。在统计机器翻译系统中,短语表可以提供短语的翻译,而语言模型可以保证从短语的翻译拼装得到的句子的流畅度,因此统计机器翻译模型即使在没有权重调优的基础上也已经具备了一定的翻译能力。所以一个简单而有效的无监督方法就是使用未经过模型调优的统计机器翻译模型进行回译,也就是将目标语言句子翻译成源语言句子后,再将翻译得到的源语句言子当成输入而目标语言句子当成标准答案,完成权重调优。
\parinterval 经过上述的无监督模型调优后,就获得了一个比未经调优效果更好的翻译模型。这时候一个自然的想法就是可以使用这个更好更强的翻译模型去产生质量更高的数据,然后用这些数据来继续对翻译模型进行调优,如此反复迭代一定次数后停止。这个方法也被称为{\small\bfnew{迭代优化}}\index{迭代优化}(Iterative Refinement\index{Iterative Refinement}\upcite{DBLP:conf/emnlp/ArtetxeLA18}
\parinterval 经过上述的无监督模型调优后,就获得了一个比未经调优效果更好的翻译模型。这时候,可以这个翻译模型去产生质量更高的数据,然后用这些数据来继续对翻译模型进行调优,如此反复迭代一定次数后停止。这个方法也被称为{\small\bfnew{迭代优化}}\index{迭代优化}(Iterative Refinement\index{Iterative Refinement}\upcite{DBLP:conf/emnlp/ArtetxeLA18}
\parinterval 迭代优化也会带来另外一个问题:在每一次迭代中都会产生新的模型,应该什么时候停止生成新模型,挑选哪一个模型?因为在无监督的场景当中,没有任何真实的双语数据可以使用,所以无法使用监督学习里的校验集来对每个模型进行检验并筛选。另外,即使有很少量的双语数据(比如数百条双语句对),直接在上面挑选模型和调整超参数会导致过拟合问题,使得最后结果越来越差。一个经验上非常高效的模型选择方法是:事先从训练集里挑选一部分句子作为校验集不参与训练,然后使用当前的模型把这些句子翻译过去之后再翻译回来(源语言$\to $目标语言$\to$源语言,或者目标语言$\to$源语言$\to$目标语言),得到的结果跟原始的结果计算BLEU,得分越高则效果越好。这样一种无监督模型挑选标准在经验上已被证明跟使用大的双语校验集的结果是高度相关的\upcite{DBLP:conf/emnlp/LampleOCDR18}
\parinterval 迭代优化也会带来另外一个问题:在每一次迭代中都会产生新的模型,应该什么时候停止生成新模型,挑选哪一个模型呢?因为在无监督的场景当中,没有任何真实的双语数据可以使用,所以无法使用监督学习里的校验集来对每个模型进行检验并筛选。另外,即使有很少量的双语数据(比如数百条双语句对),直接在上面挑选模型和调整超参数会导致过拟合问题,使得最后结果越来越差。一个经验上非常高效的模型选择方法是:事先从训练集里挑选一部分句子作为校验集不参与训练,然后使用当前的模型把这些句子翻译过去之后再翻译回来(源语言$\to $目标语言$\to$源语言,或者目标语言$\to$源语言$\to$目标语言),得到的结果跟原始的结果计算BLEU,得分越高则效果越好。这种方法已被证明跟使用大规模双语校验集的结果是高度相关的\upcite{DBLP:conf/emnlp/LampleOCDR18}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -680,14 +682,14 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
%----------------------------------------------------------------------------------------
\subsubsection{1. 基于无监督统计机器翻译的方法}
\parinterval 一个简单的方法是,借助已经成功的无监督方法来为神经机器翻译模型提供少量双语监督信号,然后在这个基础上训练模型。由于初始的监督信号可能很少或者包含大量噪声,因此需要逐步优化数据来重新训练出更好的模型。这也是目前所有无监督神经机器翻译方法的核心思路。这个方案最简单最直接的实现就是借助已经成功的无监督统计机器翻译模型产生伪双语数据来训练神经机器翻译模型 ,然后模型进行迭代回译来进行数据优化\upcite{DBLP:conf/acl/ArtetxeLA19}。这个方法的优点是直观,并且性能稳定,容易调试(所有模块都互相独立)。缺点是复杂繁琐,涉及许多超参数调整工作,而且训练代价较大。
\parinterval 一个简单的方法是,借助已经成功的无监督方法来为神经机器翻译模型提供少量双语监督信号。由于初始的监督信号可能很少或者包含大量噪声,因此需要逐步优化数据来重新训练出更好的模型。这也是目前所有无监督神经机器翻译方法的核心思路。这个方案最简单最直接的实现就是借助已经成功的无监督统计机器翻译模型产生伪双语数据来训练神经机器翻译模型 ,然后模型进行迭代回译来进行数据优化\upcite{DBLP:conf/acl/ArtetxeLA19}。这个方法的优点是直观,并且性能稳定,容易调试(所有模块都互相独立)。缺点是复杂繁琐,涉及许多超参数调整工作,而且训练代价较大。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 基于无监督词典归纳的方法}
\parinterval 既然无监督神经机器翻译问题的核心在于通过无监督方法提供初始的监督信号,另一个思路就是直接从无监督词典归纳中得到神经机器翻译模型,从而避免繁琐的无监督统计机器翻译模型训练过程,同时也避免神经机器翻译模型继承统计机器翻译模型的错误。这种方法的核心就是把翻译看成一个两阶段的过程:
\parinterval 既然无监督神经机器翻译问题的核心在于通过无监督方法提供初始的监督信号,另一个思路就是直接从无监督词典归纳中得到神经机器翻译模型,从而避免繁琐的无监督统计机器翻译模型的训练,同时也避免神经机器翻译模型继承统计机器翻译模型的错误。这种方法的核心就是把翻译看成一个两阶段的过程:
\begin{itemize}
\vspace{0.5em}
......@@ -697,19 +699,19 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
\vspace{0.5em}
\end{itemize}
\parinterval 而第二阶段的改写任务其实也是一个特殊的翻译任务,只不过现在的源语言和目标语言是使用不同的方式表达的同一种语言的句子。因此可以使用神经机器翻译模型来完成这个任务,而且由于这里不涉及双语数据而只需要单语数据,模型的训练也将是无监督的。这样的方法不再需要无监督统计机器翻译,并且适应能力很强。对于新语种,不需要重新训练神经机器翻译模型,只需要训练无监督词典归纳进行词的翻译,然后使用相同的模型进行改写。但是,目前训练数据需要使用其他语种的双语数据来进行构造(把源语言句子里每个词使用双语词典进行翻译作为输入,输出的目标语言句子不变)。虽然可以通过把单语句子根据规则或者随机进行打乱来生成训练数据,但是这些句子不符合语言学的规律,并且跟真实句子所服从的数据分布不一致,导致训练测试不一致的问题。而且这样一个两阶段的过程会产生错误传播的问题,比如无监督词典归纳对一些词进行了错误的翻译,那么这些错误的翻译会被送到神经机器翻译模型里进行改写,而因为翻译模型这时候已经无法看到源语言句子来进行修正,所以最终的结果将继承无监督词典归纳的错误\upcite{DBLP:conf/acl/PourdamghaniAGK19}
\parinterval 而第二阶段的改写任务其实也是一个特殊的翻译任务,只不过现在的源语言和目标语言是使用不同的方式表达的同一种语言的句子。因此可以使用神经机器翻译模型来完成这个任务,而且由于这里不涉及双语数据而只需要单语数据,模型的训练也将是无监督的。这样的方法不再需要无监督统计机器翻译,并且适应能力很强。对于新语种,不需要重新训练神经机器翻译模型,只需要训练无监督词典归纳进行词的翻译,然后使用相同的模型进行改写。但是,目前训练数据需要使用其他语种的双语数据来进行构造(把源语言句子里每个词使用双语词典进行翻译作为输入,输出的目标语言句子不变)。虽然可以通过把单语句子根据规则或者随机进行打乱来生成训练数据,但是这些句子不符合语言学的规律,并且跟真实句子所服从的数据分布不一致,导致训练-测试不一致的问题。而且这样一个两阶段的过程会产生错误传播的问题,比如无监督词典归纳对一些词进行了错误的翻译,那么这些错误的翻译会被送到神经机器翻译模型里进行改写,因为翻译模型这时候已经无法看到源语言句子来进行修正,所以最终的结果将继承无监督词典归纳的错误\upcite{DBLP:conf/acl/PourdamghaniAGK19}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 更深层的融合}
\parinterval 为了获得更好的神经机器翻译模型,可以对训练流程和模型做更深度的整合。{\chapternine}已经介绍,神经机器翻译模型的训练包含两个阶段:初始化和优化,而无监督神经机器翻译的核心思路也是对应的两个阶段:无监督方法提供初始的监督信号和数据优化,因此可以考虑在模型的初始化阶段使用无监督方法提供初始的监督信号,然后优化过程不但优化模型的参数,还优化训练使用的数据,从而避免流水线带来的错误传播。其中初始的监督信号可以通过两种方法提供给模型,一种是直接使用无监督方法提供最初的伪双语数据来训练最初的翻译模型,另一种则是借助无监督方法来初始化模型,得到最初的翻译模型后直接使用初始化好的翻译模型产生伪双语数据来训练自己,如图\ref{fig:16-19}所示。图\ref{fig:16-19}(a)的一个简单实现是利用无监督词典归纳得到的词典对单语数据进行逐词的翻译,得到最初的伪双语数据,然后在这些数据上训练最初的翻译模型,最后不断地交替优化数据和模型,得到更好的翻译模型和质量更好的伪数据\upcite{DBLP:conf/iclr/LampleCDR18}。这样的做法通过不断优化训练用的双语数据,摆脱了无监督词典归纳在最初的伪双语数据中遗留下来的错误,同时也避免了使用无监督统计机器翻译模型的繁琐和代价。图\ref{fig:16-19}(b)的实现则依赖于具体的翻译模型初始化方法,我们将在下一节讨论翻译模型的不同初始化方法。
\parinterval 为了获得更好的神经机器翻译模型,可以对训练流程和模型做更深度的整合。{\chapterten}已经介绍,神经机器翻译模型的训练包含两个阶段:初始化和优化。而无监督神经机器翻译的核心思路也对应这两个阶段:无监督方法提供初始的监督信号和数据优化,因此可以考虑在模型的初始化阶段使用无监督方法提供初始的监督信号,然后优化过程不但优化模型的参数,还优化训练使用的数据,从而避免流水线带来的错误传播。其中初始的监督信号可以通过两种方法提供给模型,一种是直接使用无监督方法提供最初的伪双语数据来训练最初的翻译模型,另一种则是借助无监督方法来初始化模型,得到最初的翻译模型后直接使用初始化好的翻译模型产生伪双语数据来训练自己,如图\ref{fig:16-19}所示。图\ref{fig:16-19}(a)的一个简单实现是利用无监督词典归纳得到的词典对单语数据进行逐词的翻译,得到最初的伪双语数据,然后在这些数据上训练最初的翻译模型,最后不断地交替优化数据和模型,得到更好的翻译模型和质量更好的伪数据\upcite{DBLP:conf/iclr/LampleCDR18}。这样的做法通过不断优化训练用的双语数据,摆脱了无监督词典归纳在最初的伪双语数据中遗留下来的错误,同时也避免了使用无监督统计机器翻译模型的代价。图\ref{fig:16-19}(b)的实现则依赖于具体的翻译模型初始化方法,下一节会讨论翻译模型的不同初始化方法。
%----------------------------------------------
\begin{figure}[h]
\centering
\input{Chapter16/Figures/figure-optimization-of-the-model-initialization-method}
\caption{模型初始化方法的优化}
\caption{模型参数初始化方法的优化}
\label{fig:16-19}
\end{figure}
%----------------------------------------------
......@@ -719,7 +721,7 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
%----------------------------------------------------------------------------------------
\subsubsection{4. 其它问题}
\parinterval 实际上无监督神经机器翻译模型的训练并不简单。一般来说,可以相信在生成的伪数据上经过参数优化后模型会变得比生成伪数据的时候更好,这时候对这个更好的模型使用数据增强的手段(如回译等)就可以生成更好的训练数据。这样的一个数据优化过程依赖于一个假设:模型经过参数优化后会生成比原始数据更好的数据。而在数据优化和参数优化的共同影响下,模型非常容易拟合数据中的简单模式,使得在数据优化过程中模型倾向产生包含这种简单模式的数据,然后模型对这种类型数据过拟合,最后训练模型的损失可以下降到很低,然而模型生成的结果却非常差。一个常见的问题解就是模型对任何输入都输出相同的译文,这时候翻译模型无法产生任何有意义的结果,而它的训练过程则退化成普通的语言模型(数据优化产生的数据里无论什么目标语言对应的源语言都是同一个句子)。这种情况下翻译模型虽然能降低损失(训练语言模型),但是它不能学会任何源语言跟目标语言之间的对应关系,也就无法翻译。这个现象也反映出无监督机器翻译训练的脆弱性。
\parinterval 实际上无监督神经机器翻译模型的训练并不简单。一般可以认为,在生成的伪数据上优化模型会使模型变得更好,这时候对这个更好的模型使用数据增强的手段(如回译等)就可以生成更好的训练数据。这样的一个数据优化过程依赖于一个假设:模型经过参数优化后会生成比原始数据更好的数据。而在数据优化和参数优化的共同影响下,模型非常容易拟合数据中的简单模式,使得在数据优化过程中模型倾向产生包含这种简单模式的数据,然后模型对这种类型数据过拟合,最后训练模型的损失可以下降到很低,然而模型生成的结果却非常差。一个常见的问题解就是模型对任何输入都输出相同的译文,这时候翻译模型无法产生任何有意义的结果,而它的训练过程则退化成普通的语言模型(数据优化产生的数据里无论什么目标语言对应的源语言都是同一个句子)。这种情况下翻译模型虽然能降低损失(训练语言模型),但是它不能学会任何源语言跟目标语言之间的对应关系,也就无法进行正确翻译。这个现象也反映出无监督机器翻译训练的脆弱性。
\parinterval 比较常见的解决方案是在双语数据对应的目标函数外增加一个语言模型的目标函数。因为,在初始阶段,由于数据中存在大量不通顺的句子,额外的语言模型目标函数能把部分句子纠正过来,使得模型逐渐生成更好的数据\upcite{DBLP:conf/emnlp/LampleOCDR18}。这个方法在实际中非常有效,尽管目前还没有理论上的支持。
......@@ -733,7 +735,7 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
\vspace{0.5em}
\end{itemize}
\parinterval 最后图\ref{fig:16-20}简单总结了无监督神经机器翻译的流程。下面分别讨论:无监督神经机器翻译里面模型的初始化,以及语言模型目标函数的选
\parinterval 最后图\ref{fig:16-20}简单总结了无监督神经机器翻译的流程。下面分别讨论:无监督神经机器翻译里面模型的初始化,以及语言模型目标函数的选
%----------------------------------------------
\begin{figure}[h]
\centering
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论