462 Chapter 13. 神经机器翻译模型训练 肖桐 朱靖波
13.6 基于样本价值的学习
当人在学习知识时,通常会遵循循序渐进、由易到难的原则,这是一种很自然的
学习策略。但是,当训练机器翻译模型时,通常是将全部的样本以随机的方式输入模
型中进行学习,换句话说,就是让模型来平等地对待所有的训练样本。这种方式忽
略了样本对于模型训练的“价值”,显然,更加理想的方式是优先使用价值高的样本
对模型进行训练。围绕训练样本的价值差异产生了诸如数据选择、主动学习、课程
学习等一系列的样本使用方法,这些学习策略本质上是在不同任务、不同背景、不
同假设下,对如何高效地利用训练样本这一问题进行求解,本节即对这些技术进行
介绍。
13.6.1 数据选择
模型学习的目的就是要学习训练数据中的分布,以期望模型学到的分布和真实
的分布越接近越好。然而训练数据是从真实世界中采样得来的,这导致了训练数据
无法完整地描述客观世界的真实规律。这种分布的不匹配有许多不同的表现形式,例
如,类别不平衡、领域差异、存在标签噪声等,这导致模型在实践中表现不佳。
类别不平衡在分类任务中更为常见,可以通过重采样、代价敏感训练等手段来
解决。数据选择则是缓解领域差异和标签噪声等问题的一种有效手段,它的学习策
略是让模型有选择地使用样本进行学习。此外,在一些稀缺资源场景下还会面临标
注数据稀少的情况,此时可以利用主动学习选择那些最有价值的样本优先进行人工
标注,从而降低标注成本。
显然,上述方法都基于一个假设:在训练过程中,每个样本都是有价值的,且这
种价值可以计算。价值在不同任务背景下有不同的含义,这与任务的特性有关。比
如,在领域相关数据选择中,样本的价值表示这个样本与领域的相关性;在数据降
噪中,价值表示样本的可信度;在主动学习中,价值表示样本的难易程度。
1. 领域相关的数据选择
当机器翻译系统应用于不同领域时,训练语料与所应用领域的相关性就显得非
常重要
[614, 615]
。不同领域往往具有自己独特的属性,比如语言风格、句子结构、专业
术语等,例如,“bank”这个英语单词,在金融领域通常被翻译为“银行”,而在计算
机领域,一般被解释为“库”、“存储体”等。这也会导致,使用通用领域数据训练出
来的模型在特定领域上的翻译效果往往不理想,这本质上是训练数据和测试数据的
领域属性不匹配造成的。
一种解决办法是只使用特定领域的数据进行模型训练,然而这种数据往往比较
稀缺。那能不能利用通用领域数据来帮助数据稀少的领域呢?这个研究方向被称为
机器翻译的领域适应(Domain Adaptation),即把数据从资源丰富的领域(称为源领
域,Source Domain)向资源稀缺的领域(称为目标领域,Target Domain)迁移。这本
身也对应着资源稀缺场景下的机器翻译问题,这类问题会在第十六章进行详细讨论。
13.6 基于样本价值的学习 463
本章更加关注如何有效地利用训练样本以更好地适应目标领域。具体来说,可以使
用数据选择(Data Selection)从源领域训练数据中选择与目标领域更加相关的样本进
行模型训练。这样做的一个好处是,源领域中混有大量与目标领域不相关的样本,数
据选择可以有效降低这部分数据的比例,这样可以更加突出与领域相关样本的作用。
数据选择所要解决的核心问题是:给定一个目标领域/任务数据集(如,目标任
务的开发集),如何衡量原始训练样本与目标领域/任务的相关性?主要方法可以分
为以下几类:
• 基于交叉熵差(Cross-entropy Difference,CED)的方法
[616, 617, 618, 619]
。该方法在目
标领域数据和通用数据上分别训练语言模型,然后用两个语言模型来给句子打
分并做差,差越小说明句子与目标领域越相关。
• 基于文本分类的方法
[620, 621, 622, 623]
。将问题转化为文本分类问题,先构造一个领域
分类器,之后利用分类器对给定的句子进行领域分类,最后用输出的概率来打
分,选择得分高的样本。
• 基于特征衰减算法(Feature Decay Algorithms,FDA)的方法
[624, 625, 626]
。该算法基
于特征匹配,试图从源领域中提取出一个句子集合,这些句子能够最大程度覆
盖目标领域的语言特征。
上述方法实际上描述了一种静态的学习策略,即首先利用评分函数对源领域的
数据进行打分排序,然后选取一定数量的数据合并到目标领域数据集中,再用目标
领域数据集训练模型
[616, 617, 620, 621]
。这个过程其实是扩大了目标领域的数据规模,此时,
对于使用目标领域数据集训练出的模型来说,其性能的增加主要来自于数据量的增
加。但是研究人员也发现静态方法会存在两方面的缺陷:
• 在选定的子集上进行训练会导致词表覆盖率的降低,并加剧单词长尾分布问
题
[617, 627]
。
• 静态方法可以看作一种数据过滤技术,它对数据的判定方式是“非黑即白”的,
即接收或拒绝。这种方式一方面会受到评分函数的影响,一方面被拒绝的数据
可能对于训练模型仍然有用,而且样本的价值可能会随着训练过程的推进而改
变
[628]
。
使用动态学习策略可以有效地缓解上述问题。它的基本想法是:不完全抛弃领
域相关性低的样本,而只是使模型给予相关性高的样本更高的关注度,使得它更容
易参与到训练过程中。具体在实现上,主要有两种方法,一种是将句子的领域相似
性表达成概率分布,然后在训练过程中根据该分布对数据进行动态采样
[627, 629]
,另一
种是在计算损失函数时根据句子的领域相似性以加权的方式进行训练
[618, 622]
。相比于
静态方法的二元选择方式,动态方法是一种“软”选择的方式,这使得模型有机会使
用到其它数据,提高了训练数据的多样性,因此性能也更稳定。
464 Chapter 13. 神经机器翻译模型训练 肖桐 朱靖波
2. 数据降噪
除了领域差异,训练数据中也存在噪声,比如,机器翻译所使用的数据中经常出
现句子未对齐、多种语言文字混合、单词丢失等问题。相关研究表明神经机器翻译对
于噪声数据很敏感
[630]
,因此无论是从训练效果还是训练效率出发,数据降噪都是很有
意义的。事实上,在统计机器翻译时代,就有很多数据降噪方面的研究工作
[631, 632, 633]
,
因此许多方法也可以应用到神经机器翻译中来。
含有噪声的数据通常都具有较为明显的特征,因此可以用诸如句子长度比、词
对齐率、最长连续未对齐序列长度等一些特征来对句子进行综合评分
[634, 635, 636]
;也可
以将该问题转化为分类任务来对句子进行筛选
[637, 638]
;此外,从某种意义上来说,数
据降噪其实也可以算是一种领域数据选择,因为它的目标是选择可信度高的样本,因
此也可以人工构建一个可信度高的小数据集,然后利用该数据集和通用数据集之间
的差异性进行选择
[628]
。
早期的工作大多在关注过滤噪声样本,但对如何利用噪声样本探讨较少。事实
上,噪声是有强度的,有些噪声样本对于模型可能是有价值的,而且它们的价值可能
会随着模型的状态而改变
[628]
。对于一个双语句对“我
/
喜欢
/
那个
/
地方
/
。
↔
I love that
place. It’s very beautiful”。一方面来说,虽然这两个句子都很流畅,但是由于汉语句
子中缺少了一部分翻译,因此简单的基于长度或双语词典的方法可以很容易将其过
滤掉。从另一方面来说,这个样本对于训练机器翻译模型仍然有用,特别是在数据
稀缺的情况下,因为汉语句子和英语句子的前半部分仍然是正确的互译结果。这表
明了噪声数据的微妙之处,它不是对应着简单的二元分类问题(一个训练样本有用
或没有用):一些训练样本可能部分有用。因此简单的过滤并不一种很好的办法,一
种更加理想的学习策略应该是既可以合理的利用这些数据,又不让其对模型产生负
面影响。例如,在训练过程中对批量数据的噪声水平进行退火(Anneal),使得模型
在越来越干净的数据上进行训练
[628, 639]
。从宏观上看,整个训练过程其实是一个持续
微调的过程,这和微调的思想基本一致。这种学习策略一方面充分利用了训练数据,
一方面又避免了噪声数据对模型的负面影响,因此取得了不错的效果。
3. 主动学习
主动学习(Active Learning)也是一种数据选择策略。它最初的应用场景是:标
注大量的数据成本过高,因此希望优先标注对模型最有价值的数据,这样可以最大
化模型学习的效率,同时降低数据标注的整体代价
[640]
。主动学习主要由五个部分组
成,包括:未标注样本池、筛选策略、标注者、标注样本集、目标模型。在主动学习
过程中,会根据当前的模型状态找到未标注样本池中最有价值的样本,之后送给标
注者。标注结束后,会把标注的样本加入到标注样本集中,之后用这些标注的样本
更新模型。之后,重复这个过程,直到到达某种收敛状态。
主动学习的一个核心问题是:如何选择出那些最有价值的未标注样本?通常会
假设模型认为最“难”的样本是最有价值的。具体实现有很多思路,例如,基于置信
13.6 基于样本价值的学习 465
度的方法、基于分类错误的方法等等
[641, 642]
。
在机器翻译中,主动学习可以被用于低资源翻译,以减少人工标注的成本
[643, 644]
。
也可以被用于交互式翻译,让模型持续从外界反馈中受益
[645, 646, 647]
。不过,总的来说,
主动学习在机器翻译中应用不算广泛。这是由于,机器翻译任务很复杂,设计样本
价值的评价函数较为困难。而且,在很多场景中,并不是要简单的选择样本,而是希
望训练装置能够考虑样本的价值,以充分发挥所有数据的优势。这也正是即将介绍
的课程学习等方法要解决的问题。
13.6.2 课程学习
课程学习(Curriculum Learning)的基本思想是:先学习简单的、普适性的知识,
然后逐渐增加难度,学习更复杂、更专业化的知识。在统计模型训练中,这种思想可
以体现在让模型按照由“易”到“难”的顺序对样本进行学习
[648]
,这本质上是一种
样本使用策略。以神经机器翻译使用的随机梯度下降为例,在传统的方法中,所有
训练样本都是随机呈现给模型的,换句话说,就是让模型平等地对待所有的训练样
本,这忽略了数据样本的各种复杂性和当前模型的学习状态。所以模拟人类由易到
难的学习过程就是一种很自然的想法,这样做的好处在于:
• 加速模型训练。在达到相同的性能条件下,课程学习可以加速训练,减少训练迭
代步数。
• 使模型获得更好的泛化性能。即通过对简单样本的学习,让模型不至于过早进入
拟合复杂样本的状态。
课程学习是符合直觉的,可以想象,对于一个数学零基础的人来说,如果一开
始就同时学习加减乘除和高等数学,效率自然是比较低下的。而如果按照正常的学
习顺序,比如先学习加减乘除,然后学习各种函数,最后再学习高等数学,有了前面
的基础,再学习后面的知识,效率就可以更高。事实上,课程学习自从被提出就受
到了研究人员的极大关注,除了想法本身有趣之外,还因为它作为一种和模型无关
的训练策略,具有即插即用的特点。神经机器翻译就是一种很契合课程学习的任务,
这是因为神经机器翻译往往需要大规模的平行语料来训练模型,训练成本很高,所
以使用课程学习来加快收敛是一个很自然的想法。
那么如何设计课程学习方法呢?有两个核心问题:
• 如何评估每个样本的难度?即设计评估样本学习难易度的准则,简称难度评估准
则(Difficulty Criteria)
• 以何种策略来规划训练数据?即何时为训练提供更复杂的样本,以及提供多少样
本等,称为课程规划(Curriculum Schedule)
这里,把这两个问题抽象成两个模块:难度评估器和训练调度器,那么课程学
习的一个大致的流程如图13.14所示。首先,难度评估器对训练样本按照由易到难的
466 Chapter 13. 神经机器翻译模型训练 肖桐 朱靖波
顺序进行排序,最开始调度器从相对容易的数据块中采样训练样本,发送给模型进
行训练,随着训练时间的推移,训练调度器将逐渐从更加困难的数据块中进行采样
(至于何时,以及选择何种采样方式则取决于设定的策略),持续这个过程,直到从
整个训练集进行均匀采样。
训练集
难度评估器
训练调度器
模型训练器
排序过
的数据
采样
批次 t
如果模型收敛
批次 t
课程设计
图 13.14 课程学习框架
实际上,评估样本的难度的方式和具体的任务相关,在神经机器翻译中,有很
多种评估方法,可以利用语言学上的困难准则,比如句子长度、句子平均词频、句法
树深度等
[649, 650]
。这些准则本质上属于人类的先验知识,符合人类的直觉,但不一定
和模型相匹配。对人类来说简单的句子对模型来说可能并不简单,所以研究人员也
提出了基于模型的方法,比如:语言模型
[639, 651]
,或者神经机器翻译模型
[601, 652]
都可以
用于评价样本的难度。值得注意的是,利用神经机器翻译来打分的方法分为静态和
动态两种。静态的方法是利用在小数据集上训练的、更小的翻译模型来打分
[652]
。动
态的方法则是利用当前模型的状态来打分,这在广义上也叫作自步学习(Self-paced
Learning),通常可以利用模型的训练误差或变化率等指标进行样本难度的估计
[601]
。
数据块
训练时长
···
易
难
图 13.15 “先易后难”数据块选择
虽然样本难度的度量在不同任务中有所不同,但课程规划通常与数据和任务无
关。在各种场景中,大多数课程学习都利用了类似的调度策略。具体而言,调度策
略可以分为预定义的和自动的两种。预定义的调度策略通常将按照难易程度排序好
的样本划分为块,每个块中包含一定数量的难度相似的样本。然后按照“先易后难”
13.6 基于样本价值的学习 467
的原则人工定义一个调度策略,比如,一种较为流行的方法是:在训练早期,模型只
在简单块中进行采样,随着训练过程的进行,将下一个块的样本合并到当前训练子
集中,继续训练,直到合并了整个数据块,即整个训练集可见为止,之后再继续训练
直到收敛。这个过程如图13.15所示。类似的还有一些其他变体,比如,训练到模型
可见整个数据集之后,将最难的样本块复制并添加到训练集中,或者是将最容易的
数据块逐渐删除,然后再添加回来等,这些方法的基本想法都是想让模型在具备一
定的能力之后更多关注于困难样本。
尽管预定义的调度策略简单有效,但也会面临着方法不够灵活、数据块划分不
合理等问题,而且这种策略在一定程度上也忽略了当前模型的反馈。因此另一种方
法是自动的方法,根据模型的反馈来动态调整样本的难度或调度策略,模型的反馈
可以是模型的不确定性
[653]
、模型的能力
[601, 649]
等。这些方法在一定程度上使得整个
训练过程和模型的状态相匹配,同时样本的选择过渡得更加平滑,因此在实践中取
得了不错的效果。
13.6.3 持续学习
人类具有不断学习、调整和转移知识的能力,这种能力被称为持续学习(Continual
Learning),也叫终生学习(Lifelong Learning)或增量式学习(Incremental Learning)。
人类学习的新任务时,会很自然的利用以前的知识并将新学习的知识整合到以前的
知识中。然而对于机器学习系统来说,尤其在连接主义的范式下(如深度神经网络
模型),这是一个很大的挑战,这是由神经网络的特性所决定的。当前的神经网络
模型依赖于标注的训练样本,通过反向传播算法对模型参数进行训练更新,最终达
到拟合数据分布的目的。当把模型切换到新的任务时,本质上是数据的分布发生了
变化,从这种分布差异过大的数据中不断增量获取可用信息很容易导致灾难性遗忘
(Catastrophic Forgetting)问题,即用新数据训练模型的时候会干扰先前学习的知识。
甚至,这在最坏的情况下会导致旧知识被新知识完全重写。在机器翻译领域,类似
的问题经常发生在不断增加数据的场景中,因为当用户使用少量数据对模型进行更
新之后,发现在旧数据上的性能下降了(见第十八章)。
为克服灾难性遗忘问题,学习系统一方面必须能连续获取新知识和完善现有知
识,另一方面,还应防止新数据输入明显干扰现有的知识,这个问题称作稳定性-可塑
性(Stability-Plasticity)问题。可塑性指整合新知识的能力,稳定性指保留先前的知
识不至于遗忘。要解决这些问题,就需要模型在保留先前任务的知识与学习当前任
务的新知识之间取得平衡。目前的解决方法可以分为以下几类:
• 基于正则化的方法。通过对模型参数的更新施加约束来减轻灾难性的遗忘,通常
是在损失函数中引入了一个额外的正则化项,使得模型在学习新数据时巩固先
前的知识
[654, 655]
。
• 基于实例的方法。在学习新任务的同时混合训练先前的任务样本以减轻遗忘,这
些样本可以是从先前任务的训练数据中精心挑选出的子集,或者利用生成模型
468 Chapter 13. 神经机器翻译模型训练 肖桐 朱靖波
生成的伪样本
[656, 657]
。
• 基于动态模型架构的方法。例如,增加神经元或新的神经网络层进行重新训练,
或者是在新任务训练时只更新部分参数
[658, 659]
。
从某种程度上看,多领域、多语言机器翻译等都可以被看做是广义上的持续学
习。在多领域神经机器翻译中,研究人员期望一个在通用数据上学习的模型可以继
续在新的领域有良好的表现。在多语言神经机器翻译中,研究人员期望一个模型可
以支持更多语种的翻译,甚至当新的语言到来时不需要修改模型结构。以上这些问
题在第十六章和第十八章中还会有详细讨论。