[RoBERTa]论文实现:RoBERTa: A Robustly Optimized BERT Pretraining Approach

简介: [RoBERTa]论文实现:RoBERTa: A Robustly Optimized BERT Pretraining Approach

论文:RoBERTa:A Robustly Optimized BERT Pretraining Approach

作者:Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, Veselin Stoyanov

时间:2019

地址:https://github.com/pytorch/fairseq

一、完整代码

这里我们使用python代码进行实现

# 完整代码在这里
# 有时间再做

二、论文解读

RoBERTa,这个论文名字我刚听到的时候,我以为是加了旋转编码的BERT,没想到是A Robustly Optimized BERT Pretraining Approach,其只是对BERT的一种探索和优化,其主要探索在以下几个方面:

  1. 训练更长的时间,使用更大的批次,处理更多的数据可以显著提高性能;
  2. NSP任务效果并不显著,在训练的时候可以删除;
  3. 训练更长的sentence;
  4. 动态mask相较于静态mask其提升并不是很大,但是RoBERTa还是采用了这种做法;

2.1 模型架构

BERT完全一致,是transformerencoder层构成的;

2.2 参数设置

image.png

2.3 数据

为了扩大数据量,这里使用了下面这四个数据;

  • BOOKCORPUS (Zhu et al., 2015) plus English WIKIPEDIA. This is the original data used to train BERT. (16GB).
  • CC-NEWS, which we collected from the English portion of the CommonCrawl News dataset (Nagel, 2016). The data contains 63 million English news articles crawled between September 2016 and February 2019. (76GB after filtering).
  • OPENWEBTEXT (Gokaslan and Cohen, 2019), an open-source recreation of the WebText corpus described in Radford et al. (2019). The text is web content extracted from URLs shared on Reddit with at least three upvotes. (38GB).
  • STORIES, a dataset introduced in Trinh and Le(2018) containing a subset of CommonCrawl data filtered to match the story-like style of Winograd schemas. (31GB).

2.4 评估

这里介绍了三个benchmarks,分别是:GLUESQuADRACE

GLUE:通用语言理解评估(GLUE)基准测试(Wang et al.,2019b)是一个用于评估自然语言理解系统的9个数据集的集合。6个任务被定义为单个句子分类或句子对分类任务。GLUE的组织者提供了培训和开发数据的分割,以及一个提交服务器和排行榜,允许参与者在私人保留的测试数据上评估和比较他们的系统。

SQuAD:斯坦福问题回答数据集(SQuAD)提供了一段上下文和一个问题。任务是通过从上下文中提取相关的跨度来回答这个问题。有了两个版本的SQuAD: V1.1和V2.0(Rajpurkar等人,2016,2018)。在V1.1中,上下文总是包含一个答案,而在V2.0中的一些问题在所提供的上下文中没有设有回答,这使得任务更具挑战性。

RACE:从考试中获得的阅读理解(RACE)(Lai et al.,2017)任务是一个大规模的阅读理解数据集,有超过28000篇文章和近10万个问题。该数据集收集自专为中高中生设计的中国英语考试。在竞赛中,每一段都与多个问题相关联。对于每个问题,这个任务是从四个选项中选择一个正确的答案。种族比其他流行的阅读理解数据集的背景要长得多,需要推理的问题比例非常大

三、对比

Static Masking 和 Dynamic Masking

可以发现其实提升并不明显,有的还降了,但是作者硬是认为也没办法,transformer用静态怎么可能没考虑动态呢,硬是水;

Model Input Format, Next Sentence Prediction 和 TrainBatch

这里先解释一下:

SEGMENT-PAIR+NSP:这遵循了BERT(Devlin et al.,2019)中使用的原始输入格式,有NSP丢失。每个输入都有一对片段,每个片段可以包含多个自然句子,但总的组合长度必须小于512个标记。

SENTENCE-PAIR+NSP:每个输入包含一对自然句子,要么从一个文档的连续部分中采样,要么从单独的文档中采样。由于这些输入明显短于512个令牌,我们增加批大小,使令牌的总数保持与SEGMENT-PAIR+NSP相似。我们保留了NSP的损失。

