Commit cd19331a by 孟霞

16学姐反馈

parent 3930de12
......@@ -103,7 +103,7 @@
\node [anchor=north] (pos1) at ([xshift=1.5em,yshift=-1.0em]node0-2.south) {\small{(a) GPT模型结构}};
\node [anchor=north] (pos2) at ([xshift=1.5em,yshift=-1.0em]node0-6.south) {\small{(b) BERT模型结构}};
\node [anchor=south] (ex) at ([xshift=2.1em,yshift=0.5em]node3-1.north) {\small{TRM:transformer}};
\node [anchor=south] (ex) at ([xshift=2.1em,yshift=0.5em]node3-1.north) {\small{TRM:Transformer}};
......
......@@ -60,7 +60,7 @@
\node [anchor=west,fill=red!20,minimum width=1.5em](d2-1) at ([xshift=-0.0em]d2.east){};
\node [anchor=west,fill=yellow!20,minimum width=1.5em](d3-1) at ([xshift=-0.0em]d3.east){};
\node [anchor=north] (d4) at ([xshift=1em]d1.south) {\small{训练:}};
\node [anchor=north] (d5) at ([xshift=0.5em]d2.south) {\small{}};
\node [anchor=north] (d5) at ([xshift=0.5em]d2.south) {\small{}};
\draw [->,thick] ([xshift=0em]d4.east)--([xshift=1.5em]d4.east);
\draw [->,thick,dashed] ([xshift=0em]d5.east)--([xshift=1.5em]d5.east);
......
\begin{tikzpicture}
\begin{scope}
\node [anchor=center] (node1) at (0,0) {\textbf{Machine translation}, sometiomes referred to by the abbreviation \textbf{MT} (not to be };
\node [anchor=north] (node2) at (node1.south) {confused with computer-aided translation,,machine-aided human translation inter};
\node [anchor=center] (node1) at (0,0) {\textbf{Machine Translation}, sometimes referred to by the abbreviation \textbf{MT} (not to be };
\node [anchor=north] (node2) at (node1.south) {confused with computer-aided translation,machine-aided human translation inter};
\node [anchor=north] (node3) at (node2.south) {-active translation), is a subfield of computational linguistics that investigates the};
\node [anchor=north] (node4) at ([xshift=-1.8em]node3.south) {use of software to translate text or speech from one language to another.};
\node [anchor=south] (node5) at ([xshift=-12.8em,yshift=0.5em]node1.north) {\Large{WIKIPEDIA}};
......
......@@ -12,8 +12,8 @@
\node[node,anchor=west,minimum width=6em,minimum height=2.4em,fill=blue!20,line width=0.6pt] (decoder2) at ([xshift=4em,yshift=0em]decoder1.east){\small 解码器};
\node[node,anchor=west,minimum width=6em,minimum height=2.4em,fill=blue!30,line width=0.6pt] (decoder3) at ([xshift=3em]decoder2.east){\small 解码器};
\node[anchor=north,font=\scriptsize,fill=yellow!20] (w1) at ([yshift=-1.6em]decoder1.south){知识 \ 就是 \ 力量 \ \ <EOS>};
\node[anchor=north,font=\scriptsize,fill=green!20] (w3) at ([yshift=-1.6em]decoder3.south){Wissen \ ist \ Machit \ . \ <EOS>};
\node[anchor=north,font=\scriptsize,fill=yellow!20] (w1) at ([yshift=-1.6em]decoder1.south){知识 \ 就是 \ 力量 \ \ <eos>};
\node[anchor=north,font=\scriptsize,fill=green!20] (w3) at ([yshift=-1.6em]decoder3.south){Wissen \ ist \ Machit \ . \ <eos>};
\node[anchor=south,font=\scriptsize,fill=orange!20] (w2) at ([yshift=1.6em]encoder1.north){Knowledge \ is \ power \ . };
\node[anchor=south,font=\scriptsize,fill=orange!20] (w4) at ([yshift=1.6em]encoder3.north){Knowledge \ is \ power \ . };
......
......@@ -22,7 +22,7 @@
%----------------------------------------------------------------------------------------
\chapter{低资源神经机器翻译}
\parinterval 神经机器翻译带来的性能提升是显著的,但随之而来的问题是对海量双语训练数据的依赖。但是,不同语言可使用的数据规模是不同的。比如汉语、英语这种使用范围广泛的语言,存在着大量的双语平行句对,这些语言被称为{\small\bfnew{富资源语言}}\index{富资源语言}(High-resource Language\index{High-resource Language})。而对于其它一些使用范围稍小的语言,如斐济语、古吉拉特语等,相关的数据非常稀少,这些语言被称为{\small\bfnew{低资源语言}}\index{低资源语言}(Low-resource Language\index{Low-resource Language})。世界上现存语言超过5000种,仅有很少一部分为富资源语言,绝大多数均为低资源语言。即使在富资源语言中,对于一些特定的领域,双语平行语料也是十分稀缺的。有时,一些特殊的语种或者领域甚至会面临“零资源”的问题。因此,{\small\bfnew{低资源机器翻译}}\index{低资源机器翻译}(Low-resource Machine Translation)是当下急需解决且颇具挑战的问题。
\parinterval 神经机器翻译带来的性能提升是显著的,但随之而来的问题是对海量双语训练数据的依赖。但是,不同语言可使用的数据规模是不同的。比如汉语、英语这种使用范围广泛的语言,存在着大量的双语平行句对,这些语言被称为{\small\bfnew{富资源语言}}\index{富资源语言}(High-resource Language\index{High-resource Language})。而对于其它一些使用范围稍小的语言,如斐济语、古吉拉特语等,相关的数据非常稀少,这些语言被称为{\small\bfnew{低资源语言}}\index{低资源语言}(Low-resource Language\index{Low-resource Language})。世界上现存语言超过5000种,仅有很少一部分为富资源语言,绝大多数均为低资源语言。即使在富资源语言中,对于一些特定的领域,双语平行语料也是十分稀缺的。有时,一些特殊的语种或者领域甚至会面临“零资源”的问题。因此,{\small\bfnew{低资源机器翻译}}\index{低资源机器翻译}(Low-resource Machine Translation)是当下急需解决且颇具挑战的问题。
\parinterval 本章将对低资源神经机器翻译的相关问题、模型和方法展开介绍,内容涉及数据的有效使用、双向翻译模型、多语言翻译建模、无监督机器翻译、领域适应五个方面。
......@@ -32,7 +32,7 @@
\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 另一种思路是使用更容易获取的单语数据。实际上,在统计机器翻译时代,使用单语数据训练语言模型是构建机器翻译系统的关键步骤,好的语言模型往往会带来性能的增益。而这个现象在神经机器翻译中似乎并不明显,因为在大多数神经机器翻译的范式中,并不要求使用大规模单语数据来帮助机器翻译系统。甚至,连语言模型都不会作为一个独立的模块。这一方面是由于神经机器翻译系统的解码端本身就起着语言模型的作用,另一方面是由于双语数据的增多使得翻译模型可以很好地捕捉目标语言的规律。但是,双语数据总是有限的,很多场景下,单语数据的规模会远大于双语数据,如果能够让这些单语数据发挥作用,显然是一种非常好的选择。针对以上问题,下面将从数据增强、基于语言模型的单语数据使用等方面展开讨论。
......@@ -49,7 +49,7 @@
\subsubsection{1. 回译}
\parinterval {\small\bfnew{回译}}\index{回译}(Back Translation, BT\index{Back Translation})是目前机器翻译任务上最常用的一种数据增强方法\upcite{Sennrich2016ImprovingNM,DBLP:conf/emnlp/EdunovOAG18,DBLP:conf/aclnmt/HoangKHC18}。回译的主要思想是:利用目标语言-源语言翻译模型(反向翻译模型)来生成伪双语句对,用于训练源语言-目标语言翻译模型(正向翻译模型)。假设现在需要训练一个英汉翻译模型。首先,使用双语数据训练汉英翻译模型,即反向翻译模型。然后通过该模型将额外的汉语单语句子翻译为英语句子,从而得到大量的英语- 真实汉语伪双语句对。然后,将回译得到的伪双语句对和真实双语句对混合,训练得到最终的英汉翻译模型。
回译方法是模型无关的,只需要训练一个反向翻译模型,就可以利用单语数据来增加训练数据的数量,因此得到了广泛使用\upcite{Hassan2018AchievingHP,DBLP:conf/iclr/LampleCDR18,DBLP:conf/emnlp/LampleOCDR18}。图\ref{fig:16-1} 给出了回译方法的一个简要流程。
回译方法只需要训练一个反向翻译模型,就可以利用单语数据来增加训练数据的数量,因此得到了广泛使用\upcite{Hassan2018AchievingHP,DBLP:conf/iclr/LampleCDR18,DBLP:conf/emnlp/LampleOCDR18}。图\ref{fig:16-1} 给出了回译方法的一个简要流程。
%----------------------------------------------
\begin{figure}[htp]
......@@ -73,9 +73,9 @@
\end{figure}
%----------------------------------------------
\parinterval 进一步,研究人员发现,在低资源场景中,由于缺乏双语数据,高质量的伪双语数据对于模型来说更有帮助。而在富资源场景中,在回译产生的源语言句子中添加一些噪声,提高翻译结果的多样性,反而可以达到更好的效果,比较常用的方法是使用采样解码、Top-$k$解码和加噪\upcite{DBLP:conf/emnlp/EdunovOAG18,DBLP:conf/aclnmt/ImamuraFS18,DBLP:conf/emnlp/WuWXQLL19}。回译中常用的解码方式为束搜索,在生成每个词的时候只考虑预测概率最高的前几个词,因此生成的翻译结果质量更高,但导致的问题是翻译结果主要集中在部分高频词上,生成的伪数据缺乏多样性,也就很难去准确地覆盖真实的数据分布\upcite{DBLP:conf/icml/OttAGR18}。采样解码是指在解码过程中,对词表中所有的词按照预测概率进行随机采样,因此整个词表中的词都有可能被选中,从而使生成结果多样性更强,但翻译质量和流畅度也会明显下降。Top-$k$解码是对束搜索和采样解码的一个折中方法。在解码过程中,Top-$k$解码对词表中预测概率最高的前$k$个词进行随机采样,这样在保证翻译结果准确的前提下,提高了结果的多样性。加噪方法在束搜索的解码结果加入一些噪声,如丢掉或掩码部分词、打乱句子顺序等。这些方法在生成的源语言句子中引入了噪声,不仅增加了对包含低频词或噪声句子的训练次数,同时也提高了模型的健壮性和泛化能力\upcite{DBLP:conf/icml/VincentLBM08}
\parinterval 进一步,研究人员发现,在低资源场景中,由于缺乏双语数据,高质量的伪双语数据对于模型来说更有帮助。而在富资源场景中,在回译产生的源语言句子中添加一些噪声,提高翻译结果的多样性,反而可以达到更好的效果,比较常用的方法是使用采样解码、Top-$k$解码和加噪\upcite{DBLP:conf/emnlp/EdunovOAG18,DBLP:conf/aclnmt/ImamuraFS18,DBLP:conf/emnlp/WuWXQLL19}。回译中常用的解码方式为束搜索,在生成每个词的时候只考虑预测概率最高的几个词,因此生成的翻译结果质量更高,但导致的问题是翻译结果主要集中在部分高频词上,生成的伪数据缺乏多样性,也就很难去准确地覆盖真实的数据分布\upcite{DBLP:conf/icml/OttAGR18}。采样解码是指在解码过程中,对词表中所有的词按照预测概率进行随机采样,因此整个词表中的词都有可能被选中,从而使生成结果多样性更强,但翻译质量和流畅度也会明显下降。Top-$k$解码是对束搜索和采样解码的一个折中方法。在解码过程中,Top-$k$解码对词表中预测概率最高的前$k$个词进行随机采样,这样在保证翻译结果准确的前提下,提高了结果的多样性。加噪方法在束搜索的解码结果加入一些噪声,如丢掉或屏蔽部分词、打乱句子顺序等。这些方法在生成的源语言句子中引入了噪声,不仅增加了对包含低频词或噪声句子的训练次数,同时也提高了模型的健壮性和泛化能力\upcite{DBLP:conf/icml/VincentLBM08}
\parinterval 与回译方法类似,源语言单语数据也可以通过一个双语数据训练的正向翻译模型获得对应的目标语言数据,从而构造正向翻译的伪数据\upcite{DBLP:conf/emnlp/ZhangZ16}。与回译方法相反,这时的伪数据中源语言句子是真实的,而目标语言句子是自动生成的,构造的伪数据对译文的流畅性并没有太大帮助,其主要作用是提升编码器的特征提取能力。然而,由于伪数据中生成的译文质量很难保证,因此利用正向翻译模型生成伪数据的方法带来的性能提升效果要弱于回译,甚至可能是有害的\upcite{DBLP:conf/emnlp/WuWXQLL19}
\parinterval 与回译方法类似,源语言单语数据也可以通过一个双语数据训练的正向翻译模型获得对应的目标语言翻译结果,从而构造正向翻译的伪数据\upcite{DBLP:conf/emnlp/ZhangZ16}。与回译方法相反,这时的伪数据中源语言句子是真实的,而目标语言句子是自动生成的,构造的伪数据对译文的流畅性并没有太大帮助,其主要作用是提升编码器的特征提取能力。然而,由于伪数据中生成的译文质量很难保证,因此利用正向翻译模型生成伪数据的方法带来的性能提升效果要弱于回译,甚至可能是有害的\upcite{DBLP:conf/emnlp/WuWXQLL19}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
......@@ -90,14 +90,14 @@
\vspace{0.5em}
\item 丢掉单词:句子中的每个词均有$\funp{P}_{\rm{Drop}}$的概率被丢弃。
\vspace{0.5em}
\item 掩码单词:句子中的每个词均有$\funp{P}_{\rm{Mask}}$的概率被替换为一个额外的[Mask]词。[Mask]的作用类似于占位符,可以理解为一个句子中的部分词被涂抹掉,无法得知该位置词的准确含义。
\item 掩码单词:句子中的每个词均有$\funp{P}_{\rm{Mask}}$的概率被替换为一个额外的[Mask]词。[Mask]的作用类似于占位符,可以理解为一个句子中的部分词被屏蔽掉,无法得知该位置词的准确含义。
\vspace{0.5em}
\item 打乱顺序:将句子中距离较近的某些词的位置进行随机交换。
\vspace{0.5em}
\end{itemize}
%----------------------------------------------
\parinterval\ref{fig:16-3}展示了三种加噪方法的示例。这里,$\funp{P}_{\rm{Drop}}$$\funp{P}_{\rm{Mask}}$均设置为0.1,表示每个词有$10\%$的概率被丢弃或掩码。打乱顺序的操作略微复杂,一种实现方法是,通过一个数字来表示每个词在句子中的位置,如“我”是第一个词,“你”是第三个词,然后,在每个位置生成一个$1$$n$的随机数,$n$一般设置为3,然后将每个词的位置数和对应的随机数相加,即图中的$\seq{S}$。 对$\seq{S}$ 按照从小到大排序,根据排序后每个位置的索引从原始句子中选择对应的词,从而得到最终打乱顺序后的结果。比如,在排序后,$S_2$的值小于$S_1$的值,其余词则保持递增顺序,则将原始句子中的第一个词和第二个词进行交换,其他词保持不变。
\parinterval\ref{fig:16-3}展示了三种加噪方法的示例。这里,$\funp{P}_{\rm{Drop}}$$\funp{P}_{\rm{Mask}}$均设置为0.1,表示每个词有$10\%$的概率被丢弃或掩码。打乱句子内部顺序的操作略微复杂,一种实现方法是:通过一个数字来表示每个词在句子中的位置,如“我”是第一个词,“你”是第三个词,然后,在每个位置生成一个$1$$n$的随机数,$n$一般设置为3,然后将每个词的位置数和对应的随机数相加,即图中的$\seq{S}$。 对$\seq{S}$ 按照从小到大排序,根据排序后每个位置的索引从原始句子中选择对应的词,从而得到最终打乱顺序后的结果。比如,在计算后,除了$S_2$的值小于$S_1$外,其余单词的$S$值均为递增顺序,则将原句中第一个词和第二个词进行交换,其他词保持不变。
%----------------------------------------------
\begin{figure}[htp]
......@@ -121,7 +121,7 @@
\end{itemize}
%----------------------------------------------
\parinterval 另外一种加噪方法是进行词替换。将一个句子中的某个词替换为其他词,可能并不会影响句子的合理性和流畅度。比如,对于“我/出去/玩。”这句话,将“我”替换为“你”、“他”、“我们”。或者,将“玩”替换为“骑车”、“学习”、“吃饭”等,虽然改变了语义,但句子在语法上仍然是合理的。词替换方法即是将双语数据中的部分词替换为词表中的其他词,在保证句子的语义或语法正确性的前提下,增加了训练数据的多样性
\parinterval 另外一种加噪方法是进行词替换:将双语数据中的部分词替换为词表中的其他词,在保证句子的语义或语法正确性的前提下,增加了训练数据的多样性。比如,对于“我/出去/玩。”这句话,将“我”替换为“你”、“他”、“我们”。或者,将“玩”替换为“骑车”、“学习”、“吃饭”等,虽然改变了语义,但句子在语法上仍然是合理的
\parinterval 词替换的另一种策略是将源语言中的稀有词替换为语义相近的词\upcite{DBLP:conf/acl/FadaeeBM17a}。词表中的稀有词由于出现次数较少,很容易导致训练不充分问题\upcite{DBLP:conf/acl/SennrichHB16a}。通过语言模型将源语言句子中的某个词替换为满足语法或语义条件的稀有词,再通过词对齐工具找到源语言句子中被替换的词在目标语言句子中对应的位置,借助翻译词典将这个目标语言位置的单词替换为词典中的翻译结果,从而得到伪双语数据。
......@@ -145,16 +145,16 @@
\end{figure}
%----------------------------------------------
\parinterval 可比语料大多存在于网页中,内容较为复杂,可能会存在较大比例的噪声,如HTML字符、乱码等。首先需要对内容进行充分的数据清洗操作,得到干净的可比语料,然后从中抽取出可用的双语句对。传统的抽取方法一般通过统计模型或双语词典来得到双语句对。比如,通过计算两个不同语言句子之间的单词重叠数或BLEU值\upcite{finding2006adafre,method2008keiji};或者通过排序模型或二分类器判断一个目标语言句子和一个源语言句子互译的可能性\upcite{DBLP:journals/coling/MunteanuM05,DBLP:conf/naacl/SmithQT10}
\parinterval 可比语料大多存在于网页中,内容较为复杂,可能会存在较大比例的噪声,如HTML字符、乱码等。首先需要对内容进行充分的数据清洗,得到干净的可比语料,然后从中抽取出可用的双语句对。传统的抽取方法一般通过统计模型或双语词典来得到双语句对。比如,通过计算两个不同语言句子之间的单词重叠数或BLEU值\upcite{finding2006adafre,method2008keiji};或者通过排序模型或二分类器判断一个目标语言句子和一个源语言句子互译的可能性\upcite{DBLP:journals/coling/MunteanuM05,DBLP:conf/naacl/SmithQT10}
\parinterval 另外一种比较有效的方法是根据两种语言中每个句子的表示向量来抽取数据\upcite{DBLP:conf/emnlp/WuZHGQLL19}。首先,对于两种语言的每个句子,分别使用词嵌入加权平均等方法计算得到句子的表示向量,然后计算每个源语言句子和目标语言句子之间的余弦相似度,相似度大于一定阈值的句对则认为是可用的双语句对\upcite{DBLP:conf/emnlp/WuZHGQLL19}。然而,不同语言单独训练得到的词嵌入可能对应不同的表示空间,因此得到的表示向量无法用于衡量两个句子的相似度\upcite{DBLP:journals/corr/MikolovLS13}。为了解决这个问题,一般使用在同一表示空间的跨语言词嵌入来表示两种语言的单词\upcite{DBLP:journals/jair/RuderVS19}。在跨语言词嵌入中,不同语言相同意思的词对应的词嵌入具有较高的相似性,因此得到的句向量也就可以用于衡量两个句子是否表示相似的语义\upcite{DBLP:conf/icml/LeM14}。关于跨语言词嵌入的具体内容,可以参考\ref{unsupervised-dictionary-induction}节的内容。
\parinterval 另外一种比较有效的方法是根据两种语言中每个句子的表示向量来抽取数据\upcite{DBLP:conf/emnlp/WuZHGQLL19}。首先,对于两种语言的每个句子,分别使用词嵌入加权平均等方法计算得到句子的表示向量,然后计算每个源语言句子和目标语言句子之间的余弦相似度,相似度大于一定阈值的句对则认为是可用的双语句对\upcite{DBLP:conf/emnlp/WuZHGQLL19}。然而,不同语言单独训练得到的词嵌入可能对应不同的表示空间,因此得到的表示向量无法用于衡量两个句子的相似度\upcite{DBLP:journals/corr/MikolovLS13}。为了解决这个问题,一般使用在同一表示空间的跨语言词嵌入来表示两种语言的单词\upcite{DBLP:journals/jair/RuderVS19}。在跨语言词嵌入中,不同语言相同意思的词对应的词嵌入具有较高的相似性,因此得到的句子表示向量也就可以用于衡量两个句子是否表示相似的语义\upcite{DBLP:conf/icml/LeM14}。关于跨语言词嵌入的具体内容,可以参考\ref{unsupervised-dictionary-induction}节的内容。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{基于语言模型的方法}
\parinterval 除了构造双语数据进行数据增强,直接利用单语数据也是机器翻译中的常用方法。通常,单语数据会被用于语言模型的学习(见{\chaptertwo})。对于机器翻译系统,使用语言模型也是一件十分自然的事情,在目标语言端,语言模型可以帮助系统选择更加流畅的译文输出;在源语言端,语言模型也可以用于句子编码,进而更好地生成句子的表示结果。在传统方法中,语言模型更多地被使用在目标语言端。不过,近些年来随着预训练技术的发展,语言模型也被使用在神经机器翻译的编码端。下面将从语言模型在目标语言端的融合、预训练词嵌入、预训练编码器和多任务学习四方面介绍基于语言模型的单语数据使用方法。
\parinterval 除了构造双语数据进行数据增强,直接利用单语数据也是机器翻译中的常用方法。通常,单语数据会被用于语言模型的训练(见{\chaptertwo})。对于机器翻译系统,使用语言模型也是一件十分自然的事情,在目标语言端,语言模型可以帮助系统选择更加流畅的译文结果;在源语言端,语言模型也可以用于句子编码,进而更好地生成句子的表示结果。在传统方法中,语言模型更多地被使用在目标语言端。不过,近些年来随着预训练技术的发展,语言模型也被使用在神经机器翻译的编码器端。下面将从语言模型在解码器端的融合、预训练词嵌入、预训练编码器和多任务学习四方面介绍基于语言模型的单语数据使用方法。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
......@@ -181,13 +181,13 @@
\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}
\parinterval 词嵌入可以被看作是对每个独立单词进行的表示学习的结果,在自然语言处理的众多任务中都扮演着重要角色\upcite{DBLP:conf/icml/CollobertW08,2011Natural,DBLP:journals/corr/abs-1901-09069}。到目前为止已经有大量的词嵌入学习方法被提出(见{\chapternine}),因此可以直接应用这些方法在海量的单语数据上训练得到词嵌入,用来初始化神经机器翻译模型的词嵌入参数矩阵\upcite{DBLP:conf/aclwat/NeishiSTIYT17,2018When}
\parinterval 需要注意的是,在神经机器翻译中使用预训练词嵌入有两种方法。一种方法是直接将词嵌入作为固定的输入,也就是在训练神经机器翻译模型的过程中,并不调整词嵌入的参数。这样做的目的是完全将词嵌入模块独立出来,机器翻译可以被看作是在固定的词嵌入输入上进行的建模,从而降低了机器翻译模型学习的难度。另一种方法是仍然遵循``预训练+微调''的策略,将词嵌入作为机器翻译模型部分参数的初始值。在之后机器翻译训练过程中,词嵌入模型结果会被进一步更新。近些年,在词嵌入预训练的基础上进行微调的方法越来越受到研究者的青睐。因为在实践中发现,完全用单语数据学习的单词表示,与双语数据上的翻译任务并不完全匹配。同时目标语言的信息也会影响源语言的表示学习。
\parinterval 虽然预训练词嵌入在海量的单语数据上学习到了丰富的表示,但词嵌入很主要的一个缺点是无法解决一词多义问题。在不同的上下文中,同一个单词经常表示不同的意思,但词嵌入是完全相同的。模型需要在编码过程中通过上下文去理解每个词在当前语境下的含义。因此,上下文词向量在近些年得到了广泛的关注\upcite{DBLP:conf/acl/PetersABP17,mccann2017learned,DBLP:journals/corr/abs-1802-05365}。上下文词嵌入是指一个词的表示不仅依赖于单词自身,还依赖于上下文语境。由于在不同的上下文中,每个词对应的词嵌入是不同的,因此无法简单地通过词嵌入矩阵来表示,通常的做法是使用海量的单语数据预训练语言模型任务,使模型具备丰富的特征提取能力\upcite{DBLP:journals/corr/abs-1802-05365,radford2018improving,devlin2019bert}
\parinterval 虽然预训练词嵌入在海量的单语数据上学习到了丰富的表示,但词嵌入很主要的一个缺点是无法解决一词多义问题。在不同的上下文中,同一个单词经常表示不同的意思,但它的词嵌入是完全相同的,模型需要在编码过程中通过上下文去理解每个词在当前语境下的含义。因此,上下文词向量在近些年得到了广泛的关注\upcite{DBLP:conf/acl/PetersABP17,mccann2017learned,DBLP:journals/corr/abs-1802-05365}。上下文词嵌入是指一个词的表示不仅依赖于单词自身,还依赖于上下文语境。由于在不同的上下文中,每个词对应的词嵌入是不同的,因此无法简单地通过词嵌入矩阵来表示,通常的做法是使用海量的单语数据预训练语言模型任务,使模型具备丰富的特征提取能力\upcite{DBLP:journals/corr/abs-1802-05365,radford2018improving,devlin2019bert}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
......@@ -205,7 +205,7 @@
\end{figure}
%----------------------------------------------
\parinterval GPT\upcite{radford2018improving}通过Transformer模型自回归地训练单向语言模型,类似于神经机器翻译模型的解码器,相比双向LSTM等模型,Tranformer架构的表示能力更强。在大规模单语数据上预训练得到的模型结构只需要进行简单的修改,再通过任务特定的训练数据进行微调,就可以很好地适配到下游任务中。之后提出的BERT模型更是将预训练的作用提升到了新的水平\upcite{devlin2019bert}。GPT模型的一个缺陷在于模型只能进行单向编码,也就是前面的文本在建模时无法获取到后面的信息。而BERT提出了一种自编码的方式,使模型在预训练阶段可以通过双向编码的方式进行建模,进一步增强了模型的表示能力。
\parinterval GPT\upcite{radford2018improving}通过Transformer模型自回归地训练单向语言模型,类似于神经机器翻译模型的解码器,相比双向LSTM等模型,Tranformer模型的表示能力更强。在大规模单语数据上预训练得到的模型结构只需要进行简单的修改,再通过任务特定的训练数据进行微调,就可以很好地适配到下游任务中。之后提出的BERT模型更是将预训练的作用提升到了新的水平\upcite{devlin2019bert}。GPT模型的一个缺陷在于模型只能进行单向编码,也就是前面的文本在建模时无法获取到后面的信息。而BERT提出了一种自编码的方式,使模型在预训练阶段可以通过双向编码的方式进行建模,进一步增强了模型的表示能力。
\parinterval BERT的核心思想是通过{\small\bfnew{掩码语言模型}}(Masked Language Model,MLM)\index{掩码语言模型}\index{MLM}任务进行预训练。掩码语言模型的思想类似于完形填空,随机选择输入句子中的部分词掩码,之后让模型预测这些被掩码的词。掩码的具体做法是将被选中的词替换为一个特殊的词[Mask],这样模型在训练过程中,无法得到掩码位置词的信息,需要联合上下文内容进行预测,因此提高了模型对上下文的特征提取能力。实验表明,相比在下游任务中仅利用上下文词嵌入,在大规模单语数据上预训练的模型具有更强的表示能力。而使用掩码的方式进行训练也给神经机器翻译提供了新的思路,在本章中也会使用到类似方法。
......@@ -264,7 +264,7 @@
\section{双向翻译模型}
\parinterval 机器翻译是要学习一种语言到另外一种语言的翻译。显然这是一个双向任务。对于给定的双语数据,可以同时学习源语言到目标语言和目标语言到源语言的翻译模型。那么,两个方向的翻译模型能否联合起来,相辅相成呢?下面将从双向训练和对偶学习两方面对双向翻译模型进行介绍。这些方法被大量使用在低资源翻译系统中,比如,可以用双向翻译模型反复迭代构造伪数据。
\parinterval 在机器翻译任务中,对于给定的双语数据,可以同时学习源语言到目标语言和目标语言到源语言的翻译模型,因此机器翻译可被视为一种双向任务。那么,两个方向的翻译模型能否联合起来,相辅相成呢?下面将从双向训练和对偶学习两方面对双向翻译模型进行介绍。这些方法被大量使用在低资源翻译系统中,比如,可以用双向翻译模型反复迭代构造伪数据。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
......@@ -279,9 +279,9 @@
\parinterval 这里可以把$\seq{x}$$\seq{y}$都看作分布式的向量表示;$\seq{W}$应当是一个满秩矩阵,否则对于任意一个$\seq{x}$经过$\seq{W}$变换得到的$\seq{y}$只落在所有可能的$\seq{y}$的一个子空间内,即在给定$\seq{W}$的情况下有些$\seq{y}$不能被任何一个$\seq{x}$表达,而这不符合常识,因为不管是什么句子,总能找到它的一种译文。若$\seq{W}$是满秩矩阵说明$\seq{W}$可逆,也就是给定$\seq{x}$$\seq{y}$的变换$\seq{W}$下,$\seq{y}$$\seq{x}$的变换必然是$\seq{W}$的逆而不是其他矩阵。
\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 这个例子说明$\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}$并进行参数更新,即用$\{ \hat{x}_i^{0},y_i\} \bigcup \{ x_i,y_i\}$训练$M_{x \rightarrow y}^{1}$,用$\{ \hat{y}_i^{0},x_i\} \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}$并进行参数更新,即用$\{ \hat{x}_i^{0},y_i\} \bigcup \{ x_i,y_i\}$训练$M_{x \rightarrow y}^{1}$,用$\{ \hat{y}_i^{0},x_i\} \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}$。这种方式本质上也是一种自学习的过程,通过逐步生成更好的伪数据来提升模型质量。
%----------------------------------------------
\begin{figure}[h]
......@@ -300,7 +300,7 @@
目前,对偶学习的思想已经广泛应用于低资源机器翻译领域,它不仅能够提升在有限双语资源下的翻译模型性能{\small\bfnew{有监督对偶学习}},Dual Supervised Learning\index{Dual Supervised Learning}\upcite{DBLP:conf/icml/XiaQCBYL17,DBLP:conf/icml/XiaTTQYL18},而且能够利用未标注的单语数据来进行学习({\small\bfnew{无监督对偶学习}},Dual Unsupervised Learning\index{Dual Unsupervised Learning}\upcite{qin2020dual,DBLP:conf/nips/HeXQWYLM16,zhao2020dual}。下面将一一展开讨论
目前,对偶学习的思想已经广泛应用于低资源机器翻译领域,它不仅能够提升在有限双语资源下的翻译模型性能,而且能够利用未标注的单语数据来进行学习。下面将针对{\small\bfnew{有监督对偶学习}}(Dual Supervised Learning\index{Dual Supervised Learning}\upcite{DBLP:conf/icml/XiaQCBYL17,DBLP:conf/icml/XiaTTQYL18}{\small\bfnew{无监督对偶学习}}(Dual Unsupervised Learning\index{Dual Unsupervised Learning}\upcite{qin2020dual,DBLP:conf/nips/HeXQWYLM16,zhao2020dual}两方面,对对偶学习的思想进行介绍
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
......@@ -320,7 +320,7 @@
\label{eq:16-4}
\end{eqnarray}
\parinterval 通过该正则化项,互为对偶的两个任务可以被放在一起学习,通过任务对偶性加强监督学习的过程,就是有监督对偶学习\upcite{DBLP:conf/icml/XiaQCBYL17,qin2020dual}。这里,$\funp{P}(\seq{x})$$\funp{P}(\seq{y})$这两个语言模型是预先训练好的,并不参与翻译模型的训练。可以看到,对于单独的一个模型来说,其目标函数增加了与另外一个方向的模型相关的项。这样的形式与L1/L2正则化非常类似(见{\chapterthirteen}),因此可以把这个方法看作是一种正则化的手段(由翻译任务本身的性质所启发而来)。有监督对偶学习实际上要优化如下的损失函数:
\parinterval 通过该正则化项,互为对偶的两个任务可以被放在一起学习,通过任务对偶性加强监督学习的过程,就是有监督对偶学习\upcite{DBLP:conf/icml/XiaQCBYL17,qin2020dual}。这里,$\funp{P}(\seq{x})$$\funp{P}(\seq{y})$这两个语言模型是预先训练好的,并不参与翻译模型的训练。可以看到,对于单独的一个模型来说,其目标函数增加了与另外一个方向的模型相关的损失项。这样的形式与L1/L2正则化非常类似(见{\chapterthirteen}),因此可以把这个方法看作是一种正则化的手段(由翻译任务本身的性质所启发而来)。有监督对偶学习实际上要优化如下的损失函数:
\begin{eqnarray}
{L} & = & \log{\funp{P}(\seq{y}|\seq{x})}+\log{\funp{P}(\seq{x}|\seq{y})}+{L}_{\rm{dual}}
\label{eq:16-5}
......@@ -333,9 +333,9 @@
%----------------------------------------------------------------------------------------
\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$的参数。这个过程可以多次迭代,从大量的无标注单语数据上不断提升性能。
\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$的参数。这个过程可以多次迭代,从大量的无标注单语数据上不断提升性能。
%----------------------------------------------
\begin{figure}[htp]
......@@ -353,19 +353,7 @@
%----------------------------------------------------------------------------------------
\section{多语言翻译模型}\label{multilingual-translation-model}
\parinterval 低资源机器翻译面临的主要挑战是缺乏大规模高质量的双语数据。这个问题往往伴随着多语言的翻译任务\upcite{dabre2020survey}。也就是,要同时开发多个不同语言之间的机器翻译系统,其中少部分语言是富资源语言,而其它语言是低资源语言。针对低资源语言双语数据稀少或者缺失的情况,一种常见的思路是利用富资源语言的数据或者系统帮助低资源机器翻译系统。这也构成了多语言翻译的思想,并延伸出大量的研究工作,其中有三个典型研究方向:
\begin{itemize}
\vspace{0.5em}
\item 基于枢轴语言的方法,即以资源丰富的语言(通常为英语、汉语等)为中心,在语言对之间进行翻译\upcite{DBLP:journals/mt/WuW07}
\vspace{0.5em}
\item 基于知识蒸馏的方法,即用枢轴语言到目标语言的训练指导源语言到目标语言的训练\upcite{DBLP:journals/corr/ChenLCL17}
\vspace{0.5em}
\item 基于迁移学习的方法,即从富资源语言对中转移翻译知识以改善低资源语言的翻译\upcite{DBLP:conf/emnlp/KimPPKN19},比如,将富资源的翻译知识迁移到零资源翻译模型上,即在没有双语训练数据的语言对之间进行翻译\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17}
\vspace{0.5em}
\end{itemize}
\parinterval 下面将对上面三种典型方法进行讨论。
\parinterval 低资源机器翻译面临的主要挑战是缺乏大规模高质量的双语数据。这个问题往往伴随着多语言的翻译任务\upcite{dabre2020survey}。也就是,要同时开发多个不同语言之间的机器翻译系统,其中少部分语言是富资源语言,而其它语言是低资源语言。针对低资源语言双语数据稀少或者缺失的情况,一种常见的思路是利用富资源语言的数据或者系统帮助低资源机器翻译系统。这也构成了多语言翻译的思想,并延伸出大量的研究工作,其中有三个典型研究方向:基于枢轴语言的方法\upcite{DBLP:journals/mt/WuW07}、 基于知识蒸馏的方法\upcite{DBLP:journals/corr/ChenLCL17}、基于迁移学习的方法\upcite{DBLP:conf/emnlp/KimPPKN19,DBLP:journals/tacl/JohnsonSLKWCTVW17},下面将对上面三种典型方法进行讨论。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -374,9 +362,9 @@
\subsection{基于枢轴语言的方法}
\label{sec:pivot-based-translation}
\parinterval 传统的多语言翻译中,广泛使用的是{\small\bfnew{基于枢轴语言的翻译}}(Pivot-based Translation)\upcite{DBLP:conf/emnlp/KimPPKN19,DBLP:journals/mt/WuW07}。这种方法会使用一种数据丰富的语言作为{\small\bfnew{中介语言}}\index{中介语言}或者{\small\bfnew{枢轴语言}}\index{枢轴语言}(Pivot Language)\index{Pivot Language},之后让源语言向枢轴语言进行翻译,枢轴语言向目标语言进行翻译。这样,通过资源丰富的枢轴语言将源语言和目标语言桥接在一起,达到解决源语言-目标语言双语数据缺乏的问题。比如,想要得到泰语到波兰语的翻译,可以通过英语做枢轴语言。通过“泰语$\to$英语$\to$波兰语”的翻译过程完成泰语到波兰语的转换。
\parinterval 传统的多语言翻译中,广泛使用的是{\small\bfnew{基于枢轴语言的翻译}}(Pivot-based Translation)\upcite{DBLP:conf/emnlp/KimPPKN19,DBLP:journals/mt/WuW07}。这种方法会使用一种数据丰富的语言作为{\small\bfnew{枢轴语言}}\index{枢轴语言}(Pivot Language)\index{Pivot Language},之后让源语言向枢轴语言进行翻译,枢轴语言向目标语言进行翻译。这样,通过资源丰富的枢轴语言将源语言和目标语言桥接在一起,达到解决原翻译任务中双语数据缺乏的问题。比如,想要得到泰语到波兰语的翻译,可以通过英语做枢轴语言。通过“泰语$\to$英语$\to$波兰语”的翻译过程完成泰语到波兰语的转换。
\parinterval 在基于统计的机器翻译中,已经有很多方法建立了源语言到枢轴语言和枢轴语言到目标语言的短语/单词级别特征,并基于这些特征开发了源语言到目标语言的系统\upcite{DBLP:conf/naacl/UtiyamaI07,DBLP:conf/acl/ZahabiBK13,DBLP:conf/emnlp/ZhuHWZWZ14,DBLP:conf/acl/MiuraNSTN15},这些系统也已经广泛用于翻译低资源语言对\upcite{DBLP:conf/acl/CohnL07,DBLP:journals/mt/WuW07,DBLP:conf/acl/WuW09,de2006catalan}。由于基于枢轴语言的方法与模型结构无关,该方法也适用于神经机器翻译,并且取得了不错的效果\upcite{DBLP:conf/emnlp/KimPPKN19,DBLP:journals/corr/ChengLYSX16}
\parinterval 在基于统计的机器翻译中,已经有很多方法建立了源语言到枢轴语言和枢轴语言到目标语言的短语/单词级别特征,并基于这些特征开发了源语言到目标语言的系统\upcite{DBLP:conf/naacl/UtiyamaI07,DBLP:conf/acl/ZahabiBK13,DBLP:conf/emnlp/ZhuHWZWZ14,DBLP:conf/acl/MiuraNSTN15},这些系统也已经广泛用于低资源翻译任务\upcite{DBLP:conf/acl/CohnL07,DBLP:journals/mt/WuW07,DBLP:conf/acl/WuW09,de2006catalan}。由于基于枢轴语言的方法与模型结构无关,该方法也适用于神经机器翻译,并且取得了不错的效果\upcite{DBLP:conf/emnlp/KimPPKN19,DBLP:journals/corr/ChengLYSX16}
\parinterval 基于枢轴语言的方法可以被描述为如图\ref{fig:16-11}所示的过程。这里,使用虚线表示具有双语平行语料库的语言对,并使用带有箭头的实线表示翻译方向,令$\seq{x}$$\seq{y}$$\seq{p}$ 分别表示源语言、目标语言和枢轴语言,对于输入源语言句子$\seq{x}$和目标语言句子$\seq{y}$,其翻译过程可以被建模为公式\eqref{eq:16-7}
......@@ -404,7 +392,7 @@
\subsection{基于知识蒸馏的方法}
\parinterval 为了解决基于枢轴语言的方法中存在的错误传播等问题,可以采用基于知识蒸馏的方法\upcite{DBLP:journals/corr/ChenLCL17,DBLP:conf/iclr/TanRHQZL19}。知识蒸馏是一种常用的模型压缩方法\upcite{Hinton2015Distilling},基于教师-学生框架,在第十三章已经进行了详细介绍。针对稀缺资源任务,基于教师-学生框架的方法基本思想如图\ref{fig:16-12}所示。其中,虚线表示具有平行语料库的语言对,带有箭头的实线表示翻译方向。这里,将枢轴语言($\seq{p}$)到目标语言($\seq{y}$)的翻译模型$\funp{P}(\seq{y}|\seq{p})$当作教师模型,源语言($\seq{x}$)到目标语言($\seq{y}$)的翻译模型$\funp{P}(\seq{y}|\seq{x})$当作学生模型。然后,用教师模型来指导学生模型的训练,这个过程中学习的目标就是让$\funp{P}(\seq{y}|\seq{x})$尽可能接近$\funp{P}(\seq{y}|\seq{p})$,这样学生模型就可以学习到源语言到目标语言的翻译知识
\parinterval 为了缓解基于枢轴语言的方法中存在的错误传播等问题,可以采用基于知识蒸馏的方法\upcite{DBLP:journals/corr/ChenLCL17,DBLP:conf/iclr/TanRHQZL19}。知识蒸馏是一种常用的模型压缩方法\upcite{Hinton2015Distilling},基于教师-学生框架,在第十三章已经进行了详细介绍。针对低资源翻译任务,基于教师-学生框架的方法基本思想如图\ref{fig:16-12}所示。其中,虚线表示具有平行语料库的语言对,带有箭头的实线表示翻译方向。这里,将枢轴语言($\seq{p}$)到目标语言($\seq{y}$)的翻译模型$\funp{P}(\seq{y}|\seq{p})$当作教师模型,源语言($\seq{x}$)到目标语言($\seq{y}$)的翻译模型$\funp{P}(\seq{y}|\seq{x})$当作学生模型。然后,用教师模型来指导学生模型的训练,这个过程中学习的目标就是让$\funp{P}(\seq{y}|\seq{x})$尽可能接近$\funp{P}(\seq{y}|\seq{p})$,这样学生模型就可以学习到源语言到目标语言的翻译知识。举个例子,假设图\ref{fig:16-12}$\seq{x}$为源语言德语 “hallo”,$\seq{p}$为中间语言英语 “hello”,$\seq{y}$为目标语言法语“bonjour”,则德语“hallo”翻译为法语“bonjour”的概率应该与英语“hello”翻译为法语“bonjour”的概率相近
%----------------------------------------------
\begin{figure}[h]
\centering
......@@ -421,7 +409,7 @@
\label{eq:16-8}
\end{eqnarray}
\parinterval 和基于枢轴语言的方法相比,基于教师-学生框架的方法无需训练源语言到枢轴语言的翻译模型,也就无需经历两次翻译过程,翻译效率有所提升,又避免了两次翻译所面临的错误传播问题。举个例子,假设图\ref{fig:16-12}$\seq{x}$为源语言德语 “hallo”,$\seq{p}$为中间语言英语 “hello”,$\seq{y}$为目标语言法语“bonjour”,则德语“hallo”翻译为法语“bonjour”的概率应该与英语“hello”翻译为法语“bonjour”的概率相近
\parinterval 和基于枢轴语言的方法相比,基于知识蒸馏的方法无需训练源语言到枢轴语言的翻译模型,也就无需经历两次翻译过程,翻译效率有所提升,又避免了两次翻译所面临的错误传播问题
\parinterval 不过,基于知识蒸馏的方法仍然需要显性地使用枢轴语言进行桥接,因此仍然面临着“源语言$\to$枢轴语言$\to$目标语言”转换中信息丢失的问题。比如,当枢轴语言到目标语言翻译效果较差时,由于教师模型无法提供准确的指导,学生模型也无法取得很好的学习效果。
......@@ -431,9 +419,9 @@
\subsection{基于迁移学习的方法}
\parinterval {\small\bfnew{迁移学习}}\index{迁移学习}(Transfer Learning)\index{Transfer Learning}是一种机器学习的方法,指的是一个预训练的模型被重新用在另一个任务中,而并不是从头训练一个新的模型\upcite{DBLP:journals/corr/HintonVD15}。迁移学习的目标是将某个领域或任务上学习到的知识应用到不同但相关的领域或问题中。在机器翻译中,可以用富资源语言的知识来改进低资源语言上的机器翻译性能,将富资源语言中的知识迁移到低资源语言中。
\parinterval {\small\bfnew{迁移学习}}\index{迁移学习}(Transfer Learning)\index{Transfer Learning}是一种机器学习的方法,指的是一个预训练的模型被重新用在另一个任务中,而并不是从头训练一个新的模型\upcite{DBLP:journals/corr/HintonVD15}。迁移学习的目标是将某个领域或任务上学习到的知识应用到不同但相关的领域或问题中。在机器翻译中,可以用富资源语言的知识来改进低资源语言上的机器翻译性能,也就是将富资源语言中的知识迁移到低资源语言中。
\parinterval 基于枢轴语言的方法需要显性地建立“源语言$\to$枢轴语言$\to$目标语言”的路径。这时,如果路径中某处出现了问题,就会成为整个路径的瓶颈。如果使用多个枢轴语言,这个问题就会更加严重。不同于基于枢轴语言的方法,迁移学习无需进行两步解码,也就避免了翻译路径中累积错误的问题。
\parinterval 基于枢轴语言的方法需要显性地建立“源语言$\to$枢轴语言$\to$目标语言”的路径。这时,如果路径中某处出现了问题,就会成为整个路径的瓶颈。如果使用多个枢轴语言,这个问题就会更加严重。不同于基于枢轴语言的方法,迁移学习无需进行两步解码,也就避免了翻译路径中错误累积的问题。
\parinterval 基于迁移学习的方法思想非常简单,如图\ref{fig:16-13}所示。这种方法无需像传统的机器学习一样为每个任务单独训练一个模型,它将所有任务分类为源任务和目标任务,目标就是将源任务中的知识迁移到目标任务当中。
%----------------------------------------------
......@@ -452,7 +440,7 @@
%----------------------------------------------------------------------------------------
\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-14}中,左侧模型为父模型,右侧模型为子模型。这里假设从英语到汉语的翻译为富资源翻译,从英语到德语的翻译为低资源翻译,则首先用英中双语平行语料库训练出一个初始化的父模型,之后再用英语到德语的数据在父模型上微调得到子模型,这个子模型即为迁移学习的模型。此过程可以看作是在富资源语言训练模型上对低资源语言进行微调,将富资源语言中的知识迁移到低资源语言中,从而提升低资源语言的模型性能。
\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-14}中,左侧模型为父模型,右侧模型为子模型。这里假设从英语到汉语的翻译为富资源翻译,从英语到德语的翻译为低资源翻译,则首先用英中双语平行语料库训练出一个父模型,之后再用英语到德语的数据在父模型上微调得到子模型,这个子模型即为迁移学习的模型。此过程可以看作是在富资源语言训练模型上使用低资源语言的数据进行微调,将富资源语言中的知识迁移到低资源语言中,从而提升低资源语言的模型性能。
%----------------------------------------------
\begin{figure}[h]
......@@ -470,7 +458,7 @@
%----------------------------------------------------------------------------------------
\subsubsection{2. 多语言单模型系统} \label{sec:multi-lang-single-model}
\parinterval 多语言单模型方法也可以被看做是一种迁移学习。多语言单模型方法能够有效地改善低资源神经机器翻译性能\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17,DBLP:conf/lrec/RiktersPK18,dabre2020survey},尤其适用于翻译方向较多的情况,因为为每一个翻译方向单独训练一个模型是不实际的,不仅因为设备资源和时间上的限制,还因为很多翻译方向都没有双语平行数据。比如,要翻译100个语言之间互译的系统,理论上就需要训练$100 \times 99$个翻译模型,代价是十分巨大的。这时就需要用到{\small\bfnew{多语言单模型方法}}\index{多语言单模型方法}(Multi-lingual Single Model-based Method\index{Multi-lingual Single Model-based Method}
\parinterval {\small\bfnew{多语言单模型方法}}\index{多语言单模型方法}(Multi-lingual Single Model-based Method\index{Multi-lingual Single Model-based Method})也可以被看做是一种迁移学习。多语言单模型方法能够有效地改善低资源神经机器翻译性能\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17,DBLP:conf/lrec/RiktersPK18,dabre2020survey},尤其适用于翻译方向较多的情况,因为为每一个翻译方向单独训练一个模型是不实际的,不仅因为设备资源和时间上的限制,还因为很多翻译方向都没有双语平行数据。比如,要翻译100个语言之间互译的系统,理论上就需要训练$100 \times 99$个翻译模型,代价是十分巨大的。这时就需要用到多语言单模型方法
\parinterval 多语言单模型系统是指用单个模型训练具有多个语言翻译方向的系统。对于源语言集合$\seq{G}_x$和目标语言集合$\seq{G}_y$,多语言单模型的学习目标是学习一个单一的模型,这个模型可以进行任意源语言到任意目标语言的翻译,即同时支持所有$\{(l_x,l_y)|x \in \seq{G}_x,y \in \seq{G}_y)\}$的翻译。多语言单模型方法又可以进一步分为一对多\upcite{DBLP:conf/acl/DongWHYW15}、多对一\upcite{DBLP:journals/tacl/LeeCH17}和多对多\upcite{DBLP:conf/naacl/FiratCB16}的方法。不过这些方法本质上是相同的,因此这里以多对多翻译为例进行介绍。
......@@ -496,7 +484,7 @@
\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{无监督机器翻译}(Unsupervised Machine Translation\index{Un-supervised Machine Translation})。
\parinterval 直接进行无监督机器翻译是很困难的。一个简单可行的思路是把问题进行分解,然后分别解决各个子问题,最后形成完整的解决方案。放到无监督机器翻译里面,可以首先使用无监督方法寻找词与词之间的翻译,然后在此基础上,进一步得到句子到句子的翻译模型。这种“由小到大”的建模思路十分类似于统计机器翻译中的方法(见\chapterseven)。
......@@ -507,7 +495,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-16}所示。较早的尝试是使用一个包含数千词对的种子词典作为锚点来学习从源语言到目标语词言嵌入空间的线性映射,将两个语言的单词投影到共享的嵌入空间之后,执行一些对齐算法即可得到双语词典\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}可用于处理语种间单词级别翻译的任务。在统计机器翻译中,词典归纳是一项核心的任务,它从双语平行语料中发掘互为翻译的单词,是翻译知识的主要来源\upcite{黄书剑0统计机器翻译中的词对齐研究}。在端到端神经机器翻译中,词典归纳通常被用到无监督机器翻译、多语言机器翻译等任务中。在神经机器翻译中,单词通过实数向量来表示,即词嵌入。所有单词分布在一个多维空间中,而且研究人员发现:词嵌入空间在各种语言中显示出类似的结构,这使得直接利用词嵌入来构建双语词典成为可能\upcite{DBLP:journals/corr/MikolovLS13}。其基本想法是先将来自不同语言的词嵌入投影到共享嵌入空间中,然后在这个共享空间中归纳出双语词典,原理如图\ref{fig:16-16}所示。较早的尝试是使用一个包含数千词对的种子词典作为锚点来学习从源语言到目标语词言嵌入空间的线性映射,将两个语言的单词投影到共享的嵌入空间之后,执行一些对齐算法即可得到双语词典\upcite{DBLP:journals/corr/MikolovLS13}。最近的研究表明,词典归纳可以在更弱的监督信号下完成,这些监督信号来自更小的种子词典\upcite{DBLP:conf/acl/VulicK16}、 相同的字符串\upcite{DBLP:conf/iclr/SmithTHH17},甚至仅仅是共享的数字\upcite{DBLP:conf/acl/ArtetxeLA17}
%----------------------------------------------
\begin{figure}[h]
\centering
......@@ -566,7 +554,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})来获得近似解:
\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 \\
......@@ -575,7 +563,7 @@
\label{eq:16-10}
\end{eqnarray}
\noindent 其中, $\|\cdot\|_{\mathrm{F}}$表示矩阵的Frobenius范数,即矩阵元素绝对值的平方和再开方,$d$embedding的维度,$\mathbb{R}$是实数,$O_d(\mathbb{R})$表示$d\times d$的实数空间,$\operatorname{SVD}(\cdot)$表示奇异值分解,$\mathbi{Y}'$$\mathbi{X}'$中的单词来自$D$且行对齐。利用上式可以获得新的$\mathbi{W}$,通过$\mathbi{W}$可以归纳出新的$D$,如此迭代进行微调最后即可以得到收敛的$D$
\noindent 其中, $\|\cdot\|_{\mathrm{F}}$表示矩阵的Frobenius范数,即矩阵元素绝对值的平方和再开方,$d$词嵌入的维度,$\mathbb{R}$是实数,$O_d(\mathbb{R})$表示$d\times d$的实数空间,$\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}
......@@ -592,7 +580,7 @@
\item 词典归纳依赖于基于大规模单语数据训练出来的词嵌入,而词嵌入会受到单语数据的来源、数量、词向量训练算法、超参数配置等多方面因素的影响,这很容易导致不同情况下词嵌入结果的差异很大。
\vspace{0.5em}
\item 词典归纳强烈依赖于词嵌入空间近似同构的假设,然而许多语言之间天然的差异导致该假设并不成立。因为无监督系统通常是基于两阶段的方法,起始阶段由于缺乏监督信号的引导很容易就失败,从而导致后面的阶段无法有效运行\upcite{DBLP:conf/acl/SogaardVR18,A2020Li}
\item 词典归纳强烈依赖于词嵌入空间近似同构的假设,然而许多语言之间天然的差异导致该假设并不成立。因为无监督系统通常是基于两阶段的方法,起始阶段由于缺乏监督信号很难得到质量较高的种子词典,进而导致后续阶段无法完成准确的词典归纳\upcite{DBLP:conf/acl/SogaardVR18,A2020Li}
\vspace{0.5em}
\item 由于词嵌入这种表示方式的局限性,模型无法实现单词多对多的对齐,而且对于一些相似的词或者实体,模型也很难实现对齐。
......@@ -607,7 +595,7 @@
\subsection{无监督统计机器翻译}
\parinterval 在无监督词典归纳的基础上,可以进一步得到句子间的翻译,实现无监督机器翻译\upcite{DBLP:journals/talip/MarieF20}。统计机器翻译作为机器翻译的主流方法,对其进行无监督学习可以帮助构建初始的无监督机器翻译系统。这样,它可以进一步被用于训练更为先进的无监督神经机器翻译系统。以基于短语的统计机器翻译为例,系统主要包含短语表、语言模型、调序模型以及权重调优等模块(见{\chapterseven})。其中短语表和模型调优需要双语数据,而语言模型和调序模型只依赖于单语数据。因此,如果可以通过无监督的方法完成短语表和权重调优,那么就得到了无监督统计机器翻译系统\upcite{DBLP:conf/emnlp/ArtetxeLA18}
\parinterval 在无监督词典归纳的基础上,可以进一步得到句子间的翻译,实现无监督机器翻译\upcite{DBLP:journals/talip/MarieF20}。统计机器翻译作为机器翻译的主流方法,对其进行无监督学习可以帮助构建初始的无监督机器翻译系统,从而进一步帮助训练更为先进的无监督神经机器翻译系统。以基于短语的统计机器翻译为例,系统主要包含短语表、语言模型、调序模型以及权重调优等模块(见{\chapterseven})。其中短语表和模型调优需要双语数据,而语言模型和调序模型只依赖于单语数据。因此,如果可以通过无监督的方法完成短语表和权重调优,那么就得到了无监督统计机器翻译系统\upcite{DBLP:conf/emnlp/ArtetxeLA18}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
......@@ -683,9 +671,9 @@
%----------------------------------------------------------------------------------------
\subsubsection{4. 其它问题}
\parinterval 实际上无监督神经机器翻译模型的训练并不简单。一般可以认为,在生成的伪数据上优化模型会使模型变得更好,这时候对这个更好的模型使用数据增强的手段(如回译等)就可以生成更好的训练数据。这样的一个数据优化过程依赖于一个假设:模型经过参数优化后会生成比原始数据更好的数据。而在数据优化和参数优化的共同影响下,模型非常容易拟合数据中的简单模式,使得在数据优化过程中模型倾向产生包含这种简单模式的数据,然后模型对这种类型数据过拟合,最后训练模型的损失可以下降到很低,然而模型生成的结果却非常差。一个常见的问题就是模型对任何输入都输出相同的译文,这时候翻译模型无法产生任何有意义的结果,而它的训练过程则退化成普通的语言模型(数据优化产生的数据里无论什么目标语言对应的源语言都是同一个句子)。这种情况下翻译模型虽然能降低损失(训练语言模型),但是它不能学会任何源语言跟目标语言之间的对应关系,也就无法进行正确翻译。这个现象也反映出无监督机器翻译训练的脆弱性。
\parinterval 实际上无监督神经机器翻译模型的训练并不简单。一般可以认为,在生成的伪数据上优化模型会使模型变得更好,这时候对这个更好的模型使用数据增强的手段(如回译等)就可以生成更好的训练数据。这样的一个数据优化过程依赖于一个假设:模型经过参数优化后会生成比原始数据更好的数据。而在数据优化和参数优化的共同影响下,模型非常容易拟合数据中的简单模式,使得在数据优化过程中模型倾向产生包含这种简单模式的数据,造成模型对这种类型数据过拟合的现象。一个常见的问题就是模型对任何输入都输出相同的译文,这时候翻译模型无法产生任何有意义的结果,而它的训练过程则退化成普通的语言模型(数据优化产生的数据里无论什么目标语言对应的源语言都是同一个句子)。这种情况下翻译模型虽然能降低损失(训练语言模型),但是它不能学会任何源语言跟目标语言之间的对应关系,也就无法进行正确翻译。这个现象也反映出无监督机器翻译训练的脆弱性。
\parinterval 比较常见的解决方案是在双语数据对应的目标函数外增加一个语言模型的目标函数。因为,在初始阶段,由于数据中存在大量不通顺的句子,额外的语言模型目标函数能把部分句子纠正过来,使得模型逐渐生成更好的数据\upcite{DBLP:conf/emnlp/LampleOCDR18}。这个方法在实际中非常有效,尽管目前还没有太多理论上的支持。
\parinterval 比较常见的解决方案是在双语数据对应的目标函数外增加一个语言模型的目标函数。因为,在初始阶段,由于数据中存在大量不通顺的句子,额外的语言模型目标函数能把部分句子纠正过来,使得模型逐渐生成更好的数据\upcite{DBLP:conf/emnlp/LampleOCDR18}。这个方法在实际应用中非常有效,尽管目前还没有太多理论上的支持。
\parinterval 无监督神经机器翻译还有两个关键的技巧:
\begin{itemize}
......@@ -733,7 +721,7 @@
\end{table}
%----------------------------------------------
\parinterval 实际当中三种形式的噪声函数都会被使用到,其中在交换方法中距离越相近的词越容易被交换,并且保证被交换的词的对数有限,而删除和空白方法里词的删除和替换概率通常都会设置的非常低,如$0.1$等。
\parinterval 实际应用中以上三种形式的噪声函数都会被使用到,其中在交换方法中距离越相近的词越容易被交换,并且保证被交换的词的对数有限,而删除和空白方法里词的删除和替换概率通常都会设置的非常低,如$0.1$等。
%----------------------------------------------------------------------------------------
% NEW SECTION 16.5
......
......@@ -18,7 +18,7 @@
\node[anchor=south,font=\footnotesize,inner sep=0pt] (cache)at ([yshift=2em,xshift=1.5em]key.north){\small\bfnew{Cache}};
\node[draw,anchor=east,minimum size=1.8em,fill=orange!15] (dt) at ([yshift=2.1em,xshift=-4em]key.west){${\mathbi{d}}_{t}$};
\node[anchor=north,font=\footnotesize] (readlab) at ([xshift=2.8em,yshift=0.3em]dt.north){\red{reading}};
\node[anchor=north,font=\footnotesize] (readlab) at ([xshift=2.8em,yshift=0.3em]dt.north){\red{读取}};
\node[draw,anchor=east,minimum size=1.8em,fill=ugreen!15] (st) at ([xshift=-3.7em]dt.west){${\mathbi{s}}_{t}$};
\node[draw,anchor=east,minimum size=1.8em,fill=red!15] (st2) at ([xshift=-0.85em,yshift=3.5em]dt.west){$ \widetilde{\mathbi{s}}_{t}$};
......@@ -27,10 +27,10 @@
\draw[-,thick] (add.0) -- (add.180);
\draw[-,thick] (add.90) -- (add.-90);
\node[anchor=north,inner sep=0pt,font=\footnotesize,text=red] at ([xshift=-0.08em,yshift=-1em]add.south){combining};
\node[anchor=north,inner sep=0pt,font=\footnotesize,text=red] at ([xshift=-0em,yshift=-0.5em]add.south){融合};
\node[draw,anchor=east,minimum size=1.8em,fill=yellow!15] (ct) at ([xshift=-2em,yshift=-3.5em]st.west){$ {\mathbi{C}}_{t}$};
\node[anchor=north,font=\footnotesize] (matchlab) at ([xshift=6.7em,yshift=-0.1em]ct.north){\red{mathching}};
\node[anchor=north,font=\footnotesize] (matchlab) at ([xshift=6.7em,yshift=-0.1em]ct.north){\red{匹配}};
\node[anchor=east] (y) at ([xshift=-6em,yshift=1em]st.west){$\mathbi{y}_{t-1}$};
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论