• BERT: 提出了MLM和NSP两个任务。MLM随机的MASK掉一些token, 然后根据上下文预测这些token。NSP预测句子B是否是句子A的下一句。简单来说就是一个自监督的完形填空机制。后来有人提出WWM, 即当一个词中的某一个字被mask掉,整个词都被mask掉。
• ERNIE: 采用三种masking策略:
Basic-Level Masking: 跟bert一样对单字进行mask,很难学习到高层次的语义信息;
Phrase-Level Masking: 输入仍然是单字级别的,mask连续短语,跟N-gram masking相似。;
Entity-Level Masking: 首先进行实体识别,然后将识别出的实体进行mask。
• XLNET: 为了解决预训练阶段出现[MASK] token,fine-tuning阶段没有[MASK] token这种不一致,作者提出了PLM, 并且将autoencoding改为autoregressive。
• ALBERT: 提出了两种减少模型参数的方式,第一是将Embedding 矩阵|V| * H分解为|V| * E 和 E * H两个小矩阵;第二是每一层transfomer block都共享参数。另外提出用SOP来替代NSP。
• RoBERTa: 在BERT基础上,做了如下的改进:1. 训练更长时间,用更大的batch,更长的输入序列长度,更多的训练数据。2. 去除NSP任务,并且使用dynamic masking。3.动态Masking:每次向模型输入一个序列时,都会生成一种新的Maks方式。即不在预处理的时候进行Mask,而是在向模型提供输入时动态生成Mask
而修改版静态Maksing:在预处理的时候将数据拷贝10份,每一份拷贝都采用不同的Mask,也就说,同样的一句话有10种不同的mask方式,然后每份数据都训练N/10个Epoch
动态Masking:
• ELECTRA: 采用一种Generator和Discriminator的架构,Generator: 一个小的MLM,在[MASK]的位置预测原来的词。Generator将用来把输入文本做部分词的替换。
Discriminator: 判断输入句子中的每个词是否被替换,即使用Replaced Token Detection (RTD)预训练任务,取代了BERT原始的Masked Language Model (MLM)。这种方式判别器只需要判断每个token是否被替换了(二分类),而不需要预测被替换的原token是什么。需要注意的是这里并没有使用Next Sentence Prediction (NSP)任务。
• MacBert: 即将句子中的原词,比如 语言模型,预测,概率 用它的近义词比如 语法建模,预见,几率 来替代。这种方式相对于用[MASK]标记来替代原词,减少了pre-training和fine-tuning不一致。即[MASK]只出现在pre-training阶段,不出现在fine-tuning阶段。