arXiv | 如何更好地理解自然语言?自训练+预训练

Posted 李志宽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arXiv | 如何更好地理解自然语言?自训练+预训练相关的知识,希望对你有一定的参考价值。

今天给大家介绍的是Facebook AI研究团队发表在arXiv上的一篇文章“Self-training Improves Pre-training for Natural Language Understanding”。作者在文章中提出,可以利用自训练提升自然语言理解的预训练模型,并且提出了一种用于数据增强的新方法——SentAugment,可从大规模无标签的网络句子中检索用于特定任务的无标签句子,辅助语言模型的自训练过程。实验表明,SentAugment实现了有效的自训练,并且在知识蒸馏和小样本学习上有明显效果。

1

研究背景

自训练是一种半监督学习方法,它使用有标签数据训练一个教师模型,再用训练后的教师模型为无标签数据创建合成标签。这些带有合成标签的数据被用于训练一个学生模型,使得学生模型具有与教师模型相似或更好的性能。最近在自然语言理解上的工作通常集中在预训练模型上,而自训练也是利用无标签数据的一种有效方法。作者在预训练基准上引入自训练,通过研究表明自训练是对自然语言理解的强大预训练模型的一种补充。

此外,无标签数据通常是半监督学习的一个重要组成部分。但是,现有的工作通常假设这些无标签数据来自与下游任务相同的领域,该假设限制了半监督方法的应用,尤其是在数据较少的下游任务中。为此,作者在本文中提出了一种数据增强方法——SentAugment,用于从网络上爬取的数据中,为给定任务构建相同领域的数据集。实验表明,SentAugment可有效辅助模型自训练,知识蒸馏和小样本学习。

2

方法

2.1 检索策略

SentAugment方法使用网络数据作为句子库。首先,使用一种通用句子编码器对句子库中的每个句子进行嵌入,这个编码器对于有相近意思的句子输出相似表示。这些句子表示被用于检索特定任务相关的无标签数据。其次,使用同样的通用句子编码器对下游任务的训练数据集进行嵌入,然后根据训练数据集的嵌入表示计算出任务嵌入。任务嵌入的计算方法有以下三种:(1)all-average:计算训练数据集中的所有嵌入表示的平均嵌入表示;(2)label-average:分别为每个类别的数据计算一个平均嵌入;(3)per-sentence:每个句子拥有一个单独的嵌入表示。然后,将任务嵌入作为查询条件,在句子库中检索出一个子集作为候选数据集,然后使用教师模型从候选数据集的每个类别中选出前k个样本进行标记,形成最终的合成数据。

2.2 自训练过程

如图1所示, 自训练过程分为多个步骤。首先,在下游任务中对中文预训练模型RoBERTa-Large精调,将精调后的模型作为教师模型;其次,从句子库中检索特定任务的无标签数据;之后,使用教师模型对检索到的无标签数据进行标记;最后,使用带合成标签的数据来精调一个新的RoBERTa-Large模型,将这个模型作为学生模型。

图1 SentAugment方法

3

实验

3.1 数据集

在评估SentAugment方法性能的实验中使用的数据集信息如表1所示。用于情感分析的数据集有SST-2和SST-5,其中SST-2是Stanford Sentiment Treebank的二元情感分析数据集,SST-5则是细粒度情感分析数据集。CR数据集用于产品分类任务,IMP数据集用于仇恨言论分类,TREC数据集用于问题分类,CoNLL数据集用于命名实体识别任务。

表1 数据集和下游任务

3.2自训练实验

该实验的目的是了解自训练是否能对下游任务的目标领域进行域适应。实验中使用了三个模型,分别是RoBERTa-Large基准模型、RoBERTa-Large+ICP和RoBERTa-Large+ST。ST表示自训练,即用带合成标签的数据集来训练预训练模型RoBERTa-Large,ICP表示域内连续预训练,直接在目标领域的检索数据上进行预训练,不适用合成标签。实验结果如表2所示,自训练可以提高RoBERTa-Large基准模型的性能,使平均水平提高了1.2%。而当使用ICP继续使用自训练数据进行预训练时,模型性能从87.4%降低到86.2%。尽管ICP在RoBERTa-Large模型预训练时执行域适应,但它的性能并不优于RoBERTa-Large。因此,自训练是提高泛化能力并在精调时进行域适应的重要途径。

表2 自训练实验结果

3.3 小样本学习实验

作者在小样本学习的情况下研究了SentAugment方法的有效性。针对每个任务,作者从特定任务的训练数据集中选取少量样本对RoBERTa-Large模型进行精调,并将其用作教师模型。实验结果如表3所示。自训练可以使所有任务的精确度平均提高3.5%,在序列标记任务中表现尤为突出。

表3 小样本学习任务中的自训练实验结果

3.4 知识蒸馏实验

知识蒸馏(KD)也受益于大规模数据增强。在该实验中,作者使用了真实数据(GT)、随机数据(random)和检索的无标签数据(SA),比较了基于不同数据的知识蒸馏的效果,实验结果如表4所示。实验结果表明,与基于随机数据相比,使用真实数据提炼模型时性能显着提高,从77.1%变为82.5%。本文的数据增强方法达到了81.9%的平均准确度。

表4 基于真实数据、随机数据和检索数据的知识蒸馏实验结果

4

总结

在本文中,作者表明自训练是利用无标签数据的另一种有效方法,当自训练和预训练结合时,可以进一步改进RoBERTa模型性能。此外,作者介绍了一种新的用于自然语言处理的数据增强方法SentAugment,该方法可从大规模网络数据语料库中检索特定任务的相关领域的句子,并且在知识蒸馏和少样本学习上也有明显效果。

推荐阅读:1.8W字MySQL超全笔面试题(含答案) 5月最新整理 .NET开发者必看

以上是关于arXiv | 如何更好地理解自然语言?自训练+预训练的主要内容,如果未能解决你的问题,请参考以下文章

论文精度AutoBERT-Zero (使用NAS搜索预训练语言模型)

历史最全最新中文自然语言处理预训练模型汇总分享-内含免费下载地

PreSTU:一个专门为场景文本理解而设计的简单预训练模型

更好地理解 javascript 预编译

综述基于Transformer的视频语言预训练

[读论文]语言视觉多模态预训练模型 ViLBERT