论文: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
的一种探索和优化,其主要探索在以下几个方面:
和BERT
完全一致,是transformer
的encoder
层构成的;
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
为了扩大数据量,这里使用了下面这四个数据;
这里介绍了三个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
的一种探索,结果是模型越大效果越好;
更多【深度学习-[RoBERTa]论文实现:RoBERTa: A Robustly Optimized BERT Pretraining Approach】相关视频教程:www.yxfzedu.com