【预训练语言模型】RoBERTa: A Robustly Optimized BERT Pretraining Approach

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 【预训练语言模型】RoBERTa: A Robustly Optimized BERT Pretraining Approach

·阅读摘要:

 本文在BERT模型的基础上进行了一些改进,提出了RoBERTa模型,并证明了RoBERTa比BERT的效果更好一些。

·参考文献:

 [1] RoBERTa: A Robustly Optimized BERT Pretraining Approach

 [2] BERT模型讲解,参考博客:【文本分类】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

  目前预训练语言模型按时间排:ELMo - GPT - BERT - XML - XLNet - RoBERTa - ALBERT。基本上越往后的模型效果越好。

 BERT用了16GB的训练数据,XLNet用了126GB数据,RoBERTa用了160GB数据。从个人理解上,XLNet像是为了超越BERT而提出各种花里胡哨trick的模型,而RoBERTa完全是对标XLNet的BERT加强版,从RoBERTa论文的各种设置就能看出来它是想干掉XLNet哈哈。

  本文对BERT进行复制研究,其中包括对超参数调整和训练集大小的影响的仔细评估,并提出了一种改进的训练BERT模型的方法,主要有4点:

  1、动态掩码机制(Dynamic Masking)

  2、取消下一个句子预测机制(Next Sentence Prediction, NSP),更改模型输入形式

  3、训练模型的时间更长,批次更大,数据更多,更大的字节对编码(Byte-Pair Encoding, BPE)词典

  4、全长序列训练

[1] 动态掩码机制


  首先介绍BERT模型中的掩码语言模型(Masked Language Model, MLM)

  对于一条样本,随机选择序列中的词,然后用特殊词[MASK]替换。MLM的目标是预测掩码时的交叉熵损失。BERT统一选择15%的输入词用于可能的替换。在选定的词中,80%的时间被替换为[MASK],10%的时间保持不变,剩下10%的时间被随机替换成词典中的任意词。

  原始的BERT实现在数据预处理期间执行一次masking,然后直接用于训练,但是这样会在每个时期对每个训练实例使用相同的掩码。

  为了避免这个情况,BERT会把训练数据被复制10次,以便在40个训练时期内以10种不同的方式对每个序列进行掩码。

【注一】其实它这样还是在数据预处理时只执行一次masking。而且训练数据被复制10次,可能不如扩大到10倍的数据集。

  介绍RoBERTa模型中的动态掩码(Dynamic Masking)

  在动态掩蔽中,每次向模型喂输入序列时,都会动态生成掩码。

【注二】说起来比较简单。

[2] 取消下一个句子预测,更改模型输入形式


  首先介绍BERT模型中的下一个句子预测(Next Sentence Prediction, NSP)

  NSP是一种二进制分类损失,用于预测两个片段在原始文本中是否相互连续。通过从文本语料库中提取连续的句子来创建正例,反例是通过对不同文档的片段进行配对来创建的。正反两个例子的抽样概率相等。NSP目标旨在提高下游任务的性能,如自然语言推理,这需要对句子对之间的关系进行推理。

  RoBERTa模型为什么要取消NSP

  原因一: 近年来,有人质疑NSP的必要性。

  原因二: 作者做实验验证了NSP是没有必要的。作者比较了几种不同的模型输入形式:

  · SEGMENT-PAIR+NSP:这是BERT中使用的原始输入格式,使用NSP Loss。每个输入都有一对段,每个段可以包含多个自然语句,但总的组合长度必须小于512个标记。

  · SENTENCE-PAIR+NSP:每个输入都包含一对自然语句,可以从一个文档的连续部分中采样,也可以从单独的文档中采样。由于这些输入明显短于512个令牌,增加了批大小,以便令牌总数保持与SEGMENT-PAIR+NSP相似,保留NSP Loss。

  · FULL-SENTENCES:每个输入都包含从一个或多个文档连续采样的完整句子,因此总长度最多为512个标记。输入可能跨文档。当采样到一个文档的末尾时,对下一个文档中的句子进行采样,并在文档之间添加一个额外的分隔符标记。不使用NSP Loss。

 · DOC-SENTENCES:输入的构造类似于FULL-SENTENCES,只是它们不能跨文档。在文档末尾附近采样的输入可能短于512个令牌,因此在这些情况下动态地增加批大小,以实现与FULLSENTENCES相同数量的总令牌。我不使用NSP Loss。

