Commit bbb4e04e by 孟霞

合并分支 'master' 到 'mengxia'

Master

查看合并请求 !762
parents c3f048b9 35a1347f
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -467,7 +467,7 @@ ...@@ -467,7 +467,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION % NEW SUB-SUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{2. 多语言单模型系统} \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 多语言单模型方法也可以被看做是一种迁移学习。多语言单模型方法能够有效地改善低资源神经机器翻译性能\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})。
...@@ -790,9 +790,10 @@ ...@@ -790,9 +790,10 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsection{统计机器翻译中的领域适应} \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},本节将对这四种方法进行介绍 \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展示了这几种方法的示意图
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION % NEW SUB-SUB-SECTION
...@@ -800,122 +801,49 @@ ...@@ -800,122 +801,49 @@
\subsubsection{1. 基于混合模型的方法} \subsubsection{1. 基于混合模型的方法}
\parinterval 不同领域的数据存在着共性,但是又有各自的风格,因此使用多领域数据训练出不同的模型,分情况处理问题可能会带来更好的效果,例如对疑问句和陈述句分别使用两个模型进行推断 \parinterval 不同领域的数据存在着共性,但是又有各自的风格,因此使用多领域数据训练出不同的模型,分情况处理问题可能会带来更好的效果,例如对疑问句和陈述句分别使用两个模型进行推断
可以使翻译效果更好\upcite{DBLP:conf/eacl/Sennrich12}。混合模型是统计机器学习理论中的传统实现技术之一,通过训练与每个语料库分别对应的多个统计机器翻译子模型,如语言模型、翻译模型和重排序模型,然后将它们进行组合以实现最佳性能\upcite{DBLP:conf/wmt/FosterK07}。该方法的主要步骤如下: 可以使翻译效果更好\upcite{DBLP:conf/eacl/Sennrich12}。因此,一种简单策略是对不同领域上的模型进行融合。比如,可以融合多个领域上训练的统计机器翻译的短语表,也可以直接融合多个领域的神经机器翻译模型。
\begin{itemize}
\vspace{0.5em}
\item 将训练数据根据所在的领域分为几个不同的部分。
\vspace{0.5em}
\item 利用每一部分数据训练对应的子模型。
\vspace{0.5em}
\item 根据测试数据的上下文信息为每个子模型调整权重。
\vspace{0.5em}
\item 针对不同领域,使用调整后的最佳权重,并加权整合多个子模型的输出。
\vspace{0.5em}
\end{itemize}
\parinterval 混合模型方法把统计机器翻译的每个模块分为多个模型同时解决问题,有权重地组合多个模型的结果。这个想法对后来出现的神经机器翻译中的模型融合、加权推断等方法也有一定的启发(见{\chapterfourteen})。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION % NEW SUB-SUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{2. 基于数据加权的方法} \subsubsection{2. 基于数据加权/数据选择的方法}
\parinterval 在真实场景中,由于每个领域的数据量有限,同时领域数量较多,针对每个领域单独训练一个机器翻译模型是不现实的。所以,通常的策略是训练一个机器翻译模型来支持多领域的翻译。虽然混合多个领域的数据可以有效增加训练数据规模,但正如前面所说,由于各个领域样本的数据量不平衡,在训练数据稀缺的领域上,模型表现往往差强人意。一种观点认为,数据量较少的领域数据具有更大的学习价值,可以提供较为珍贵的知识和信息,应该在训练过程中获得更大的权重,从而使这些更有价值的数据发挥出更大的作用\upcite{DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10}。数据加权方法使用规则或统计方法对每个实例或领域进行评分,作为它们的权重,然后赋予每个样本或领域不同的权重来训练统计机器翻译模型 \parinterval 在真实场景中,由于每个领域的数据量有限,同时领域数量较多,针对每个领域单独训练一个机器翻译模型是不现实的。所以,通常的策略是训练一个机器翻译模型来支持多领域的翻译。虽然混合多个领域的数据可以有效增加训练数据规模,但正如前面所说,由于各个领域样本的数据量不平衡,在训练数据稀缺的领域上,模型表现往往差强人意。一种观点认为,数据量较少的领域数据具有更大的学习价值,应该在训练过程中获得更大的权重,从而使这些更有价值的数据发挥出更大的作用\upcite{DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10}
\parinterval 上述思想本质上在解决{\small\bfnew{类别不均衡问题}}\index{类别不均衡问题}(Class Imbalance Problem\index{Class Imbalance Problem}\upcite{DBLP:conf/emnlp/ZhuH07}。另一种方法是通过数据重新采样对语料库进行加权\upcite{DBLP:conf/wmt/ShahBS10,rousseau2011lium}。语料库加权方法通过构建目标领域的语言模型,比较各个语料库与目标领域的相似性,赋予相似的语料库更高的权重。 \parinterval 实际上,基于数据加权的方法与{\chapterthirteen}中基于样本价值的学习方法是一致的,只是描述的场景略有不同。这类方法本质上在解决{\small\bfnew{类别不均衡问题}}\index{类别不均衡问题}(Class Imbalance Problem\index{Class Imbalance Problem}\upcite{DBLP:conf/emnlp/ZhuH07}。最简单的解决办法是直接将低资源的领域数据进行复制,相当于对数据进行重采样。也可以修改损失函数,将其缩放$\alpha$ 倍,其中$\alpha$ 是样本的权重。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 基于数据选择的方法}
\parinterval 源领域大规模的双语数据中通常会包含一些和目标领域相似的句子,基于数据选择的方法通过相似度函数选择出与目标领域相似的源领域数据,再把选择出的源领域数据与原始目标领域数据进行混合,之后训练模型,增加目标领域的双语数据规模,从而提高模型在目标领域的性能。相似度可以通过语言模型\upcite{DBLP:conf/lrec/EckVW04,DBLP:conf/coling/ZhaoEV04,DBLP:conf/acl/DuhNST13}、 多模型联合\upcite{DBLP:conf/coling/HoangS14,joty2015using}等方法进行计算 \parinterval 数据加权的一种特殊情况是数据选择,它可以被看做是样本权重非零即一的情况。具体来说,可以直接选择与领域相关的数据参与训练。因此这种方法并不需要使用全量数据进行训练,模型的训练成本较低。由于{\chapterthirteen}已经对数据加权和数据选择方法进行了详细介绍,这里不再赘述
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION % NEW SUB-SUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{4. 基于伪数据的方法} \subsubsection{3. 基于伪数据的方法}
\parinterval 数据选择方法可以从源领域中选择出和目标领域相似的训练数据,但可用的数据量是较为有限的。因此,另外一种思路是对现有的双语数据进行修改或通过单语数据生成伪数据来增加数据量\upcite{DBLP:conf/acl/UtiyamaI03,DBLP:conf/acl/MarieF17,DBLP:conf/coling/WangZLUS16,chu2015integrated}
\parinterval 其中,{\small\bfnew{自学习}}\index{自学习}(Self-training)\index{Self-training}是一种具有代表性的生成伪数据的方法\upcite{DBLP:journals/tit/Scudder65a}。自学习利用源领域的双语训练数据训练一个基准翻译系统,然后对目标领域的单语数据进行翻译,再从翻译候选集合中选择高质量的译文和源语言句子组合成为双语句对,之后将其加入到训练数据中重新训练翻译系统,该过程将一直迭代到翻译性能稳定为止\upcite{DBLP:conf/iwslt/Ueffing06}。基于自学习的统计机器翻译可以从一个性能较好的源领域机器翻译模型出发,逐步引入目标领域的知识,可以显著提高目标领域的翻译性能。
\parinterval 随着神经机器翻译的不断发展,许多基于神经网络的领域适应方法也被提出\upcite{DBLP:conf/coling/ChuW18},但其核心思想仍和统计机器翻译时期相似,也是从数据角度和模型角度两方面进行改进。不同之处在于,统计机器翻译模型是多个独立模型的组合,而神经机器翻译是一个整体的端到端模型,因此统计机器翻译中基于模型的方法并不能直接应用于神经机器翻译。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{基于数据的神经机器翻译领域适应} \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 增加训练数据是解决低资源领域适应一个主要思路。具体做法与统计机器翻译中的方法类似。下面分别介绍基于多领域数据的方法、基于数据选择的方法和基于单语数据的方法。 {\color{red} 图XX:基于数据的领域适应方法,四个子图分别描述上面四个方法,找孟霞、曾信讨论}
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION % NEW SUB-SUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{4. 多领域数据的使用}
\subsubsection{1. 基于多领域数据的方法} \parinterval 领域适应往往并不是针对一个领域,而是有众多目标领域。对于这种情况,一种简单的思路是为每一个目标领域进行领域适应,这样就可以直接使用前文所述的单领域适应方法。不过,与多语言翻译一样,多领域适应也往往伴随着严重的数据稀缺问题,也就是大多数领域的数据量很小,无法保证单独对这些领域进行适应的效果。
\parinterval 一种简单的思路是利用其他领域的数据来辅助低资源领域上的模型训练,即基于多领域数据的领域适应\upcite{DBLP:journals/corr/abs-1708-08712,DBLP:conf/acl/WangTNYCP20,DBLP:conf/acl/JiangLWZ20}。实际上,多领域建模也可以看作是一种多语言建模问题(见\ref{multilingual-translation-model}节)。通过借助其他相似领域的训练数据,可以缓解目标领域数据缺乏的问题。比如,想要训练网络小说的翻译系统,可以通过加入文学、字幕等领域的翻译数据来增加数据量。
\parinterval 但在神经机器翻译中,多领域数据不平衡问题也会导致数据量较少的领域训练不充分,带来较低的翻译品质。目前比较常用的解决办法是在数据中加入标签来提高神经机器翻译模型对不同领域的区分能力\upcite{DBLP:conf/acl/ChuDK17},该方法主要通过两种策略来缓解领域不平衡问题: \parinterval 一种解决问题的思路是将所有数据进行混合使用,并训练一个模型处理所有的领域。同时,为了区分不同领域的数据,可以在样本上增加领域标签。可以看到,这种方法本质上与\ref{sec:multi-lang-single-model}节所描述的方法是一样。它也是一种典型的小样本学习策略,旨在让模型自己从不同类型的样本中寻找联系,进而更加充分地利用数据,改善模型在低资源任务上的表现。
\begin{itemize}
\vspace{0.5em}
\item 在不同领域的源语言句子句首加上不同的标签来指定该句子所对应的领域,让神经机器翻译模型在预测过程中可以生成更符合领域特性的句子。
\vspace{0.5em}
\item 把数据量较小的领域数据复制数倍,来对各个领域的数据量进行平衡,使模型对各个领域给予相对平等的关注。
\vspace{0.5em}
\end{itemize}
\parinterval 基于多领域数据的方法的优点在于思路简单、易于实现,可以大大提高可用的数据量,但不同领域的数据不可避免地会产生一些干扰,在实际使用中可能会产生词汇预测错误的问题。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 基于数据选择的方法}
\parinterval 既然多领域数据的方法会对模型产生一些干扰,那么能否从其他领域数据中选择与目标领域比较相近的数据来提升数据量呢?与统计机器翻译相似,可以通过使用困惑度\upcite{DBLP:conf/emnlp/AxelrodHG11}或JS散度\upcite{DBLP:conf/icdm/Remus12}等方法计算源领域数据与目标领域数据的相似度,从而选择较为相似的数据以增加目标领域的数据量,提升模型能力。
\parinterval 另一种相似度衡量方法是根据句子的句嵌入来计算\upcite{DBLP:conf/acl/WangFUS17},即把其他领域的双语数据根据与目标领域句子的词嵌入相似度进行排序,设定一个阈值来选择与目标领域比较相似的句子,将其与目标领域的数据混合用于模型训练。除了直接混合两部分数据,还可以修改数据的训练方式,从而更有效地利用训练数据,具体方法可以参考\ref{modeling-methods-in neural-machine-translation}节的内容。数据选择充分地利用了其他领域的双语数据,使低资源问题得到了一定程度的缓解,模型可以学到更多目标领域相关的语言学知识,是目前比较常用的一个方法。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 基于单语数据的方法}
\parinterval 虽然目标领域的双语数据十分有限,但通常存在一定量可用的单语数据。例如在网络小说翻译任务中,只有少量的双语数据可用,但是网络上有丰富的小说单语数据可以使用。本章\ref{effective-use-of-data}节中提到了很多在低资源场景下利用单语数据的方法,比如进行数据增强或利用语言模型等,这些方法均可以直接应用在领域适应任务上。有效地利用领域内的单语数据可以显著提高机器翻译性能。
\parinterval 此外,如果目标领域的双语数据极度稀缺,甚至没有任何双语数据,这时可以使用\ref{unsupervised-dictionary-induction}节中提到的无监督词典归纳方法从目标领域中归纳出双语词典,然后将目标领域的译文端单语数据通过逐词翻译的方法生成伪数据\upcite{DBLP:conf/acl/HuXNC19},即对每个单词根据双语词典进行对应翻译,构建伪平行语料,用来训练目标领域的神经机器翻译模型。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsection{基于模型的神经机器翻译领域适应}\label{modeling-methods-in neural-machine-translation} \subsection{基于模型的方法}\label{domain-adaptation-modeling-methods}
\parinterval 一个神经机器翻译模型的实现主要分为三个部分:设计神经网络模型结构、制定训练策略训练模型、模型推断生成翻译结果。因此,领域适应也可以体现在这三个步骤中: \parinterval 对于神经机器翻译模型,领域适应可以直接反映在训练和推断阶段。具体来说,有如下方法:
\begin{itemize}
\vspace{0.5em}
\item 基于模型结构的方法,设计更适用于领域适应问题的模型结构\upcite{2015OnGulcehre,DBLP:conf/naacl/BapnaF19,britz2017effective,DBLP:conf/ranlp/KobusCS17}
\vspace{0.5em}
\item 基于训练策略的方法,制定能够更有效利用多领域数据的训练方法\upcite{DBLP:conf/emnlp/WangULCS17,DBLP:conf/emnlp/WeesBM17,DBLP:conf/acl/ChuDK17}
\vspace{0.5em}
\item 基于模型推断的方法,在推断阶段完成领域适应\upcite{DBLP:conf/emnlp/DouWHN19,khayrallah2017neural,DBLP:journals/corr/FreitagA16,DBLP:conf/acl/SaundersSGB19}
\vspace{0.5em}
\end{itemize}
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION % NEW SUB-SUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{1. 基于模型结构的方法} \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}。 为了解决这一问题,一个比较典型的做法是在使用多领域数据训练时,如图\ref{fig:16-20}所示,在神经机器翻译模型的编码器中添加一个判别器,使用判别器预测输入句子的领域\upcite{DBLP:conf/wmt/BritzLP17}。具体的做法为:在编码器的顶部添加一个判别器网络,这个判别器使用源语言句子$x$的编码器表示作为输入,预测句子所属的领域标签$d$。为了使预测领域标签$d$的正确概率$\funp{P(d|\mathbi{H})}$最大,模型在训练过程中最小化如下损失函数$\funp{L}_{\rm{disc}}$
...@@ -930,14 +858,12 @@ ...@@ -930,14 +858,12 @@
\funp{L}_{\rm{gen}}& = & -\log\funp{P}(y|x)\label{eq:16-13} \funp{L}_{\rm{gen}}& = & -\log\funp{P}(y|x)\label{eq:16-13}
\end{eqnarray} \end{eqnarray}
\noindent 神经机器翻译模型同时优化对领域标签的预测和对翻译结果的预测,如下: \noindent 最终可以得到融合后的损失函数,如下:
\begin{eqnarray} \begin{eqnarray}
\funp{L} & = & \funp{L}_{\rm{disc}}+\funp{L}_{\rm{gen}}\label{eq:16-14} \funp{L} & = & \funp{L}_{\rm{disc}}+\funp{L}_{\rm{gen}}\label{eq:16-14}
\end{eqnarray} \end{eqnarray}
\parinterval 这种方法使模型具备了识别不同领域数据的能力,从而可以针对不同领域进行建模,生成符合领域特征的翻译结果。此外,还可以利用TF-IDF方法\upcite{DBLP:journals/ibmrd/Luhn58} 预测输入句子的领域标签,在词嵌入层加上领域特定的嵌入表示。也可以融合语言模型到神经机器翻译模型中,达到领域适应的目的\upcite{2015OnGulcehre,DBLP:conf/emnlp/DomhanH17}
%---------------------------------------------- %----------------------------------------------
\begin{figure}[h] \begin{figure}[h]
...@@ -951,24 +877,20 @@ ...@@ -951,24 +877,20 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION % NEW SUB-SUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{2. 基于训练策略的方法} \subsubsection{2. 训练策略优化}
\parinterval 因为特定领域的训练数据通常十分稀缺,所以如何更充分地利用数据是一个重要问题\upcite{DBLP:conf/naacl/SimianerWD19}。受到统计机器翻译中数据加权方法的启发,一个简单的思路是给神经机器翻译的训练数据分配不同的训练权重,从而使和目标领域更相关的数据发挥更大的作用,并减少不相关数据的干扰。一种常用的做法是使用目标领域内和领域外语言模型来计算样本的权重\upcite{DBLP:conf/emnlp/WangULCS17}。领域内语言模型对句子的打分越高,表示该句子与目标领域越相似,反之,领域外语言模型对句子的打分越高,表示该句子可能与目标领域无关,会对训练过程造成一些干扰。与句子级别进行加权方法相似,加权思想还可以应用在词级别,即对每个词进行权重评分,对目标领域中的词赋予更高的权重,以使模型倾向于生成更多目标领域的词\upcite{DBLP:journals/corr/abs-1906-03129}
\parinterval 数据选择方法会降低训练数据的数据量,而在数据量较少的时候模型性能表现可能较差。针对这个问题,一种方法是在不同的训练轮次动态地改变训练数据子集。动态数据选择使得每轮的训练数据均小于全部数据量,但是在每轮中的训练数据均不同,可能前一轮没有训练的数据在当前轮被包括进来,由此可以缓解训练数据覆盖度不足的问题。另一种做法是先将完整的数据送入模型,再根据相似度逐次减少每轮的数据量,最后得到在目标领域上效果最好的领域适应模型\upcite{DBLP:conf/emnlp/WeesBM17}。或者将与领域相关的句子先送入模型,让模型可以最先学到跟目标领域最相关的知识\upcite{DBLP:conf/naacl/ZhangSKMCD19} \parinterval 实际上,\ref{sec:domain-adaptatoin-data-based-method}节所描述的数据加权和数据选择方法本身也是与模型训练相关的。具体实现时,很多细节还需要进行调整。例如,数据选择方法会降低训练数据的数据量。针对这个问题,一种方法是在不同的训练轮次动态地改变训练数据子集。动态数据选择使得每轮的训练数据均小于全部数据量,但是在每轮中的训练数据均不同,可能前一轮没有训练的数据在当前轮被包括进来,由此可以缓解训练数据覆盖度不足的问题。另一种做法是先将完整的数据送入模型,再根据相似度逐次减少每轮的数据量,最后得到在目标领域上效果最好的领域适应模型\upcite{DBLP:conf/emnlp/WeesBM17}。或者将与领域相关的句子先送入模型,让模型可以最先学到跟目标领域最相关的知识\upcite{DBLP:conf/naacl/ZhangSKMCD19}
\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 % NEW SUB-SUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{3. 基于模型推断的方法} \subsubsection{3. 推断阶段的领域适应}
\parinterval 另一种典型思路是优化推断算法\upcite{khayrallah2017neural}。目前比较常用的方法是集成推断(见{\chapterfourteen}),即把多个领域的模型融合为一个模型用于推断\upcite{DBLP:journals/corr/FreitagA16}
\parinterval 集成推断方法的主要优势在于实现简单,多个领域的模型可以独立训练,使训练时间大大缩短。集成推断也可以结合加权的思想,对不同领域的句子,赋予每个模型不同的先验权重进行推断,来获得最佳的推断结果\upcite{DBLP:conf/acl/SaundersSGB19}。也可以在推断过程中融入语言模型\upcite{2015OnGulcehre,DBLP:conf/emnlp/DomhanH17}或目标领域的罕见词\upcite{DBLP:conf/naacl/BapnaF19} \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}
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
......
\tikzstyle{coder} = [rectangle,rounded corners,minimum height=2.2em,minimum width=4.3em,text centered,draw=black,fill=red!25] \tikzstyle{coder} = [rectangle,rounded corners,minimum height=2.2em,minimum width=4.3em,text centered,draw=black,fill=red!25]
\begin{tikzpicture}[node distance = 0,scale = 0.75] \begin{tikzpicture}[node distance = 0,scale = 0.75]
\tikzstyle{every node}=[scale=0.75] \tikzstyle{every node}=[scale=0.75]
\node(x)[]{x}; \node(x)[]{$x$};
\node(encoder)[coder, above of = x,yshift=4em]{{编码器}}; \node(encoder)[coder, above of = x,yshift=4em]{{编码器}};
\node(decoder_left)[coder, above of = encoder, yshift=6em,fill=blue!25]{{解码器}}; \node(decoder_left)[coder, above of = encoder, yshift=6em,fill=blue!25]{{解码器}};
\node(y_hat)[above of = decoder_left, yshift=4em]{{$\rm y'$}}; \node(y_hat)[above of = decoder_left, yshift=4em]{{$y'$}};
\node(y)[above of = decoder_left, xshift=-6em]{{$\rm y$}}; \node(y)[above of = decoder_left, xshift=-6em]{{$y$}};
\node(decoder_right)[coder, above of = encoder, xshift=11em,fill=yellow!25]{{解码器}}; \node(decoder_right)[coder, above of = encoder, xshift=11em,fill=yellow!25]{{解码器}};
\node(figure)[draw=white,above of = decoder_right,yshift=6.5em,scale=0.25] {\includegraphics[width=0.62\textwidth]{./Chapter17/Figures/figure-bank-without-attention.png}}; \node(figure)[draw=white,above of = decoder_right,yshift=6.5em,scale=0.25] {\includegraphics[width=0.62\textwidth]{./Chapter17/Figures/figure-bank-without-attention.png}};
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
\begin{tikzpicture}[node distance = 0,scale = 1] \begin{tikzpicture}[node distance = 0,scale = 1]
\tikzstyle{every node}=[scale=1] \tikzstyle{every node}=[scale=1]
\node [anchor=center](ori) at (-0.2,-0.2) {$O$}; \node [anchor=center](ori) at (-0.2,-0.2) {0};
\draw[->,thick](-0.5,0)--(5,0)node[below,scale=0.8]{时间}; \draw[->,thick](-0.5,0)--(5,0)node[below,scale=0.8]{时间};
\draw[->,thick](0,-2)--(0,2)node[left,scale=0.8]{量化值}; \draw[->,thick](0,-2)--(0,2)node[left,scale=0.8]{量化值};
\draw[-,thick](0,0)sin(0.7,1.5)cos(1.4,0)sin(2.1,-1.5)cos(2.8,0)sin(3.5,1.5)cos(4.2,0); \draw[-,thick](0,0)sin(0.7,1.5)cos(1.4,0)sin(2.1,-1.5)cos(2.8,0)sin(3.5,1.5)cos(4.2,0);
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
\draw[->, thick,color=black!60](figure.east)to([xshift=-0.1cm]dog.west)node[left,xshift=-0.2cm,yshift=-0.1cm,color=black]{图片检测}; \draw[->, thick,color=black!60](figure.east)to([xshift=-0.1cm]dog.west)node[left,xshift=-0.2cm,yshift=-0.1cm,color=black]{图片检测};
\draw[->, thick,color=black!60]([yshift=-0.1cm]hat.south)to([yshift=0.1cm]ground.north)node[right,xshift=-0.2cm,yshift=0.5cm,color=black]{模板填充}; \draw[->, thick,color=black!60]([yshift=-0.1cm]hat.south)to([yshift=0.1cm]ground.north)node[right,xshift=-0.2cm,yshift=0.5cm,color=black]{模板填充};
\node [anchor=north](pos1)at ([xshift=-3.8em,yshift=-0.5em]ground-1.south){(a) 基于检索的图像描述生成范式}; \node [anchor=north](pos1)at ([xshift=-3.8em,yshift=-0.5em]ground-1.south){(a) 基于检索的图像描述生成};
\node [anchor=north](pos2)at ([xshift=-3.8em,yshift=-0.5em]ground.south){(b) 基于模板的图像描述生成范式}; \node [anchor=north](pos2)at ([xshift=-3.8em,yshift=-0.5em]ground.south){(b) 基于模板的图像描述生成};
\end{tikzpicture} \end{tikzpicture}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论