Bert调参:
1、bert的微调可以将参数设置为:
- bach size :设置为16或者32
- learning rate(Adam):5e-5、3e-5、2e-5(比较小的学习率)
- num of epochs:2,3,4
2、Bert的微调比较容易,可以设置验证集,进行一定范围的Grid Search
3、可以在Bert后面接一些层,比如CRF层、Linear层、BiLSTM层
4、为了确保后接层学习的好,可以对后接层设置额外的、较大的学习率
Bert变体
RoBERTa:
RoBERTa即预训练方法的鲁棒优化:
1、模型训练时间更长,Batch Size更大,训练数据更多。
2、删除了NSP任务,作者经过实验,发现NSP任务没啥卵用,删除了以后反而效果提升了一些。
3、使用动态MASK:
- Bert预训练时,是静态MASK,即在预训练前统一进行随机MASK,导致多个epoch都使用同样的MASK;
- RoBERTa是在每次输入时输入MASK,确保每个epoch都使用不同的MASK
ALBERT:
ALBERT即轻量级BERT,主要解决BERT太耗资源
1、对Embendding层的参数矩阵(|V|*|H|,|V|为词库大小,|H|为隐藏层大小)进行分解,减少了一部分参数V*H-------->V*E+E*H,并带来效果的一些下降。
2、共享所有transformer参数,即12个transformer都有相同的attention参数、或相同的FNN参数、或相同的所有参数。主要参数减少就是靠这个操作,可以减少十几倍的参数,可以减少到12M。
3、为了缓解参数减少带来的效果下降,ALBERT使用SOP(sentence order pridiction)替代了NSP任务
二分类任务:NSP任务和SOP任务的正样本一样,都是同文章相邻两句话,负样本NSP时不同文章两句话,SOP是正样本顺序对调。
尽管参数减少可以训练更快,但在推理阶段并没有提升多少速度,因为12个transformer还得一层一层计算。
BERT-WWM:
基于全词的mask的bert预训练,减少了词汇信息对学习语言模型的干扰,增强了MLM的上下文预测能力。
BERT-wwm-ext,在wwm的基础上使用了更多数据 。
ERNIE:
将MASK扩展到短语和实体级别
SpanBERT:
SpanBert进行MLM时,随机MASK一小段文本,以一定的概率采样一段span长度,然后随机采样起始位置进行mask然后输出去预测他
MACBERT:
依然是改进MLM时的mask方式
1、首先分词,基于词粒度的n-gram进行mask,1~4ngram概率分别是40%,30%,20%,10%
2、不使用[MASK]token进行mask,对15%输入单词进行masking时:80%替换为同义词,10%随机词,10%保留原始词。
ELECTRA :
electra借鉴了对抗网络GAN部分思想,不实用MLM,而是DTR任务(Replaced Token Detaction)
模型有两部分组成,分别是Gennerator和Discriminator,两个都是transformer的encoding结构,只是size不同。
生成器:
- 一个小的MLM,size时判别器的1/4
- 随机选取15%的token,替代为[MASK]token
- 使用Generator去训练模型,使得模型预测被MASK的部分,会预测错
- 如图,the和cooked被随机选为masked,经过Gennerator变成the和ate
判别器:
- 对Gennerator预测的结果,分辨其是original还是replaced
- 对于没有个token,Discriminator都会进行一个二分类
- 如图:ate被认为是replaced,其他为original
ELECTRA主要解决BERT的两大问题:
1、BERT的MLM并不高效,只有15%的token对参数更新有效,其余并不参与梯度更新
2、与训练和fine-tuning并不匹配,因为fine-tuning并没有mask的token
electra的微调只需要使用判别器;
实践中,electra的效果不如RoBERTa等,但是其小模型tiny效果比较好,在高性能、资源有限的场景下可以尝试。