大BERT模型总结
名称 | 介绍 | 动机 | 预训练方法 | 微调 | 问题 |
---|---|---|---|---|---|
Bert | Transformer的双向编码器 | 多义词问题 && GPT 单向 Transformer | Task 1:Masked LM && Task 2:Next Sentence Prediction | 直接利用 特定任务数据 微调 | 1. [MASK]预训练和微调之间的不匹配2. Max Len 为 512 |
XLNet | 广义自回归预训练方法 | 1. Bert 预训练和微调之间的不匹配 2. Bert 的 Max Len 为 512 | (1)Permutation Language Modeling【解决Bert 预训练和微调之间的不匹配】(2)Two-Stream Self-Attention for Target-Aware Representations【解决PLM出现的目标预测歧义】(3)XLNet将最先进的自回归模型Transformer-XL的思想整合到预训练中【解决 Bert 的 Max Len 为 512】 | 直接利用 特定任务数据 微调 | 问题 |
RoBERTa | A Robustly Optimized BERT Pretraining Approach | 1. 确定方法的哪些方面贡献最大可能是具有挑战性的 2. 训练在计算上是昂贵的的,限制了可能完成的调整量 | 1. 去掉下一句预测(NSP)任务 2. 动态掩码 3. 文本编码 4. 更大的数据量 5. 更大的batch_size | 直接利用 特定任务数据 微调 | 问题 |
ELECTRA | 判别器 & 生成器 | 1. 只有15%的输入上是会有loss | 利用一个基于MLM的Generator来替换example中的某些个token,然后丢给Discriminator来判别 | 直接利用 特定任务数据 微调 | 问题 |
ERNIE 1.0 | ERNIE: Enhanced Representation through Knowledge Integration | 随机【MASK】会让模型不能充分学习到语义信息 | 1. Knowledge Integration 2. Dialogue Language Model(DLM) | – | 问题 |
ERNIE 2.0 | ERNIE 2.0: A Continual Pre-Training Framework for Language Understanding | 之前的工作主要通过词或句子的共现信号,构建语言模型任务进行模型预训练。除了语言共现信息之外,语料中还包含词法、语法、语义等更多有价值的信息。 | 1. 预训练连续学习 2. 更多的无监督预训练任务 | – | 问题 |
ERNIE-T | ERNIE: Enhanced Language Representation with Informative Entities | 引入外部图谱 | 1. 引入知识图谱 2. 异构信息融合 2. dAE | – | 问题 |
RoBERTa
- 更大的模型参数量(论文提供的训练时间来看,模型使用 1024 块 V100 GPU 训练了 1 天的时间)
- 更大bacth size。RoBERTa 在训练过程中使用了更大的bacth size。尝试过从 256 到 8000 不等的bacth size。
- 更多的训练数据(包括:CC-NEWS 等在内的 160GB 纯文本。而最初的BERT使用16GB BookCorpus数据集和英语维基百科进行训练)
RoBERTa对BERT的改进
1. 动态掩码
BERT 依赖随机掩码和预测 token。原版的 BERT 实现在数据预处理期间执行一次掩码,得到一个静态掩码。 而 RoBERTa 使用了动态掩码:每次向模型输入一个序列时都会生成新的掩码模式。这样,在大量数据不断输入的过程中,模型会逐渐适应不同的掩码策略,学习不同的语言表征。
静态掩码:在数据预处理的时候,统计mask
动态掩码:将序列输入模型的时候,才进行mask
2. 去掉NSP任务
- 动机:虽然是句子对输入,但其实一个句子不只有一句,而是文章里面的连续片段,可以包含多句。
- 操作:采用去掉NSP而采用FULL - SENTENCES方式
RoBERTa去掉了NSP,而采用连续的抽取句子填充输入序列,直到最大长度512(可跨文章)。这种训练方式叫做(FULL - SENTENCES),而原来的BERT每次只输入两个句子。
3. 更大的数据量
在BERT采用的数据BOOKCORPUS + English WIKIPEDIA(共16G)基础上
- 增加 CC-NEWS(76GB)
- 增加 OPENWEBTEXT(38GB)
- 增加 STORIES(31GB)
也就是RoBERTa一共用了160GB语料进行预训练。
4. 更大的batch_size
BERT的batch_size是256,一共训练了1M步,实验证明,采用更大的batch_size以及训练更多步,可以提高性能。最后RoBERTa采用的batch_size是8K。
5. Byte-Pair Encoding 文本编码
- BERT:采用的是基于character level的Byte-Pair Encoding(BPE)编码,词表大小是30K;
- RoBERTa:文本编码。Byte-Pair Encoding(BPE)是字符级和词级别表征的混合,支持处理自然语言语料库中的众多常见词汇。原版的 BERT 实现使用字符级别的 BPE 词汇,大小为 30K,是在利用启发式分词规则对输入进行预处理之后学得的。Facebook 研究者没有采用这种方式,而是考虑用更大的 byte 级别 BPE 词汇表来训练 BERT,这一词汇表包含 50K 的 subword 单元,且没有对输入作任何额外的预处理或分词。
采用更大的BEP词汇表(50k)