自训练:超越预训练,展现强大互补特性的上分新范式!

文 | 香侬科技

编 | 兔子酱


背景

预训练(Pre-training)模型自BERT问世以来就一发不可收拾,目前已经在自然语言理解和生成两个方面取得了突破性成就。但是,作为它的一个“兄弟”,自训练(Self-training) 却很少在自然语言处理中露脸。本文探究了预训练之上的自训练方法,从大规模语料中先抽取领域内数据,再用一个Teacher模型生成伪监督数据用于训练Student模型,这样就能大幅提升单纯基于预训练模型的效果。自训练的有效性在一定程度上表明了它与预训练是互补的,二者结合能带来全新表现。

论文标题Self-training Improves Pre-training for Natural Language Understanding

下载链接
https://arxiv.org/abs/2010.02194

Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【1029】 下载论文PDF~

自训练与预训练

预训练(Pre-training)从广义上来讲,是指先在较大规模的数据上对模型训练一波,然后再在具体的下游任务数据中微调。大多数情况下,预训练的含义都比较狭窄:在大规模无标注语料上,用自监督的方式训练模型。这里的自监督方法一般指的是语言模型。

除了预训练之外,我们还经常在图像领域看到它的一个兄弟,自训练(Self-training) 。自训练是说有一个Teacher模型和一个Student模型,首先在标注数据上训练,然后用它对大规模无标注数据进行标注,把得到的结果当做伪标注数据去训练

显然,预训练和自训练都用到了大规模无标注的数据,只是二者的处理过程不同。而且,其中非常重要的一点是,预训练始终对针对一个模型进行操作,而自训练却用到了两个模型,前者是直接从无标注数据中学习,而后者是间接地从数据中学习。它们的区别可以用下图表示:

那么,一个自然的问题是:这两个方法可以结合起来达到更好的效果吗?本文给出了答案:当然可以首先预训练一个模型,然后把这个模型在标注数据上训练后当做,再用它去标注另外一批无标注数据,把得到的伪标注数据用来训练,最后在推理测试的时候使用即可。从这个过程中可以发现,预训练是为了更好地自训练,自训练是为了更好地训练,二者结合,缺一不可。

总之,本文有如下的贡献:

  • 结合自训练与预训练,比单纯的预训练取得了大幅度的效果提升;

  • 为了使伪标注数据更加契合下游的具体任务,提出了 SentAugment,一种特定领域的数据抽取方法 ,减少通用语料造成的噪声干扰;

  • 在知识蒸馏和小样本学习任务上也取得了突出的结果,证明自训练+预训练的优越性。

自训练处理流程

本文所提出的方法可以用下面的图表示,大体分为四步

  1. 将一个预训练模型(本文使用RoBERTa_Large)在标注数据上训练,作为教师模型

  2. 使用从海量通用语料中提取相关领域的数据;

  3. 对提取的数据作标注;

  4. 用伪标注语料训练学生模型

其中的1,3,4步都是确定的,所以我们重点关注如何使用从海量通用语料库中抽取出领域相关的语料

句子编码

通用语料库来自Common-Crawl,直接把文档切分为句子,然后以句子为基本单位进行数据提取。本文使用句子编码方法,用一个编码向量去表示每一个句子。这个句子编码器在多个复述(Paraphrase)数据集上训练,并且还使用了BERT的掩码语言模型在多语言语料上训练,之后就可以用于编码每个句子,得到各自对应的特征向量。在后文中,我们默认使用Transformer编码器。

任务编码

句子编码只能表示通用语料库中每个句子的含义,还不能区分哪些句子是符合领域要求的,这就需要用一个特殊的任务编码,作为查询条件去表示我们想要的句子是怎样的。也就是说,只需要计算句子编码和任务编码的余弦值,就知道这个句子是不是符合要求。为此,考虑三种任务编码:

  • All-Average: 将训练所用的所有句子编码平均起来作为任务编码;

  • Label-Average: 将训练所用的每个类别的所有句子编码平均起来作为各个类别的任务编码;

  • Per-Sentence:将训练所用的每个句子都作为一个单独的任务编码。

相关领域数据提取

在获取任务编码后,就可以把它(们)作为询问,根据余弦值大小,从通用语料库中抽取相关的句子,这可以减少通用语料对下游特定任务的噪声干扰。对于每个类别,只抽取Top-K个句子,并且对提取的句子,还要满足能取得较高的置信度。

提取了相关领域的数据后,用对其中每一个句子预测它的标签是什么:,得到其软标签或者one-hot硬标签,这取决于训练的方法是什么。但无论如何,到此为止我们都得到了一个伪标注数据库

用伪标注语料训练

