今天介绍斯坦福大学和Google Brain团队在ICLR2020的论文,该研究提出ELECTRA语言模型,它是一种新型预训练方法,其关键点在于将预训练文本编码器作为标识符而非生成器,来处理现存语言模型的问题。

最近基于maskd langage modeling(MLM)的预训练模型,比如BERT,主要是使用[MASK]令牌替换输入序列中的部分令牌,然后训练一个模型来修复原来的令牌。虽然它们在下游的NLP任务中有良好的结果,但是模型往往需要大量的计算。作为一种替代方案,作者提出了一种更高效的预训练任务,称为replaced token detection(替换令牌检测)。这种方法不是屏蔽部分输入序列,而是通过小型的生成器生成样本来替换输入中的令牌,并且不是训练一个模型来预测损坏令牌的原来标识,而是训练一个判别模型来预测输入中每个标记是否被生成器所生成的样例所替换。经过实验表明,这种新的预训练任务比MLM更加有效,因为该任务是在所有输入标记上定义的,而不仅仅是被屏蔽掉的一部分子集。

1

研究背景

目前最先进的语言表征学习方法被认为是能学习去噪的自动编码器(Vincent et al., 2008),他们选择一小部分(通常为15%)未标记的输入序列,然后掩盖他们的令牌(e.g., BERT; Devlin et al., 2019)或者添加注意力机制(e.g., XLNet; Yang et al.,2019),然后训练神经网络来恢复原来的输入。由于学习了双向表示,使用MLM的模型会比传统的语言模型的预训练更加有效,但是由于模型只能从每个样本中15%的令牌进行学习,因此需要大量的计算资源。作为一种替代方案,本文提出了替换令牌检测,任务主要是学习如何区分真正的输入令牌和看似合理但是是生成而来的替换令牌。相比之下,MLM任务将模型训练为生成器,用于预测被破坏令牌的原本标识。而本文模型使用判别任务的一个关键优势是模型可以从所有输入的标记中学习,而不是直接从输入的子集中学习,从而节省更多的计算资源。模型称为ELECTRA,一种“准确分类令牌替换且能高效学习的编码器”。作者将其应用于Transformer文本编码器的预训练(Vaswanietal.,2017),并且对下游任务进行微调。通过一系列的实验,作者证明了从所有的输入位置中学习可以使ELECTRA比BERT训练地更快。并且实验还表明,如果充分训练,ELECTRA在下游的任务中可以获得更高的准确性。

图2. 替换令牌检测概述

2

方法

图2详细描述了替换令牌检测预训练任务。模型主要训练两个神经网络,分别是一个生成器和一个判别器。每一个网络主要由一个编码器组成,能将输入序列映射成对应的向量表示。对于一个给定的位置 ,生成器输出生成的令牌对应的可能性:

其中表示令牌向量。对于每一个,判别器会预测 是来自于真实数据还是生成器生成的数据:

生成器是以MLM的方式进行训练。给定一个输入序列,MLM首先选择一组随机的位置(1到n之间的整数)来进行屏蔽,对应的位置会被替换为[MASK]令牌。然后通过训练生成器来预测[MASK]令牌的原始标识。判别器被训练来区分原始数据令牌和被生成器样本替换的令牌。更具体地说,我们通过生成器样本替换被屏蔽的令牌来创建一个损坏的样本 ,并训练判别器来预测  中的哪些令牌与原始令牌匹配:

损失函数为:

虽然与GAN的训练目标类似,但是有几个重要的区别。首先,如果生成器正好生成了正确的令牌,则认为该令牌是真实的而不是假的,我们发现这样可以适度改善下游任务的结果。更重要的是,生成器是尽可能得进行训练,而不是相反地训练来欺骗判别器。训练生成器是具有挑战性的,因为不可能通过从生成器的采样进行反向传播。虽然可以通过使用强化学习训练生成器来解决这个问题,但这比最大似然训练表现得更差。

3

实验

3.1 实验配置

我们在General Language Understanding Evaluation (GLUE)和Stanford Question Answering (SQuAD)数据集上进行评估。模型架构和大多数超参数都与BERT相同。为了进行微调,对于GLUE,模型在ELECTRA上添加了简单的线性分类器。对于SQuAD,模型在ELECTRA上添加了来自XLNet的问答模块。

3.2模型扩展

作者通过提出和评估模型的几个扩展来改进模型。

Weight Sharing 

作者提出通过在生成器和判别器之间共享权重来提高预训练的效率。

Smaller Generators 

如果生成器和判别器的大小相同,那么对ELECTRA进行训练所需的计算量将是仅使用MLM训练的两倍。所以作者建议使用更小的生成器来减少这个因素。

Training Algorithms 

作者使用两个阶段的训练过程进行实验:

  1. 只训练生成器轮。

  2. 用生成器的权重初始化鉴别器的权重。

    保持生成器权重不变,训练判别器 轮。

3.3 实验结果

图3

实验结果如图3所示。在两个阶段的训练中,从生成器转换为判别器目标后,下游任务有了显著的提高。虽然比BERT更好,但我们发现对抗训练不如极大似然训练。进一步的分析表明,这种差距是由对抗训练的两个问题造成的。首先作者认为准确率较低的主要原因是因为强化学习的样本效率较低。其次,反向训练的生成器会产生一个低熵输出分布,其中大多数集中在一个令牌上,这导致生成器样本中不具备多样性。

