2020-03-16 19:35

导语:小模型高精度,效率显著优于 MLM。

按:近日,谷歌宣布将 AI 语言模型 ELECTRA 作为 TensorFlow 之上的开源模型发布。该方法用到了一种称为替换令牌检测(RTD)的新预训练任务,使其能够在从所有输入位置学习的同时,训练双向模型。

并且,在同等计算资源的情况下,ELECTRA 的性能优于现有方法;而在参数量只有 1/30 的情况下,取得不逊于最先进 BERT 系列模型的性能。谷歌发布了相关文章介绍这一开源成果,雷锋网 AI 源创评论将其整理编译如下。

语言模型现状与瓶颈

近年来,语言预训练模型的最新进展使得自然语言处理也取得了重大进展,其中不乏一些最先进的模型,例如:BERT,RoBERTa,XLNet,ALBERT 和 T5 等。

这些方法虽然在设计上有所不同,但在利用特定的 NLP 任务(例如:情感分析和问题解答等)进行微调时,有着相同思路,即:利用大量未标记的文本,来构建语言理解的通用模型。

因此,现有的预训练方法通常分为两类:语言模型(LM),例如:GPT。该类方法按照从左到右的顺序处理输入文本,然后在给定先前上下文的情况下,预测下一个单词。

另一个则是掩码语言模型(MLM),例如:BERT,RoBERTa 和 ALBERT。这类模型它们分别预测输入中已被屏蔽的少量单词内容。MLM 相比 LM 而言,具有双向预测的优势,因为它可以看到要预测的单词左侧和右侧的文本。

但 MLM 模型预测也有缺点,这些模型的预测仅限于输入标记的某个很小的子集(被掩盖部分的 15%),从而减少了他们从每个句子中获得信息的量,增加了计算成本。

现有的预训练方法及其缺点。箭头指示哪些标记用于生成给定的输出表示形式(矩形)。左:传统语言模型(例如 GPT)仅使用当前单词左侧的上下文。右:掩码语言模型(例如 BERT)从左到右都使用上下文,但是对于每个输入仅预测一小部分单词

新型预训练模型 ELECTRA

正是为了克服以上两类语言模型存在的缺点,谷歌提出了 ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately)语言模型。这是一种新型预训练方法,其关键点在于将预训练文本编码器作为标识符而非生成器,来处理现存语言模型的问题。

论文地址:https://openreview.net/pdf?id=r1xMH1BtvB

在相同的模型大小、数据、计算量的情况下,该方法的性能显著优于 MLM 类的方法,例如 BERT 和 XLNet;而且,ELECTRA 小模型仅需要在 1 块 GPU 训练 4 天即可得到。

具体实验数据显示,这个小模型比 BERT 小模型在 GLUE 得分上 高 5 个点,甚至比更大的 GPT 模型(该模型使用 30 倍以上的计算能力)效果还要好。

而 ELECTRA 在使用少于 1/4 的计算量时,可以在 GLUE 自然语言理解基准上达到 RoBERTa 和 XLNet 的性能。如果使用更多的计算机来训练大型 ELECTRA,该模型在 SQuAD 2.0 的问答数据集和语言理解任务的排行榜上,获得了最先进的表现。(具体数据见第四小节)

核心思想——替换令牌检测

ELECTRA 使用一种称为替换令牌检测(RTD)的新预训练任务,该任务在从所有输入位置(如:LM)学习的同时,训练双向模型(如:MLM)。

具体而言,ELECTRA 的目标是学习区分输入的词。它不使用掩码,而是从一个建议分布中采样词来替换输入,这解决了掩码带来的预训练和 fine-tune 不一致的问题。

然后模型再训练一个判别器,来预测每个词是原始词还是替换词。而判别器的一个优点则是:模型从输入的所有词中学习,而不是像 MLM 那样,仅使用掩盖的词,因此计算更加有效。

正如很多开发者联想到的对抗学习方法,ELECTRA 确实受到到生成对抗网络的启发(GAN)。但不同的是,模型采用的是最大似然而非对抗学习。

例如下图中,单词「cooked」可以替换为「ate」。尽管这有些道理,但它并不适合整个上下文。预训练任务需要模型(即鉴别器)来确定原始输入中的哪些标记已被替换或保持相同。

