正文
)
[7]
预训练方法和融入任务知识的Task-Adaptive Pretraining (
TAPT
)
[7]
。DAPT旨在预训练模型的基础上,增加大量领域内无标签文本继续训练语言模型,之后再在指定任务的数据集上进行微调。
对目标文本领域进行继续预训练,可以提高语言模型的性能,尤其是在与目标文本领域相关的下游任务上的性能。并且,预训练文本与任务领域的相关度越高,带来的提升越大。在本次实践中,我们最终使用了在100G包含娱乐节目、体育、健康、国际事务、电影、名人等各个领域的语料的CLUE Vocab
[8]
上预训练得到的RoBERTa Large模型。TAPT指在预训练模型的基础上,增加数量较少但与任务直接相关的无标签语料进行预训练。针对TAPT任务,我们选择使用的预训练数据是FewCLUE榜单为每个任务提供的无标签数据。
除此之外,在针对句间关系任务,如中文自然语言推理任务OCNLI、中文对话短文本匹配任务BUSTM的实践中,我们使用在其他句间关系任务如中文自然语言推理数据集CMNLI、中文短文本相似度数据集LCQMC上进行预训练的模型参数作为初始参数,相比直接用原始模型完成任务,也能提升一定的效果。
2.2 模型结构
FewCLUE包含多种任务形式,我们为每种任务选择了合适的模型结构。文本分类任务和机器阅读理解(
MRC)
任务本身的类别词就携带了信息,因此更适合建模为Masked Language Model(
MLM
)形式;而句间关系任务判断两个句子的相关性,更类似于Next Sentence Prediction(
NSP
)
[9]
任务形式。因此,我们为分类任务和阅读理解任务选择PET
[10]
模型,为句间关系任务选择EFL
[11]
模型,EFL方法可以通过全局采样构造负样本,学习到更鲁棒的分类器。
2.2.1 Prompt Learning
Prompt Learning的主要目标是尽可能减小预训练目标与下游微调目标的差距。通常现有的预训练任务均包含MLM损失函数,但是下游的任务则并未采用MLM,而是引入新的分类器,使得预训练任务和下游任务出现了不一致。Prompt Learning不引入额外的分类器或其他参数,而是通过拼接模板(
Template,即为输入数据拼接语言片段,从而改造任务为MLM形式
)和标签词映射(
Verbalizer,即为每个标签在词表中找到对应的词,从而为MLM任务设定预测目标
),使得模型可以在少量样本的条件下在下游任务中使用。
图3 Prompt Learning方法完成情感分析任务的流程图
以图3展示的电商评价情感分析任务EPRSTMT为例。给定文本“这个电影真不错,值得第二次观看!”,传统的文本分类则是在CLS部分的Embedding接上分类器,并映射到0-1分类上(
0:负向,1:正向
)。这种方法在小样本场景下需要训练新的分类器,比较难获得好的效果。而基于Prompt Learning的方法则是创建模板“这是一条 [MASK] 评。”,再将模板与原文进行拼接,训练时通过语言模型预测[MASK]位置的词,再将其映射到对应的类别上(
好:正向, 差:负向
)。
由于缺乏足够数据,有时很难确定表现最好的模板和标签词映射。因此,也可以采用多模板与多标签词映射的设计。通过设计多个模板,最终的结果采用多个模板的结果的整合,或设计一对多的标签词映射,让一个标签对应多个词。同上述例子,可以设计如下模板组合(
左:同一个句子的多模板,右:多标签映射
)。
图4 PET多模板与多标签映射图
任务样例
表1 FewCLUE数据集中PET模板构建
2.2.2 EFL
EFL模型将两个句子拼接在一起,用输出层的[CLS]位置处的Embedding后接一个分类器完成预测。EFL的训练过程中,除了训练集的样本,还会进行负样本构造,训练过程中,在每个Batch里随机选择其他数据中的句子作为负样本,通过构造负样本进行数据增强。虽然EFL模型需要训练新的分类器,但目前有很多公开的文本蕴含/句间关系数据集,如CMNLI、LCQMC等,可以通过在这些样本上进行持续学习(
continue-train
),再将学习到的参数迁移到小样本场景中,用FewCLUE的任务数据集进行进一步微调。
任务样例
表2 FewCLUE数据集中EFL模板构建
2.3 数据增强
数据增强方法主要有样本增强和Embedding增强。NLP领域中,数据增强的目的是在不改变语义的前提下扩充文本数据。主要的方法包括简单文本替换、使用语言模型生成相似句子等,我们尝试过EDA等扩充文本数据的方法,但是一个词的变化就可能导致整个句子的意思发生翻转,经过替换的文本携带大量噪音,所以很难用简单的规则样本变化产生足够的增强数据。而Embedding增强,则不再对输入进行操作,转而在Embedding层面进行操作,可以通过对Embedding增加扰动或者插值等方式提升模型的鲁棒性。
因此,本次实践中我们主要进行Embedding增强。我们用的数据增强策略分别有Mixup
[12]
、Manifold-Mixup
[13]
、对抗训练(
Adversarial training, AT
)
[14]
和对比学习R-drop
[15]
。数据增强策略的详细介绍见之前的技术博客
小样本学习及其在美团场景中的应用
。
表3 数据增强策略简述
Mixup通过对输入数据进行简单的线性变换,构造新的组合样本和组合标签,可以增强模型的泛化能力。在各种有监督任务或者半监督任务上,使用Mixup都能极大提高模型的泛化能力。Mixup方法可以视为正则化操作,它要求模型在特征层面生成的组合特征满足线性约束,并且利用这种约束对模型施加正则化。直观来看,当模型的输入为另外两个输入的线性组合时,其输出也是这两个数据单独输入模型后所得输出的线性组合,其实就是要求模型近似为一个线性系统。
Manifold Mixup将上述的Mixup操作泛化到特征上。因为特征具有更高阶的语义信息,所以在其维度上插值可能会产生更有意义的样本。在类似于BERT
[9]
、RoBERTa
[6]
的模型中,随机选择层数k,对该层的特征表示进行Mixup插值。普通的Mixup的插值发生在输出层Embedding部分,而Manifold Mixup相当于把这一系列插值操作加入到语言模型内部的Transformers结构的随机某层中。
对抗训练通过在输入样本上增加微小的扰动来显著提高模型Loss。对抗训练就是训练一个能有效识别原始样本和对抗样本的模型。基本原理就是通过添加扰动构造一些对抗样本,交给模型去训练,提高模型在遇到对抗样本时的鲁棒性,同时也能提高模型的表现和泛化能力。对抗样本需要具有两个特点,分别是: