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

·阅读摘要:
  本文在BERT模型的基础上进行了一些改进,提出了RoBERTa模型,并证明了RoBERTaBERT的效果更好一些。
·参考文献:
  [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。

【注三】相当严谨。

  以下是实验结果:
在这里插入图片描述

[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进行额外数据。

自然语言处理(NLP)领域的主流预训练语言模型主要包括以下几个: 1. **BERT (Bidirectional Encoder Representations from Transformers)**:由Google于2018年发布,它是基于Transformer架构的第一款大规模预训练模型,通过双向上下文理解文本。 2. **GPT (Generative Pre-trained Transformer)**:由OpenAI开发的一系列模型,最初有GPT-1、GPT-2和更先进的GPT-3,它们擅长生成连贯的文本,尤其是长期依赖的序列预测。 3. **DistilBERT**:是BERT的一个轻量级版本,它通过缩小规模和优化训练过程来提高效率,同时保持较高的性能。 4. **RoBERTa (Robustly Optimized BERT Pretraining Approach)**:Facebook AI Research推出的一种改进版BERT,采用更大的数据集、动态学习率等策略获得更好的性能。 5. **XLNet**:同样来自Google,它引入了自注意力的新机制,能够在训练过程中同时考虑整个句子的全局信息,效果显著。 6. **ELECTRA**:这是另一款基于对抗性训练的预训练模型,由Google发布,它的目标是更有效地学习鉴别真实的单词对。 7. **T5 (Text-to-Text Transfer Transformer)**:由Google提出,设计为通用的预训练模型,能够接受任意长度的输入并输出相应的文本,支持多种NLP任务。 每个模型都有其特点和应用场景,如BERTRoBERTa广泛应用于问答、文本分类等任务,而GPT系列则适用于生成式对话和创造力表达。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

征途黯然.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值