4

总结

本文提出了一种新的自监督语言表示学习任务——替换令牌检测。其核心思想是训练一个文本编码器来区分输入令牌和由一个小型生成器产生样本。相比之下,我们的预训练目标是更加有效率的,并且在后续任务中取得更好的表现,甚至在使用相对少量的计算资源时也能很好地工作,作者希望这将使开发和应用预训练好的文本编码器能更容易被研究人员和实践人员使用,而不需要使用那么多的计算资源。

参考资料

原文链接:https://arxiv.org/abs/2003.10555

代码链接:https://github.com/google-research/electra

ICLR 2020 | ELECTRA:新型文本预训练模型相关推荐

  1. NeurIPS 2020 | MiniLM:通用预训练模型压缩方法

    基本信息 机构: 微软研究院 作者: Wenhui Wang, Furu Wei, Li Dong, Hangbo Bao, Nan Yang, Ming Zhou 论文地址: https://arx ...

  2. 论文浅尝 | ICLR 2020 - 图神经网络的预训练策略

    论文笔记整理:杨帆,浙江大学计算机学院. 动机 现有的用于图结构的预训练方法要么只关注node-level,导致在图表示空间没有区分度,要么只关注graph-level,导致在节点表示空间没有区分度. ...

  3. 智源发布:悟道 · 文汇 | 面向认知,超大规模新型预训练模型

    2021年1月11日,由北京智源人工智能研究院(以下简称"智源研究院").阿里巴巴.清华大学.中国人民大学.中国科学院.搜狗.智谱.AI.循环智能等单位的科研骨干成立"悟 ...

  4. bert 中文 代码 谷歌_ELECTRA中文预训练模型开源,110个参数,性能媲美BERT

    感谢参考原文-http://bjbsair.com/2020-03-27/tech-info/7050/ 在去年11月份,NLP大神Manning联合谷歌做的ELECTRA一经发布,迅速火爆整个NLP ...

  5. 中文版GPT-3来了?智源研究院发布清源 CPM —— 以中文为核心的大规模预训练模型...

    清源 CPM(Chinese Pretrained Models)是北京智源人工智能研究院和清华大学研究团队合作开展的大规模预训练模型开源计划,清源计划是以中文为核心的大规模预训练模型.首期开源内容包 ...

  6. 中文版GPT-3来了?智源、清华发布清源 CPM——以中文为核心的大规模预训练模型

    2020-11-18 23:43:21 清源 CPM(Chinese Pretrained Models)是北京智源人工智能研究院和清华大学研究团队合作开展的大规模预训练模型开源计划,清源计划是以中文 ...

  7. 中国最大AI预训练模型发布:113亿参数!北京智源研究院、阿里、清华等联手打造...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 不久前, ...

  8. 中国最大AI预训练模型发布:113亿参数!北京智源研究院、阿里、清华等联手打造

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 不久前,OpenAI 的GPT-3成功跨界,摇身一变成为"设计师",名曰DALL·E. 而近日,北京智源人工智能研究院发 ...

  9. 交互式多模型_26亿参数,智源、清华开源中文大规模预训练模型

    近日,北京智源人工智能研究院和清华大学研究团队联合发布了以中文为核心的大规模预训练语言模型 CPM-LM,参数规模达 26 亿,预训练中文数据规模 100 GB. 26亿参数,智源.清华开源中文大规模 ...

最新文章

  1. poj2140---herd sums
  2. 初识前端——个人总结
  3. Android中shape中的属性大全
  4. 大话 | 大话程序猿眼里最全的高并发,快收藏!
  5. VUE3.x(v-for)循环遍历指令
  6. ios ffmpeg+libx264
  7. java删除非空文件夹
  8. Oracle | awr报告分析
  9. 前端vs图片:2 图片深度、图片分类等基本信息
  10. Linux【实操篇】—— 进程管理、服务管理、软件包管理(rpm、yum)
  11. Php中应用透明链路追踪工具molten如何使用?
  12. 为什么Linux的fdisk分区时第一块磁盘分区的First Sector是2048?
  13. 资源地址总览(实时更新中)
  14. Vue2基础篇-21-非单文件组件
  15. USER_用户_数据库知识点
  16. 举个栗子!Tableau 技巧(4):如何做空心饼图(环形图)
  17. 微信小程序开发文档——地图
  18. 电子商务就是计算机技术在传统商务中的应用,第1章 电子商务概述 习题答案
  19. 工具- 笔记软件Notion - 学习/实践
  20. 安卓android studio传感器编程入门demo读懂就通1分钟跑通掌握最多需要三十分钟

热门文章

  1. Java8新特性整理篇
  2. 某程序媛哀叹:北京好几套房,家庭收入200多万,但孩子是渣娃,人生没意义了!...
  3. 百度大规模Service Mesh落地实践
  4. ThreadLocal为什么要使用弱引用和内存泄露问题
  5. SQL查询语句总是先执行SELECT?你们都错了。。。
  6. 怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!
  7. 【高并发】高并发环境下诡异的加锁问题(你加的锁未必安全)
  8. 2019年必须掌握的29个微服务面试问题(下)
  9. android 自定义命名空间,Android自定义ActionBar实例
  10. HTTP协议与TCP/IP协议的关系