前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新一届最强预训练模型上榜,出于BERT而胜于BERT

新一届最强预训练模型上榜,出于BERT而胜于BERT

作者头像
AI科技大本营
发布2019-08-06 14:37:56
8400
发布2019-08-06 14:37:56
举报

作者 | Facebook AI

译者 | Lucy

编辑 | Jane

出品 | AI科技大本营(ID: rgznai100)

【导读】预训练方法设计有不同的训练目标,包括语言建模、机器翻译以及遮蔽语言建模等。最近发表的许多论文都使用了微调模型,并预先训练了一些遮蔽语言模型的变体。然而,还有一些较新的方法是通过对多任务微调提高性能,结合实体嵌入,跨度预测和自回归预训练的多种变体。它们通常在更大数据上训练更大的模型来提高性能。本文的目标是通过复制、简化和更好地微调训练BERT,以作为更好理解上述方法的相对性能的参考值。

论文地址:

https://arxiv.org/abs/1907.11692

语言模型预训练能获得显著的性能提升,但是不同方法之间很难进行详细的比较。训练模型计算成本高,通常在各自的数据集上完成,并且作者将展示超参数对最终结果的显著影响。作者提出了BERT 预训练的复制研究,该研究测量了关键超参数和训练数据量对结果的影响。发现BERT 可以超过其后发布的每个模型的性能。该模型在 GLUE,RACE 和SQuAD 上实现了目前最好的结果。这些结果强调了先前被忽视的设计选择的重要性,然后提出了有关最近报告的改进的来源的问题,并发布了模型和公开了程序代码。

1、 介绍

自训练方法,如ELMo、 GPT、 BERT、 XLM 和XLNet 得到了显著的性能提升,但很难确定每种方法的哪些方面贡献最大。训练计算成本很高,限制了微调的数据量,并且通常使用不同大小的私人训练数据来完成,这限制了测量模型效果的能力。

作者提出了BERT 预训练的复制研究,其中包括评估超参数和训练数据量对结果的影响。提出了一个改进的训练BERT模型的方法,称之为 RoBERTa,该方法可以超过所有 post-BERT 方法的性能。修改的部分包括:(1)训练模型时间更长,batch更大,数据更多;(2)删除下一句预测目标;(3)对较长序列进行训练;(4)动态改变应用于训练数据的遮蔽模式。为了更好地控制训练集大小对结果的影响,作者收集了与其他私人使用的数据集大小相当的大型新数据集(CC-NEWS)。

在控制训练数据时,改进的训练程序比在GLUE 和SQUAD 上公布的BERT 结果有所提高。经过长时间训练,该模型在公共GLUE 排行榜上得分为88.5,与 Yang 等人报道的88.4 相当。该模型建立了一个最新的4/9GLUE 任务:MNLI, QNLI, RTE 和STS-B。在 SQuAD 和RACE 上获得最好的实验结果。总的来说,重新确定BERT的遮蔽语言模型训练目标是与其他最近提出的训练目标竞争,例如扰动自回归语言模型。

总之,本文的贡献是:(1)提出了一套重要的 BERT 设计选择和培训策略,并介绍了可以带来更好的下游任务绩效的替代方案;(2)使用一种新的数据集 CCNEWS,确认使用更多数据进行预训练可以进一步提高下游任务的性能;(3)训练结果表明,在配置正确的情况下,预训练的遮蔽语言模型比其他最近发布的模型效果更好。作者发布了模型,上传了基于 PyTorch 的预训练和微调代码。

2、 背景

2.1 设置

BERT 将两个段(令牌序列),x1,..., xN 和y1,..., yM 的串联作为输入。该模型首先在大的未标记文本语料库上预先训练,然后使用最终任务标记数据进行网络化。

2.2 结构

本文使用具有L 层的变压器架构,每个块使用A 自注意头和H 层隐藏层.

2.3 训练目标

在预训练期间,BERT 的两个目标:遮蔽语言模型和下一句话预测。遮蔽语言模型(MLM)使用已标记的随机样本作为输入序列,并用特殊标记[MASK] 替换。MLM的目标是预测被遮蔽标记的交叉熵损失。下一句话预测(NSP) NSP 是一种二元分类损失,用于预测原始文本中两个段落是否相连。

