Commit 73b07ab2 by 孟霞

16领域适应

parent 29c291f5
......@@ -755,7 +755,7 @@
\section{领域适应}
\parinterval 机器翻译常常面临训练时与应用时所处领域不一致的问题,比如,一个在新闻类数据上训练的系统应用在医学文献翻译任务上。不同领域的句子通常存在着很大的区别,比如,日常用语的结构较为简单,而化学领域的学术论文的单词和句子结构较为复杂。此外,不同领域之间存在着较为严重的一词多义问题,即同一个词在不同领域中经常会有不同的含义。实例\ref{eg:16-1}展示了英语单词pitch在不同领域的不同词义。
\parinterval 机器翻译常常面临训练时与应用时所处领域不一致的问题,比如,将一个在新闻类数据上训练的翻译系统应用在医学文献翻译任务上。不同领域的句子通常存在着很大的区别,比如,日常用语的结构较为简单,而在化学领域的学术论文中,单词和句子结构较为复杂。此外,不同领域之间存在着较为严重的一词多义问题,即同一个词在不同领域中经常会有不同的含义。实例\ref{eg:16-1}展示了英语单词pitch在不同领域的不同词义。
%----------------------------------------------
\begin{example}
单词pitch在不同领域的不同词义
......@@ -770,14 +770,14 @@
声学领域:A basic sense of rhythm and {\red{pitch}} is essential in a music teacher.
\qquad\qquad \hspace{0.8em} 基本的韵律感和{\red{音高}}是音乐教师的必备素质。
\qquad\qquad \hspace{0.8em} 基本的韵律感和{\red{音高}}是音乐教师的必备素质。
\label{eg:16-1}
\end{example}
%----------------------------------------------
\parinterval 在机器翻译任务中,像新闻等领域的双语数据相对容易获取,所以机器翻译在这些领域上表现较佳。然而,即使在富资源语种上,化学、医学等专业领域的双语数据依然十分有限。如果直接使用低资源领域的数据来训练机器翻译模型,由于数据稀缺问题,会导致模型的性能较差\upcite{DBLP:conf/iccv/SunSSG17}。而混合多个领域的数据进行训练,不同领域的数据量不平衡会导致数据较少的领域训练不充分,使得在低资源领域上的翻译结果不尽人意\upcite{DBLP:conf/acl/DuhNST13}
\parinterval 在机器翻译任务中,新闻等领域的双语数据相对容易获取,所以机器翻译在这些领域上表现较佳。然而,即使在富资源语种上,化学、医学等专业领域的双语数据依然十分有限。如果直接使用这些低资源领域的数据来训练机器翻译模型,由于数据稀缺问题,会导致模型的性能较差\upcite{DBLP:conf/iccv/SunSSG17}。如果混合多个领域的数据增大训练数据规模,不同领域数据量之间的不平衡会导致数据较少的领域训练不充分,使得在低资源领域上的翻译结果不尽人意\upcite{DBLP:conf/acl/DuhNST13}
\parinterval {\small\bfnew{领域适应}}(Domain Adaptation)方法是利用其他领域(Source Domain, 又称源领域)的知识来改进特定领域(Target Domain, 又称目标领域)翻译效果的方法,该方法可以有效地减少模型对目标领域数据的依赖。领域适应的研究方向主要有以下两点:
\parinterval {\small\bfnew{领域适应}}(Domain Adaptation)方法是利用源领域的知识来改进目标领域模型效果的方法,该方法可以有效地减少模型对目标领域数据的依赖。领域适应的研究方向主要有以下两点:
\begin{itemize}
\vspace{0.5em}
......@@ -793,44 +793,37 @@
\subsection{基于数据的方法}
\label{sec:domain-adaptatoin-data-based-method}
\parinterval 在统计机器翻译时代,如何有利用数据来改善领域适应的效果已经备受关注。其中的绝大多数思想和方法和翻译模型无关,因此可以直接使用在神经机器翻译中。基于数据的领域适应可以分为基于混合模型的方法\upcite{DBLP:conf/iwslt/BisazzaRF11,niehues2012detailed,DBLP:conf/acl/SennrichSA13}、基于数据加权的方法\upcite{DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10,shah2012general}、 基于数据选择的方法\upcite{DBLP:conf/lrec/EckVW04,DBLP:conf/acl/MooreL10,DBLP:conf/acl/DuhNST13,DBLP:conf/coling/HoangS14}和基于伪数据的方法\upcite{DBLP:conf/iwslt/Ueffing06,DBLP:conf/coling/WuWZ08,DBLP:conf/iwslt/Schwenk08,DBLP:conf/wmt/BertoldiF09}。({\color{red} 每个方法参考文献太多了,不要超过3个!})。图XX展示了这几种方法的示意图。
\parinterval 在统计机器翻译时代,如何有效利用外部数据来改善目标领域的翻译效果已经备受关注
。其中的绝大多数思想和方法和翻译模型无关,因此这些方法也同样适用于神经机器翻译。基于数据的领域适应可以分为基于数据加权的方法、基于数据选择的方法、基于伪数据的方法和使用多领域数据。图XX展示了这几种方法的示意图。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 基于混合模型的方法}
\subsubsection{1. 基于数据加权/数据选择的方法}
\parinterval 不同领域的数据存在着共性,但是又有各自的风格,因此使用多领域数据训练出不同的模型,分情况处理问题可能会带来更好的效果,例如对疑问句和陈述句分别使用两个模型进行推断
可以使翻译效果更好\upcite{DBLP:conf/eacl/Sennrich12}。因此,一种简单策略是对不同领域上的模型进行融合。比如,可以融合多个领域上训练的统计机器翻译的短语表,也可以直接融合多个领域的神经机器翻译模型。
\parinterval 在真实场景中,由于每个领域的数据量有限,同时领域数量较多,针对每个领域单独训练一个机器翻译模型是不现实的。所以,通常的策略是混合多领域的数据,来训练一个能够支持多领域翻译的机器翻译模型。虽然混合多个领域的数据可以有效增加训练数据规模,但正如前面所说,由于各个领域训练数据量之间的不平衡,在训练数据过少的领域上,模型表现往往差强人意。一种观点认为,数据量较少的领域数据应该在训练过程中获得更大的权重,从而使这些更有价值的数据发挥出更大的作用\upcite{DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 基于数据加权/数据选择的方法}
\parinterval 在真实场景中,由于每个领域的数据量有限,同时领域数量较多,针对每个领域单独训练一个机器翻译模型是不现实的。所以,通常的策略是训练一个机器翻译模型来支持多领域的翻译。虽然混合多个领域的数据可以有效增加训练数据规模,但正如前面所说,由于各个领域样本的数据量不平衡,在训练数据稀缺的领域上,模型表现往往差强人意。一种观点认为,数据量较少的领域数据具有更大的学习价值,应该在训练过程中获得更大的权重,从而使这些更有价值的数据发挥出更大的作用\upcite{DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10}
\parinterval 实际上,基于数据加权的方法与{\chapterthirteen}中基于样本价值的学习方法是一致的,只是描述的场景略有不同。这类方法本质上在解决{\small\bfnew{类别不均衡问题}}\index{类别不均衡问题}(Class Imbalance Problem\index{Class Imbalance Problem}\upcite{DBLP:conf/emnlp/ZhuH07}。数据加权可以通过修改损失函数,将其缩放$\alpha$ 倍来实现($\alpha$ 是样本的权重)。在具体实践中,也可以直接将低资源的领域数据进行复制\footnote{相当于对数据进行重采样}达到与其相同的效果。
\parinterval 实际上,基于数据加权的方法与{\chapterthirteen}中基于样本价值的学习方法是一致的,只是描述的场景略有不同。这类方法本质上在解决{\small\bfnew{类别不均衡问题}}\index{类别不均衡问题}(Class Imbalance Problem\index{Class Imbalance Problem}\upcite{DBLP:conf/emnlp/ZhuH07}。最简单的解决办法是直接将低资源的领域数据进行复制,相当于对数据进行重采样。也可以修改损失函数,将其缩放$\alpha$ 倍,其中$\alpha$ 是样本的权重。
\parinterval 数据加权的一种特殊情况是数据选择,它可以被看做是样本权重非零即一的情况。具体来说,可以直接选择与领域相关的数据参与训练。因此这种方法并不需要使用全量数据进行训练,模型的训练成本较低。由于{\chapterthirteen}已经对数据加权和数据选择方法进行了详细介绍,这里不再赘述。
\parinterval 数据选择是数据加权的一种特殊情况,它可以被看做是样本权重非零即一的情况。具体来说,可以直接选择与领域相关的数据参与训练\upcite{DBLP:conf/acl/DuhNST13}。由于这种方法并不需要使用全量数据进行训练,因此模型的训练成本较低。由于{\chapterthirteen}已经对数据加权和数据选择方法进行了详细介绍,这里不再赘述。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 基于伪数据的方法}
\subsubsection{2. 基于伪数据的方法}
\parinterval 数据选择方法可以从源领域中选择出和目标领域相似的训练数据,但可用的数据量是较为有限的。因此,另外一种思路是对现有的双语数据进行修改或通过单语数据生成伪数据来增加数据量\upcite{DBLP:conf/acl/UtiyamaI03,DBLP:conf/acl/MarieF17,DBLP:conf/coling/WangZLUS16,chu2015integrated}。这个问题和\ref{effective-use-of-data}节所面临的场景是基本一致的,因此可以直接复用\ref{effective-use-of-data}所描述的方法。
\parinterval 数据选择方法可以从源领域中选择出和目标领域相似的训练数据用于训练,但可用的数据是较为有限的。因此,另外一种思路是对现有的双语数据进行修改\upcite{DBLP:conf/acl/UtiyamaI03}(如抽取双语短语对等)或通过单语数据生成伪数据来增加数据量\upcite{DBLP:conf/wmt/BertoldiF09}。这个问题和\ref{effective-use-of-data}节所面临的场景是基本一致的,因此可以直接复用\ref{effective-use-of-data}所描述的方法。
{\color{red} 图XX:基于数据的领域适应方法,四个子图分别描述上面四个方法,找孟霞、曾信讨论}
{\color{red} 图XX:基于数据的领域适应方法,三个子图分别描述上面三个方法,找孟霞、曾信讨论}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{4. 多领域数据的使用}
\subsubsection{3. 多领域数据的使用}
\parinterval 领域适应往往并不是针对一个领域,而是有众多目标领域。对于这种情况,一种简单的思路是为每一个目标领域进行领域适应,这样就可以直接使用前文所述的单领域适应方法。不过,与多语言翻译一样,多领域适应也往往伴随着严重的数据稀缺问题,也就是大多数领域的数据量很小,无法保证单独对这些领域进行适应的效果。
\parinterval 领域适应中的目标领域往往不止一个,想要同时提升多个目标领域的效果,一种简单的思路是使用前文所述的单领域适应方法对每一个目标领域进行领域适应。不过,与多语言翻译一样,多领域适应也往往伴随着严重的数据稀缺问题,由于大多数领域的数据量很小,因此无法保证单个领域的领域适应效果。
\parinterval 一种解决问题的思路是将所有数据进行混合使用,并训练一个模型处理所有的领域。同时,为了区分不同领域的数据,可以在样本上增加领域标签。可以看到,这种方法本质上与\ref{sec:multi-lang-single-model}节所描述的方法是一样。它也是一种典型的小样本学习策略,旨在让模型自己从不同类型的样本中寻找联系,进而更加充分地利用数据,改善模型在低资源任务上的表现。
\parinterval 解决该问题的一种思路是将所有数据混合使用,并训练一个能够同时适应所有领域的模型。同时,为了区分不同领域的数据,可以在样本上增加领域标签\upcite{DBLP:conf/acl/ChuDK17}。事实上,这种方法的本质与\ref{sec:multi-lang-single-model}节所描述的方法是一样的。它也是一种典型的小样本学习策略,旨在让模型自己从不同类型的样本中寻找联系,进而更加充分地利用数据,改善模型在低资源任务上的表现。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -838,21 +831,21 @@
\subsection{基于模型的方法}\label{domain-adaptation-modeling-methods}
\parinterval 对于神经机器翻译模型,领域适应可以直接反映在训练和推断阶段。具体来说,有如下方法:
\parinterval 对于神经机器翻译模型,可以在训练和推断阶段进行领域适应。具体来说,有如下方法:
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 多目标学习}
\parinterval 在使用多领域数据时,混合多个相差较大的领域数据进行训练会使单个领域的翻译性能下降\upcite{DBLP:conf/eacl/NegriTFBF17}。 为了解决这一问题,一个比较典型的做法是在使用多领域数据训练时,如图\ref{fig:16-20}所示,在神经机器翻译模型的编码器中添加一个判别器,使用判别器预测输入句子的领域\upcite{DBLP:conf/wmt/BritzLP17}。具体的做法为:在编码器的顶部添加一个判别器网络,这个判别器使用源语言句子$x$的编码器表示作为输入,预测句子所属的领域标签$d$。为了使预测领域标签$d$的正确概率$\funp{P(d|\mathbi{H})}$最大,模型在训练过程中最小化如下损失函数$\funp{L}_{\rm{disc}}$
\parinterval 在使用多领域数据时,混合多个相差较大的领域数据进行训练会使单个领域的翻译性能下降\upcite{DBLP:conf/eacl/NegriTFBF17}。 为了解决这一问题,可以对所有训练数据的来源领域进行区分,一个比较典型的做法是在使用多领域数据训练时,在神经机器翻译模型的编码器顶部中添加一个判别器\upcite{DBLP:conf/wmt/BritzLP17},该判别器使用源语言句子$x$的编码器表示作为输入,预测句子所属的领域标签$d$,如图\ref{fig:16-20}所示。为了使预测领域标签$d$的正确概率$\funp{P(d|\mathbi{H})}$最大(其中$\mathbi{H}$为编码器的隐藏状态),模型在训练过程中最小化如下损失函数$\funp{L}_{\rm{disc}}$
\begin{eqnarray}
\funp{L}_{\rm{disc}}& = &-\log\funp{P}(d|\mathbi{H})
\label{eq:16-12}
\end{eqnarray}
\noindent 其中,$\mathbi{H}$是编码器的隐藏状态。同时,原始的翻译模型损失为$\funp{L}_{\rm{gen}}$
\noindent 在此基础上,加上原始的翻译模型损失函数$\funp{L}_{\rm{gen}}$
\begin{eqnarray}
\funp{L}_{\rm{gen}}& = & -\log\funp{P}(y|x)\label{eq:16-13}
......@@ -877,20 +870,30 @@
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 训练策略优化}
\subsubsection{2. 训练策略优化}{\red 为了前后的呼应,这里改成训练阶段领域适应,或者后面改成推断策略优化会不会更好?}
\parinterval 实际上,\ref{sec:domain-adaptatoin-data-based-method}节所描述的数据加权和数据选择方法本身也与模型训练相关的,例如,数据选择方法会降低训练数据的数据量。所以具体实现时,需要对训练策略进行调整。一种方法是在不同的训练轮次动态地改变训练数据子集。动态数据选择既可以使得每轮的训练数据均小于全部数据量,从而加快训练进程,又可以缓解训练数据覆盖度不足的问题,具体做法有两种:
\parinterval 实际上,\ref{sec:domain-adaptatoin-data-based-method}节所描述的数据加权和数据选择方法本身也是与模型训练相关的。具体实现时,很多细节还需要进行调整。例如,数据选择方法会降低训练数据的数据量。针对这个问题,一种方法是在不同的训练轮次动态地改变训练数据子集。动态数据选择使得每轮的训练数据均小于全部数据量,但是在每轮中的训练数据均不同,可能前一轮没有训练的数据在当前轮被包括进来,由此可以缓解训练数据覆盖度不足的问题。另一种做法是先将完整的数据送入模型,再根据相似度逐次减少每轮的数据量,最后得到在目标领域上效果最好的领域适应模型\upcite{DBLP:conf/emnlp/WeesBM17}。或者将与领域相关的句子先送入模型,让模型可以最先学到跟目标领域最相关的知识\upcite{DBLP:conf/naacl/ZhangSKMCD19}
%----------------------------------------------
\begin{itemize}
\vspace{0.5em}
\item 将完整的数据送入模型,再根据其与目标领域数据的相似度逐次减少每轮的数据量\upcite{DBLP:conf/emnlp/WeesBM17}
\vspace{0.5em}
\item 将与目标领域数据相似度最高的句子先送入模型,让模型可以最先学到跟目标领域最相关的知识,逐渐增加数据量\upcite{DBLP:conf/naacl/ZhangSKMCD19}
\vspace{0.5em}
\end{itemize}
%----------------------------------------------
\parinterval 另一种方法是不从随机状态开始训练网络,而是使用翻译性能较好的源领域模型作为初始状态,因为源领域模型中包含着一些通用知识可以被目标领域借鉴。比如,想获得口语的翻译模型,可以使用新闻的翻译模型作为初始状态进行训练。这也可以被看做是一种模型预训练方法。
\parinterval 另一种优化训练策略的方法是不从随机状态开始训练网络,而是使用翻译性能较好的源领域模型作为初始状态,因为源领域模型中包含着一些通用知识可以被目标领域借鉴。比如,想获得口语的翻译模型,可以使用新闻的翻译模型作为初始状态进行训练。这也可以被看作是一种预训练-微调方法。
\parinterval 同时,微调方法经常配合预训练使用。不过微调的方法会带来灾难性遗忘问题,即在目标领域上过拟合,导致在源领域上的翻译性能大幅度下降(见{\chapterthirteen})。如果想要保证模型在目标领域和源领域上都有较好的性能,一个比较常用的方法是进行混合微调\upcite{DBLP:conf/acl/ChuDK17}。具体做法是先在源领域数据上训练一个神经机器翻译模型,然后将目标领域数据复制数倍和源领域数据量相等,之后将数据混合后对神经机器翻译模型进行微调。混合微调方法既降低了目标领域数据量小导致的过拟合问题,又带来了更好的微调性能。除了混合微调外,也可以使用知识蒸馏方法缓解灾难性遗忘问题(见\ref{multilingual-translation-model}节),即对源领域和目标领域进行多次循环知识蒸馏,迭代学习对方领域的知识,可以保证在源领域和目标领域上的翻译性能共同逐步上升\upcite{DBLP:conf/emnlp/ZengLSGLYL19}。过拟合导致的灾难性遗忘问题还可以使用L2正则化和Dropout方法来缓解\upcite{barone2017regularization}
\parinterval 不过这种方法经常会带来灾难性遗忘问题,即在目标领域上过拟合,导致在源领域上的翻译性能大幅度下降(见{\chapterthirteen})。如果想要保证模型在目标领域和源领域上都有较好的性能,一个比较常用的方法是进行混合微调\upcite{DBLP:conf/acl/ChuDK17}。具体做法是先在源领域数据上训练一个神经机器翻译模型,然后将目标领域数据复制数倍和源领域数据量相等,之后将数据混合后对神经机器翻译模型进行微调。混合微调方法既降低了目标领域数据量小导致的过拟合问题,又带来了更好的微调性能。除了混合微调外,也可以使用知识蒸馏方法缓解灾难性遗忘问题(见\ref{multilingual-translation-model}节),即对源领域和目标领域进行多次循环知识蒸馏,迭代学习对方领域的知识,可以保证在源领域和目标领域上的翻译性能共同逐步上升\upcite{DBLP:conf/emnlp/ZengLSGLYL19}。过拟合导致的灾难性遗忘问题还可以使用L2正则化和Dropout方法来缓解\upcite{barone2017regularization}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 推断阶段的领域适应}
\parinterval 另一种典型思路是优化推断算法\upcite{khayrallah2017neural}。目前比较常用的方法是集成推断(见{\chapterfourteen}),即把多个领域的模型融合为一个模型用于推断\upcite{DBLP:journals/corr/FreitagA16}。集成推断方法的主要优势在于实现简单,多个领域的模型可以独立训练,使训练时间大大缩短。集成推断也可以结合加权的思想,对不同领域的句子,赋予每个模型不同的先验权重进行推断,来获得最佳的推断结果\upcite{DBLP:conf/acl/SaundersSGB19}也可以在推断过程中融入语言模型\upcite{2015OnGulcehre,DBLP:conf/emnlp/DomhanH17}或目标领域的罕见词\upcite{DBLP:conf/naacl/BapnaF19}
\parinterval 神经机器翻译中,领域适应的另一种典型思路是优化推断算法\upcite{khayrallah2017neural}。不同领域的数据存在着共性,但是又有各自的风格,因此对于使用多领域数据训练出的模型,分情况进行推断可能会带来更好的效果,例如在统计机器翻译中对疑问句和陈述句分别使用两个模型进行推断可以使翻译效果更好\upcite{DBLP:conf/eacl/Sennrich12}。在神经机器翻译模型中可以采用集成推断(见{\chapterfourteen})达到同样的效果,即把多个领域的模型融合为一个模型用于推断\upcite{DBLP:journals/corr/FreitagA16}。集成推断方法的主要优势在于实现简单,多个领域的模型可以独立训练,使训练时间大大缩短。集成推断也可以结合加权的思想,对不同领域的句子,赋予每个模型不同的先验权重进行推断,来获得最佳的推断结果\upcite{DBLP:conf/acl/SaundersSGB19}。此外,也可以在推断过程中融入语言模型\upcite{2015OnGulcehre,DBLP:conf/emnlp/DomhanH17}或目标领域的罕见词\upcite{DBLP:conf/naacl/BapnaF19}
%----------------------------------------------------------------------------------------
% NEW SECTION
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论