Commit d797dd30 by 单韦乔

合并分支 'shanweiqiao' 到 'caorunzhe'

wording (sec 13)

查看合并请求 !681
parents 10b2aada 1c1bd285
......@@ -143,7 +143,7 @@
%----------------------------------------------
\end{itemize}
\parinterval\ref{fig:7-9}给出了BPE算法执行的实例。其中预先设定的合并表的大小为10。在得到了符号合并表后,便需要对用字符表示的单词进行合并,得到以子词形式表示的文本。首先,将单词切分为以字符表示的符号序列,并在尾部加上终结符。然后按照符号合并表的顺序依次遍历,如果存在相同的2-gram符号组合,则对其进行合并,直至遍历结束。{\red 图1.4}给出了一个使用字符合并表对单词进行子词切分的实例。红色单元为每次合并后得到的新符号,直至无法合并,或遍历结束,得到最终的合并结果。其中每一个单元为一个子词,如图\ref{fig:7-10}
\parinterval\ref{fig:7-9}给出了BPE算法执行的实例。其中预先设定的合并表的大小为10。在得到了符号合并表后,便需要对用字符表示的单词进行合并,得到以子词形式表示的文本。首先,将单词切分为以字符表示的符号序列,并在尾部加上终结符。然后按照符号合并表的顺序依次遍历,如果存在相同的2-gram符号组合,则对其进行合并,直至遍历结束。图1.4给出了一个使用字符合并表对单词进行子词切分的实例。红色单元为每次合并后得到的新符号,直至无法合并,或遍历结束,得到最终的合并结果。其中每一个单元为一个子词,如图\ref{fig:7-10}{\red{图有问题}}
%----------------------------------------------
\begin{figure}[htp]
......@@ -463,11 +463,11 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\sectionnewpage
\section{知识蒸馏}\label{subsection-7.5.3}
\parinterval 理想的机器翻译系统应该是品质好、速度块、存储占用少。不过现实的机器翻译系统往往需要用运行速度和存储空间来换取翻译品质,比如,\ref{subsection-7.3.2}节提到的增大模型容量的方法就是通过增加模型参数量来达到更好的函数拟合效果,但是这也导致系统变得更加笨拙。在很多场景下,这样的模型甚至无法使用。比如,Transformer-Big等“大”模型通常在专用GPU服务器上运行,在手机等受限环境下仍很难应用。
\parinterval 理想的机器翻译系统应该是品质好、速度块、存储占用少。不过,为了追求更好的翻译品质,往往需要更大的模型以及更慢的翻译速度,例如,可以通过增加模型参数量来达到更好的函数拟合效果,但是这也导致系统变得更加笨拙。在很多场景下,这样的模型甚至无法使用。比如,Transformer-Big等“大”模型通常在专用GPU服务器上运行,在手机等受限环境下仍很难应用。
\parinterval 另一方面,直接训练“小”模型的效果往往并不理想,其翻译品质与“大”模型相比仍有比较明显的差距。比如,在Transformer中,使用一个48层的编码器要比传统的6层编码器在BLEU上高出1-2个点,而且两者翻译结果的人工评价的区别也十分明显
\parinterval 另一方面,直接训练“小”模型的效果往往并不理想,其翻译品质与“大”模型相比仍有比较明显的差距。比如,在Transformer中,使用一个48层的编码器要比传统的6层编码器有更好的品质
\parinterval 面对小模型难以训练的问题,一种有趣的想法是把“大”模型的知识传递给“小”模型,让“小”模型可以更好的进行学习。这类似于,教小孩子学习数学,是请一个权威数学家(数据中的标准答案),还是请一个小学数学教师(“大”模型)。这就是知识蒸馏的基本思想。
\parinterval 既然直接训练小模型无法达到更好的效果,一种有趣的想法是把“大”模型的知识传递给“小”模型,让“小”模型可以更好的进行学习。这类似于,教小孩子学习数学,是请一个权威数学家(数据中的标准答案),还是请一个小学数学教师(“大”模型)。这就是知识蒸馏的基本思想。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -481,17 +481,17 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\begin{itemize}
\vspace{0.5em}
\item “知识”在模型间是可迁移的。也就是说,一个模型中蕴含的规律可以被另一个模型使用。最典型的例子就是预训练模型(见\ref{subsection-7.2.6})。使用单语数据学习到的表示模型,在双语的翻译任务中仍然可以发挥很好的作用。也就是,把单语语言模型学习到的知识迁移到双语翻译中对句子表示的任务中;
\item “知识”在模型间是可迁移的。也就是说,一个模型中蕴含的规律可以被另一个模型使用。最典型的例子就是预训练语言模型(见{\chapternine})。使用单语数据学习到的表示模型,在双语的翻译任务中仍然可以发挥很好的作用。也就是,把单语语言模型学习到的知识迁移到双语翻译中对句子表示的任务中。
\vspace{0.5em}
\item 模型所蕴含的“知识”比原始数据中的“知识”更容易被学习到。比如,机器翻译中大量使用的回译(伪数据)方法,就把模型的输出作为数据让系统进行学习。
\vspace{0.5em}
\end{itemize}
\parinterval 这里所说的第二个假设对应了机器学习中的一大类问题\ \dash \ {\small\bfnew{学习难度}}\index{学习难度}(Learning Difficulty)\index{Learning Difficulty}。所谓难度是指:在给定一个模型的情况下,需要花费多少代价对目标任务进行学习。如果目标任务很简单,同时模型与任务很匹配,那学习难度就会降低。如果目标任务很复杂,同时模型与其匹配程度很低,那学习难度就会很大。在自然语言处理任务中,这个问题的一种表现是:在很好的数据中学习的模型的翻译质量可能仍然很差。即使训练数据是完美的,但是模型仍然无法做到完美的学习。这可能是因为建模的不合理,导致模型无法描述目标任务中复杂的规律。也就是纵然数据很好,但是模型学不到其中的“知识”。在机器翻译中这个问题体现的尤为明显。比如,在机器翻译系统$n$-best结果中挑选最好的译文(成为Oracle)作为训练样本让系统重新学习,系统仍然达不到Oracle的水平。
\parinterval 这里所说的第二个假设对应了机器学习中的一大类问题\ \dash \ {\small\bfnew{学习难度}}\index{学习难度}(Learning Difficulty)\index{Learning Difficulty}。所谓难度是指:在给定一个模型的情况下,需要花费多少代价对目标任务进行学习。如果目标任务很简单,同时模型与任务很匹配,那学习难度就会降低。如果目标任务很复杂,同时模型与其匹配程度很低,那学习难度就会很大。在自然语言处理任务中,这个问题的一种表现是:在很好的数据中学习的模型的翻译质量可能仍然很差。即使训练数据是完美的,但是模型仍然无法做到完美的学习。这可能是因为建模的不合理,导致模型无法描述目标任务中复杂的规律。也就是纵然数据很好,但是模型学不到其中的“知识”。在机器翻译中这个问题体现的尤为明显。比如,在机器翻译系统$n$-best结果中挑选最好的译文(成为Oracle)作为训练样本让系统重新学习,系统仍然达不到Oracle的水平。
\parinterval 知识蒸馏本身也体现了一种“自学习”的思想。即利用模型(自己)的预测来教模型(自己)。这样既保证了知识可以向更轻量的模型迁移,同时也避免了模型从原始数据中学习难度大的问题。虽然“大”模型的预测中也会有错误,但是这种预测是更符合建模的假设的,因此“小”模型反倒更容易从不完美的信息中学习\footnote[15]{很多时候,“大”模型和“小”模型都是基于同一种架构,因此二者对问题的假设和模型结构都是相似的。}到更多的知识。类似于,刚开始学习围棋的人从职业九段身上可能什么也学不到,但是向一个业余初段的选手学习可能更容易入门。另外,也有研究表明:在机器翻译中,相比于“小”模型,“大”模型更容易进行优化,也更容易找到更好的模型收敛状态。因此在需要一个性能优越,存储较小的模型时,也会考虑将大模型压缩得到更轻量模型的手段\upcite{DBLP:journals/corr/abs-2002-11794}
\parinterval 知识蒸馏本身也体现了一种“自学习”的思想。即利用模型(自己)的预测来教模型(自己)。这样既保证了知识可以向更轻量的模型迁移,同时也避免了模型从原始数据中学习难度大的问题。虽然“大”模型的预测中也会有错误,但是这种预测是更符合建模的假设的,因此“小”模型反倒更容易从不完美的信息中学习到更多的知识\footnote[15]{很多时候,“大”模型和“小”模型都是基于同一种架构,因此二者对问题的假设和模型结构都是相似的。}。类似于,刚开始学习围棋的人从职业九段身上可能什么也学不到,但是向一个业余初段的选手学习可能更容易入门。另外,也有研究表明:在机器翻译中,相比于“小”模型,“大”模型更容易进行优化,也更容易找到更好的模型收敛状态。因此在需要一个性能优越,存储较小的模型时,也会考虑将大模型压缩得到更轻量模型\upcite{DBLP:journals/corr/abs-2002-11794}
\parinterval 通常把“大”模型看作传授知识的“教师”,被称作{\small\bfnew{教师模型}}\index{教师模型}(Teacher Model)\index{Teacher Model};把“小”模型看作是接收知识的“学生”,被称作{\small\bfnew{学生模型}}\index{学生模型}(Student Model)\index{Student Model}。比如,可以把Transformer-Big看作是教师模型,把Transformer-Base看作是学生模型。
\parinterval 通常把“大”模型看作传授知识的“教师”,被称作{\small\bfnew{教师模型}}\index{教师模型}(Teacher Model)\index{Teacher Model};把“小”模型看作是接收知识的“学生”,被称作{\small\bfnew{学生模型}}\index{学生模型}(Student Model)\index{Student Model}。比如,可以把Transformer-Big看作是教师模型,把Transformer-Base看作是学生模型。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -499,11 +499,11 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\subsection{知识蒸馏的基本方法}
\parinterval 知识蒸馏的基本思路是让学生模型所表示的函数尽可能去拟合教师模型所表示的函数\upcite{Hinton2015Distilling}通常有两种实现方式\upcite{DBLP:conf/emnlp/KimR16}
\parinterval 知识蒸馏的基本思路是让学生模型所表示的函数尽可能去拟合教师模型所表示的函数\upcite{Hinton2015Distilling}通常有两种实现方式\upcite{DBLP:conf/emnlp/KimR16}
\begin{itemize}
\vspace{0.5em}
\item {\small\bfnew{基于单词的知识蒸馏}}\index{基于单词的知识蒸馏}(Word-level Knowledge Distillation)\index{Word-level Knowledge Distillation}。该方法的目标是使得学生模型的预测(分布)尽可能逼近教师模型的预测(分布)。令$\mathbf{x}=\{x_1,\ldots,x_m\}$$\mathbf{y}=\{y_1,\ldots,y_n\}$分别表示输入和输出(数据中的答案)序列,$V$表示目标语言词表,$n$表示译文序列的长度,则基于单词的知识蒸馏的损失函数被定义为:
\item {\small\bfnew{基于单词的知识蒸馏}}\index{基于单词的知识蒸馏}(Word-level Knowledge Distillation)\index{Word-level Knowledge Distillation}。该方法的目标是使得学生模型的预测(分布)尽可能逼近教师模型的预测(分布)。令$\mathbf{x}=\{x_1,\ldots,x_m\}$$\mathbf{y}=\{y_1,\ldots,y_n\}$分别表示输入和输出(数据中的答案)序列,$V$表示目标语言词表,则基于单词的知识蒸馏的损失函数被定义为:
\begin{eqnarray}
L_{\textrm{word}} = - \sum_{j=1}^n \sum_{y_j \in V} \textrm{P}_{\textrm{t}} (y_{\textrm{j}}|\mathbf{x})\textrm{logP}_{\textrm{s}}(y_j|\mathbf{x})
\label{eq:13-28}
......@@ -517,13 +517,13 @@ L_{\textrm{seq}} = - \sum_{\textrm{y}}\textrm{P}_{\textrm{t}} (\mathbf{y}|\mathb
\label{eq:13-29}
\end{eqnarray}
公式\ref{eq:13-29}要求遍历所有可能的译文序列,并进行求和,当词表大小为$V$,序列长度为$L$时,则可能的序列的数量有$V$$L$次幂,这么多的译文将消耗大量的计算资源。因此,会考虑用教师模型的真实输出序列$\hat{\mathbf{y}}$来代替整个空间,即假设$\textrm{P}_{\textrm{t}}(\hat{\mathbf{y}}|\mathbf{x})=1$。于是,目标函数变为:
公式\ref{eq:13-29}要求遍历所有可能的译文序列,并进行求和,当词表大小为$V$,序列长度为$n$时,则可能的序列的数量有$V$$n$次幂,这么多的译文将消耗大量的计算资源。因此,会考虑用教师模型的真实输出序列$\hat{\mathbf{y}}$来代替整个空间,即假设$\textrm{P}_{\textrm{t}}(\hat{\mathbf{y}}|\mathbf{x})=1$。于是,目标函数变为:
\begin{eqnarray}
L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\label{eq:13-30}
\end{eqnarray}
这样的损失函数带来最直接的好处是,知识蒸馏的流程会非常简单。因为只需要利用教师模型将训练数据(源语言)翻译一遍,之后把它的输出替换为训练数据的目标语言部分。之后,利用得到的新的双语数据训练学生模型即可,图\ref{fig:13-41}展示了简化后词级和序列级的不同,其中词级知识蒸馏的解码端输入为真实双语数据的目标语言,并以teacher模型输出的概率分布作为学习目标,而序列级则直接将teacher推断后得到的结果作为解码端的输入,并将解码结果的One-hot向量作为学习目标。
这样的损失函数带来最直接的好处是,知识蒸馏的流程会非常简单。因为只需要利用教师模型将训练数据(源语言)翻译一遍,之后把它的输出替换为训练数据的目标语言部分。之后,利用得到的新的双语数据训练学生模型即可,图\ref{fig:13-41}展示了简化后词级和序列级的不同,其中词级知识蒸馏的解码端输入为真实双语数据的目标语言,并以教师模型输出的概率分布作为学习目标,而序列级则直接将教师模型推断后得到的结果作为解码端的输入,并将解码结果的One-hot向量作为学习目标。
\vspace{0.5em}
\end{itemize}
......@@ -536,10 +536,10 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\end{figure}
%-------------------------------------------
\parinterval 本质上,基于单词的知识蒸馏和传统的语言模型等问题的建模方式是一致的。在传统方法中,训练数据中的答案会被看作是一个One-hot分布,之后让模型去尽可能拟合这种分布。而这里,答案不再是一个One-hot分布,而是由教师模型生成的真实分布,但是损失函数的形式是一模一样的。在具体实现时,一个容易出现的问题是在词级别的知识蒸馏中,teacher模型的Softmax可能会生成非常尖锐的分布。这时需要考虑对分布进行平滑,提高模型的泛化能力\footnote[16]{比如,可以在Softmax函数中加入一个参数$\alpha$,如$\textrm{Softmax}(s_i)=\frac{exp(s_i/\alpha)}{\sum_j exp(s_i/\alpha)}$。这样可以通过$\alpha$控制分布的平滑程度。
\parinterval 本质上,基于单词的知识蒸馏和语言建模等问题的建模方式是一致的。在传统方法中,训练数据中的答案会被看作是一个One-hot分布,之后让模型去尽可能拟合这种分布。而这里,答案不再是一个One-hot分布,而是由教师模型生成的真实分布,但是损失函数的形式是一模一样的。在具体实现时,一个容易出现的问题是在词级别的知识蒸馏中,教师模型的Softmax可能会生成非常尖锐的分布。这时需要考虑对分布进行平滑,提高模型的泛化能力\footnote[16]{比如,可以在Softmax函数中加入一个参数$\alpha$,如$\textrm{Softmax}(s_i)=\frac{\exp(s_i/\alpha)}{\sum_j \exp(s_i/\alpha)}$。这样可以通过$\alpha$ 控制分布的平滑程度。
}
\parinterval 除了在模型最后输出的分布上进行知识蒸馏,同样可以使用教师模型对学生模型的{\small\bfnew{中间层输出}}\index{中间层输出}(Hint-based Knowledge Transfer)\index{Hint-based Knowledge Transfer}{\small\bfnew{注意力分布}}\index{注意力分布}(Attention To Attention Transfer)\index{Attention To Attention Transfer}进行约束。而对翻译常用的Transformer架构,也有研究者使用更精细的精炼方式对模型各个位置的知识重新设计了知识迁移的方法\upcite{DBLP:journals/corr/abs-1909-10351}
\parinterval 除了在模型最后输出的分布上进行知识蒸馏,同样可以使用教师模型对学生模型的{\small\bfnew{中间层输出}}\index{中间层输出}(Hint-based Knowledge Transfer)\index{Hint-based Knowledge Transfer}{\small\bfnew{注意力分布}}\index{注意力分布}(Attention To Attention Transfer)\index{Attention To Attention Transfer}进行约束。而对翻译常用的Transformer架构,也可以使用更精细的精炼方式对模型各个位置的知识重新设计了知识迁移的方法\upcite{DBLP:journals/corr/abs-1909-10351}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -553,13 +553,13 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\begin{itemize}
\vspace{0.5em}
\item 固定教师模型,通过减少模型容量的方式设计学生模型。比如,可以使用容量较大的模型作为教师模型(如:Transformer-Big或Transformer-Deep),然后通过将神经网络变“窄”、变“浅”的方式得到学生模型。我们可以用Transformer-Big做教师模型,然后把Transformer-Big的解码器变为一层网络,作为学生模型。
\item 固定教师模型,通过减少模型容量的方式设计学生模型。比如,可以使用容量较大的模型作为教师模型(如:Transformer-Big或Transformer-Deep),然后通过将神经网络变“窄”、变“浅”的方式得到学生模型。例如,可以用Transformer-Big做教师模型,然后把Transformer-Big的解码器变为一层网络,作为学生模型。
\vspace{0.5em}
\item 固定学生模型,通过模型集成的方式设计教师模型。可以组合多个模型生成更高质量的译文(见\ref{subsection-7.4.3}节)。比如,融合多个Transformer-Big模型(不同参数初始化方式),之后学习一个Transformer-Base模型。
\item 固定学生模型,通过模型集成的方式设计教师模型。可以组合多个模型生成更高质量的译文。比如,融合多个Transformer-Big模型(不同参数初始化方式),之后学习一个Transformer-Base模型。
\vspace{0.5em}
\end{itemize}
\parinterval 此外还可以采用迭代知识蒸馏的方式。首先,通过模型集成得到较强的教师模型,再将知识迁移到不同的学生模型上,随后继续使用这些学生模型集成新的教师模型。不断的重复上述过程可以逐步提升集成模型的性能,如图\ref{fig:13-42}所示。值得注意的是,随着迭代次数的增加,集成所带来的收益也会随着子模型之间差异性的减小而减少。
\parinterval 此外还可以采用迭代知识蒸馏的方式。首先,通过模型集成得到较强的教师模型,再将知识迁移到不同的学生模型上,随后继续使用这些学生模型集成新的教师模型。不断的重复上述过程可以逐步提升集成模型的性能,如图\ref{fig:13-42}所示。值得注意的是,随着迭代次数的增加,集成所带来的收益也会随着子模型之间差异性的减小而减少。
%----------------------------------------------
\begin{figure}[htp]
......@@ -570,16 +570,16 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\end{figure}
%-------------------------------------------
\parinterval 如果倾向于使用更少的存储,更快的推理速度,则可以使用更小的学生模型。值得注意的是,对于Transformer模型来说,减少解码端的层数会给推理速度带来巨大的提升。特别是对于基于深层编码器的Transformer-Deep,适当减少解码端层数往往不会带来翻译品质的下降。可以根据不同任务的需求,选择适当大小的学生模型,来平衡存储、推断速度和模型品质之间的关系。
\parinterval 如果倾向于使用更少的存储,更快的推理速度,则可以使用更小的学生模型。值得注意的是,对于Transformer模型来说,减少解码端的层数会给推理速度带来巨大的提升。特别是对于基于深层编码器的Transformer-Deep,适当减少解码端层数往往不会带来翻译品质的下降。可以根据不同任务的需求,选择适当大小的学生模型,来平衡存储空间、推断速度和模型品质之间的关系。
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section{学习策略}
\section{基于样本价值的学习}
\parinterval 在学习一个知识时,人们通常会遵循序渐进、由易到难的原则,这是一种很自然的学习策略。然而当训练一个模型时,通常是将全部的样本以随机的方式输入到模型中,换句话说,就是让模型平等地对待所有的训练样本。这和直觉是不符合的,因为不同的样本应该存在价值高低之分,这与任务以及数据本身密切相关。围绕训练样本的价值差异,有诸如数据选择、主动学习、课程学习等一系列的关于学习策略的讨论,而这些学习策略本质上是研究如何在不同任务、不同背景、不同假设下高效的利用样本来进行学习,本节即对这些相关技术进行介绍。
\parinterval 当人在学习知识时,通常会遵循序渐进、由易到难的原则,这是一种很自然的学习策略。但是,当训练机器翻译模型时,通常是将全部的样本以随机的方式输入模型中进行学习,换句话说,就是让模型来平等地对待所有的训练样本。这种方式也忽略了样本对于模型训练的“价值”,显然,更加理想的方式是使用高价值的样本对模型进行训练。围绕训练样本的价值差异引发了诸如数据选择、主动学习、课程学习等一系列的学习策略,这些学习策略本质上是在不同任务、不同背景、不同假设下对如何高效的利用样本来进行学习这一问题的解决方法,本节即对这些相关技术进行介绍。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -587,53 +587,43 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\subsection{数据选择}
\parinterval 训练模型的过程本质上就是模型在学习训练数据的分布,我们期望模型学到的分布和真实数据的分布能够越接近越好。然而训练数据是我们从真实世界中采样得来的,可能与真实世界的数据分布不一致,这导致训练数据存在偏差。这种分布的不匹配有许多不同的表现形式,比如类别不平衡、存在领域差异、存在标签噪声等,这导致模型在实践中表现不佳
\parinterval 模型学习的过程本质上就是在学习训练数据的分布,以期望模型学到的分布和真实数据的分布越接近越好。然而训练数据是从真实世界中采样得来的,这导致了训练数据无法完整地描述客观世界的真实规律。这种分布的不匹配有许多不同的表现形式,比如类别不平衡、领域差异、存在标签噪声等,这导致模型在实践中表现不佳。类别不平衡在分类任务中更为常见,可以通过重采样、代价敏感等手段来解决,数据选择则是缓解后两个问题的一种有效手段,它的学习策略是不让模型学所有的样本,而是静态或动态的选择有价值的样本来让模型学习,此外,在一些稀缺资源场景下还会面临标注数据稀少的情况,此时可以利用主动学习选择那些最有价值的样本让人工进行标注,从而降低成本
\parinterval 类别不平衡在分类任务中特别常见。为了解决这种问题,可以采用重采样、代价敏感等方式。此外,数据选择是缓解后两个问题的一种有效手段,它的策略是不让模型学所有的样本,而是静态或动态的选择有价值的样本来让模型学习。此外,在一些稀缺资源场景下,还存在标注数据稀少的问题。此时,可以利用主动学习选择那些最有价值的样本,并对这一部分样本进行人工标注,从而降低数据标注的成本。
\parinterval 在这里,定义价值本质上是在定义评分函数,这是数据选择的核心问题,价值在不同任务背景下有不同的含义,这与任务的特性和它的基本假设有关。比如,在领域数据选择中,价值表示样本与领域的相关性,在数据降噪中,价值表示样本的可信度,在主动学习中,价值表示样本的困难程度。下面对它们进行介绍。
\parinterval 在这里,定义价值本质上是在定义一个评价函数,这是数据选择的核心问题,价值在不同任务背景下有不同的含义,这与任务的特性和它的基本假设有关。比如,在领域相关数据选择中,价值表示样本与领域的相关性;在数据降噪中,价值表示样本的可信度;在主动学习中,价值表示样本的困难程度。下面对它们进行介绍。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 领域适应中的数据选择}
\parinterval 由于机器翻译模型是使用平行语料训练的,因此,语料的质量、数量以及领域对翻译效果都有很大的影响。有研究工作表明,无论是使用统计机器翻译还是神经机器翻译技术,翻译模型对于训练语料的领域都很敏感\upcite{DBLP:journals/mt/EetemadiLTR15,britz2017effective}。因为每个领域都有自己独特的属性,比如语言风格、句子结构、专业术语等,例如“bank”这个英语单词,在金融领域通常被翻译为“银行”,而在计算机领域,一般被解释为“库”、“存储体”等。使用通用领域数据训练出来的模型,在特定领域上的翻译效果往往不理想,这本质上是数据分布不同导致的。面对这种问题,一种解决办法是用特定领域的数据来训练模型。然而,特定领域数据往往比较稀缺,直接使用这种数据训练容易造成模型欠拟合。
\subsubsection{1. 领域相关的数据选择}
\parinterval 那么,一种很自然的想法是:能不能利用通用领域数据来帮助数据稀少的领域呢?这个研究方向被称为机器翻译的领域适应{\red (16.5领域适应)},其中资源丰富的领域被称为{\small\bfnew{源领域}}\index{源领域}(Source Domain)\index{Source Domain},资源稀缺的领域被称为{\small\bfnew{目标领域}}\index{目标领域}(Target Domain)\index{Target Domain}。领域适应主要有基于模型和基于数据两类方法,基于数据的方法主要关注如何充分有效地利用训练样本,数据选择就是其中一种简单有效的方法,它的学习策略是:在训练过程中,动态或静态的从源领域语料中选取部分数据,比如一些额外的、与目标领域数据相关的数据,并把这些数据用于模型的训练。这样做的好处在于:
\parinterval 机器翻译模型是基于平行语料训练出来的,语料的质量、数量对翻译效果都有很大的影响。特别是,当机器翻译系统应用于不同领域的文本时,训练语料与所应用领域的相关性就非常重要(Survey of data-selection methods in statistical machine translation;Effective Domain Mixing for Neural Machine Translation)。不同领域往往具有自己独特的属性,比如语言风格、句子结构、专业术语等,例如,“bank”这个英语单词,在金融领域通常被翻译为“银行”,而在计算机领域,一般被解释为“库”、“存储体”等。这也会导致,使用通用领域数据训练出来的模型在特定领域上的翻译效果往往不理想,这本质上是训练数据和测试数据的领域属性不匹配造成的。
\begin{itemize}
\vspace{0.5em}
\item 在机器翻译系统中,需要根据数据规模设置合理的模型大小,模型的大小往往是与数据规模呈正相关的。选择一部分数据,而不是使用全部数据可以使得模型更小,并且训练和运行成本更低,这在一些受限的环境中是一大优势。
\vspace{0.5em}
\item 在任何大型语料库中,都可能包含许多与领域无关的数据,如果直接混合多个领域的数据进行训练,可能会损害模型的性能。因此,选择与特定领域的相关的数据可以让模型的表现更好。
\vspace{0.5em}
\end{itemize}
\parinterval 一种解决办法是只使用特定领域的数据进行模型训练,然而这种数据往往比较稀缺。那能不能利用通用领域数据来帮助数据稀少的领域呢?这个研究方向被称为机器翻译的{\small\bfnew{领域适应}}\index{领域适应}(Domain Adaptation\index{Domain Adaptation}),即从资源丰富的领域(称为源领域, Source Domain)向资源稀缺的领域(称为目标领域, Target Domain)迁移。这本身也对应着资源稀缺场景下的机器翻译问题,这类问题会在{\chaptersixteen}进行详细讨论。本章更加关注如何充分有效地利用训练样本以更好地适应目标领域。具体来说,可以使用{\small\bfnew{数据选择}}\index{数据选择}(Data Selection\index{Selection})从源领域训练数据中选择与目标领域更加相关的样本进行模型训练。这样做的一个好处是,源领域中混有大量与目标领域不相关的样本,数据选择可以有效的降低这部分数据的比例,这样可以更加突出与领域相关的样本的作用。
\parinterval 领域数据选择所要解决的核心问题是:当给定一个目标领域数据集时,对于源领域中的任意一个句子对,如何衡量该句子对和目标领域的相关性?目前,该工作可以分为以下几类:
\parinterval 数据选择所要解决的核心问题是:给定一个目标数据集(如,目标任务的开发集),如何衡量原始训练样本与目标领域/任务的相关性?主要方法可以分为以下几类:
\begin{itemize}
\vspace{0.5em}
\item 基于语言模型{\small\bfnew{交叉熵差}}\index{交叉熵差}(Cross-entropy difference\index{Cross-entropy difference},CED)\upcite{DBLP:conf/emnlp/AxelrodHG11,DBLP:conf/wmt/AxelrodRHO15,DBLP:conf/emnlp/WangULCS17,DBLP:conf/iwslt/MansourWN11}。该方法是在目标领域数据和通用数据上,分别训练语言模型,然后用语言模型给句子打分,并求出两个语言模型打分的差。分数越低,说明句子与目标领域越相关。
\item 基于交叉熵差(cross-entropy difference,CED)的方法(Domain Adaptation Via Pseudo In-Domain Data Selection;Data Selection With Fewer Words;Instance Weighting for Neural Machine Translation Domain Adaptation;Combining translation and language model scoring for domain-specific data filtering)。该方法做法是在目标领域数据和通用数据上分别训练语言模型,然后用语言模型来给句子打分并做差,分数越低说明句子与目标领域越相关。
\vspace{0.5em}
\item 基于文本分类\upcite{DBLP:conf/conll/ChenH16,chen2016bilingual,DBLP:conf/aclnmt/ChenCFL17,DBLP:conf/wmt/DumaM17}。该方法将原始问题转化为文本分类问题,首先用领域数据训练一个分类器,之后利用该分类器对给定的句子进行领域分类,最后使用输出的概率进行打分
\item 基于文本分类的方法(Semi-supervised Convolutional Networks for Translation Adaptation with Tiny Amount of In-domain Data;Bilingual Methods for Adaptive Training Data Selection for Machine Translation;Cost Weighting for Neural Machine Translation Domain Adaptation;Automatic Threshold Detection for Data Selection in Machine Translation)。将该问题转化为文本分类问题,先构造一个领域分类器,之后利用该分类器对给定的句子进行领域分类,最后用输出的概率来打分,选择目标领域预测得分高的样本
\vspace{0.5em}
\item 基于{\small\bfnew{特征衰减算法}}\index{特征衰减算法}(Feature Decay Algorithms\index{Feature Decay Algorithms},FDA)\upcite{DBLP:conf/wmt/BiciciY11,poncelas2018feature,DBLP:conf/acl/SotoSPW20,DBLP:journals/corr/abs-1811-03039}。该算法基于特征匹配,试图从源领域中提取出一个句子集合,{\red 这些句子能够使目标领域语言特征的覆盖范围最大化。(这句话什么意思?)}
\item 基于特征衰减算法的方法(Feature Decay Algorithms,FDA)(Instance selection for machine translation using feature decay algorithms;Feature decay algorithms for neural machine translation;Selecting Backtranslated Data from Multiple Sources for Improved Neural Machine Translation;Data Selection with Feature Decay Algorithms Using an Approximated Target Side)。该算法基于特征匹配,试图从源领域中提取出一个句子集合,这些句子能够使目标领域语言特征的覆盖范围最大化。
\vspace{0.5em}
\end{itemize}
\parinterval 尽管这些方法有所不同,但是它们的目的都是为了衡量样本和领域的相关性,这些评价指标最终服务于训练过程中的样本学习策略。样本学习策略主要分为静态和动态两种,早期的研究工作都是关注于设计评分函数,在学习策略上普遍采用基于静态的方法,即首先利用评分函数对源领域的数据进行打分和排序,然后选取一定数量的数据合并到目标领域数据集中,与目标领域数据一起训练模型\upcite{DBLP:conf/emnlp/AxelrodHG11,DBLP:conf/wmt/AxelrodRHO15,chen2016bilingual,DBLP:conf/wmt/BiciciY11,DBLP:conf/conll/ChenH16},这个过程其实是扩大了目标领域的数据规模,模型的收益主要来自于数据量的增加。但是随着实践,人们发现基于静态的方法会存在两方面的缺陷:
\parinterval 尽管这些方法有所不同,但是它们的目的都是为了衡量样本和领域的相关性,这些评价指标最终服务于训练过程中的样本学习策略。样本学习策略主要分为静态和动态两种,早期的研究工作都是关注于设计评分函数,在学习策略上普遍采用静态方法,即首先利用评分函数对源领域的数据进行打分排序,然后选取一定数量的数据合并到目标领域数据集中共同训练模型(Domain Adaptation Via Pseudo In-Domain Data Selection;Data Selection With Fewer Words;Bilingual Methods for Adaptive Training Data Selection for Machine Translation;Instance selection for machine translation using feature decay algorithms;Semi-supervised Convolutional Networks for Translation Adaptation with Tiny Amount of In-domain Data),这个过程其实是扩大了目标领域的数据规模,模型的收益主要来自于数据的增加。但是研究人员也发现静态方法会存在两方面的缺陷:
\begin{itemize}
\vspace{0.5em}
\item 与在完整的源领域数据池上训练相比,在选定的子集上进行训练会导致词表覆盖率降低,并加剧单词长尾分布问题。这些问题会对翻译系统的性能产生显著影响\upcite{DBLP:conf/wmt/AxelrodRHO15,DBLP:conf/emnlp/WeesBM17}
\item 在选定的子集上进行训练会导致词表覆盖率的降低和加剧单词长尾分布问题。(Data Selection With Fewer Words;Dynamic Data Selection for Neural Machine Translation)
\vspace{0.5em}
\item 基于静态的方法可以看作一种数据过滤技术,它对数据的判定方式是“非黑即白”的,即接收或拒绝。在一方面,这导致静态的方法会受到评分函数的影响。另一方面,被拒绝的数据可能仍然有助于训练模型,而且在训练过程中,这些数据的有用性可能会改变\upcite{DBLP:conf/wmt/WangWHNC18}
\item 静态方法可以看作一种数据过滤技术,它对数据的判定方式是“非黑即白”的,即接收或拒绝,这种方式一方面会受到评分函数的影响,一方面被拒绝的数据可能对于训练模型仍然有用,而且样本的价值可能会随着训练过程的推进而改变。(Denoising Neural Machine Translation Training with Trusted Data and Online Data Selection)
\vspace{0.5em}
\end{itemize}
\parinterval 为了解决这些问题,研究人员提出了动态的学习策略。这里的动态主要体现在:在模型的训练过程中,使用某种策略动态地组织源领域和目标领域数据。这种方法不直接抛弃相关性低的句子,而是让模型更关注相关性高的句子。在实现上,主要有两种方法,一种是将句子的领域相似性表达成概率分布,然后在训练过程中根据该分布对数据进行动态采样\upcite{DBLP:conf/emnlp/WeesBM17,DBLP:conf/acl/WangUS18},另一种是在计算损失函数时,{\red 根据句子的领域相似性以加权的方式进行训练}\upcite{DBLP:conf/emnlp/WangULCS17,DBLP:conf/aclnmt/ChenCFL17}。相比基于静态的{\red 二元选择(感觉这整句话没说明白)},基于动态的方法是一种更“软”的选择方式,这使得模型有机会使用到其它数据,提高了训练数据的多样性,因此性能也更理想
\parinterval 使用动态学习策略可以有效地缓解上述这些问题。这里的动态主要体现在模型训练过程中,训练数据是以某种策略进行动态的组织。它的基本想法是:不完全抛弃领域相关性低的样本,而只是使模型给予相关性高的样本更高的关注度,使得它更容易参与到训练过程中。具体在实现上,主要有两种方法,一种是将句子的领域相似性表达成概率分布,然后在训练过程中根据该分布对数据进行动态采样(Dynamic Data Selection for Neural Machine Translation;Dynamic Sentence Sampling for Efficient Training of Neural Machine Translation), 一种是在计算损失函数时根据句子的领域相似性以加权的方式进行训练(Instance Weighting for Neural Machine Translation Domain Adaptation;Cost Weighting for Neural Machine Translation Domain Adaptation)。相比于基于静态的二元选择,基于动态的方法是一种“软”选择方式,这使得模型有机会使用到其它数据,提高了训练数据的多样性,因此性能也更稳定
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -641,11 +631,11 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\subsubsection{2. 数据降噪}
\parinterval 除了领域差异,{\red 训练集偏差(之前都没有提到)}的另外一种常见表现形式是标签噪声。由于机器翻译的训练数据大多是从网页上爬取的数据,这不可避免的会引入噪声。这类噪声一般体现为如下问题,比如句子未对齐、多种语言单词混合、单词丢失等,{\red 相关研究表明神经机器翻译对于噪声数据很敏感(好像之前提到过)},当噪声过多时就会使得模型的性能显著下降\upcite{DBLP:conf/aclnmt/KhayrallahK18},因此无论是从模型健壮性还是{\red 训练效率出发},数据降噪都是很有意义的。事实上,数据降噪从统计机器翻译时代就已经有许多相关工作\upcite{DBLP:conf/coling/FormigaF12,DBLP:conf/acl/CuiZLLZ13,DBLP:phd/dnb/Mediani17},2018年WMT也开放了关于平行语料过滤的任务,这说明数据降噪工作正在逐步引起人们的注意。
\parinterval 除了领域差异,训练集偏差的另外一种常见表现形式是标签噪声。机器翻译的训练数据大多来源于网页爬取,这不可避免的会引入噪声,比如句子未对齐、多种语言单词混合、单词丢失等,相关研究表明神经机器翻译对于噪声数据很敏感,当噪声过多时就会使得模型的性能显著下降(On the impact of various types of noise on neural machine translation),因此无论是从模型健壮性还是训练效率出发,数据降噪都是很有意义的。事实上,数据降噪从统计机器翻译时代就已经有许多相关工作(Dealing with Input Noise in Statistical Machine Translation;Bilingual Data Cleaning for SMT using Graph-based Random Walk;Learning from Noisy Data in Statistical Machine Translation),2018年WMT也开放了关于平行语料过滤的任务,这说明数据降噪工作正在逐步引起人们的注意。
\parinterval 由于含有噪声的翻译数据通常都具有较为明显的特征,因此可以用一些启发式的特征来进行综合评分\upcite{rarrick2011mt,taghipour2011parallel,Xu2017ZipporahAF},例如:句子长度比、词对齐率、最长连续未对齐序列长度等;也可以将该问题转化为文本分类,或跨语言文本蕴含任务来{\red 进行筛选}\upcite{DBLP:conf/aclnmt/CarpuatVN17,DBLP:conf/naacl/VyasNC18};此外,从某种意义上来说,数据降噪其实也可以算是一种{\red 领域数据选择},因为它的目标是选择可信度高的样本,因此我们可以人工构建一个可信度高的小型数据集,然后利用该数据集和通用数据集之间的差异性{\red 进行选择}\upcite{DBLP:conf/wmt/WangWHNC18}
\parinterval 由于含有噪声的翻译数据通常都具有较为明显的特征,因此可以用比如:句子长度比、词对齐率、最长连续未对齐序列长度等一些启发式的特征来进行综合评分(MT Detection in Web-Scraped Parallel Corpora;Parallel Corpus Refinement as an Outlier Detection Algorithm;Zipporah: a Fast and Scalable Data Cleaning System for NoisyWeb-Crawled Parallel Corpora);也可以将该问题转化为文本分类或跨语言文本蕴含任务来进行筛选(Detecting Cross-Lingual Semantic Divergence for Neural Machine Translation;Identifying Semantic Divergences in Parallel Text without Annotations);此外,从某种意义上来说,数据降噪其实也可以算是一种领域数据选择,因为它的目标是选择可信度高的样本,因此我们可以人工构建一个可信度高的小型数据集,然后利用该数据集和通用数据集之间的差异性进行选择(Denoising Neural Machine Translation Training with Trusted Data and Online Data Selection)
\parinterval {\red 早期的工作大多在关注过滤的方法,对于噪声数据中模型的健壮性训练和噪声样本的利用探讨较少}。事实上,噪声是有强度的,有些噪声数据对于模型可能是有价值的,而且它们的价值可能会随着模型的状态而改变\upcite{DBLP:conf/wmt/WangWHNC18}。一个例子如图\ref{fig:13-51}所示{\red (画图的时候zh-gloss那行不要了,zh翻译为中文)}
\parinterval 早期的工作大多在关注过滤的方法,对于噪声数据中模型的健壮性训练和噪声样本的利用探讨较少。事实上,噪声是有强度的,有些噪声数据对于模型可能是有价值的,而且它们的价值可能会随着模型的状态而改变(Denoising Neural Machine Translation Training with Trusted Data and Online Data Selection)。一个例子如图\ref{fig:13-51}所示(画图的时候zh-gloss那行不要了,zh翻译为汉语)
%----------------------------------------------
\begin{figure}[htp]
......@@ -656,7 +646,8 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\end{figure}
%-------------------------------------------
\parinterval 图中的汉语句子中缺少了一部分翻译,但这两个句子都很流利,简单的基于长度或双语词典的方法可以很容易地对其进行过滤,但直观地看,这条训练数据对于训练NMT模型仍然有用,特别是在数据稀缺的情况下,因为汉语句子和英语句子的前半部分仍然是翻译对。这表明了噪声数据的微妙之处,它不是一个简单的二元分类问题:一些训练样本可能部分有用,而它们的有用性也可能随着训练的进展而改变。因此简单的过滤并不一种很好的办法,一种合理的学习策略应该是既可以合理的利用这些数据,又不让其对模型产生负面影响。直觉上,这是一个动态的过程,当模型能力较弱时(比如在训练初期),这些数据就能对模型起到正面作用,反之亦然。受课程学习(Curriculum Learning,更详细内容见下节)、微调(fine-tune)等启发,研究学者们也提出了类似的学习策略,它的主要思想是:在训练过程中对批量数据的噪声水平进退火(anneal),使得模型在越来越干净的批量数据上进行训练\upcite{DBLP:conf/wmt/WangWHNC18,DBLP:conf/acl/WangCC19}。从宏观上看,整个训练过程其实是一个持续微调的过程,这和微调的思想基本一致。这种学习策略一方面充分利用了训练数据,一方面又避免了噪声数据对模型的负面影响,因此取得了不错的效果。
\parinterval 图中的汉语句子中缺少了一部分翻译,但这两个句子都很流利,简单的基于长度或双语词典的方法可以很容易地对其进行过滤,但直观地看,这条训练数据对于训练NMT模型仍然有用,特别是在数据稀缺的情况下,因为汉语句子和英语句子的前半部分仍然是翻译对。这表明了噪声数据的微妙之处,它不是一个简单的二元分类问题:一些训练样本可能部分有用,而它们的有用性也可能随着训练的进展而改变。因此简单的过滤并不一种很好的办法,一种合理的学习策略应该是既可以合理的利用这些数据,又不让其对模型产生负面影响。直觉上,这是一个动态的过程,当模型能力较弱时(比如在训练初期),这些数据就能对模型起到正面作用,反之亦然。受课程学习(Curriculum Learning,更详细内容见下节)、微调(fine-tune)等启发,研究学者们也提出了类似的学习策略,它的主要思想是:在训练过程中对批量数据的噪声水平进退火(anneal),使得模型在越来越干净的批量数据上进行训练(Denoising Neural Machine Translation Training with Trusted Data and Online Data Selection;Dynamically Composing Domain-Data Selection with Clean-Data Selection by “Co-Curricular Learning” for Neural Machine Translation)。从宏观上看,整个训练过程其实是一个持续微调的过程,这和微调的思想基本一致。这种学习策略一方面充分利用了训练数据,一方面又避免了噪声数据对模型的负面影响,因此取得了不错的效果。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
......@@ -680,17 +671,17 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\vspace{0.5em}
\item 随机采样策略(Random Sampling,RS),随机采样,顾名思义就是不需要跟模型的预测结果做任何交互,直接从未标注样本池中随机筛选出一批样本给专家标注,常作为主动学习算法中最基础的对比实验。
\vspace{0.5em}
\item 不确定性采样的查询(Uncertainty Sampling)\upcite{DBLP:conf/emnlp/SettlesC08,campbell2000query,DBLP:conf/icml/SchohnC00}这类方法选择那些当前基准分类器最不能确定其分类的样本,不确定性通常可以用信度最低(Least Confident)、边缘采样(Margin Sampling)、熵(Entropy)等方法来描述,从几何角度看,这种方法优先选择靠近分类边界的样例;
\item 不确定性采样的查询(Uncertainty Sampling)(An analysis of active learning strategies for sequence labeling tasks;Query learning with large margin classifers;Less is more: Active learning with support vector machines)这类方法选择那些当前基准分类器最不能确定其分类的样本,不确定性通常可以用信度最低(Least Confident)、边缘采样(Margin Sampling)、熵(Entropy)等方法来描述,从几何角度看,这种方法优先选择靠近分类边界的样例;
\vspace{0.5em}
\item 基于委员会的查询(Query-By-Committee)\upcite{DBLP:conf/colt/SeungOS92,mitchell1996m,DBLP:conf/icml/AbeM98,mccallumzy1998employing}这类方法选择那些训练后能够最大程度缩减版本空间的样本,可以采用Bagging,AdaBoost等分类器集成算法从版本空间中产生委员会,然后选择委员会中的假设预测分歧最大的样本;
\item 基于委员会的查询(Query-By-Committee)(Query by committee;Machine Learning;Query learning strategies using boosting and bagging;Employing em and pool-based active learning for text classifcation)这类方法选择那些训练后能够最大程度缩减版本空间的样本,可以采用Bagging,AdaBoost等分类器集成算法从版本空间中产生委员会,然后选择委员会中的假设预测分歧最大的样本;
\vspace{0.5em}
\item 其它经典策略:梯度长度期望(Expected Gradient Length,EGL) 策略,根据未标注样本对当前模型的影响程度优先筛选出对模型影响最大的样本\upcite{DBLP:conf/cvpr/DalalT05,726791};方差最小(Variance Reduction,VR)策略,选择那些方差减少最多的样本数据\upcite{atkinson2007optimum,DBLP:journals/jmlr/JiH12};结合生成对抗网络的方法\upcite{DBLP:journals/corr/ZhuB17,DBLP:conf/iccv/HuijserG17,DBLP:conf/wacv/0007T20}
\item 其它经典策略:梯度长度期望(Expected Gradient Length,EGL) 策略,根据未标注样本对当前模型的影响程度优先筛选出对模型影响最大的样本(Histograms of oriented gradients for human detection;Gradient-based learning applied to document recognition);方差最小(Variance Reduction,VR)策略,选择那些方差减少最多的样本数据(Optimum Experimental Designs, with SAS;A variance minimization criterion to active learning on graphs);结合生成对抗网络的方法(Generative adversarial active learning;Active decision boundary annotation with deep generative models;Adversarial sampling for active learning)
\vspace{0.5em}
\end{itemize}
\parinterval 具体方法细节可以查阅相关论文,查询策略是主动学习框架中的核心,大量研究都在围绕采样策略和学习策略展开,在实际应用中需要根据任务情况来决定使用哪种策略。
\parinterval 主动学习非常适合于专业领域的任务,因为专业领域的标注成本往往比较昂贵,比如医学、金融、法律等。事实上,主动学习在神经机器翻译中的利用并不是很多,这主要是因为主动学习仅是把那些有价值的单语数据选出来,然后交给人工标注,这个过程需要人工的参与,然而神经机器翻译有许多利用单语数据的方法,比如在目标端结合语言模型\upcite{DBLP:conf/acl/JeanCMB15,2015OnGulcehre};利用反向翻译(Back translation)\upcite{Sennrich2016ImprovingNM,DBLP:conf/aaai/Zhang0LZC18,hoang2018iterative};利用多语言或迁移学习\upcite{DBLP:conf/mtsummit/ImankulovaDFI19,DBLP:conf/emnlp/CurreyH19,DBLP:conf/emnlp/KimPPKN19};无监督机器翻译\upcite{DBLP:conf/iclr/LampleCDR18,DBLP:conf/iclr/ArtetxeLAC18}等。但是在一些特定的场景下,主动学习仍然会发挥重要作用,比如:在低资源或专业领域的神经机器翻译中,主动学习可以大大减少人工标注成本\upcite{DBLP:conf/conll/LiuBH18,DBLP:conf/emnlp/ZhaoZZZ20};在交互式或增量式机器翻译中,主动学习可以让模型持续从外界反馈中受益\upcite{Peris2018ActiveLF,DBLP:journals/pbml/TurchiNFF17,DBLP:journals/csl/PerisC19}{\red 上面cite的位置}
\parinterval 主动学习非常适合于专业领域的任务,因为专业领域的标注成本往往比较昂贵,比如医学、金融、法律等。事实上,主动学习在神经机器翻译中的利用并不是很多,这主要是因为主动学习仅是把那些有价值的单语数据选出来,然后交给人工标注,这个过程需要人工的参与,然而神经机器翻译有许多利用单语数据的方法,比如在目标端结合语言模型(On using very large target vocabulary for neural machine translation;On using monolingual corpora in neural machine translation);利用反向翻译(Back translation)(Improving neural machine translation models with monolingual data;Joint training for neural machine translation models with monolingual data;Iterative backtranslation for neural machine translation);利用多语言或迁移学习(Exploiting Out-of-Domain Parallel Data through Multilingual Transfer Learning for Low-Resource Neural Machine Translation;Zero-Resource Neural Machine Translation with Monolingual Pivot Data;Pivot-based transfer learning for neural machine translation between non-english languages);无监督机器翻译(Unsupervised machine translation using monolingual corpora only;Unsupervised neural machine translation)等。但是在一些特定的场景下,主动学习仍然会发挥重要作用,比如:在低资源或专业领域的神经机器翻译中,主动学习可以大大减少人工标注成本(Learning to Actively Learn Neural Machine Translation;Active Learning Approaches to Enhancing Neural Machine Translation);在交互式或增量式机器翻译中,(Active Learning for Interactive Neural Machine Translation of Data Streams;Continuous learning from human post-edits for neural machine translation;Online learning for effort reduction in interactive neural machine translation)主动学习可以让模型持续从外界反馈中受益
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -704,11 +695,11 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\vspace{0.5em}
\item 可以加速机器学习模型的训练。在达到相同的模型性能条件下,课程学习可以加速训练,减少训练迭代步数;
\vspace{0.5em}
\item 使模型获得更好的泛化性能,即能让模型训练到更好的局部最优值状态;
\item 使模型获得更好的泛化性能,即能让模型训练到更好的局部最优值状态;
\vspace{0.5em}
\end{itemize}
\parinterval 这是符合直觉的,可以想象,对于一个数学零基础的人来说,如果一开始就同时学习加减乘除和高等数学,效率自然是比较低下的。而如果按照正常的学习顺序,比如先学习加减乘除,然后学习各种函数,最后再学习高等数学,有了前面的基础,再学习后面的知识,效率就可以更高。事实上,课程学习自从一被提出就受到了研究人员的极大关注,除了想法本身有趣之外,还因为它作为一种和模型无关的训练策略,具有即插即用(Plug-and-Play)的特点,可以被广泛应用于各种计算密集型的领域中,以提高效率,比如计算机视觉\upcite{DBLP:conf/eccv/GuoHZZDSH18,DBLP:conf/mm/JiangMMH14}(Computer Vision,CV),自然语言处理\upcite{DBLP:conf/naacl/PlataniosSNPM19,DBLP:conf/acl/TayWLFPYRHZ19}(Natural Language Processing,NLP)和神经网络结构搜索\upcite{DBLP:conf/icml/GuoCZZ0HT20}(Neural Architecture Search,NAS)等。神经机器翻译就是自然语言处理中一个很契合课程学习的任务,这是因为神经机器翻译往往需要大规模的平行语料来训练模型,训练成本很高,所以使用课程学习来加快收敛是一个很自然的想法。
\parinterval 这是符合直觉的,可以想象,对于一个数学零基础的人来说,如果一开始就同时学习加减乘除和高等数学,效率自然是比较低下的。而如果按照正常的学习顺序,比如先学习加减乘除,然后学习各种函数,最后再学习高等数学,有了前面的基础,再学习后面的知识,效率就可以更高。事实上,课程学习自从一被提出就受到了研究人员的极大关注,除了想法本身有趣之外,还因为它作为一种和模型无关的训练策略,具有即插即用(Plug-and-Play)的特点,可以被广泛应用于各种计算密集型的领域中,以提高效率,比如计算机视觉(Computer Vision,CV)(Weakly supervised learning from large-scale web images;Self-paced reranking for zero-example multimedia search),自然语言处理(Natural Language Processing,NLP)(Competence-based curriculum learning for neural machine translation;Simple and effective curriculum pointer-generator networks for reading comprehension over long narratives)和神经网络结构搜索(Neural Architecture Search,NAS)(Breaking the curse of space explosion: Towards efficient nas with curriculum search)等。神经机器翻译就是自然语言处理中一个很契合课程学习的任务,这是因为神经机器翻译往往需要大规模的平行语料来训练模型,训练成本很高,所以使用课程学习来加快收敛是一个很自然的想法。
\parinterval 那么如何针对一个具体任务设计一个课程学习呢?相比于正常的以随机方式呈现训练数据的方法,课程学习的目标就是按照样本难易程度以某种策略调度给模型学习,因此课程学习主要解决两个核心问题:
......@@ -716,7 +707,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\vspace{0.5em}
\item 如何评估每个样本的难度?即评估准则(Difficulty Criteria)
\vspace{0.5em}
\item 以何种策略来规划训练数据?比如何时为训练提供更复杂的数据,以及提供多少数据等,即课程规划(curriculum schedule)
\item 以何种策略来规划训练数据?比如何时为训练提供更复杂的数据,以及提供多少数据等,即课程规划(curriculum schedule)
\vspace{0.5em}
\end{itemize}
......@@ -733,7 +724,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\parinterval 首先,难度评估器对训练样本按照由易到难的顺序进行排序,最开始调度器从相对容易的数据块中采样批量的训练数据,发送给模型进行训练,随着训练时间的推移,训练调度器将逐渐从更加困难的数据块中进行采样(至于何时,以及何种采样方式则取决于设定的策略),持续这个过程,直到从整个训练集进行均匀采样。
\parinterval 评估样本的难度和具体的任务相关,在神经机器翻译中,有很多种评估方法,可以利用语言学上的困难准则,比如句子长度、句子平均词频、句子语法解析树深度等\upcite{DBLP:conf/naacl/PlataniosSNPM19,DBLP:conf/ranlp/KocmiB17}。这些准则本质上属于人类的先验知识,符合人类的直觉,但不一定和模型相匹配,对人类来说简单的句子对模型来说并不总是容易的,所以研究学者们也提出了模型自动评估的方法,比如:利用语言模型\upcite{DBLP:conf/acl/WangCC19,DBLP:conf/naacl/ZhangSKMCD19},利用神经机器翻译模型\upcite{zhang2018empirical,DBLP:conf/coling/XuHJFWHJXZ20}等。值得注意的是,利用神经机器翻译来打分的方法分为静态和动态两种,静态的方法是利用在小数据集上训练的、更小的NMT模型来打分\upcite{zhang2018empirical},动态的方法则是利用当前模型的状态来打分,这在广义上也叫作自步学习(Self-Paced Learning),具体可以利用比如模型的训练误差或变化率等\upcite{DBLP:conf/coling/XuHJFWHJXZ20}
\parinterval 评估样本的难度和具体的任务相关,在神经机器翻译中,有很多种评估方法,可以利用语言学上的困难准则,比如句子长度、句子平均词频、句子语法解析树深度等(Competence-based curriculum learning for neural machine translation;Curriculum Learning and Minibatch Bucketing in Neural Machine Translation)。这些准则本质上属于人类的先验知识,符合人类的直觉,但不一定和模型相匹配,对人类来说简单的句子对模型来说并不总是容易的,所以研究学者们也提出了模型自动评估的方法,比如:利用语言模型(Dynamically Composing Domain-Data Selection with Clean-Data Selection by “Co-Curricular Learning” for Neural Machine Translation;Curriculum Learning for Domain Adaptation in Neural Machine Translation),利用神经机器翻译模型(An empirical exploration of curriculum learning for neural machine translation;Dynamic Curriculum Learning for Low-Resource Neural Machine Translation)等。值得注意的是,利用神经机器翻译来打分的方法分为静态和动态两种,静态的方法是利用在小数据集上训练的、更小的NMT模型来打分(An empirical exploration of curriculum learning for neural machine translation),动态的方法则是利用当前模型的状态来打分,这在广义上也叫作自步学习(Self-Paced Learning),具体可以利用比如模型的训练误差或变化率等(Dynamic Curriculum Learning for Low-Resource Neural Machine Translation)
\parinterval 虽然样本的难度度量在不同的数据类型和任务中有所不同,但针对第二个问题,即课程规划通常与数据和任务无关,换句话说,在各种场景中,大多数课程学习都利用了类似的调度策略。具体而言,调度策略可以分为预定义的和自动的两种。预定义通常是将按照难易程度排序好的样本划分为块,每个块中包含一定数量的难度相似的样本,如图\ref{fig:13-54}所示:
......@@ -759,9 +750,9 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\parinterval 图中每行是一个训练阶段,类似于正常训练的epoch,只不过当前的可用数据是整个数据集的子集。类似的还有一些其他变体,比如训练到模型可见整个数据集之后,将最难的样本块复制添加到训练集中,或者是将最容易的数据块逐渐删除,然后再添加回来等,这些方法的基本想法都是想让模型在具备一定的能力之后更多关注于困难样本。
\parinterval 尽管预定义的方法简单有效,但存在的一个最大限制是,预定义的难度评估器和训练规划在训练过程中都是固定的,不够灵活,这可能会导致数据块的划分不合理,而且在一定程度上也忽略了当前模型的反馈,因此研究人员也提出了自动的方法,这种方法会根据模型的反馈来动态调整样本的难度或调度策略,模型的反馈可以是模型的不确定性\upcite{DBLP:conf/acl/ZhouYWWC20}、模型的能力\upcite{DBLP:conf/naacl/PlataniosSNPM19,DBLP:conf/coling/XuHJFWHJXZ20}等,然后将模型的反馈和训练的轮次或者是数据的采样相挂钩,从而达到控制的目的,根据这种思想,还有直接利用强化学习的方法\upcite{DBLP:conf/aaai/ZhaoWNW20},这些方法在一定程度上使得整个训练过程和模型的状态相匹配,使得样本的选择过渡得更加平滑,因此在实践中取得了不错的效果。
\parinterval 尽管预定义的方法简单有效,但存在的一个最大限制是,预定义的难度评估器和训练规划在训练过程中都是固定的,不够灵活,这可能会导致数据块的划分不合理,而且在一定程度上也忽略了当前模型的反馈,因此研究人员也提出了自动的方法,这种方法会根据模型的反馈来动态调整样本的难度或调度策略,模型的反馈可以是模型的不确定性(Uncertainty-Aware Curriculum Learning for Neural Machine Translation)、模型的能力(Competence-based Curriculum Learning for Neural Machine Translation;Dynamic Curriculum Learning for Low-Resource Neural Machine Translation)等,然后将模型的反馈和训练的轮次或者是数据的采样相挂钩,从而达到控制的目的,根据这种思想,还有直接利用强化学习的方法(Reinforced Curriculum Learning on Pre-trained Neural Machine Translation Models),这些方法在一定程度上使得整个训练过程和模型的状态相匹配,使得样本的选择过渡得更加平滑,因此在实践中取得了不错的效果。
\parinterval 从广义上说,大多数课程学习方法都是遵循由易到难的原则,然而在实践过程中人们逐渐赋予了课程学习更多的内涵,课程学习的含义早已超越了最原始的定义。一方面,课程学习可以与许多任务相结合,此时,评估准则并不一定总是样本的困难度,这取决于具体的任务,比如在多任务学习中\upcite{DBLP:conf/cvpr/PentinaSL15,DBLP:conf/iccvw/SarafianosGNK17}(multi-task learning),指的任务的难易程度或相关性;在领域适应任务中\upcite{DBLP:conf/naacl/ZhangSKMCD19},指的是数据与领域的相似性;在噪声数据场景中,指的是样本的可信度\upcite{DBLP:conf/acl/WangCC19}。另一方面,在一些任务或数据中,由易到难并不总是有效,有时困难优先反而会取得更好的效果\upcite{zhang2018empirical}{\red Curriculum learning with deep convolutional neural networks},实际上这和我们的直觉不太符合,一种合理的解释是课程学习更适合标签噪声、离群值较多或者是目标任务困难的场景,能提高模型的健壮性和收敛速度,而困难优先则更适合数据集干净的场景,能使随机梯度下降(stochastic gradient descent,SGD)更快更稳定\upcite{DBLP:conf/nips/ChangLM17}。课程学习不断丰富的内涵使得它有了越来越广泛的应用。
\parinterval 从广义上说,大多数课程学习方法都是遵循由易到难的原则,然而在实践过程中人们逐渐赋予了课程学习更多的内涵,课程学习的含义早已超越了最原始的定义。一方面,课程学习可以与许多任务相结合,此时,评估准则并不一定总是样本的困难度,这取决于具体的任务,比如在多任务学习中(multi-task learning)(Curriculum learning of multiple tasks;Curriculum learning for multi-task classification of visual attributes),指的任务的难易程度或相关性;在领域适应任务中(Curriculum Learning for Domain Adaptation in Neural Machine Translation),指的是数据与领域的相似性;在噪声数据场景中,指的是样本的可信度(Dynamically Composing Domain-Data Selection with Clean-Data Selection by “Co-Curricular Learning” for Neural Machine Translation)。另一方面,在一些任务或数据中,由易到难并不总是有效,有时困难优先反而会取得更好的效果(Curriculum learning with deep convolutional neural networks;An empirical exploration of curriculum learning for neural machine translation),实际上这和我们的直觉不太符合,一种合理的解释是课程学习更适合标签噪声、离群值较多或者是目标任务困难的场景,能提高模型的健壮性和收敛速度,而困难优先则更适合数据集干净的场景,能使随机梯度下降(stochastic gradient descent,SGD)更快更稳定(Active bias: Training more accurate neural networks by emphasizing high variance samples)。课程学习不断丰富的内涵使得它有了越来越广泛的应用。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -775,15 +766,15 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\begin{itemize}
\vspace{0.5em}
\item 基于正则化的方法,通过对神经权重的更新施加约束来减轻灾难性的遗忘,通常是在损失函数中引入了一个额外的正则化项,使得模型在学习新数据时巩固先前的知识\upcite{DBLP:journals/pami/LiH18a}{\red Elastic Weight Consolidation}
\item 基于正则化的方法,通过对神经权重的更新施加约束来减轻灾难性的遗忘,通常是在损失函数中引入了一个额外的正则化项,使得模型在学习新数据时巩固先前的知识。(Learning without Forgetting ;Elastic Weight Consolidation )
\vspace{0.5em}
\item 基于示例的方法,以原始格式存储样本,或使用生成模型生成伪样本,在学习新任务的同时重放先前的任务样本以减轻遗忘。\upcite{DBLP:conf/cvpr/RebuffiKSL17,DBLP:conf/eccv/CastroMGSA18}
\item 基于示例的方法,以原始格式存储样本,或使用生成模型生成伪样本,在学习新任务的同时重放先前的任务样本以减轻遗忘。(iCaRL: Incremental Classifier and Representation Learning;End-to-End Incremental Learning )
\vspace{0.5em}
\item 基于动态模型架构的方法,通过动态调整网络结构来响应新信息,例如增加神经元或网络层进行重新训练,或者是在新任务训练时只更新部分参数\upcite{rusu2016progressive,DBLP:journals/corr/FernandoBBZHRPW17}
\item 基于动态模型架构的方法,通过动态调整网络结构来响应新信息,例如增加神经元或网络层进行重新训练,或者是在新任务训练时只更新部分参数。(Progressive Neural Networks;PathNet: Evolution Channels Gradient Descent in Super Neural Networks)
\vspace{0.5em}
\end{itemize}
\parinterval 从某种程度上看,机器翻译中的多领域、多语言等都属于持续学习的场景,灾难性遗忘也是这些任务面临的主要问题之一。在多领域神经机器翻译中,我们期望模型既有通用领域的性能,并且在特定领域也表现良好,然而事实上,由于灾难性遗忘问题的存在,适应特定领域往往是以牺牲通用领域的性能为代价的\upcite{DBLP:conf/naacl/ThompsonGKDK19,DBLP:conf/coling/GuF20},现有的解决方法大多都可以归到以上三类,具体内容可以参考{\red 16.5 领域适应}。在多语言神经翻译中,最理想的情况是一个模型就能够实现在多个语言之间的映射,然而由于数据分布的极大不同,实际情况往往是:多语言模型能够提高低资源语言对互译的性能,但同时也会降低高资源语言对的性能。因此如何让模型从多语言训练数据中持续受益就是一个关键的问题,16.3 多语言翻译模型作了详细介绍。此外,在增量式模型优化场景中也会存在灾难性遗忘问题,相关内容可参考{\red 18.2 增量式模型优化}
\parinterval 从某种程度上看,机器翻译中的多领域、多语言等都属于持续学习的场景,灾难性遗忘也是这些任务面临的主要问题之一。在多领域神经机器翻译中,我们期望模型既有通用领域的性能,并且在特定领域也表现良好,然而事实上,由于灾难性遗忘问题的存在,适应特定领域往往是以牺牲通用领域的性能为代价的(Overcoming Catastrophic Forgetting During Domain Adaptation of Neural Machine Translation;Investigating Catastrophic Forgetting During Continual Training for Neural Machine Translation),现有的解决方法大多都可以归到以上三类,具体内容可以参考16.5 领域适应。在多语言神经翻译中,最理想的情况是一个模型就能够实现在多个语言之间的映射,然而由于数据分布的极大不同,实际情况往往是:多语言模型能够提高低资源语言对互译的性能,但同时也会降低高资源语言对的性能。因此如何让模型从多语言训练数据中持续受益就是一个关键的问题,16.3 多语言翻译模型作了详细介绍。此外,在增量式模型优化场景中也会存在灾难性遗忘问题,相关内容可参考18.2 增量式模型优化
%----------------------------------------------------------------------------------------
% NEW SECTION
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论