FULL-SENTENCES:每个输入都包含了从一个或多个文档中连续采样的完整句子,因此总长度最多为512个标记。输入可以跨越文档边界。当我们到达一个文档的结尾时,我们就开始从下一个文档中采样句子,并在文档之间添加一个额外的分隔符标记。我们消除了NSP的损失。

DOC-SENTENCES:输入的构造类似于FULL-SENTENCES,只是它们可能不会跨越文档边界。在文档末尾附近采样的输入可能小于512个标记,因此我们在这些情况下动态地增加批处理大小,以实现与全句相似的总标记数量。我们消除了NSP的损失。

从这里我们可以发现:NSP影响不显著,使用DOC要比FULL要略好;

TrainBatch

从这里我们可以发现,batch越大,能力越强;这里lr不同也许造成了一点干扰;

分词编码方式采取的是BPE,原来是30k,这里变大了,变成50k;

效果

这也许表示了模型越大越好;

四、整体总结

RoBERTa只是对transformer的一种探索,结果是模型越大效果越好;


目录
相关文章
|
5天前
|
机器学习/深度学习 vr&ar
[XLNet]论文解读:XLNet:Generalized Autoregressive Pretraining for Language Understanding
[XLNet]论文解读:XLNet:Generalized Autoregressive Pretraining for Language Understanding
12 0
|
5天前
|
机器学习/深度学习 自然语言处理 并行计算
[Bert]论文实现:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
[Bert]论文实现:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
16 1
|
5天前
|
机器学习/深度学习 自然语言处理 API
[DistilBERT]论文实现:DistilBERT:a distilled version of BERT: smaller, faster, cheaper and lighter
[DistilBERT]论文实现:DistilBERT:a distilled version of BERT: smaller, faster, cheaper and lighter
14 0
|
5天前
|
机器学习/深度学习 JSON 自然语言处理
[GPT-1]论文实现:Improving Language Understanding by Generative Pre-Training
[GPT-1]论文实现:Improving Language Understanding by Generative Pre-Training
45 1
|
9月前
|
机器学习/深度学习 自然语言处理 数据可视化
SimCSE: Simple Contrastive Learning of Sentence Embeddings论文解读
本文介绍了SimCSE,一个简单的对比学习框架,极大地推进了最先进的句子嵌入。我们首先描述了一种无监督方法,该方法采用一个输入句子,并在一个对比目标中预测自己
143 0
|
9月前
|
机器学习/深度学习 编解码 自然语言处理
DeIT:Training data-efficient image transformers & distillation through attention论文解读
最近,基于注意力的神经网络被证明可以解决图像理解任务,如图像分类。这些高性能的vision transformer使用大量的计算资源来预训练了数亿张图像,从而限制了它们的应用。
265 0
|
9月前
|
机器学习/深度学习 PyTorch 测试技术
SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation 论文解读
我们提出了SegNeXt,一种用于语义分割的简单卷积网络架构。最近的基于transformer的模型由于在编码空间信息时self-attention的效率而主导了语义分割领域。在本文中,我们证明卷积注意力是比transformer中的self-attention更有效的编码上下文信息的方法。
224 0
|
自动驾驶 算法 API
YOLOX-PAI: An Improved YOLOX, Stronger and Faster than YOLOv6
我们开发了一个名为 EasyCV 的一体化计算机视觉工具箱,以方便使用各种 SOTA 计算机视觉方法。最近,我们将 YOLOX 的改进版 YOLOX-PAI 添加到 EasyCV 中。
141 0
|
数据采集 自然语言处理
【预训练语言模型】RoBERTa: A Robustly Optimized BERT Pretraining Approach
【预训练语言模型】RoBERTa: A Robustly Optimized BERT Pretraining Approach
518 0
【预训练语言模型】RoBERTa: A Robustly Optimized BERT Pretraining Approach
|
机器学习/深度学习 XML 自然语言处理
【预训练语言模型】XLNet: Generalized Autoregressive Pretraining for Language Understanding
【预训练语言模型】XLNet: Generalized Autoregressive Pretraining for Language Understanding
214 0
【预训练语言模型】XLNet: Generalized Autoregressive Pretraining for Language Understanding