RoBERTa:BERT的优化方案

RoBERTa论文地址

前言说明

BERT模型是欠训练的,作者提供了一个超参优化的BERT训练模型RoBERTa, 即稳健优化的BERT方法(Robustly Optimized BERT Pretraining Approach)
优化的点包括:

  1. 训练时间更长,更大的batch,更多的数据
  2. 去掉了NSP训练(BERT的两个语言训练分别是MLM和NSP)
  3. 训练更长的句子
  4. 在MLM训练时,动态改变masking pattern
    RoBERTa方法在GLUE(文本分类)和SQuAD(阅读理解)上面都刷新或者达到当前最好的水平。最重要的是,RoBERTa只是沿用BERT原有的MLM训练模型,没有用新的结构。

BERT简介

结构

BERT,顾名思义,bidirectional encoder representation transformer, 是以transformer中编码器(encoder)为基础构建结构(参加我画的这个图),训练方法采用MLM进行双向语言模型(有点像CBOW)。
在这里插入图片描述

输入

输入的数据是两个上下文句子,我以为是为了更好理解句子间的关系。输入数据形式是 [ C L S ] x 1 , x 2 , . . . , x N , [ S E P ] , y 1 , y 2 , . . . , y M , [ E O S ] [CLS] x_1, x_2, ..., x_N, [SEP], y_1, y_2,...,y_M,[EOS] [CLS]x1,x2,...,xN,[SEP],y1,y2,...,yM,[EOS]。这里的[SEP]是区分上下文,[CLS]是句子的便签,用于做分类。大部分BERT模型都是有文本长度限制的。

训练目标

MLM

就是完形填空(CLOZE),利用交叉熵损失函数来优化结果。在masking patteren的选择上,我们筛选15%的词作为可能盖住的词,这其中80%替换为[MASK](需要预测),10%不变,10%随机换成其他词。
当然这里注意,这里masking patteren的选择是在训练之初就确定的,在整个训练过程不会发生变动

NSP

还记得输入形式么,就是利用上文判断下文,具体形式是一个是/否分类问题,正样本就是连续的上下文,负样本是在不同文档中随机选择的句子。NSP的设计是为了提升特定下游任务的准确率,如自然语义推断。

优化

采用Adam优化方法,同时学习率采用了预热机制,比较重要的是采用了GELU这个函数。

Adam

关于Adam可以参考这篇文章优化算法浅析
g t = ∇ f ( x ) g_t = \nabla f(x) gt=f(x)
m t = β m t − 1 + ( 1 − β ) g t m_t = \beta m_{t-1} + (1-\beta)g_t mt=βmt1+(1β)gt
V t = β V t − 1 + ( 1 − β ) ∑ j t g j 2 V_t = \beta V_{t-1} + (1-\beta) \sum_j^t g_j^2 Vt=βVt1+(1β)jtgj2
w t + 1 = w t − α m t V t w_{t+1} = w_t - \alpha \frac{m_t}{V_t} wt+1=wtαVtmt

GELU

Gaussian Error Linear Units
G E L U ( X ) = x P ( X ≤ x ) = x Φ ( x ) , Φ ( x ) ∼ Z GELU(X) = xP(X \leq x) = x\Phi(x), \Phi(x)\thicksim Z GELU(X)=xP(Xx)=xΦ(x),Φ(x)Z
当x减小时,输入会以一个更高概率被dropout,激活变换随机依赖于输入,详细参见GELU说明
在这里插入图片描述

数据

采用BOOKCorPLUS + English WIKIPEEDIA
数据量大约16G

相融实验

动态OR静态掩码

原始BERT在MLM目标训练中只考虑在开头进行一次掩码。
静态掩码是复制十次数据,每个复制组随机掩码,所以一个句子就有十种不同的掩码
动态掩码每次训练都随机重新掩码
在这里插入图片描述
结果如图,静态和动态掩码效果都好于原始方法,后续实现都采用动态掩码。

模型输入格式和NSP loss

BERT原作者Devlin et al(2019)在不改变模型输入格式的前提下,比较有无NSP,发现有NSP效果更好。
RoBERTa作者同时修改输入格式和NSP loss

  1. SEGMENT-PAIR + NSP:原始BERT
  2. SENTENCE-PAIR + NSP:只输入单个句子
  3. FULL-SENTENCES: 连续随机从文档(一个文档)中抽句子作为输入,直到长度达到512tokens,如果跨文档,要加[SEP]
  4. DOC-SENTENCES 同上,只不过不跨文档,动态调整batch_size
    在这里插入图片描述
    在调整数据输入情况下,没有NSP效果更好,与Devlin et al(2019)差异来源数据格式是否修改。
    下面操作将采用FULL-SENTENCES,因为动态调整batch-size比较麻烦。

Batch size

最好是2K,但是作者选了8K,考虑并行处理
在这里插入图片描述

文本编码

作者将编码格式从unicode改为bytes,同时将token从30K扩大到50K,参数因此增加15M-20M。
但是没什么效果,甚至有下降。但是作者觉得统一编码的好处大于效果下降。

RoBERTa

结合上文,RoBERTa配置为:动态掩码+FULL-SENTENCE+8K batch size + 50K bytes tokens
此外,还有两个待验证超参数:预训练数据量+训练时间
在这里插入图片描述
结论:
大力出奇迹,更多数据,更大batchsize,没有NSP loss+动态掩码,更长文本,更长时间训练,效果更好,截止目前还没有出现过拟合,如果更多,效果会更好。
钞能力真香

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值