正是由于该模型的二进制分类任务适用于每个输入单词,而非仅有少量的掩码单词(在 BERT 样式的模型中为 15%),因此,RTD 方法的效率比 MLM 高。这也解释了为什么 ELECTRA 只需更少的示例,就可以达到与其它语言模型相同性能的原因。

从所有输入位置学习时,替换的令牌检测可进行双向训练

其中,替换令牌来自生成器的神经网络。生成器的目标是训练掩码语言模型,即给定输入序列后,按照一定的比例(通常 15%)将输入中的词替换成掩码;然后通过网络得到向量表示;之后再采用 softmax 层,来预测输入序列中掩盖位置的词。

尽管生成器的结构类似于 GAN,但由于难以将该方法应用于文本任务,因此得到的训练目标函数为掩盖词的最大似然。

之后,生成器和判别器共享相同的输入词嵌入。判别器的目标是判断输入序列每个位置的词是否被生成器替换,如果与原始输入序列对应位置的词不相同,就判别为已替换。

生成器与判别器神经网络模型

具体研究结果对比

研究人员将 ELECTRA 与其他最新的 NLP 模型进行了比较,发现在给定相同的计算预算的情况下,它与以前的方法相比有了实质性的改进,其性能与 RoBERTa 和 XLNet 相当,而使用的计算量不到 1/4。

x 轴显示用于训练模型的计算量(以 FLOPs 为单位),y 轴显示 dev GLUE 得分。与现有的预训练 NLP 模型相比,ELECTRA 的学习效率要高得多。但值得注意的是,目前 GLUE 上的最佳模型(例如 T5(11B))不适合该图,因为它们使用的计算量比其他模型多得多(比 RoBERTa 多 10 倍)

为了进一步提高效率,研究人员尝试了一个小型的 ELECTRA 模型,该模型可以在 4 天的时间内在单个 GPU 上进行良好的训练。

尽管无法达到与需要训练许多 TPU 的大型模型相同的精度,但 ELECTRA-small 的性能仍然很好,甚至比 GPT 还要好,而所需的计算量却只有其三分之一。

之后,为了测试这一结果是否能大规模实施,研究人员使用了更多的计算量(大约与 RoBERTa 相同的数量,大约是 T5 的 10%)训练了一个大型 ELECTRA 模型。

研究人员将大型 ELECTRA、RoBERTa、XLNet、BERT 和 ALBERT 模型在 SQuAD 2.0 问题回答数据集的表现做了测试,结果如下表所示;可以看到在 GLUE 排行榜上,ELECTRA 的表现优于其它所有模型。

但相比大型 T5-11b 模型,后者在 GLUE 上的得分仍然更高。但值得注意的是,ELECTRA 的大小是其三分之一,并使用 10%的计算进行训练。

SQUAD 2.0 数据集在 ELECTRA-Large 和其他最新模型中得分

目前,用于预训练 ELECTRA 并在下游任务上对其进行微调的代码已发布,当前支持的任务包括:文本分类、问题解答和序列标记。

该代码支持在一个 GPU 上快速训练小型 ELECTRA 模型。之后,谷歌还计划发布适用于 ELECTRA-Large,ELECTRA-Base 和 ELECTRA-Small 的预训练代码。(ELECTRA 模型目前仅支持英语,后续将发布更多语言版本)

原文地址:

https://ai.googleblog.com/2020/03/more-efficient-nlp-model-pre-training.html

GitHub 地址:

https://github.com/google-research/electra

