在本帖中,小阿奇将从中文预训练模型的角度去回顾最近自然语言处理领域中代表性的预训练语言模型的技术,自己也进行一个详细的整理
1.BERT的相关内容
BERT(来自transformer的双向编码器表示)(Devlin等人,2019年)在自然语言处理研究中被证明是成功的。 BERT通过所有Transformer层左右上下文共同调节,来预训练深度双向表示。 BERT主要包括两个预训练任务:mask语言模型(MLM)和下一句预测(NSP)。
1.1 BERT的预训练技术
1.1.1 掩码机制
给定一个句子,会随机 Mask 15%的词,然后让 BERT 来预测这些 Mask 的词。在输入侧引入[Mask]标记,会导致预训练阶段和 Fine-tuning 阶段不一致的问题,因此在论文中为了缓解这一问题,采取了如下措施:
如果某个 Token 在被选中的 15%个 Token 里,则按照下面的方式随机的执行:
80%的概率替换成[MASK],比如 my dog is hairy → my dog is [MASK]
10%的概率替换成随机的一个词,比如 my dog is hairy → my dog is apple
10%的概率替换成它本身,比如 my dog is hairy → my dog is hairy
1.1.2 NSP( Next Sentence Prediction)
预测下一句(NSP)模型通过添加 Next Sentence Prediction的预训练方法来捕捉两个句子的联系,如有A和B两个句子,B有50%的可能性是A的下一句,训练模型是为了预测B是不是A的下一句,使模型增强对上下文联系的能力。
1.2 BERT模型的局限性
1.MASK掉的字词是独立的个体,未考虑词与词之间的连贯性与整体性;对于中文预训练模型,由于中文段落词语之间具有整体连贯性,比如哈尔滨,如果单单MASK掉哈【MASK】滨,远不如三个字一起MASK掉【MASK】【MASK】【MASK】的效果好,所以BERT的单个token mask会对段落的整体性和连贯性带来一定影响;
2.MASK机制会影响预训练和微调之间的协调性,因为预训练时会出现特殊的[MASK],但是它在下游的 fine-tune 中不会出现,这就出现了预训练阶段和 fine-tune 阶段不一致的问题。
2. RoBERTa的相关内容
RoBERTa (A Robustly Optimized BERT approach)模型是BERT 的改进版
2.1 RoBERTa的预训练技术
RoBERTa在BERT的基础上主要在MLM掩码方式和NSP下一句预测两大预训练任务上进行了改进,主要为以下几点:
2.1.1动态掩码(Dynamic Masking)
BERT 依赖随机掩码和预测 token。原版的 BERT 实现在数据预处理期间执行一次掩码,得到一个静态掩码。而 RoBERTa 使用了动态掩码:每次向模型输入一个序列时都会生成新的掩码模式。这样,在大量数据不断输入的过程中,模型会逐渐适应不同的掩码策略,学习不同的语言表征。
2.1.2取消NSP预训练任务
数据生成方式和任务改进:取消下一个句子预测,并且数据连续从一个文档中获得。
RoBERTa通过实验发现,去掉NSP任务将会提升down-stream任务的指标,如下图所示
得出以下结论:
—真实句子过短,不如拼接成句子段
—无NSP任务,略好过有NSP
— 不跨文档好过跨文档
2.1.3 大批次(Larger Batch Size)
RoBERTa通过增加训练过程中Batch Size的大小,发现提高down-stream的指标
同时 RoBERTa也在数据大小以及训练参数trai