ACL20 - Don‘t stop pretraining: adapt language models to domains and tasks

Gururangan S, Marasović A, Swayamdipta S, et al. Don’t stop pretraining: adapt language models to domains and tasks[J]. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics. (ACL 2020).

Github:https://github.com/allenai/dont-stop-pretraining

名词释义
DAPT:domain-adaptive pretraining,领域适应预训练,用领域内的语料进行预训练,可能和任务并不相关
TAPT:task-adaptive pretraining,任务适应预训练,用特定任务的无标签数据预训练,和任务相关

Abstract

  • 调研了四个领域和八个分类任务(每个领域两个任务),结果发现 DAPT 都能够提升效果,不管是 high-source 还是 low-source。
  • 此外,即使在 DAPT 之后,TAPT 还是可以提升效果。

小结上面两点,你可以一直预训练:pretraining -> DAPT -> TAPT

  • 使用简单的数据选择策略扩充数据集获得 task corpus,对 task corpus 做 TAPT 是有效的。特别是,当特定领域的预训练数据拿不到的时候。
  • 作者发现多阶段的自适应预训练,总是可以提升效果

Introduction

问题提出:

  • 一些研究已经发现在特定领域的无标签数据重复预训练可以提升效果,但是这些研究一次只考虑了一个领域,并且预训练的语料更小更特殊(smaller and less diverse)
  • 此外,之前的研究没搞清楚是什么因素影响了重复预训练的效果(如:任务已经标注好的数据量、源域和目标域的距离)

本文选择的预训练模型:RoBERTa

  • 领域内的数据集可以从一些作品或者论坛中获取,也可以用具体任务的语料。由此引出一个问题:是否预训练的语料要更接近任务,才能更好的提升性能?

    • 作者做了一个小实验。在一个小的任务相关的语料上,做 DAPT 和 TAPT,发现对于RoBERTa来说,TAPT 提升巨大,不论有没有DAPT。

    就此来看,作者会认为 TAPT 更能提升效果。

  • 如果有一些 task 相关的无标签数据会更好。

  • 作者还提出了自动选择 task 相关无标签数据的方法,并证明在低资源上提升了效果。

  • 在本文提到的所有任务中,加了 DAPT 和 TAPT 的效果都超过了原生 RoBERTa。

本文主要贡献:

  • 彻底的分析了 DAPT 和 TAPT 在八个任务中的效果
  • 自适应LMs跨域跨任务的迁移性研究
  • 强调了在人工标注数据集上做预训练的重要性,提出了一个简单的数据选择策略

Domain-Adaptive Pretraining(DAPT)

主要思想:在特定领域的无标签数据上继续训练 RoBERTa。

  • 本文选择生物论文(BioMed)、计算机论文(CS)、新闻(News)和亚马逊评论(Reviews)这四个领域是因为当前对这些研究比较多,并且这四个领域的数据比较好获得。
分析领域相似度

本文试图定量的分析上述四个领域和 RoBERTa 训练语料的相似性。

考虑这五个语料的前1万个高频词(包括停顿词),计算相似度:

请添加图片描述

发现 News 和 Reviews 的语料和 RoBERTa 更相似。作者认为其实更不相似的语料,在重复预训练的时候,对效果提升更大。

个人理解:和 RoBERTa 更不相似,说明原来的 RoBERTa 学偏了,重新对特定领域语料进行预训练,对任务帮助更大

实验

baseline:用现成的 RoBERTa,参数默认,后接一层线性层用于分类任务

在这8个任务的F1值

请添加图片描述

其中:

  • DAPT:对特定领域的语料重新预训练
  • -DAPT:用其他领域的语料重新预训练,例如:用CS的语料重新预训练,再做Reviews任务

发现:

  • 做DAPT能够提升效果
  • 如果用其他领域的语料重新做预训练,会越学越偏,效果反而变差

作者还讨论了预训练语料相似度的问题。作者认为:如果当前领域的语料和原预训练模型的语料更不相似,在重复预训练的时候,对效果提升更大。理由给的不是很充分,会在后续工作中继续研究。作者建议

  • 在做预训练的时候,一定要考虑语料的来源

Task-Adaptive Pretraining(TAPT)

  • TAPT 相比于 DAPT 更节约成本,即,数据量更少、训练时间更快,同时 TAPT 对任务的提升相比于 DAPT 更大
实验
  • TAPT 的实验设置和 DAPT 一样,唯一不同的是预训练数据。

添加不同的预训练,对8个任务进行实验,结果如下。

请添加图片描述

结果表明:

  • DAPT 后接 TAPT,效果达到了最佳;
  • 作者推测:如果是在 TAPT 后接 DAPT,训练出的词向量可能遗忘任务相关的语义信息。

作者还做了任务迁移(Transfer-TAPT)的实验,即用同领域其他任务的数据来做 TAPT,然后在该领域训练微调。例如下图左上部分,我们要完成RCT任务,但是用的是CHEMPROT来做 TAPT,最后在 RCT 数据上微调.

请添加图片描述

结果表明:

  • 同一领域不同任务的数据分布是不一样的;
  • 更进一步说明,DAPT 仍不充分。

Augmenting Training Data for Task-Adaptive Pretraining

在 TAPT 中,文章使用的预训练数据仅仅知识任务数据集本身,从 TAPT 的好结果中得到启发,如果能有与目标任务数据分布相同的更大的无标签数据集,会不会右更好的结果呢?怎么获得这样的无标签数据集,作者提供了两种方法。

人工挑选(Human Curated-TAPT)
  • 对于RCT数据集,从180K个样例中,手工挑选出500个样例,并对其进行标注,剩下的样例当作无标签数据;
  • 对于HYPERPARTISAN数据集原来就分好了 low-source 和 high-source,将 low-source 数据作为有标签数据,high-source 数据作为无标签数据;
  • 对于IMDB数据,基于相同的数据分布,对额外的无标签数据手工标记,得到有标签数据。

请添加图片描述

结果表明:

  • 人工挑选的TAPT能达到原数据的95%的效果,但是带标签的数据量只有原来的0.3%

这一发现,能极大的减少标注数据工作量。所以作者呼吁,数据集的无标签原始数据也放出来让大伙看看,说不定有用呢

自动挑选(Automated Data Selection for TAPT)

考虑到没有大量的无标签数据,同时也没有太多的计算资源,作者提出了一个简单的无监督方法,基于任务分布可以收集无标签文本。

文章采用的算法是使用领域数据堆 VAMPIRE(一种轻量的词袋模型)进行训练,然后将领域数据和任务数据一起嵌入到 VAMPIRE 的向量空间中,在向量空间中,数据集挑选采用两种方案(1)KNN原理挑选.(2)随机挑选。基于挑选出来的数据训练。

VAMPIRE 出自文献
Suchin Gururangan, Tam Dang, Dallas Card, and Noah A. Smith. Variational pretraining for semi-supervised text classification. In ACL 2019.

实验结果如下:
请添加图片描述

由实验结果可以看到,KNN-TAPT的效果普遍由于TAPT,且随着k值的增加,KNN-TAPT的结果稳定变好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值