专栏名称: 美团技术团队
10000+工程师,如何支撑中国领先的生活服务电子商务平台?数亿消费者、数百万商户、2000多个行业、几千亿交易额背后是哪些技术在支撑?这里是美团、大众点评、美团外卖、美团配送、美团优选等技术团队的对外窗口。
目录
相关文章推荐
字节跳动技术团队  ·  远程访问代理+内网穿透:火山引擎边缘网关助力 ... ·  16 小时前  
字节跳动技术团队  ·  稀土掘金 x Trae ... ·  16 小时前  
51好读  ›  专栏  ›  美团技术团队

美团获得小样本学习榜单FewCLUE第一!Prompt Learning+自训练实战

美团技术团队  · 公众号  · 架构  · 2022-06-09 19:58

正文

请到「今天看啥」查看全文


) [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。对抗训练就是训练一个能有效识别原始样本和对抗样本的模型。基本原理就是通过添加扰动构造一些对抗样本,交给模型去训练,提高模型在遇到对抗样本时的鲁棒性,同时也能提高模型的表现和泛化能力。对抗样本需要具有两个特点,分别是:







请到「今天看啥」查看全文