文献地址:
https://arxiv.org/pdf/1907.11692.pdf
摘要:
本文对BERT模型中的超参数进行研究,对超参数和预训练的数据量上进行了优化.
简介:
研究内容:
(1)更大的模型,更多的训练批次,更多的训练数据
(2)删除了预训练过程中"下一句预测"的任务
(3)训练更长的序列(data)
(4)改变掩码模型
背景:
bert的优化算法中Adam中,β1=0.9, β2=0.999,epsilon = 1e-6
预训练数据是用的英文的维基百科做的无监督学习训练的
实验:
研究了学习率,预热步骤,Adam epsilon参数的影响
数据方面使用更合适的预训练数据集的质量和数量
分析:
1:静态和动态mask
在原始的bert中,mask的方式是通过选出随机的15%的输入token去mask,这15%的token中又有80%的的token会被替换为 “[MASK]”, 10%替换为随机token,另外10保持不变.
但是原始的mask只在训练开始之前mask了一次,并在训练期间保存.这会导致一个问题,所谓的随机选择是不是对所有的token都进行了一个研究,还是之研究了部分的token(只有4个epochs的情况下)
本文把原始的mask方式称为静态mask (Static )
为了减弱这个问题,本文对所有数据复制了10次,这样对同一个序列去mask的时候就会有10种mask的方式,这样就可以尽可能的涵盖所有的mask方式,从而捕捉序列的大部分信息.
从上图的实验结果来看"稍稍提升",后面的实验都会使用动态掩码(dynamic mask)
2: 模型输入格式和NSP
原始的BERT的句子对(有50%是真的,有50%是假的)是来自与同一个文本或者不同的文本中采样的,除了MLM任务外,还训练了模型去预测NSP的任务,去预测句子对中的下一句是否是下一句.
预训练中NSP损失是否真的有效需要研究,具体如下:
SEGMENT-PAIR+NSP:每个输入样例是一对段落对,每个段落对由多个自然句组成
SENTENCE-PAIR+NSP:每个输入样例是一对句子对,并增大了BATCH
FULL-SENTENCES:每个输入样例是512个token(可跨文本),并取消了NSP的LOSS
DOC-SENTENCES:和FULL-SENTENCES大部分一样,只是不会去跨文本取样,所以一个样板可能会少于512个token.
对比SEGMENT-PAIR 和 SENTENCE-PAIR,后者的下游任务性能降低,可能是因为单句对无法学习到远程依赖.
而去除了NSP损失之后,下游任务的效果提升了
对比跨文档取样和单文档取样的文档训练结果,单文档会略优,但是区别不大
3:用更大的BATCH去训练
更大的bsz对下游任务有一点点提升,本文后面的工作是用8K的bsz.
4:Encoding
在原有的词语基础上对原有的词语提取subword
ROBERTA
可以看到在增加预训练数据,增大BATCH_SIZE,增加训练步数的情况下,下游任务性能有明显的提高.