Commit 1159f567 by 单韦乔

合并分支 'shanweiqiao' 到 'caorunzhe'

13.7

查看合并请求 !657
parents 6be80127 4c848606
......@@ -600,42 +600,207 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\sectionnewpage
\section{学习策略}
\parinterval 当我们在学习一个知识时,通常会遵循序渐进、由易到难的原则,这是一种很自然的学习策略。而当我们在训练一个模型时,通常是将全部的样本以随机的方式输入模型中进行学习,换句话说,就是让模型来平等地对待所有的训练样本,这和我们的直觉不太符合,因为不同的样本应该存在价值高低之分,这与任务以及数据本身密切相关。围绕训练样本的价值差异引发了诸如数据选择、主动学习、课程学习等一系列的学习策略,这些学习策略本质上是在不同任务、不同背景、不同假设下对如何高效的利用样本来进行学习这一问题的解决方法,本节即对这些相关技术进行介绍。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{数据选择}
\parinterval 模型学习的过程本质上就是在学习训练数据的分布,我们期望模型学到的分布和真实数据的分布越接近越好,然而训练数据是我们从真实世界中采样得来的,可能和真实世界的数据分布不一致,这导致了训练数据的偏差。这种分布的不匹配有许多不同的表现形式,比如类别不平衡、领域差异、存在标签噪声等,这导致模型在实践中表现不佳。类别不平衡在分类任务中更为常见,可以通过重采样、代价敏感等手段来解决,数据选择则是缓解后两个问题的一种有效手段,它的学习策略是不让模型学所有的样本,而是静态或动态的选择有价值的样本来让模型学习,此外,在一些稀缺资源场景下还会面临标注数据稀少的情况,此时可以利用主动学习选择那些最有价值的样本让人工进行标注,从而降低成本。在这里,定义价值本质上是在定义评分函数,这是数据选择的核心问题,价值在不同任务背景下有不同的含义,这与任务的特性和它的基本假设有关。比如在领域数据选择中,价值表示样本与领域的相关性,在数据降噪中,价值表示样本的可信度,在主动学习中,价值表示样本的困难程度。下面对它们进行介绍。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 领域适应中的数据选择}
\parinterval 机器翻译模型是基于平行语料训练出来的,语料的质量、数量、领域对翻译效果都有很大的影响。其中,研究工作表明,无论是统计机器翻译还是神经机器翻译对于训练语料的领域都很敏感(Survey of data-selection methods in statistical machine translation;Effective Domain Mixing for Neural Machine Translation),因为每个领域都有自己独特的属性,比如语言风格、句子结构、专业术语等,例如“bank”这个英文单词,在金融领域通常被翻译为“银行”,而在计算机领域,一般被解释为“库”、“存储体”等。在通用领域训练出来的模型在特定领域上的翻译效果往往不理想,这本质上是数据分布不同导致,一种解决办法是我们可以只用特定领域的数据来让模型训练,然而特定领域数据往往比较稀缺,直接训练容易造成模型欠拟合,那么一种很自然的想法是我们能不能利用通用领域数据来帮助数据稀少的领域呢?这个研究方向被称为机器翻译的领域适应,其中资源丰富的领域称为源领域( Source Domain),资源稀缺的领域称为目标领域( Target Domain),更多详细的内容请参考16.5 领域适应。领域适应主要有基于模型和基于数据两类方法,基于数据的方法主要关注如何充分有效地利用训练样本,数据选择就是其中一种简单有效的方法,它的学习策略是在训练过程中动态或静态的从源领域语料中选取额外的、与目标领域数据相关的数据用于模型的训练,这样做的好处在于:
\begin{itemize}
\vspace{0.5em}
\item 机器翻译系统需要根据数据规模设置合理的模型大小,模型的大小往往是与数据规模呈正相关的,选择部分数据而不是使用全部数据可以使模型更小,训练和运行成本更低,这在一些受限的环境中是一大优势。
\vspace{0.5em}
\item 任何大型语料库都可能包含许多与领域无关的数据,直接混合多个领域的数据进行训练可能会损害模型的性能,选择与特定领域的相关的数据可以让模型表现更好。
\vspace{0.5em}
\end{itemize}
\parinterval 领域数据选择所要解决的核心问题是:给定一个目标领域数据集,对于源领域中的任意一个句子对,如何衡量该句子对和目标领域的相关性?目前的工作可以分为以下几类:
\begin{itemize}
\vspace{0.5em}
\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 基于文本分类(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 基于特征衰减算法(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 尽管这些方法有所不同,但是它们的目的都是为了衡量样本和领域的相关性,这些评价指标最终服务于训练过程中的样本学习策略。样本学习策略主要分为静态和动态两种,早期的研究工作都是关注于设计评分函数,在学习策略上普遍采用基于静态的方法,即首先利用评分函数对源领域的数据进行打分排序,然后选取一定数量的数据合并到目标领域数据集中共同训练模型(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 与在完整的源领域数据池上训练相比,在选定的子集上进行训练会导致词表覆盖率的降低和加剧单词长尾分布问题,这会对翻译系统的性能产生显著影响。(Data Selection With Fewer Words;Dynamic Data Selection for Neural Machine Translation)
\vspace{0.5em}
\item 基于静态的方法可以看作一种数据过滤技术,它对数据的判定方式是“非黑即白”的,即接收或拒绝,这种方式一方面会受到评分函数的影响,一方面被拒绝的数据可能对于训练模型仍然有用,而且它们的有用性可能会随着训练的进展而改变。(Denoising Neural Machine Translation Training with Trusted Data and Online Data Selection)
\vspace{0.5em}
\end{itemize}
\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
%----------------------------------------------------------------------------------------
\subsubsection{2. 数据降噪}
\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 由于含有噪声的翻译数据通常都具有较为明显的特征,因此可以用比如:句子长度比、词对齐率、最长连续未对齐序列长度等一些启发式的特征来进行综合评分(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 早期的工作大多在关注过滤的方法,对于噪声数据中模型的鲁棒性训练和噪声样本的利用探讨较少。事实上,噪声是有强度的,有些噪声数据对于模型可能是有价值的,而且它们的价值可能会随着模型的状态而改变(Denoising Neural Machine Translation Training with Trusted Data and Online Data Selection)。一个例子如图XX (一对噪声数据实例 )所示(画图的时候zh-gloss那行不要了,zh翻译为中文),
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter13/Figures/figure-ensemble-knowledge-distillation}
\caption{迭代式知识蒸馏}
\label{fig:13-42}
\end{figure}
%-------------------------------------------
\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
%----------------------------------------------------------------------------------------
\subsubsection{3. 主动学习}
\parinterval 和数据选择密切相关的另外一个应用是主动学习(Active Learning),领域适应和数据降噪是拥有标注数据的情况,然而在一些实际的业务场景中,获得标注样本的代价往往比较高,大部分都是未标注数据,那么如何通过机器学习算法来降低人工标注的成本就是一个很有实际意义的问题,这个研究方向也称之为主动学习。既然人工标注的成本很大,那么就应该尽可能选择那些最有价值的样本交给人工来标注,之后再将标注的数据用于训练,从而逐步提升模型的效果,这也是主动学习的一个整体思路。因此主动学习主要由五个部分组成,包括:未标注样本池(unlabeled pool)、筛选策略(select queries)、标注者(human annotator)、标注数据集(labeled training set)、目标模型(machine learning model),如图XXX(主动学习框架)所示,整个过程以不断迭代的训练方式更新模型性能、未标注样本池和标注数据集,直到目标模型达到预设的性能或者不再提供标注数据为止。
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter13/Figures/figure-ensemble-knowledge-distillation}
\caption{迭代式知识蒸馏}
\label{fig:13-42}
\end{figure}
%-------------------------------------------
\parinterval 事实上,主动学习目的就是以尽可能少的标注样本来达到模型的目标性能,因此它的一个核心问题就是:如何选择出那些最有价值的未标注样本?这本质上是评分函数设计的问题,这个函数在主动学习中叫查询函数(Query Function),它的基本假设是模型认为最“难”的样本是最有价值的,函数的设计通常是基于一些启发式的策略,常见的一些方法有:
\begin{itemize}
\vspace{0.5em}
\item 随机采样策略(Random Sampling,RS),随机采样,顾名思义就是不需要跟模型的预测结果做任何交互,直接从未标注样本池中随机筛选出一批样本给专家标注,常作为主动学习算法中最基础的对比实验。
\vspace{0.5em}
\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)(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) 策略,根据未标注样本对当前模型的影响程度优先筛选出对模型影响最大的样本(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 主动学习非常适合于专业领域的任务,因为专业领域的标注成本往往比较昂贵,比如医学、金融、法律等。事实上,主动学习在神经机器翻译中的利用并不是很多,这主要是因为主动学习仅是把那些有价值的单语数据选出来,然后交给人工标注,这个过程需要人工的参与,然而神经机器翻译有许多利用单语数据的方法,比如在目标端结合语言模型(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
%----------------------------------------------------------------------------------------
\subsection{课程学习}
\parinterval 在机器学习的发展过程中,人类身上一些固有特性启发了各种算法的设计,比如大脑的神经元启发了人工神经网络,视觉机制启发了注意力算法,课程学习(Curriculum Learning,CL),就是模拟了人的认知机制:先学习简单的、普适性的知识,然后逐渐增加难度,学习更复杂、更专业化的知识,这体现在训练模型过程中就是让模型按照由“易”到”难“ 的顺序对样本进行学习(论文 Curriculum learning),这本质上是一种样本使用策略。在传统的机器学习算法中,所有训练样本都是随机呈现给模型的,换句话说,就是让模型来平等地对待所有的训练样本,这忽略了数据样本的各种复杂性和当前模型的学习状态,所以模拟人类由易到难的学习过程就是一种很自然的想法,这样做的好处在于:
\begin{itemize}
\vspace{0.5em}
\item 可以加速机器学习模型的训练。在达到相同的模型性能条件下,课程学习可以加速训练,减少训练迭代步数;
\vspace{0.5em}
\item 使模型获得更好的泛化性能,即能让模型训练到更好的局部最优值状态;
\vspace{0.5em}
\end{itemize}
\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 那么如何针对一个具体任务设计一个课程学习呢?相比于正常的以随机方式呈现训练数据的方法,课程学习的目标就是按照样本难易程度以某种策略调度给模型学习,因此课程学习主要解决两个核心问题:
\begin{itemize}
\vspace{0.5em}
\item 如何评估每个样本的难度?即评估准则(Difficulty Criteria)
\vspace{0.5em}
\item 以何种策略来规划训练数据?比如何时为训练提供更复杂的数据,以及提供多少数据等,即课程规划(curriculum schedule)
\vspace{0.5em}
\end{itemize}
\parinterval 我们把这两个问题抽象成两个模块:难度评估器和训练调度器,那么课程学习的一个大致的流程如下图xx(课程学习框架)所示:
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter13/Figures/figure-ensemble-knowledge-distillation}
\caption{迭代式知识蒸馏}
\label{fig:13-42}
\end{figure}
%-------------------------------------------
\parinterval 首先,难度评估器对训练样本按照由易到难的顺序进行排序,最开始调度器从相对容易的数据块中采样批量的训练数据,发送给模型进行训练,随着训练时间的推移,训练调度器将逐渐从更加困难的数据块中进行采样(至于何时,以及何种采样方式则取决于设定的策略),持续这个过程,直到从整个训练集进行均匀采样。
\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 虽然样本的难度度量在不同的数据类型和任务中有所不同,但针对第二个问题,即课程规划通常与数据和任务无关,换句话说,在各种场景中,大多数课程学习都利用了类似的调度策略。具体而言,调度策略可以分为预定义的和自动的两种。预定义通常是将按照难易程度排序好的样本划分为块,每个块中包含一定数量的难度相似的样本,如图XX(样本块划分)所示:
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter13/Figures/figure-ensemble-knowledge-distillation}
\caption{迭代式知识蒸馏}
\label{fig:13-42}
\end{figure}
%-------------------------------------------
\parinterval 然后按照“先易后难”的原则人工定义一个调度策略,比如早期一种较为流行的方法是:在训练早期模型只在简单块中进行采样,随着训练过程的进行,比如在固定数量的训练轮次之后,将下一个块的样本合并到当前训练子集中,继续训练,直到合并了整个数据块,即整个训练集可见为止,之后再继续进行几个额外轮次的训练直到收敛。示意图如图xxx(一种预定义的课程规划)所示:
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter13/Figures/figure-ensemble-knowledge-distillation}
\caption{迭代式知识蒸馏}
\label{fig:13-42}
\end{figure}
%-------------------------------------------
\parinterval 图中每行是一个训练阶段,类似于正常训练的epoch,只不过当前的可用数据是整个数据集的子集。类似的还有一些其他变体,比如训练到模型可见整个数据集之后,将最难的样本块复制添加到训练集中,或者是将最容易的数据块逐渐删除,然后再添加回来等,这些方法的基本想法都是想让模型在具备一定的能力之后更多关注于困难样本。
\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 从广义上说,大多数课程学习方法都是遵循由易到难的原则,然而在实践过程中人们逐渐赋予了课程学习更多的内涵,课程学习的含义早已超越了最原始的定义。一方面,课程学习可以与许多任务相结合,此时,评估准则并不一定总是样本的困难度,这取决于具体的任务,比如在多任务学习中(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
%----------------------------------------------------------------------------------------
\subsection{持续学习}
\parinterval 人类具有不断学习、调整和转移知识的能力,这种能力称之为持续学习(continual learning),也叫终生学习(lifelong learning)、增量式学习(incremental learning)。我们可以把学习不同类型的知识看作不同的学习任务,因此本质上,持续学习是一个多任务的场景。人类很容易在多个学习任务中切换,并且当要学习的新任务时,会很自然的利用以前的知识并将新学习的知识整合到以前的任务中。然而对于机器学习来说,尤其在连接主义(connectionist),即深度神经网络模型中,这是一个很大的挑战,这是由神经网络的特性所决定的。当前的神经网络模型依赖于标注的训练样本,通过反向传播算法在整个数据集上对网络参数进行训练更新,最终达到拟合数据分布的目的。当我们将模型切换到新的任务时,本质上是数据的分布发生了变化,从这种非平稳数据分布中不断递增地获取可用信息通常会导致灾难性遗忘问题(catastrophic forgetting),即用新信息训练模型的时候会干扰先前学习的知识,这是因为模型在学习新任务时,为了最大程度地减少新任务的损失,会用新训练数据对整个网络权重进行更新,这个过程主要服务于当前任务的优化,并不会去评估哪些参数权重对旧的知识是有用的,这在最坏的情况下会导致旧知识被新知识完全重写。因此最终从表现上看,神经网络模型训练串行任务的时候,新任务的学习会使先前学习的任务性能大大降低。
\parinterval 为克服灾难性遗忘问题,学习系统一方面必须能连续获取新知识和完善现有知识,另一方面,还应防止新数据输入明显干扰现有的知识,这个问题称作稳定性-可塑性(stability-plasticity)难题,可塑性指整合新知识的能力,稳定性指在编码时会保留先前的知识不至于遗忘。要解决这些问题,就需要模型在保留先前任务的知识与学习当前任务的新知识之间取得平衡。目前的解决方法可以分为以下几类:
\begin{itemize}
\vspace{0.5em}
\item 基于正则化的方法,通过对神经权重的更新施加约束来减轻灾难性的遗忘,通常是在损失函数中引入了一个额外的正则化项,使得模型在学习新数据时巩固先前的知识。(Learning without Forgetting ;Elastic Weight Consolidation )
\vspace{0.5em}
\item 基于示例的方法,以原始格式存储样本,或使用生成模型生成伪样本,在学习新任务的同时重放先前的任务样本以减轻遗忘。(iCaRL: Incremental Classifier and Representation Learning;End-to-End Incremental Learning )
\vspace{0.5em}
\item 基于动态模型架构的方法,通过动态调整网络结构来响应新信息,例如增加神经元或网络层进行重新训练,或者是在新任务训练时只更新部分参数。(Progressive Neural Networks;PathNet: Evolution Channels Gradient Descent in Super Neural Networks)
\vspace{0.5em}
\end{itemize}
\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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论