roberta与albert
roberta
- 简介
RoBERTA,是BERT模型的改进版,并获得了更好的自然语言处理效果,且其在GLUE、SQuAD、RACE等三个榜单上取得了SOTA效果 - 细节
-
训练数据集上,RoBERTa采用了160G的训练文本,而BERT仅使用16G的训练文本
-
模型评估上,模型主要基于三个基准来评估:1、GLUE通用语言理解模型;2、SQuAD斯坦福问题答疑数据集;3、RACE考试的重新理解
-
预训练任务上,RoBERTa使用的是动态mask,BERT采用静态mask,其含义如下:
原来Bert对每一个序列随机选择15%的Tokens替换成[MASK],为了消除与下游任务的不匹配,还对这15%的Tokens进行(1)80%的时间替换成[MASK];(2)10%的时间不变;(3)10%的时间替换成其他词。但整个训练过程,这15%的Tokens一旦被选择就不再改变,也就是说从一开始随机选择了这15%的Tokens,之后的N个epoch里都不再改变了。这就叫做静态Masking。
在此预训练任务中,取消了NSP任务,增加了FULL_SENTENCES机制:在该机制下,输入的不再是两个句子,而是用大段话填满指定的字节长度,如果句子跨越了文章就增加一个分割的token。
-
训练参数:RoBERTa模型增加了训练的batch_size,并将adam的0.999改成了0.98,增加了训练的step,最后使用的batch_size为8k,训练步数为500步。输入的token编码为BPE编码。
albert
albert主要解决Bert参数过大、训练国漫的问题,其主要通过两个参数削减技术克服预训练模型扩展的障碍:
- embedding参数因式分解:将两个大的词嵌入矩阵分解为两个小的矩阵,从而将隐藏层与词典的大小关系分割开来,两者不再直接关系,使得隐藏层的节点数扩展不再受到限制
- 跨层参数共享:避免参数随着网络的深度增加而增加
- 句间连贯性损失:正例与bert一样,两个连贯的句子;负例也是原文中两个连贯的语句,但是顺序交换一下
模型调用
-
bert模型测试
-
roberta模型测试
-
albert模型测试