2.4 优化

BERT使用以下参数对Adam 进行优化:β1= 0.9,β2= 0.999,ǫ= 1e-6,L2 权重衰减为0.01。 学习率在最初的10,000次迭代中峰值为1e-4,然后线性衰减。BERT 每层Dropout 为0.9,以及一个 GELU 激活函数。模型预训练在S = 1,000,000时更新,最小的batch 包含序列最大长度B = 256 和标记T = 512。

2.5 数据

BERT 的训练数据包含BOOKCORPUS 和英语WIKIPEDIA,压缩前共 16GB。

3、 实验设置

3.1 配置

作者在FAIRSEQ 中重新实现了BERT。主要遵循第2节中给出的初始 BERT 优化超参数,除了峰值学习速率和预热步数,这些步骤针对每个设置单独调整。Adam 在训练中非常敏感,在某些情况下,调整后能提高性能。并设置β2= 0.98 以提高大批量训练时的稳定性。作者预先训练了最多T = 512 标记序列。不会随机注入短序列,并且不会针对前90% 的更新以减少的序列长度进行训练,只训练全长序列。在 DGX-1 机器上进行混合精密浮点运算,每个机器都有8×32GB Nvidia V100 GPU,并由 Infiniband 互连。

3.2 数据

BERT 式预训练依赖于大量的文本。本文考虑了不同大小和域的五种英语语料库,总共超过160GB 的未压缩文本。使用的文本语料库如下:

  • BOOKCORPUS 和英语WIKIPEDIA:这是用于训练 BERT 的原始数据(16 GB)。
  • CC-NEWS:收集的 CommonCrawl 新闻数据集的英文部分。该数据包含2016 年9 月至2019 年2 月期间6300 万份英文新闻(过滤后为76GB)。
  • OPENWEBTEXT:Radford 等人的WebText 语料库的开源数据。该文本是从Reddit 上共享的URL 中提取的网页内容,爬取的每个内容都至少有三个人点赞(38GB)。
  • STORIES:是 Trinh 和Le 引入的数据集,其中包含一部分CommonCrawl 数据,用于匹配Winograd 模式的故事风格(31GB)。

3.3 评估

作者使用以下三个基准评估下游任务的预训练模型。

  • GLUE 通用语言理解评估(GLUE)基准是用于评估自然语言理解系统的 9 个数据集的集合。
  • SQuAD 斯坦福问题答疑数据集(SQuAD)提供了一段背景和一个问题。任务是通过从上下文中提取相关跨度来回答问题。
  • RACE 考试的重新理解(RACE)任务是一个大型阅读理解数据集,有超过 28000 个段落和近100000 个问题。该数据集来自中国的英语考试,专为中学生和高中生设计。

4、 训练程序分析

本节探讨在保持模型架构不变的情况下,哪些量化指标对预训练BERT 模型有影响。首先训练BERT 模型,其配置与BERTBASE 相同(L = 12, H = 768, A = 12,110M 参数)。

4.1 静态与动态掩蔽

可以发现使用静态遮蔽重新实现的功能与原始BERT模型类似,动态遮蔽与静态遮蔽效果差距不大。

表1:BERTBASE 的静态遮蔽和动态遮蔽之间的比较。

4.2 模型输入格式和下一句预测

本文比较了几种可选择训练模式:

  • SEGMENT-PAIR+NSP:BERT 中使用带NSP 损失的原始输入格式。每个输入都有两个段落,每个段可以包含多句话,但总组合长度必须小于512 个tokens。
  • SENTENCE-PAIR+NSP:每个输入包含两句话,从一个文档的连续部分或从单独的文档中采样。由于这些输入明显少于512 个tokens,因此我们增加batch的大小,以使 tokens 总数保持与SEGMENT-PAIR + NSP 相似,同时保留了NSP 损失。
  • FULL-SENTENCES:每个输入都包含从一个或多个文档连续采样的完整句子,使得总长度最多为512 个tokens。输入可能跨越文档边界。当到达一个文档的末尾时,从下一个文档开始对句子进行抽样,并在文档之间添加一个额外的分隔符号,这里不使用 NSP 损失。
  • DOC-SENTENCES:输入的构造类似于FULL-SENTENCES,除了它们可能不需要跨越文档边界。在文档末尾附近采样的输入可以短于 512 个tokens,因此在这些情况下动态增加batch大小以达到与 FULLSENTENCES 相同的tokens总数,这里不使用 NSP 损失。

