文章目录
- 一、完整代码
- 二、论文解读
- 2.1 模型架构
- 2.2 参数设置
- 2.3 数据
- 2.4 评估
- 三、对比
- 四、整体总结
论文: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
的一种探索和优化,其主要探索在以下几个方面:
- 训练更长的时间,使用更大的批次,处理更多的数据可以显著提高性能;
- NSP任务效果并不显著,在训练的时候可以删除;
- 训练更长的sentence;
- 动态mask相较于静态mask其提升并不是很大,但是RoBERTa还是采用了这种做法;
2.1 模型架构
和BERT
完全一致,是transformer
的encoder
层构成的;
2.2 参数设置
Adam
: β 1 = 0.9 , β 2 = 0.999 , ϵ = 1 e − 6 \beta_1=0.9, \beta_2=0.999, \epsilon=1e-6 β1=0.9,β2=0.999,ϵ=1e−6, L 2 = 0.01 L_2=0.01 L2=0.01
dropout
: d r o p o u t − r a t e = 0.1 dropout-rate=0.1 dropout−rate=0.1
updates
: 1000000 1000000 1000000
batch_size
: 256 256 256
token_size
: 512 512 512
attention_activation
: G E L U GELU GELU
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
,分别是:GLUE
,SQuAD
,RACE
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
的一种探索,结果是模型越大效果越好;