在得到伪标注语料后,就可以用它去训练了。为此,我们考虑三种训练方法:

  • 自训练(Self-Training):将另一个预训练的RoBERTa_Large作为,使用one-hot硬标签在上训练;

  • 知识蒸馏(Knowledge-Distillation):将一个预训练的RoBERTa_Small作为,使用软标签在上训练;

  • 少样本学习(Few-Shot):训练所使用的标注数据是少样本,伪标注语料的大小是标注数据的2~3个数量级,是RoBERTa_Large,使用one-hot硬标签在上训练。

实验

根据上述训练的不同方法,我们依次来探究在不同训练设置下,自训练是否能进一步提高预训练的效果。数据集包括SST-2,SST-3,CR,IMP,TREC,CoNLL2002,除了最后一个是命名实体识别任务之外,其他都是分类任务。

自训练

下图是在自训练设置下的实验结果,ICP是In-domain Continued Pretraining,即直接在上预训练而不使用预测得到的标签,ST是Self-Training自训练。可以看到,1、没有伪标注数据,单纯的预训练不能很好地实现领域知识迁移,还要借助标注数据。2、尽管都是在相关领域的数据上训练,ICP由于没有使用的预测标签,反而使得效果下降(-1.2),而ST则能进一步提升预训练模型的效果(+1.2)

少样本学习

下图是少样本学习的实验结果。可以看到,领域内自训练可以大幅提升少样本场景下的效果

知识蒸馏

下图是知识蒸馏的实验结果。GT表示用真值(Ground-Truth)数据,RD是用随机(Random)数据,SA(SentAugment)是用本文的方法得到的数据。在和训练集一样大的情况下,GT和SA都显著超过了RD,但如果再额外增加100K句子,SA甚至能逼近有监督学习RoBERTa_Large的结果,并且参数量是它的十分之一。这说明,对知识蒸馏来说,自训练带来的数据增广也是很重要的

句子编码的影响

前面我们提到我们默认使用的是Transformer去编码句子,那么不同的编码器会有怎样的影响呢?下图是不同编码器在STS数据集上的实验结果。总的来说,单纯使用BERT得到的句子编码效果最差,而使用Trigram甚至能得到很好的结果,这说明了复述与多语言掩码语言模型任务对于训练句子编码是很有帮助的

一个例子

最后我们来看看从中抽取的句子是怎样的,如下图所示。如果是用Per-Sentence,那么抽取的句子就基本上是询问的转述;如果是用Label-Average,抽取的句子就符合该类别。基于句子编码与任务编码的抽取方法有能力得到满足条件的句子

小结

本文研究了预训练模型上的自训练带来的效果增益。使用自训练学习框架,模型能够从海量通用语料中抽取出相关领域的句子,然后使用教师模型预测标签得到伪标注数据,最后再去训练学生模型。无论是自训练本身,还是知识蒸馏、少样本学习,预训练+自训练都能取得显著的效果提升。

值得注意的是,本文的核心其实是如何从海量通用语料中提取满足条件的语料,也即提出的SentAugment方法。在过去一年内,开放领域问答(Open-Domain Question Answering)大量使用了这种方法取提取问题的相关段落,并取得了成功。这些工作表明:基于句子编码的语料提取、标注,是数据增广的有效手段,可以进一步用在自然语言生成任务,如机器翻译、摘要生成等任务上。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

有顶会审稿人、大厂研究员、知乎大V和妹纸

等你来撩哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | 通过文本到文本神经问题生成的机器理解

论文笔记整理:程茜雅,东南大学硕士,研究方向:自然语言处理,知识图谱。Citation: Yuan X, WangT, Gulcehre C, et al. Machine comprehension by text-to-text neural question generation[J]. arXiv preprint arXiv:17…

安装paddlepaddle-GPU 报libcudnn.so和libcublas.so找不到的解决方案

第一步,查找两个的文件位置 第二步: 由于cudcun实在cuda10.0的基础上安装的,解压cudcnn的tar包之后会出现一个cuda-10.0文件夹,而不是cuda. 第三步: 在一步出现的位置找到了和libcublas.so.10对其进行了重命名就好了…

LeetCode 221. 最大正方形(DP)

文章目录1. 题目信息2. 解题1. 题目信息 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例: 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximal-squ…

anaconda配置虚拟环境