表2:在 BOOKCORPUS 和WIKIPEDIA 上预训练的基础模型的开发集结果。

首先比较Devlin等人的原始SEGMENT-PAIR输入格式。采用SENTENCE-PAIR格式;两种格式都保留了NSP损失,但后者使用单句。发现单个句子会损害下游任务的性能,认为这是因为模型无法学习远程依赖。

4.3 大批量训练

在神经网络机器翻译模型中,当学习率适当增加时,使用非常大的mini-batch 训练可以提高优化速度和终端任务性能。研究结果表明,BERT 也适用于大批量训练。

表3:在不同 batchs(bsz)下, BOOKCORPUS 和WIKIPEDIA 作为训练数据,模型的持续训练数据(ppl)和开发集准确率。

比较了BERTBASE 的性能,因为增加了batch 的大小,控制了通过训练数据的次数。观察到大批量训练可以改善遮蔽语言模型目标的困惑度,以及最终任务的准确性。通过分布式数据并行训练,大批量也更容易并行化,后续的实验中,作者使用8K 序列进行训练。

4.4 文本编码

字节对编码(BPE)是字符和单词级表示之间的混合,允许处理自然语言语料库中常见的大词汇表。BPE 不依赖于完整的单词,而是依赖于子词单元,这些子单元是通过对训练语料库进行统计分析而提取的。

5、RoBERTa

表4:RoBERTa的开发集结果,因为预先训练了更多数据(16GB→160GB的文本)和预训练更长时间(100K→300K→500K步),每行累积上述行的改进。RoBERTa 符合BERTLARGE 的架构和训练目标。

当控制训练数据时,观察到RoBERTa 比最初报告的BERTLARGE 结果有了明显的改进。

5.1 GLUE结果

表5 :GLUE 的结果。所有结果均基于24 层架构。开发集上的RoBERTa 结果是五次运行的中位数。测试集上RoBERTa 的结果是单任务模型的集合。对于RTE, STS 和MRPC,从 MNLI 模型开始,而不是基线预训练模型。平均值可以从GLUE 排行榜获得。

5.2 SQuAD结果

表6 :SQuAD 的结果。†表示取决于其他外部训练数据的结果。RoBERTa 仅在开发和测试设置中使用提供的SQuAD 数据。

5.3 RACE结果

表7 :RACE 测试集的结果

RoBERT在中学和高中设置上都能获得最好的实验结果。

6、结论

在预训练BERT模型时,作者会仔细评估一些设计决策。通过更长时间地训练模型,处理更多数据,可以显著提高模型性能;删除下一句预测目标; 培训更长的序列; 并动态地改变应用于训练数据的遮蔽模式。改进的预训练程序,称之为RoBERTa,在GLUE,RACE和SQuAD上实现了目前最好的结果,没有GLUE的多任务网络化或SQuAD的附加数据。这些结果说明这些先前被忽视的设计决策的重要性,并表明BERT的预训练目标仍与最近提出的替代方案不相上下。

作者还使用了一个新的数据集CC-NEWS,并发布了用于预训练和网络训练的模型和代码。

Github地址:

https://github.com/pytorch/fairseq

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、 介绍
  • 2、 背景
    • 2.1 设置
      • 2.2 结构
        • 2.3 训练目标
          • 2.4 优化
            • 2.5 数据
            • 3、 实验设置
              • 3.1 配置
                • 3.2 数据
                  • 3.3 评估
                  • 4、 训练程序分析
                    • 4.1 静态与动态掩蔽
                      • 4.2 模型输入格式和下一句预测
                        • 4.3 大批量训练
                          • 4.4 文本编码
                          • 5、RoBERTa
                            • 5.1 GLUE结果
                              • 5.2 SQuAD结果
                                • 5.3 RACE结果
                                • 6、结论
                                相关产品与服务
                                NLP 服务
                                NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档