完胜 BERT,谷歌最佳 NLP 预训练模型开源相关推荐

  1. JAVA训练nlp模型,完胜 BERT,谷歌最佳 NLP 预训练模型开源

    雷锋网 AI 源创评论按:近日,谷歌宣布将 AI 语言模型 ELECTRA 作为 TensorFlow 之上的开源模型发布.该方法用到了一种称为替换令牌检测(RTD)的新预训练任务,使其能够在从所有输 ...

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

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

  3. 【NLP】万字梳理!BERT之后,NLP预训练模型发展史

    作者 | 周俊贤 整理 | NewBeeNLP 本文讲解下BERT推出后,预训练模型的演变,包括BERT.RoBERTa.ALBERT.ERNIE系列.ELECTRA.下面脑图是本系列第一篇内容,欢迎 ...

  4. 万字梳理!BERT之后,NLP预训练模型发展史

    作者 | 周俊贤 整理 | NewBeeNLP 本文讲解下BERT推出后,预训练模型的演变,包括BERT.RoBERTa.ALBERT.ERNIE系列.ELECTRA.下面脑图是本系列第一篇内容,欢迎 ...

  5. ELECTRA:超越BERT,2019年最佳NLP预训练模型

    作者 | 李如 来源 | NLPCAB(ID:rgznai100) [导读]BERT推出这一年来,除了XLNet,其他的改进都没带来太多惊喜,无非是越堆越大的模型和数据,以及动辄1024块TPU,让工 ...

  6. ELECTRA: 超越BERT, 19年最佳NLP预训练模型

    BERT推出这一年来,除了XLNet,其他的改进都没带来太多惊喜,无非是越堆越大的模型和数据,以及动辄1024块TPU,让工程师们不知道如何落地.今天要介绍的ELECTRA是我在ICLR盲审中淘到的宝 ...

  7. ELECTRA:超越BERT,19年最佳NLP预训练模型

    本文转载自: https://mp.weixin.qq.com/s/gqc3jKB33mvMKyGXUFTBdw BERT推出这一年来,除了XLNet,其他的改进都没带来太多惊喜,无非是越堆越大的模型 ...

  8. 韩国小哥哥用Pytorch实现谷歌最强NLP预训练模型BERT | 代码

    乾明 编译整理自 GitHub  量子位 报道 | 公众号 QbitAI 新鲜代码,还热乎着呢. 前几天,谷歌发布了一篇论文,介绍了一个超强的NLP预训练模型BERT. 不仅在SQuAD中摧枯拉朽,全 ...

  9. 从BERT、XLNet到MPNet,细看NLP预训练模型发展变迁史

    文章目录 1.BERT 原理及 MLM 简述 1.1 Masked Language Model & Next Sentence Predict** 1.2 Self-Attention 1. ...

最新文章

  1. 分享Kali Linux 2017年第29周镜像文件
  2. 如何修改git已提交记录的邮箱?
  3. 求数组中的最长递增子序列
  4. PLSQL Developer中几个功能
  5. 去广告,原来可以如此简单——ADSafe 3.5.4.520 精简版
  6. flex布局应用与踩坑
  7. download在线下载源码
  8. MyBatis-Plus工具快速入门使用
  9. 单行及多行文本溢出以省略号显示的方法总结
  10. Shell十三问总结
  11. mysql表索引类型修改_MySQL常用的建表、添加字段、修改字段、添加索引SQL语句写法总结...
  12. python中的数据分析库有哪些_全网最全数据分析师干货-python篇
  13. cad2016中选择全图字体怎么操作_CAD2016(精简版)安装教程
  14. java 什么是成员变量_java成员变量和方法的含义是什么?异同点有哪些?
  15. 光纤收发器tx和rx的区别?
  16. 航悦达 HYD-3000 打印机驱动
  17. 力天创见客流统计分析系统
  18. hdoj--1495--非常可乐(搜索+隐式图)
  19. 从困在系统的外卖骑手,看初露端倪的赛博朋克式“技术控制”
  20. 核心期刊《中国兽医学报》

热门文章

  1. tensorflow对应的python版本清单
  2. a.cmd 文件里的内容
  3. python java 爬数据_如何用java爬虫爬取网页上的数据
  4. 直播 | 256核CPU实现每秒一百万帧的Atari!强化学习并行模拟器EnvPool详解
  5. 智源青年科学家林乾:揭开人工智能的黑匣,从解答最基本的问题开始
  6. 探索机器学习理论的最新进展,走近云、端、芯上的视觉计算——“智源论坛:机器学习报告会”重点梳理...
  7. 同是程序员,为什么别人可以事半功倍?
  8. matlab中中图像PSNR和SSIM的计算
  9. 学习Hadoop时遇到的问题以及解决方法
  10. 必备 | 人工智能和数据科学的七大 Python 库