一般是在服务器上,创建一个自己的虚拟环境,自己来用,不影响别人的环境,也不用被别人安装环境影响。 打开终端 1.查看当前存在哪些虚拟环境 conda env list 或 conda info -e 2.创建名字为 lly_env 的虚拟环境(名字自己取一个&am…

论文浅尝 | 知识图谱推理中表示学习和规则挖掘的迭代学习方法

作者:张文,浙江大学在读博士,研究方向为知识图谱的表示学习,推理和可解释。本文是我们与苏黎世大学以及阿里巴巴合作的工作,发表于WWW2019,这篇工作将知识图谱推理的两种典型方法,即表示学习和规…

21个深度学习调参的实用技巧

文 | AI_study源 | AI算法与图像处理导读在学习人工智能的时候,不管是机器学习还是深度学习都需要经历一个调参的过程,参数的好坏直接影响着模型效果的好坏。本文总结了在深度学习中21个实用的调参的技巧,快来学习吧!这篇文章在国…

从Java程序员进阶为架构师,全套16张图概括最全技能!建议收藏!

如何从程序员进阶到架构师?今天完整的把我积累的经验和技能分享给大家! 作者:陈睿|优知学院创始人 数据结构算法程序 数据是一切能输入到计算机的信息总和,结构是指数据之间的关系,数据结构就是将数据及其之间的关系有…

Python 爬虫系列教程一爬取批量百度图片

原文地址:https://blog.csdn.net/qq_40774175/article/details/81273198 很久之前就学习了Python的爬虫了,也用来做过一些项目(主要是一些课程项目),但时间比较紧,一直没有空把它写下来,这个暑假…

论文浅尝 | 利用知识图谱嵌入和图卷积网络进行长尾关系抽取

论文笔记整理:王狄烽,南京大学硕士,研究方向为关系抽取、知识库补全。链接:https://arxiv.org/pdf/1903.01306.pdf发表会议:NAACL2019动机现有的利用远程监督进行实体关系抽取的方法大多关注于如何对训练数据进行降噪&…

人脑是怎么防止梯度消失和梯度爆炸的?

文 | 极市平台源 | 知乎问答导读梯度消失和梯度爆炸一直是深度学习的难点,而人脑有接近900亿个神经元,可以说是一个非常规模庞大的网络。那么人脑是如何防止梯度消失和梯度爆炸的?观点一作者丨冒蓝火的加特林感觉这个问题跟我的科研方向有一点…

史上最全java架构师技能图谱(下)

“java架构史上最全技能图谱分为上下两篇,这是java架构史上最全图谱下篇,包含: 大数据以及性能、设计模式、UML、中间件、分布式集群、负载均衡、通讯协议、架构设计等技术图谱等章节。 如果需要上篇内容:数结构算法、java进阶、…

Git基本指令

一、创建本地仓库进行版本控制 在工作区 local_repository 新建readme.txt文件: git init :初始化一个空的本地仓库,并在本地仓库生成了.git 文件git add readme.txt :将文件放到暂存区,表示这个文件受git管理git co…

LeetCode 21. 合并两个有序链表(单链表)

文章目录1. 题目信息2. 解题1. 题目信息 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4来源&#xff1a…

一文读懂最强中文NLP预训练模型ERNIE

基于飞桨开源的持续学习的语义理解框架ERNIE 2.0,及基于此框架的ERNIE 2.0预训练模型,在共计16个中英文任务上超越了BERT和XLNet, 取得了SOTA效果。本文带你进一步深入了解ERNIE的技术细节。 一:ERNIE 简介 1.1 简介 Google 最近提出的 BER…

BERT原理、代码、相关模型、精调技巧,看这个就够了

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术2018 年 10 月,由 Google 推出的 BERT 模型一鸣惊人,刷爆了各路榜单,甚至超越了人类基线分数,实现了 NLP 领域里程碑式的突破。 如今,对于 NLP 算法…

论文浅尝 | 利用 KG Embedding 进行问题回答

论文笔记整理:吴杨,浙江大学计算机学院,知识图谱、NLP方向。http://research.baidu.com/Public/uploads/5c1c9a58317b3.pdf动机本文主要针对基于知识库的问题回答中的简单问题,也就是问题的答案只涉及KG中的一跳,此类问…

想成为阿里160万年薪的P8架构师?你必须掌握如下6大技能体系!

程序设计和开发 数据结构和算法:常用数据结构,排序,检索等 面向对象编程、设计模式,掌握建模语言和建模工具:UML、MVC编程思想 高质量编码能力:重用性,低耦合,可扩展性&#xff0c…

技术动态 | 知识图谱的策展

作者:Jiaoyan Chen, Senior Researcher, Department of Computer Science, University of Oxford, Research interests: Knowledge Base, Knowledge-based Learning, Machine Learning Explanation.知识图谱在众多的领域中发挥了重要作用,比如聊天机器人…

21届校招薪资曝光:严重倒挂老员工!

源 | 量子位一开始,还以为是科技互联网公司招聘的新把式。因为就在最近,一张美团应届生薪资的截图,在各大社区和校招群里火了。仅仅算法岗、开发岗的薪资白菜价,就有27k15.5,算下来,年薪就有41万。虽然这两…