RoBERTa概述

2020-11-03 14:34:32 浏览数 (1)

RoBERTa相较于BERT最大的改进有三点:

  1. 动态Masking
  2. 取消NSP (Next Sentence predict) 任务
  3. 扩大Batch Size
静态Masking vs 动态Masking
  • 静态Maksing:在数据预处理期间Mask矩阵就已生成好,每个样本只会进行一次随机Mask,每个Epoch都是相同的
  • 修改版静态Maksing:在预处理的时候将数据拷贝10份,每一份拷贝都采用不同的Mask,也就说,同样的一句话有10种不同的mask方式,然后每份数据都训练N/10个Epoch
  • 动态Masking:每次向模型输入一个序列时,都会生成一种新的Maks方式。即不在预处理的时候进行Mask,而是在向模型提供输入时动态生成Mask
取消NSP任务

其实到2020年了,很多论文早已不再使用NSP任务,但是RoBERTa算是比较早的一批质疑NSP任务的模型。RoBERTa实验了4种方法:

  • SEGMENT-PAIR NSP:输入包含两部分,每个部分是来自同一文档或者不同文档的 segment (segment 是连续的多个句子),这两个segment 的token总数少于 512 。预训练包含 MLM 任务和 NSP 任务。这是原始 BERT 的做法
  • SENTENCE-PAIR NSP:输入也是包含两部分,每个部分是来自同一个文档或者不同文档的单个句子,这两个句子的token 总数少于 512 。由于这些输入明显少于512 个tokens,因此增加batch size的大小,以使 tokens 总数保持与SEGMENT-PAIR NSP 相似。预训练包含 MLM 任务和 NSP 任务
  • FULL-SENTENCES:输入只有一部分(而不是两部分),来自同一个文档或者不同文档的连续多个句子,token 总数不超过 512 。输入可能跨越文档边界,如果跨文档,则在上一个文档末尾添加标志文档边界的token 。预训练不包含 NSP 任务
  • DOC-SENTENCES:输入只有一部分(而不是两部分),输入的构造类似于FULL-SENTENCES,只是不需要跨越文档边界,其输入来自同一个文档的连续句子,token 总数不超过 512 。在文档末尾附近采样的输入可以短于 512个tokens, 因此在这些情况下动态增加batch size大小以达到与 FULL-SENTENCES 相同的tokens总数。预训练不包含 NSP 任务
扩大Batch Size

其实之前我看到过一个说法(源自Chinese-BERT-wwm):降低batch size会显著降低实验效果

RoBERTa论文作者也做过相关实验,采用大的Batch Size有助于提高性能

其中,bsz是Batch Size;steps是训练步数(为了保证bsz*steps近似相同,所以大bsz必定对应小steps);lr是学习率;ppl是困惑度,越小越好;最后两项是不同任务的准确率

Reference
  • 深度学习:前沿技术-RoBERTa

0 人点赞