【注三】相当严谨。

  以下是实验结果:

image.png

[3] 训练模型的时间更长,批次更大,数据更多,更大的字节对编码词典


【注四】关于“训练模型的时间更长,批次更大,数据更多”文章说了很多,总结起来就是:大力出奇迹。主要说一下字节对编码。

 字节对编码(Byte-Pair Encoding, BPE)是字符和单词级表示之间的混合,允许处理自然语言语料库中常见的大型词汇。BPE不依赖于完整的单词,而是依赖于通过对训练语料库进行统计分析而提取的子单词单元。BPE词汇表的大小通常在10K-100K子字单位之间。然而,在对大型和多样的语料库建模时,unicode字符可以占到词汇表的相当大的一部分。Radford等人(2019)介绍了一种巧妙的BPE实现,它使用字节而不是unicode字符作为基本子字单位。使用字节可以学习中等大小(50K单位)的子单词词汇表,仍然可以对任何输入文本进行编码,而不会引入任何[UNK]标记。


 原始BERT实现使用大小为30K的字符级BPE词汇表,该词汇表是在使用启发式标记化规则预处理输入后学习的。作者使用包含50K个子字单元的更大字节级BPE词汇来训练BERT,而不对输入进行任何额外的预处理或标记化。

[4] 全长序列训练


  RoBERTa模型用最多T=512个标记的序列进行预训练。与BERT模型不同,RoBERTa模型不随机注入短序列,也不在前90%的更新中使用减少的序列长度进行训练。RoBERTa模型只训练全长序列。

[5] 实验效果总结


  改进的预训练程序RoBERTa模型在GLUERACESQuAD上实现了最先进的结果,无需对GLUE进行多任务微调或对SQuAD进行额外数据。

相关文章
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers
【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers
35 1
|
5月前
|
机器学习/深度学习 自然语言处理 PyTorch
【自然语言处理NLP】Bert预训练模型、Bert上搭建CNN、LSTM模型的输入、输出详解
【自然语言处理NLP】Bert预训练模型、Bert上搭建CNN、LSTM模型的输入、输出详解
162 0
|
6月前
|
机器学习/深度学习 自然语言处理 数据格式
训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类
训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类
Coggle 30 Days of ML(23年7月)任务十:使用Bert在比赛数据集中完成预训练
Coggle 30 Days of ML(23年7月)任务十:使用Bert在比赛数据集中完成预训练
|
6月前
|
机器学习/深度学习 自然语言处理 数据挖掘
预训练语言模型中Transfomer模型、自监督学习、BERT模型概述(图文解释)
预训练语言模型中Transfomer模型、自监督学习、BERT模型概述(图文解释)
152 0
|
机器学习/深度学习 存储 人工智能
大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解、Bert模型原理介绍
大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解、Bert模型原理介绍
大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解、Bert模型原理介绍
|
机器学习/深度学习 缓存 人工智能
深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick、Transformer Encoder等原理详解
深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick、Transformer Encoder等原理详解
深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick、Transformer Encoder等原理详解
|
机器学习/深度学习 人工智能 自然语言处理
从BERT到ChatGPT,百页综述梳理预训练大模型演变史(2)
从BERT到ChatGPT,百页综述梳理预训练大模型演变史
361 0
|
人工智能
从BERT到ChatGPT,百页综述梳理预训练大模型演变史(1)
从BERT到ChatGPT,百页综述梳理预训练大模型演变史
238 0
|
机器学习/深度学习 人工智能 分布式计算
SparK项目原作解读:卷积模型的首个BERT预训练
SparK项目原作解读:卷积模型的首个BERT预训练
283 0