Commit 82b1f14a by 曹润柘

update 16

parent a5b48227
......@@ -32,7 +32,7 @@
\section{单语数据的使用}
\parinterval 在统计机器翻译时代,使用单语数据训练语言模型就是构建机器翻译系统的关键步骤。好的语言模型往往会带来性能的增益。而这个现象在神经机器翻译中似乎并不明显,因为在大多数神经机器翻译的范式中,并不要求使用大规模单语数据来帮助机器翻译系统。甚至,连语言模型都不会作为一个独立的模块。这一方面是由于神经机器翻译系统的解码端本身就起着语言模型的作用,另一方面是由于数据的增多使得翻译模型可以更好的捕捉目标语言的规律。但是,双语数据总是有限的。很多场景下,单语数据的规模会远大于双语数据。比如,在专利翻译的很多细分领域中,双语数据的规模十分有限,但是有大量的和领域相关的单语数据。如果能够让这些单语数据发挥作用,显然是一种非常好的选择。在神经机器翻译中使用单语数据面临这两方面问题:
\parinterval 在统计机器翻译时代,使用单语数据训练语言模型就是构建机器翻译系统的关键步骤。好的语言模型往往会带来性能的增益。而这个现象在神经机器翻译中似乎并不明显,因为在大多数神经机器翻译的范式中,并不要求使用大规模单语数据来帮助机器翻译系统。甚至,连语言模型都不会作为一个独立的模块。这一方面是由于神经机器翻译系统的解码端本身就起着语言模型的作用,另一方面是由于数据的增多使得翻译模型可以更好的捕捉目标语言的规律。但是,双语数据总是有限的。很多场景下,单语数据的规模会远大于双语数据。比如,在专利翻译的很多细分领域中,双语数据的规模十分有限,但是有大量的和领域相关的单语数据。如果能够让这些单语数据发挥作用,显然是一种非常好的选择。在神经机器翻译中使用单语数据主要面临着两方面问题:
\begin{itemize}
\vspace{0.5em}
......@@ -72,7 +72,7 @@
\vspace{0.5em}
\item 伪双语句对的源语言是模型生成的翻译结果,保留了两种语言之间的互译信息,相比真实数据又存在一定的噪声。神经机器翻译模型在伪双语句对上进行训练,可以学习到如何处理带有噪声的输入,提高了模型的鲁棒性;
\vspace{0.5em}
\item 伪双语句对的目标语言是真实的句子,保证了神经机器翻译模型生成结果的流度,因此可以得到更符合人类阅读习惯的翻译结果。
\item 伪双语句对的目标语言是真实的句子,保证了神经机器翻译模型生成结果的流度,因此可以得到更符合人类阅读习惯的翻译结果。
\vspace{0.5em}
\end{itemize}
......@@ -87,14 +87,14 @@
\end{figure}
%-------------------------------------------
\parinterval 然而,研究人员发现,在低资源语种上,由于缺乏双语数据,高质量的伪双语数据对于模型来说更有帮助。而在富资源语种中,对回译产生的源语言句子添加一些噪声,提高翻译结果的多样性,反而可以达到更好的效果,比较常用的方法是使用采样或TopK解码\upcite{DBLP:conf/emnlp/EdunovOAG18}
\parinterval 然而,研究人员发现,在低资源语种上,由于缺乏双语数据,高质量的伪双语数据对于模型来说更有帮助。而在富资源语种中,对回译产生的源语言句子添加一些噪声,提高翻译结果的多样性,反而可以达到更好的效果,比较常用的方法是使用采样或{\rm{TopK}}解码\upcite{DBLP:conf/emnlp/EdunovOAG18}
\parinterval 回译常用的解码方式为束搜索,在生成每个词的时候只考虑预测概率最高的词,因此生成的翻译结果质量更高,但导致的问题是翻译结果主要都是一些高频词,缺乏多样性,生成的伪数据也就很难去准确地覆盖真实的数据分布\upcite{DBLP:conf/icml/OttAGR18}。采样解码是指在解码过程中,对词表中所有的词按照预测概率进行随机采样,因此整个词表中的词都有可能被选中,从而使生成结果更具多样性,但翻译质量和流利度也会明显下降。TopK解码是对束搜索和采样解码的一个折中方法。在解码过程中,TopK解码对词表中预测概率最高的前K个词进行随机采样,这样在保证翻译结果准确性的前提下,也提高了结果的多样性。由于采样和TopK解码只在生成的源语言句子中引入了多样性,因此也可以提高对包含低频词或噪声句子的训练次数。三种方法如图\ref{fig:16-3-xc}所示。
\parinterval 回译常用的解码方式为束搜索,在生成每个词的时候只考虑预测概率最高的词,因此生成的翻译结果质量更高,但导致的问题是翻译结果主要都是一些高频词,缺乏多样性,生成的伪数据也就很难去准确地覆盖真实的数据分布\upcite{DBLP:conf/icml/OttAGR18}。采样解码是指在解码过程中,对词表中所有的词按照预测概率进行随机采样,因此整个词表中的词都有可能被选中,从而使生成结果更具多样性,但翻译质量和流畅度也会明显下降。{\rm{TopK}}解码是对束搜索和采样解码的一个折中方法。在解码过程中,{\rm{TopK}}解码对词表中预测概率最高的前K个词进行随机采样,这样在保证翻译结果准确性的前提下,也提高了结果的多样性。由于采样和{\rm{TopK}}解码只在生成的源语言句子中引入了多样性,因此也可以提高对包含低频词或噪声句子的训练次数。三种方法如图\ref{fig:16-3-xc}所示。
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter16/Figures/figure-contrast-diagram-of-beam-search-topk-and-sampling}
\input{./Chapter16/Figures/figure-contrast-diagram-of-beam-search-TopK-and-sampling}
\caption{回译的三种解码方式}
\label{fig:16-3-xc}
\end{figure}
......@@ -108,6 +108,10 @@
\parinterval 除利用回译方法生成伪数据外,另外一种数据增强技术是在原始的双语数据上进行操作得到伪数据,常用的方法包括加噪、词替换等。
\begin{itemize}
\vspace{0.5em}
\item {\small\sffamily\bfnew{加噪}}
\parinterval 加噪是指在保证句子整体语义的情况下,对原始的双语数据适当加入一些噪声,从而生成伪双语数据来增加训练数据量。常用的加噪方法主要有以下三种:
\begin{itemize}
......@@ -131,20 +135,23 @@
\end{figure}
%-------------------------------------------
\parinterval 和回译方法相似,加噪方法一般仅在源语言句子上进行操作,既保证了目标语言句子的流利度,又可以提高训练数据量,增加数据的多样性。加噪方法也被用于训练降噪自编码器,在无监督机器翻译中也得到了广泛应用,详细方法可以参考xxx小节。
\parinterval 和回译方法相似,加噪方法一般仅在源语言句子上进行操作,既保证了目标语言句子的流畅度,又可以提高训练数据量,增加数据的多样性。加噪方法也被用于训练降噪自编码器,在无监督机器翻译中也得到了广泛应用,详细方法可以参考xxx小节。
\vspace{0.5em}
\item {\small\sffamily\bfnew{词替换}}
\parinterval 将一个句子中的某个词替换为其他词,可能并不会影响句子的合理性和流度。比如,对于“我出去玩。”这句话,将“我”替换为“你”、“他”、“我们”或是将“玩”替换为“骑车”、“学习”、“吃饭”等,虽然改变了语义,但句子仍然是合理的。词替换方法即是将双语数据中的部分词替换为词表中的其他词,在保证句子的语义或语法的前提下,增加了训练数据的多样性。
\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{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$,可以根据前面的文本和前向语言模型得到前向候选稀有词,如公式所示:
\begin{eqnarray}
\overrightarrow{C} = \{s_i^{'} \in V_R: TopK \funp{P}_{\rm{ForwardLM}}(s_i^{'} | s_i^{i-1})\}
\overrightarrow{C} = \{s_i^{'} \in V_R: {\rm{TopK}} \funp{P}_{\rm{ForwardLM}}(s_i^{'} | s_i^{i-1})\}
\end{eqnarray}
\parinterval 这里,$V_R$表示稀有词词表,可以设定为训练数据中出现次数最少的部分词或出现次数小于一定阈值的部分词,$\funp{TopK}$表示选择预测概率最高的前K个词。如果这K个词在稀有词词表$V_R$中,则将其加入到前向候选稀有词中。同样,利用后面的文本和反向语言模型得到后向候选稀有词:
\parinterval 这里,$V_R$表示稀有词词表,可以设定为训练数据中出现次数最少的部分词或出现次数小于一定阈值的部分词,$\funp{{\rm{TopK}}}$表示选择预测概率最高的前K个词。如果这K个词在稀有词词表$V_R$中,则将其加入到前向候选稀有词中。同样,利用后面的文本和反向语言模型得到后向候选稀有词:
\begin{eqnarray}
\overleftarrow{C} = \{s_i^{'} \in V_R: TopK \funp{P}_{\rm{BackwardLM}}(s_i^{'} | s_i^{i-1})\}
\overleftarrow{C} = \{s_i^{'} \in V_R: {\rm{TopK}} \funp{P}_{\rm{BackwardLM}}(s_i^{'} | s_i^{i-1})\}
\end{eqnarray}
\parinterval 然后,就可以选择同时出现在前向候选稀有词和反向候选稀有词的单词:
......@@ -153,7 +160,10 @@
{C} = \{s_i | s_i^{'} \in \overrightarrow{C} \wedge s_i^{'} \in \overleftarrow{C}\}
\end{eqnarray}
\parinterval 前向和反向语言模型均可以使用海量的单语数据训练得到。通过这种方法,选取到的稀有词保证了替换后句子的句法合理性以及流利度。最后,根据词对齐找到替换词在目标语言句子中对应的位置$j$,根据翻译词典等方法,就可以将目标语言句子中的$t_j$替换为$s_i^{'}$对应的翻译结果$t_j^{'}$,从而生成得到伪双语数据。
\parinterval 前向和反向语言模型均可以使用海量的单语数据训练得到。通过这种方法,选取到的稀有词保证了替换后句子的句法合理性以及流畅度。最后,根据词对齐找到替换词在目标语言句子中对应的位置$j$,根据翻译词典等方法,就可以将目标语言句子中的$t_j$替换为$s_i^{'}$对应的翻译结果$t_j^{'}$,从而生成得到伪双语数据。
\vspace{0.5em}
\end{itemize}
\subsubsection{3. 双语句对挖掘}
......@@ -173,12 +183,8 @@
\parinterval 另外一种比较有效的方法是根据两种语言中每个句子的句向量来抽取。首先,对于两种语言的每个句子,分别使用词嵌入加权平均等方法计算得到蕴含句子语义信息的句向量,然后计算每个源语言句子和目标语言句子之间的余弦相似度,相似度大于一定阈值的句对则认为是可用的双语句对\cite{DBLP:conf/emnlp/WuZHGQLL19}。然而,不同语言单独训练得到的词嵌入可能在不同的表示空间,因此得到的句向量无法用于衡量两个句子的相似度。为了解决这个问题,一般使用在同一表示空间的跨语言词嵌入来表示两种语言的单词,在跨语言词嵌入中,不同语言相同意思的词对应的词嵌入具有较高的相似性,因此得到的句向量也就可以用于衡量两个句子是否表示相似的语义。关于跨语言词嵌入的具体内容,可以参考xxx(双语词典归纳一节)。
(扩展阅读)
% \parinterval 此外,回译的扩展工作还包括如何选择单语数据来生成伪数据\upcite{DBLP:conf/emnlp/FadaeeM18,DBLP:conf/nlpcc/XuLXLLXZ19}、如何更有效地在伪数据和真实数据上进行训练\upcite{DBLP:conf/wmt/CaswellCG19,DBLP:conf/emnlp/WangLWLS19}、采用迭代回译的方法逐步生成高质量的伪数据\upcite{DBLP:journals/corr/abs200111327,DBLP:journals/corr/abs200403672},感兴趣的可以自行阅读相关论文。
\parinterval 除此之外,还有很多工作对数据增强方法进行了深入的研究与探讨。探索源语言单语数据在神经机器翻译中的使用方法\upcite{DBLP:conf/emnlp/ZhangZ16};选择何种单语数据来生成伪数据带来的收益更大\upcite{DBLP:conf/emnlp/FadaeeM18,DBLP:conf/nlpcc/XuLXLLXZ19};通过特别标识对真实双语和回译生成的伪双语数据进行区分\upcite{DBLP:conf/wmt/CaswellCG19};在回译过程中对训练数据进行动态选择与加权\upcite{DBLP:journals/corr/abs200403672};利用目标端单语数据和相关的富资源语言进行数据增强\upcite{DBLP:conf/acl/XiaKAN19};通过在源语或目标语中随机选择某些词,将这些词替换为词表中随机的一个词,可以得到伪双语数据\upcite{DBLP:conf/emnlp/WangPDN18};随机选择句子中的某个词,将这个词的词嵌入替换为多个语义相似词的加权表示融合\upcite{DBLP:conf/acl/GaoZWXQCZL19};基于模型的不确定性来量化预测结果的置信度,从而提升回译方法的性能\upcite{DBLP:conf/emnlp/WangLWLS19};探索如何利用大规模单语数据\upcite{DBLP:conf/emnlp/WuWXQLL19};还有一些工作对数据增强进行了理论分析\upcite{DBLP:conf/emnlp/LiLHZZ19}
[On integrating a language model into neural machine translation]
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
......@@ -187,9 +193,12 @@
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\parinterval 单语数据是一种无标注的数据形式,而自然语言处理领域中最常用的无监督任务是语言模型,用来描述文字序列出现的规律。语言模型在训练过程中逐渐具备了特征提取的作用,并且考虑了生成结果的流畅度。因此,通过单语数据训练语言模型,然后应用在神经机器翻译模型中,也是一种有效的辅助方法。下面从语言模型融合、预训练、联合训练等方向介绍基于语言模型的单语数据使用。
\subsubsection{1. 语言模型融合}
\parinterval 单语数据是一种无标注的数据形式,而自然语言处理领域中最常用的无监督任务是语言模型,用来描述文字序列出现的规律。神经机器翻译模型本身也具备了语言模型的作用,在解码阶段,不只考虑和源语言句子的对应程度,也考虑了句子的流畅度。然而,神经机器翻译模型训练数据是较为有限的,而语言模型可以使用海量的单语数据进行训练,预测结果的流畅度更高。因此,融合语言模型和神经机器翻译模型来生成翻译结果也是一种有效的单语数据使用方法。
\parinterval 单语数据是一种无标注的数据形式,而自然语言处理领域中最常用的无监督任务是语言模型,用来描述文字序列出现的规律。神经机器翻译模型本身也具备了语言模型的作用,在解码阶段,不仅考虑和源语言句子的语义对应,也考虑了预测的目标语言句子的流畅度。然而,训练神经机器翻译模型的双语数据是较为有限的,而语言模型可以使用海量的单语数据进行训练,预测结果的流畅度更高。因此,融合语言模型和神经机器翻译模型来生成翻译结果也是一种有效的单语数据使用方法。
\parinterval 神经机器翻译模型自回归地生成翻译结果。对于一个双语句对$(x, y)$,神经机器翻译模型根据源语言句子$x$和前面生成的词来预测当前位置词的概率分布:
......@@ -198,14 +207,13 @@
\label{eq:16-1-xc}
\end{eqnarray}
\parinterval 这里,$\theta$是神经机器翻译模型的参数,$y_{<t}$表示第$t$个词前面生成的词。神经机器翻译模型考虑了结果的忠诚度和流畅度,忠诚度是指目标语翻译结果和源语言句子的语义保持一致,流利度是指翻译结果符合人类的语言习惯。忠实度需要建模源语言和目标语言之间的对应关系,但是流利度只和目标语言有关。因此,使用海量单语数据训练的语言模型可以生成更流利的句子,将其和神经机器翻译模型的解码过程结合,可以在保证忠实度的情况下,得到更加流利的翻译结果。具体的结合方法包括两种,分别是浅融合和深融合,如图\ref{fig:16-6-xc}所示。
\parinterval 这里,$\theta$是神经机器翻译模型的参数,$y_{<t}$表示第$t$个词前面生成的词。神经机器翻译模型考虑了结果的忠诚度和流畅度,忠诚度是指目标语翻译结果和源语言句子的语义保持一致,流畅度是指翻译结果符合人类的语言习惯。忠诚度需要建模源语言和目标语言之间的对应关系,但是流畅度只和目标语言有关。使用海量单语数据训练的语言模型可以生成更流利的句子,将其和神经机器翻译模型的解码过程结合,可以在保证忠诚度的情况下,得到更加流利的翻译结果。具体的结合方法包括两种,分别是浅融合和深融合\cite{2015OnGulcehre},如图\ref{fig:16-6-xc}所示。
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter16/Figures/lm-fusion}
\caption{语言模型浅融合与深融合}
\caption{语言模型的浅融合与深融合}
\label{fig:16-6-xc}
\end{figure}
%-------------------------------------------
......@@ -220,7 +228,7 @@
\parinterval 深融合是在解码过程中,动态地融合翻译模型和语言模型的隐藏层表示来计算预测概率。
浅融合在解码过程对每个词均采用相同的语言模型权重,而深融合可以根据解码不同的词,动态选择语言模型的权重。
比如,在汉语-英语翻译系统中,英语中的冠词可能没有对应的汉语单词,这种情况下,英语语言模型可以提供更多帮助,保证翻译结果更加符合英语的语言结构;在翻译某些名词的时候,语言模型由于没有源语言句子的信息,反而会产生干扰,因此权重越小越好。
比如,在汉语-英语翻译系统中,英语句子中的冠词可能在汉语句子中没有显式的单词对应,这种情况下,英语语言模型可以提供更多帮助,保证翻译结果更加符合英语的语言结构;而在翻译某些名词的时候,语言模型由于没有源语言句子的信息,反而会对解码过程产生干扰,因此权重越小越好。
\parinterval 深融合的预测方式为:
\begin{eqnarray}
......@@ -248,6 +256,8 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\subsubsection{2. 预训练}
{\red 预训练模型ELMo、GPT、BERT等在这里是否要详细介绍?}
\parinterval 编码器-解码器框架天然就包含了对输入(源语言)和输出(目标语言)进行表示学习的过程。比如,在编码端需要学习一种分布式表示(Distributed Representation)来表示源语言句子的信息,这种分布式表示既包含单词的表示也包括整个序列的表示。因此,可以使用更大规模的源语言单语数据完成编码器的训练。
\parinterval 实现上述想法的一种手段是{\small\sffamily\bfnew{预训练}}\index{预训练}(Pre-training)\index{Pre-training}。常用的方法是将机器翻译模型中的一部分(比如,编码器)单独提抽取出来,之后用语言建模等方式在大规模单语数据上进行训练。得到优化后的参数后,将其重新放入神经机器翻译模型中,作为模型的初始值。最后,神经机器翻译模型在双语数据上进行{\small\sffamily\bfnew{微调}}\index{微调}(Fine-tuning)\index{Fine-tuning},以得到最终的翻译模型。图\ref{fig:16-7-xc}给出了机器翻译编码器预训练流程的示意图。
......@@ -261,12 +271,14 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\end{figure}
%-------------------------------------------
\parinterval 预训练的做法相当于对目标任务进行了简化,将表示模型的学习任务从目标任务中分离出来了。这样,可以学习一种更加通用的模型,具有更好的泛化能力。此外,预训练的任务相比于机器翻译要简单许多,比如语言模型或者句子调序等。将预训练任务的结果作为机器翻译模型的初始值可以减轻目标任务上的学习负担。在第六章中已经介绍了几种基于预训练的模型,如ELMO、GPT和BERT等。这些模型的结构和神经机器翻译是兼容的,比如,BERT使用的就是Transformer模型。因此可以直接使用这些模型进行面向机器翻译的预训练
\parinterval 预训练的做法相当于对目标任务进行了简化,将表示模型的学习任务从目标任务中分离出来了。这样,可以学习一种更加通用的模型,具有更好的泛化能力。此外,预训练的任务相比于机器翻译要简单许多,比如语言模型或者句子调序等。将预训练任务的结果作为机器翻译模型的初始值可以减轻目标任务上的学习负担。在第六章中已经介绍了几种基于预训练的模型,如ELMo、GPT和BERT等。这些模型的结构和神经机器翻译是兼容的,比如,BERT使用的也是目前神经机器翻译中主流的Transformer模型。因此,可以直接在神经机器翻译中使用这些开放的预训练模型
\begin{itemize}
\vspace{0.5em}
\item {\small\sffamily\bfnew{词嵌入预训练}}
{\red(词嵌入预训练和语言模型关系不大,是否要放在这儿?)}
\parinterval 词嵌入可以被看作是对每个独立单词进行的表示学习,在自然语言处理的众多任务中都扮演着重要角色\upcite{DBLP:journals/corr/abs-1901-09069}。因此,可以使用{\chapternine}介绍的词嵌入方法,在外部单语数据上训练得到词嵌入,并把它作为神经机器翻译系统的词嵌入输入。
\parinterval 需要注意的是,在神经机器翻译中使用预训练的词嵌入有两种方法。一种方法是直接将词嵌入作为固定的输入,也就是在训练机器翻译模型的过程中,并不调整词嵌入的参数。这样做的目的是完全将词嵌入模块独立出来,机器翻译可以被看作是在固定的词嵌入输入上进行的建模。另一种方法是仍然遵循``预训练+微调''的策略,将词嵌入作为翻译模型的初始值。之后在机器翻译训练过程中,词嵌入模型结果会被进一步更新。近些年,在词嵌入预训练的基础上进行微调的方法受到研究者越来越多的青睐。
......@@ -274,12 +286,11 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\item {\small\sffamily\bfnew{编码器预训练}}
\parinterval 编码器在神经机器翻译中的作用是对源语句子中的信息进行抽象和提取,将离散的词序列编码成一组上下文相关的向量表示,本质上就是一个源语言端的句子表示模型。因此,可以使用预训练好的句子级表示模型(比如,BERT和XLM等),来初始化编码器参数。然而在实践中发现,这种参数初始化的方法在一些富资源语种上提升效果并不明显,甚至反而有些下降\upcite{DBLP:journals/corr/abs-2002-06823}。原因可能在于预训练模型和编码器虽然都是对句子进行表示,但是由于目标任务不一致,二者的参数状态还是存在区别的。因此,也有一些做法将预训练模型和翻译模型在结构上进行融合,将预训练句子模型作为一个独立的模块来为编码器或者解码器提供句子级表示信息\upcite{DBLP:journals/corr/abs-2002-06823}
\vspace{0.5em}
\item {\small\sffamily\bfnew{序列到序列预训练}}
\parinterval 传统的预训练模型都是针对自然语言理解任务设计的,比如情感分类和命名实体识别等任务。其目的是获得更好的句子表示结果,并用于下游任务。而在机器翻译和文本摘要等序列到序列的语言生成任务中,不只包含源语言表示学习的问题,还有序列到序列的映射,以及目标端序列生成的问题,这些知识是无法通过(源语言)单语数据学习到的。为了能够在序列到序列任务上更好地使用单语数据,可以同时使用编码器和解码器的结构完成对单语数据的预训练。
\vspace{0.5em}
\end{itemize}
\parinterval 传统的预训练模型都是针对自然语言理解任务设计的,比如情感分类和命名实体识别等任务,其目的是获得更好的句子表示结果,并用于下游任务。而在机器翻译和文本摘要等序列到序列的语言生成任务中,不仅包含源语言表示学习的问题,还有序列到序列的映射,以及目标端序列生成的问题,这些知识是无法通过(源语言)单语数据学习到的。为了能够在序列到序列任务上更好地使用单语数据,可以同时使用编码器和解码器的结构完成对单语数据的预训练。
%----------------------------------------------
\begin{figure}[htp]
......@@ -290,7 +301,14 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\end{figure}
%-------------------------------------------
\parinterval 以MASS方法为例\upcite{song2019mass},可以直接对整个编码器-解码器的结构进行预训练。训练中采用掩码的方式,将源语词序列中的片段替换成特殊词<mask>,然后在解码器端预测这个未知片段,如图\ref{fig:16-8-xc}所示,\#号表示特殊词<mask>。这种做法可以使得编码器端捕捉上下文信息,同时迫使解码器依赖于编码器,学习编码器和解码器之间的注意力进行预训练。而解码器端片段的预测也使得解码器能够学习到向前依赖的上下文表示。
\parinterval 以MASS方法为例\upcite{song2019mass},可以直接对整个编码器-解码器的结构进行预训练。训练中采用掩码的方式,将源语词序列中的片段替换成特殊词<mask>,然后在解码器端预测这个未知片段,如图\ref{fig:16-8-xc}所示,\#号表示特殊词<mask>。这种做法可以使得编码器端捕捉上下文信息,同时迫使解码器依赖于编码器,学习编码器和解码器之间的注意力进行预训练。同时。解码器端片段的预测也使得解码器能够学习到向前依赖的上下文表示。
\vspace{0.5em}
\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]。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
......@@ -301,6 +319,8 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\parinterval 语言模型是使用目标端单语数据最直接的方式,但是翻译模型作为一个受限的语言模型,还需要依赖于源语,并不能直接进行多任务学习。针对这个问题,对原有翻译模型结构进行了修改,在解码器中增加了一个语言模型子层,将这个子层用于语言模型任务(图\ref{fig:16-9-xc})。在训练过程中,分别将双语数据和单语数据送入翻译模型和语言模型进行计算,得到的损失相加用于整体模型参数的梯度计算和参数更新,这里语言模型的参数是翻译模型的一部分。
{\red 参考一下上面的参考文献,图重画,不太准确}
%----------------------------------------------
\begin{figure}[htp]
\centering
......@@ -310,8 +330,7 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\end{figure}
%-------------------------------------------
\parinterval 除了多任务学习,还有一些方法将前向模型和反向模型一起训练,在训练过程中同时使用源语言端和目标语言端的单语数据来提升模型性能,双向训练的内容会在\ref{subsection-7.5.4}节中进行介绍。
\parinterval 除了多任务学习,还有一些方法将前向模型和反向模型一起训练,在训练过程中同时使用源语言端和目标语言端的单语数据来提升模型性能,在下一节中进行详细介绍。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -323,8 +342,9 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
{\red 下面这部分是从以前的内容中拷贝过来的,对偶学习和无监督部分的关联比较大,可以把对偶学习拆出去变成新的一小节?把Semi-Supervised Learning for Neural Machine Translation和Mirror-Generative Neural Machine Translation加进来?}
\subsubsection{1. 双向训练}
\label{subsection-7.5.4}
\parinterval 到目前为止,神经机器翻译系统都是每次一次只训练一个方向的模型。比如,给定中英的双语数据,一次只训练一个中到英或者英到中的翻译系统。既然两个方向的系统都使用同样的双语数据进行训练,那么是否可以一次训练同时得到两个方向的翻译系统呢?
......@@ -404,10 +424,10 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\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}
\subsubsection{triangular}
[Triangular Architecture for Rare Language Translation]
\subsubsection{三角结构训练}
{\red [Triangular Architecture for Rare Language Translation]也不是利用单语数据,而是类似于枢轴语,在这里加是否合适?}
[Semi-Supervised Learning for Neural Machine Translation]
%----------------------------------------------------------------------------------------
% NEW SECTION
......@@ -420,12 +440,18 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
【体育】The rugby tour was a disaster both on and off the pitch.
这次橄榄球巡回赛在场上、场下都彻底失败。
【化学】The timbers of similar houses were painted with pitch.
类似房屋所用的栋木刷了沥青。
【声学】A basic sense of rhythm and pitch is essential in a music teacher.
基本的韵律感和音高感是音乐教师的必备素质。
图1 单词在不同领域的不同词义实例
图 不同领域中一词多义实例
\parinterval 不同领域间不仅存在一词多义问题,常用词汇也存在着很大的区别。比如在口语领域,常用词一般较为简单,而医学领域的单词结构组成一般较为复杂。
......@@ -437,7 +463,31 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\parinterval
% 然而,特定领域的语料库通常比较稀缺或根本不存在,如果在特定领域上直接使用通用模型则性能较差。
因此,在特定领域的机器翻译模型实际使用中,对特定领域的适应性进行调整是重要的步骤之一,这种利用领域外数据和领域内数据来改进特定领域的翻译效果的方法被称作领域自适应(Domain Adaptation)。
时至今日,领域自适应的方法已经非常丰富,近几年许多基于神经网络机器翻译的领域自适应方法被提出和评估[1, 2]。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{早期领域自适应方法}
\parinterval 在统计机器翻译的年代,特定领域的领域自适应问题就已经备受关注了,为了克服数据缺乏的问题,人们提出了许多领域自适应的方法。大多数SMT领域自适应方法可以分为两类:数据方法和模型方法。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 数据方法}
\parinterval 当有足够多的其他领域双语语料时,主要是通过对域外数据评分的方式选择数据,通过语言模型、卷积神经网络模型等方式进行选择。当域外数据较少时,主要通过造伪数据的方式进行句子生成。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 模型方法}
\parinterval 在模型的训练过程中,对数据进行评分,在训练中通过规则或者统计来给每个实例进行权重评估,并进行加权训练。针对模型本身,训练与语料库对应的语言模型、翻译模型和重排序模型等各种模型,再将这些模型进行组合以实现最佳性能。
时至今日,领域自适应的方法已经非常丰富,近几年许多基于神经网络机器翻译的领域自适应方法被提出和评估[1]。
下面,我们从数据方法和模型方法对领域自适应的经典方法进行介绍。
数据方法侧重于模型中的数据部分,而不是用于领域自适应的专用模型,包括使用领域外双语数据和领域内单语数据,模型方法是用于领域自适应的神经网络机器翻译模型。
......@@ -447,7 +497,7 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\subsection{利用领域外双语数据}
\parinterval 训练一个成型的机器翻译系统往往需要使用大规模的多领域混合的数据,而不同领域的语料涵盖了不同的领域和文体,包括了政治、新闻、科技和体育等各大门类在内,除此之外,还相应地包括书面文体、口语文体和网络语言等等。这种领域和文体的差异性将会带来两个问题:其一,使用某一个领域或文体的双语语料训练得到的系统在处理同一领域的文本时效果最佳,而当应用在其他领域的文本时结果常常不尽如人意,有时的结果甚至不可接受。其二,使用多领域混合的语料训练得到的系统的通用性虽然较好,但由于多个领域数据的相互影响以及相互制约,系统在某一特定领域往往无法达到最佳效果。因此,直接使用混合数据的效果不佳,而特定领域的数据又比较稀缺,所以如何制定最佳的策略有效地利用其它领域的数据是十分重要的。在本节的叙述中,特定领域被称作目标域,其他领域被称作源域。
\parinterval 训练一个特定领域的机器翻译系统需要使用大量的数据,因为这些数据包含政治、体育、新闻、专利等不同的领域,直接使用混合数据的效果不佳,而特定领域的数据又比较稀缺,所以如何制定最佳的策略有效地利用其它领域的数据是十分重要的。在本节的叙述中,特定领域被称作目标域,其他领域被称作源域。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -455,7 +505,8 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\subsubsection{1. 多领域数据}
\parinterval 多领域数据方法类似多语言学习理念,把多个领域的数据一起送入模型,让模型可以增加基础性能,从而增强在各个领域的效果。目前比较常用的方法是在数据中加入标签来控制神经网络机器翻译模型对领域的辨别,如图2所示,主要有两个关键点:在各个领域的语料前加上<2领域>的标签来指定语料的归属领域,让神经网络模型可以更好的对不同领域生成句子;此外,把数据量较小的领域复制数倍,对各个领域的数据量进行平衡防止模型对各个领域产生不平等的关注。
\parinterval 把多个领域的数据一起送入模型,可以让模型增加基础性能,从而增强在各个领域的效果。
目前比较常用的方法是在数据中加入标签来控制神经网络机器翻译模型对领域的辨别,如图2所示,主要有两个关键点:在各个领域的语料前加上<2领域>的标签来指定语料的归属领域,让神经网络模型可以更好的对不同领域生成句子;此外,把数据量较小的领域复制数倍,对各个领域的数据量进行平衡防止模型对各个领域产生不平等的关注[2]。这一类方法在16.2.3中有详细介绍。
图2
......@@ -465,11 +516,18 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\subsubsection{2. 数据选择}
\parinterval 直接把所有的数据拿来训练模型,虽然最大程度的利用了所有资源,但却不可避免的将一些十分不相关的数据引入了模型造成了干扰,一个自然的想法就是选择出这些数据中跟目标域较为相似的数据来增强目标域的性能。数据选择是通过使用困惑度[3]或领域相似度[4]等方法从域外数据中找到一些与域内数据较为相似的数据以增加数据量,提升模型能力。可以根据句子的词嵌入来找到源域中与目标域最相似的句子,如图3所示,根据相似度排序后选择部分句子用于模型训练[5]。除了静态的保持选择好的数据一成不变,还有一种动态的数据选择方法,在每个不同的训练轮次改变所选择的训练数据子集用于神经网络机器翻译模型训练,如图4所示,逐次减少每轮的数据量,剩下最相似的数据以最后得到效果最好的领域自适应模型[6]。还可以利用课程学习的思想,根据相似度打分,将最相似的句子最先送入模型,让模型能最先学到跟目标域最相关的知识,奠定良好的基础[7]。
\parinterval 数据选择方法不需要数据有领域标签,可以使用未知领域的混合数据。直接把所有的数据拿来训练模型,虽然最大程度的利用了所有资源,但却不可避免地将一些十分不相关的数据引入了模型造成了干扰,一个自然的想法就是选择出这些数据中跟目标域较为相似的数据来增强目标域的性能。
数据选择是通过使用困惑度[3]或领域相似度[4]等方法从域外数据中找到一些与域内数据较为相似的数据以增加数据量,提升模型能力。
根据句子的词嵌入来找到源域中与目标域最相似的句子,计算源域句子向量中心CFin和目标域句子向量中心CFout与每个训练数据句子嵌入向量vf的欧氏距离差作为相似度,
式1
以相似度排序后选择部分句子用于模型训练[5],除了静态地保持选择好的数据一成不变,还可以在每个不同的训练轮次动态地改变所选择的训练数据子集用于神经网络机器翻译模型训练,如图3所示,先将完整的数据送入模型,再根据相似度逐次减少每轮的数据量,剩下最相似的数据在最后一轮送入,以最后得到在目标域上效果最好的领域自适应模型[6]。
还可以利用课程学习的思想,根据相似度打分,将最相似的句子最先送入模型,让模型能最先学到跟目标域最相关的知识,奠定良好的基础[7]。
图3
图4
多领域数据的优点在于大大提高了数据量,但在实际使用中可能会与使用通用模型一样带来词汇预测错误的问题,数据选择无需划分领域,在混合数据中进行选择,但增加的数据量较小,对低资源改善不大。使用域外双语数据的优点在于充分的利用了全部能利用的双语数据,低资源问题得到了一定程度的缓解,模型学到了更多的语言学知识。但不光引入了一些领域不相关的知识,而且可能域外双语数据本身也寥寥无几,在经过数据选择之后就变得更加不足了,对模型的帮助可能并不足够令人满意。
多领域数据的优点在于大大提高了数据量,但在实际使用中可能会与使用通用模型一样带来词汇预测错误的问题,而数据选择无需划分领域,在混合数据中进行选择,但增加的数据量较小,对低资源改善不大。使用域外双语数据的优点在于充分地利用了全部能利用的双语数据,低资源问题得到了一定程度的缓解,模型学到了更多的语言学知识。但不光引入了一些领域不相关的知识,而且可能域外双语数据本身也寥寥无几,在经过数据选择之后就变得更加不足了,对模型的帮助可能并不足够令人满意。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -477,7 +535,8 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\subsection{利用领域内单语数据}
\parinterval 机器翻译需要使用大量的双语平行数据来训练,而通常双语数据是较少的,但单语数据是大量存在的,如果可以有效地利用领域内的单语数据无疑可以增强机器翻译性能。例如在中英专利翻译任务中,中英新闻平行语料库有100万个句对,而口语领域平行语料库只有20万个句对,口语领域单语语料库却有几百万个句子,因此可以用包含几百万句子的口语单语语料库来提升口语领域的翻译质量。
\parinterval 机器翻译需要使用大量的双语平行数据来训练,而通常双语数据是较少的,但单语数据是大量存在的,如果可以有效地利用领域内的单语数据无疑可以增强机器翻译性能。
例如在中英专利翻译任务中,中英新闻平行语料库有100万个句对,而口语领域平行语料库只有20万个句对,口语领域单语语料库却有几百万个句子,因此可以用包含几百万句子的口语单语语料库来提升口语领域的翻译质量。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -485,19 +544,25 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\subsubsection{1. 直接使用单语数据}
\parinterval 机器翻译任务中,单语数据相对比较充足,所以可以利用单语数据来提升模型性能。即使是把目标端单语复制成平行语料当作双语直接训练神经网络机器翻译模型,这种简单的方法也能使BLEU增加超过一个点[8],可见单语数据在资源比较稀缺的时候是很有帮助的。除了简单地使用单语作为语料训练模型,还可以使用单语数据训练语言模型,把语言模型融合进神经网络机器翻译解码器增强翻译性能[9]。在神经网络机器翻译中可以使用源端单语数据的多任务学习框架,该框架包括翻译模型和句子重新排序模型,使用源端单语数据通过多任务学习来增强NMT编码器,用于预测翻译和重新排序的源句子[10]。
\parinterval 机器翻译任务中,单语数据相对比较充足,所以可以利用单语数据来提升模型性能。
即使是把目标端单语复制成平行语料当作双语直接训练神经网络机器翻译模型,这种简单的方法也能使BLEU增加超过一个点[8],可见单语数据在资源比较稀缺的时候是很有帮助的。
除了简单地使用单语作为语料训练模型,比较常用的方法是使用单语数据训练语言模型,如图4所示,使用单语数据训练一个RNN语言模型,并修改推断器RNN,以在语言模型层输出上操作,把语言模型融合进神经网络机器翻译推断器增强翻译性能[9]。
图4
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 伪数据}
\subsubsection{2. 使用单语数据造伪数据}
\parinterval 机器翻译任务中,标注的数据较少,而未标注的单语数据较多,并且标注的成本通常很高,所以可以用单语数据来制作伪数据以增加数据量,如图6所示,平行语料的两种语言用于制作伪数据均有效果[10-12]。通常是使用单语数据来制作平行语料伪数据,使用目标领域的数据来制作伪数据用于领域自适应尤为有效。伪数据还可以用来作为人工噪声,可以把一句话的语序随机打乱来作为伪数据,两个领域的语序可能完全不同,错误的语序可能会带来更好的学习效果[13]。如果数据稀缺程度达到没有双语数据,还可以从目标域中归纳出词汇表,然后对目标域的目标端单语数据使用反向翻译制作伪数据[14],如图7所示
图6
图7
\parinterval 机器翻译任务中,标注的数据较少,而未标注的单语数据较多,并且标注的成本通常很高,所以可以用单语数据来制作伪数据以增加数据量,源语和目标语单语数据用于制作伪数据均有效果[10-12],使用目标域的数据来制作伪数据用于领域自适应尤为有效。将伪数据和真实数据混合,增加了数据量和数据多样性,也丰富了语言的表示,可以对模型的性能有一定程度的提升
伪数据还可以用来作为人工噪声,可以把一句话的语序随机打乱来作为伪数据,两个领域的语序可能完全不同,错误的语序可能会带来更好的学习效果[13]。
如果数据稀缺程度达到没有双语数据,还可以从目标域中归纳出词汇表,然后对目标域的目标端单语数据使用回译法制作伪数据[14],如图5所示。
\parinterval 单语数据的使用大大地增加了领域内的数据量,并且保证了领域的分布不会改变。在WMT等机器翻译比赛中,对单语数据的有效利用是十分关键的一环,语言模型、伪数据等都是必不可少的制胜法宝。
图5
\parinterval 单语数据的使用大大地增加了领域内的数据量,并且保证了领域的分布不会改变,在16.1中对此类方法进行了详细的介绍。在WMT等机器翻译比赛中,对单语数据的有效利用是十分关键的一环,语言模型、伪数据等都是必不可少的制胜法宝。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -505,55 +570,68 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\subsection{领域自适应模型方法}
\parinterval 在数据已经被以各种方式充分利用后,为了克服数据稀缺这一先天条件,无疑就要为领域自适应任务开发专门的神经网络模型来提升性能。以模型为中心的方法关注专门用于领域自适应的神经网络机器翻译模型,其可以是训练目标,神经网络结构或解码算法
\parinterval 在数据已经被以各种方式充分利用后,为了克服数据稀缺这一先天条件,无疑就要为领域自适应任务开发专门的神经网络模型来提升性能。以模型为中心的方法关注专门用于领域自适应的神经网络机器翻译模型,一个机器翻译模型首先需要初始化一个模型,然后根据数据进行训练,最后训练好的模型对新的句子进行推断,所以可以从训练方法,模型结构和推断方法三个角度进行领域自适应
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 训练目标}
\subsubsection{1. 修改训练方法}
\parinterval 领域自适应的训练方法是指在模型的训练阶段改变获得训练目标的过程或是训练函数的方法,通过加权或者微调、预训练等方法更加充分的利用数据。
因为数据本身十分稀缺,所以如何更充分的利用数据是一个重要问题,最简单的方法是给数据进行加权,对源域样本进行加权采样,从而逼近目标域的分布,让模型有权重的学习样本的知识。然而因为神经网络并不是线性的,所以样本权重无法直接集成到神经网络中,可以从源域和目标域语言模型的交叉熵学习权重,从而让模型根据权重进行样本加权训练[15]。除了使用交叉熵外,还可以使用校验集训练出一个领域分类器,并修改模型的损失函数,把分类器输出的概率转化为句子的权重,让模型根据这个权重学习与目标领域最相似的句子[16]。如果把加权从句子级别精确到词级别,对每个词进行权重评分,根据词的得分综合也可以进行加权训练[17]。
\parinterval 领域自适应的训练方法是指在模型的训练阶段改变获得训练目标的过程或是训练函数的方法,通过加权或者微调等方法更加充分的利用数据。
因为数据本身十分稀缺,所以如何更充分地利用数据是一个重要问题,最简单的方法是给数据进行加权,对源域样本进行加权采样,从而逼近目标域的分布,让模型有权重的学习样本的知识。然而因为神经网络并不是线性的,所以样本权重无法直接集成到神经网络中,可以从句子与语言模型的交叉熵学习权重,从而让模型根据权重进行样本加权训练[15]。
图8 神经网络机器翻译加权
式2
\parinterval 微调是领域自适应最常用的方法,是指整个要训练的网络不是从随机状态开始,而是从一个比较好的初始状态开始微调。如图9所示,其常用方法是在资源丰富的域外语料库上对系统进行训练直至收敛,然后在资源贫乏的目标域语料库上对系统参数进行微调,这种方法经常配合预训练使用。微调会极大地增强在目标域上的翻译性能,但是会降低在源域上的翻译能力,为了解决微调后在源域上性能下降的问题,可以在源域模型上使用前文13章第5节提到的知识蒸馏技术以保证模型在源域上也有较好的翻译能力[18],也可以使用源域数据和目标域数据混合微调使两个领域的性能都有保障[19]。让源域和目标域进行多次循环知识蒸馏,如图10所示迭代地学习对方领域的知识,可以保证在源域和目标域上的翻译性能都逐步上升[20]。在微调时可能会产生过拟合问题,为了解决这一问题,可以通过dropout或L2正则化来降低过拟合现象[21]。
如式2所示,计算训练集中每个句对(xi,yi)与源域语言模型和目标域语言模型的交叉熵的差作为权重,越大越好。
如果把加权从句子级别精确到词级别,对每个词进行权重评分,根据词的得分综合也可以进行加权训练[16]。
图9微调常用方法
\parinterval 微调是领域自适应最常用的方法,是指整个要训练的网络不是从随机状态开始,而是从一个比较好的初始状态开始微调。
微调的常用方法是在资源丰富的源域语料库上对系统进行训练直至收敛,然后在资源贫乏的目标域语料库上对系统参数进行微调,这种方法经常配合预训练使用。
为了解决微调后在源域上性能下降的问题,比较常用的方法是进行混合微调,具体做法是先在源域数据上训练一个NMT模型,然后将目标域数据复制数倍于源域数据量相等并混合,使用混合数据对NMT模型进行微调。这种方法既降低了目标域数据量小导致的过拟合问题,又带来了更好的微调性能。
在混合微调外,还可以让源域和目标域进行多次循环知识蒸馏,如图6所示迭代地学习对方领域的知识,可以保证在源域和目标域上的翻译性能都逐步上升[17],知识蒸馏方法在第13章第6节中有详细介绍。还可以使用前文13.2中提到的正则化方法来降低过拟合。
10循环知识蒸馏
6循环知识蒸馏
\parinterval 预训练是提前获得一些初始化的参数,这个参数不是随机的,而是通过其他类似数据集上面学习得到的,然后再用目标领域的数据集进行学习,得到适合该领域的参数。预训练现在已成为自然语言处理中非常频繁使用的方法,只需要非常少量的标记数据去微调就可以收获一个高性能的模型。如果数据量较小,很多语言学现象无法覆盖,而预训练可以充分利用海量的无标记的自然语言处理文本,可以把语言学知识抽取出来,加强模型的泛化能力。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{模型结构}
\subsubsection{2. 修改模型结构}
\parinterval 修改训练目标的方法是在训练过程中更充分的利用数据,而更改训练模型时的神经网络结构以进行领域自适应是一种更加直观的模型方法,包括模型融合和领域判别。
\parinterval 模型融合是指通过把不同的模型融合以获得更好的效果,例如可以把循环神经网络语言模型和神经机器翻译集成为一个解码器,让模型在解码时可以从语言模型中得到指导[22],联合训练语言模型和翻译模型并将其融合会获得更好的效果[9]。
\parinterval 领域判别方法是将不同领域的数据混合起来进行训练,如图11所示,判断出要处理的数据属于哪个领域,领域鉴别器和神经网络机器翻译模型可以联合优化模型性能。可以在编码器的基础上加上前向反馈神经网络预测源语句子的领域[23],也可以使用术语频率-逆文档频率方法预测输入句子的领域标签并在嵌入层加上表示领域的嵌入,使模型可以判断输入数据的领域[24]。
\parinterval 模型融合是指通过把不同的模型融合以获得更好的效果,例如可以如前文16.1.2中把循环神经网络语言模型和神经机器翻译集成为一个推断器,联合训练语言模型和翻译模型,让模型在推断时可以从语言模型中得到指导。
\parinterval 领域判别的经典做法是将不同领域的数据混合起来进行训练,在编码器的基础上加上前向反馈神经网络作为分类器,使用3.34中的分类器方法预测源语句子的领域,领域鉴别器和神经网络机器翻译模型可以联合优化模型性能[18]。也可以使用术语频率-逆文档频率方法预测输入句子的领域标签,并如图7所示,在嵌入层加上表示领域的嵌入,使模型可以判断输入数据的领域[19]。
图7
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
图11领域鉴别器
\subsubsection{3. 修改推断算法}
\subsubsection{解码算法}
\parinterval 推断是指将输入序列转换成的向量再次转化为输出序列的过程,领域自适应的推断方法是指通过修改推断的过程获得更好的序列的方法,与其他模型方法互补,包括优化推断算法和集成推断。
\parinterval 解码是指将输入序列转换成的向量再次转化为输出序列的过程,领域自适应的解码方法是指通过修改解码的过程获得更好的序列的方法,与其他模型方法互补,包括解码打分、集成解码和优化解码算法。
\parinterval 推断算法本身也可以进行优化,通过更好的推断过程选择最佳的结果,比如可以使用一种基于堆栈的字格推断算法,在领域自适应中比常用方法有更好的效果[20]。
在推断的时候对每个新词的候选假设可以如式3计算分数,分别使用目标域的目标语语言模型和NMT的分数加权计算,选择分数最高的词作为结果[21],还可以在此基础上加入源域的目标语语言模型的分数共同打分[22]。
\parinterval 解码打分是通过打分的方式选择最佳的结果,可以把目标域的目标语的语言模型和神经机器翻译的分数如图12所示加权结合[22],还可以在此基础上加入源域的目标语语言模型的分数共同打分[25]。
式3
\parinterval 集成推断是把不同的模型集成以获得更好的翻译效果,如图13所示。为了保证在源域的翻译能力不退化,可以把多个目标域模型进行微调后与源域模型进行集成以增强推断能力[23]。集成推断也可以结合加权思想,根据扩展贝叶斯插值方法,不依赖领域标签给模型集成推断加权来获得更佳的推断结果[24]。在14.5中对集成方法进行了详细介绍。
\parinterval 训练目标从从训练的步骤和手段角度出发,模型结构从神经网络本身的构造改动,推断方法从推断模型的角度修改,三者相辅相成地增加模型的领域适应性。
图12 解码打分融合
\parinterval 集成解码是把不同的模型集成以获得更好的翻译效果,如图13所示。为了保证在源域的翻译能力不退化,可以把多个目标域模型进行微调后与源域模型进行集成以增强解码能力[26]。集成解码也可以结合加权思想,根据扩展贝叶斯插值方法,不依赖领域标签给模型集成解码加权来获得更佳的解码结果[27]。
图13集成解码
\parinterval 解码算法本身也可以进行优化,比如可以使用一种基于堆栈的字格解码算法,在领域自适应中比常用方法有更好的效果[28]。
\parinterval 训练目标从从训练的步骤和手段角度出发,模型结构从神经网络本身的构造改动,解码方法从解码模型的角度修改,三者相辅相成地增加模型的领域适应性。
参考文献
[1] Alan R, Barbara P. Neural Unsupervised Domain Adaptation in NLP---A Survey[J]. 2020.
[2] Ievgen R, Emilie M, Amaury H, et al. A survey on domain adaptation theory[J]. 2020.
[1] Chu, Chenhui, and Rui Wang. "A Survey of Domain Adaptation for Neural Machine Translation.." abs/1806.00258 (2018): 1304-1319.
[2] Chu C, Dabre R, Kurohashi S. An Empirical Com-parison of Domain Adaptation Methods for Neural Machine Translation[J]. ACL. 2017: 385-391.
[3] Axelrod A, He X, Gao J. Domain Adaptation via Pseudo In-Domain Data Selection[Z]. Edinburgh(GB): 2011355-362.
[4] Remus R. Domain Adaptation Using Domain Similarity- and Domain Complexity-Based Instance Selection for Cross-Domain Sentiment Analysis[J]. ICDM Workshops. 2012: 717-723.
[5] Wang R, Finch M A, Utiyama M, et al. Sentence Embedding for Neural Machine Translation Domain Adaptation[J]. ACL. 2017: 560-566.
......@@ -567,17 +645,15 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
[13] Kim Y, Gao Y, Ney H. Effective Cross-lingual Transfer of Neural Machine Translation Models without Shared Vocabularies[J]. Meeting of the Association for Computational Linguistics. 2019.
[14] Hu J, Xia M, Neubig G, et al. Domain Adaptation of Neural Machine Translation by Lexicon Induction[J]. ACL (1). 2019: 2989-3001.
[15] Wang R, Utiyama M, Liu L, et al. Instance Weighting for Neural Machine Translation Domain Adaptation[J]. EMNLP. 2017: 1483-1489.
[16] Chen B, Cherry C, Foster F G, et al. Cost Weighting for Neural Machine Translation Domain Adaptation[J]. NMT@ACL. 2017: 40-46.
[17] Yan S, Dahlmann L, Petrushkov P, et al. Word-based Domain Adaptation for Neural Machine Translation[J]. CoRR. 2019.
[18] Dakwale P, Monz C. Fine-Tuning for Neural Machine Translation with Limited Degradation across In- and Out-of-Domain Data[Z]. 2017156-169.
[19] Chu C. Integrated Parallel Data Extraction from Comparable Corpora for Statistical Machine Translation[J]. 2015.
[20] Zeng J, Liu Y, Su J, et al. Iterative Dual Domain Adaptation for Neural Machine Translation[J]. EMNLP/IJCNLP (1). 2019: 845-855.
[21] Barone V M A, Haddow B, Germann U, et al. Regularization techniques for fine-tuning in neural machine translation[J]. EMNLP. 2017: 1489-1494.
[22] Gulcehre C, Firat O, Xu K, et al. On Using Monolingual Corpora in Neural Machine Translation[J]. Computer Science. 2015.
[23] Britz D, Le V Q, Pryzant R. Effective Domain Mixing for Neural Machine Translation[J]. WMT. 2017: 118-126.
[24] Kobus C, Crego M J, Senellart J. Domain Control for Neural Machine Translation[J]. recent advances in natural language processing. 2017.
[25] Dou Z, Wang X, Hu J, et al. Domain Differential Adaptation for Neural Machine Translation[J]. NGT@EMNLP-IJCNLP. 2019: 59-69.
[26] Freitag M, Al-Onaizan Y. Fast Domain Adaptation for Neural Machine Translation[J]. 2016.
[27] Saunders D, Stahlberg F, Gispert D A A, et al. Domain Adaptive Inference for Neural Machine Translation[J]. Meeting of the Association for Computational Linguistics. 2019.
[28] Khayrallah H, Kumar G, Duh K, et al. Neural Lattice Search for Domain Adaptation in Machine Translation[J]. IJCNLP. 2017: 20-25.
[16] Yan S, Dahlmann L, Petrushkov P, et al. Word-based Domain Adaptation for Neural Machine Translation[J]. CoRR. 2019.
[17] Zeng J, Liu Y, Su J, et al. Iterative Dual Domain Adaptation for Neural Machine Translation[J]. EMNLP/IJCNLP (1). 2019: 845-855.
[18] Britz D, Le V Q, Pryzant R. Effective Domain Mixing for Neural Machine Translation[J]. WMT. 2017: 118-126.
[19] Kobus C, Crego M J, Senellart J. Domain Control for Neural Machine Translation[J]. recent advances in natural language processing. 2017.
[20] Khayrallah H, Kumar G, Duh K, et al. Neural Lattice Search for Domain Adaptation in Machine Translation[J]. IJCNLP. 2017: 20-25.
[21] Gulcehre C, Firat O, Xu K, et al. On Using Monolingual Corpora in Neural Machine Translation[J]. Computer Science. 2015.
[22] Dou Z, Wang X, Hu J, et al. Domain Differential Adaptation for Neural Machine Translation[J]. NGT@EMNLP-IJCNLP. 2019: 59-69.
[23] Freitag M, Al-Onaizan Y. Fast Domain Adaptation for Neural Machine Translation[J]. 2016.
[24] Saunders D, Stahlberg F, Gispert D A A, et al. Domain Adaptive Inference for Neural Machine Translation[J]. Meeting of the Association for Computational Linguistics. 2019.
......@@ -6055,6 +6055,20 @@ pages ={157-166},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2019}
}
@article{2015OnGulcehre,
title = {On Using Monolingual Corpora in Neural Machine Translation},
author = { Gulcehre Caglar and
Firat Orhan and
Xu Kelvin and
Cho Kyunghyun and
Barrault Loic and
Lin Huei Chi and
Bougares Fethi and
Schwenk Holger and
Bengio Yoshua },
journal = {Computer Science},
year = {2015},
}
%%%%% chapter 16------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论