前言
本文将探讨一系列预训练语言模型的发展历程及核心机制,特别是从word2vec到BERT的发展路径。近年来,各大科技公司如Google、Facebook、微软、百度和OpenAI等都在不断迭代模型预训练方法,使得模型性能不断提升。本文将重点介绍ELMo以来的15个代表性预训练语言模型,从不同角度对比和分析这些模型的特点和应用领域。
Q1:从不同维度对比各预训练语言模型
本文从四个主要维度对比预训练语言模型:特征抽取机制、预训练目标、BERT系列模型的改进方向和特征表示能力。
特征抽取机制
- RNNs:如ELMo、ULMFiT、SiATL。
- Transformer:如GPT1.0、GPT2.0、BERT系列模型。
- Transformer-XL:如XLNet。
预训练目标
- 自编码:如BERT系列模型。
- 自回归:如ELMo、ULMFiT、SiATL、GPT1.0、GPT2.0和XLNet。
BERT系列模型的改进方向
- 引入常识:如ERNIE系列。
- 引入多任务学习机制:如MTDNN、ERNIE2.0。
- 基于生成任务的改进:如MASS、UNILM。
- 不同的掩码策略:如WWM、ERNIE系列、SpanBERT。
- 精细化调参:如RoBERTa。
特征表示能力
- 单向特征表示:如ELMo、ULMFiT、SiATL、GPT1.0、GPT2.0。
- 双向特征表示:如BERT系列模型和XLNet。
Q2:基于深度学习的NLP特征抽取机制有哪些?各有哪些优缺点?
处理长距离依赖能力
- Transformer-XL > Transformer > RNNs > CNNs
- MLP:不考虑序列信息,无法处理变长序列。
- CNNs:考虑序列信息,但不能处理长距离依赖。
- RNNs:适合处理序列信息,但不能处理长距离依赖。
- Transformer/Transformer-XL:通过self-attention机制处理长距离依赖,无位置偏差。
前馈/循环网络 vs. 串行/并行计算
- MLP/CNNs/Transformer:前馈/并行。
- RNNs/Transformer-XL:循环/串行。
计算复杂度
- CNNs:计算复杂度较高。
- RNNs:计算复杂度较高。
- Self Attention:计算复杂度较低,可并行计算。
Q3:自回归和自编码语言模型各有什么优缺点?
自回归语言模型
- 优点:适合处理自然生成任务。
- 缺点:只能按顺序拆解文本,无法进行双向特征表征。
自编码语言模型
- 优点:通过引入噪声[MASK]获取上下文相关的双向特征表示。
- 缺点:引入独立性假设,预训练过程和生成过程不一致。
Q4:单向模型的内核机制是怎样的?有哪些缺陷?
ELMo (Allen Institute)
- 要点:引入双向语言模型,通过保存预训练好的2层biLSTM进行特征集成或微调。
- 缺陷:本质上是自回归模型,只能获取单向特征表示,不能同时获取上下文表示。
- 改进:不能用biLSTM构建双向语言模型,因为会出现标签泄露问题。
ULMFiT (fast.ai) / SiATL
- 要点:三阶段训练,包括LM预训练、微调特定任务LM和微调特定分类任务。
- 缺陷:如果预训练数据和目标任务数据类别不同,逐层冻结可能会导致效果不佳。
GPT1.0 / GPT2.0 (OpenAI)
- 要点:采用Transformer进行特征抽取,首次应用于预训练语言模型。
- 缺陷:仍然是单向自回归模型,无法获取上下文相关的特征表示。
Q5:Transformer的内部机制
Multi-Head Attention和Scaled Dot-Product Attention
- 特点:通过attention mask动态编码变长序列,处理长距离依赖、无位置偏差、可并行计算。
- 为什么使用缩放点积?:避免点积模型的值过大导致softmax函数的梯度较小。
- 为什么使用双线性点积模型?:引入非对称性,增强模型鲁棒性。
- 点积模型的优点:计算效率高,适用于高维度数据。
Position-wise Feed-Forward Networks
- 特点:将每个位置的Multi-Head Attention结果映射到更大的维度空间,引入非线性变换,再恢复到原始维度。
Positional Encoding
- 特点:通过公式表达,不可学习,编码范围不受限。
- 目的:使模型能够学习到相对位置信息,固定间距的位置编码具有相同的欧式空间距离。
Q6:BERT为什么如此有效?
- 引入Masked Language Model (MLM):获取上下文相关的双向特征表示。
- 引入Next Sentence Prediction (NSP):处理句子匹配任务。
- 引入强大的特征抽取机制Transformer:通过多头注意力机制处理长距离依赖,引入层归一化和残差连接加速训练。
Q7:BERT存在哪些优缺点?
- 优点:可以获取上下文相关的双向特征表示。
- 缺点:生成任务表现不佳,预训练过程和生成过程不一致,无法处理文档级别的任务。
Q8:BERT擅长处理哪些下游NLP任务?
- 句子和段落级别的任务:如句子匹配、关系抽取、情感分析等。
- 不适合文档级别的任务:如文档分类等。
Q9:BERT基于“字输入”还是“词输入”好?
- 基于“词输入”:可以减少OOV问题,但需要更多的训练数据。
- 基于“字输入”:适合中文任务,不需要复杂的分词过程。
Q10:BERT为什么不适用于自然语言生成任务?
- 原因:预训练过程和生成过程不一致,导致生成任务效果不佳。
- 解决方案:可以将BERT或GPT用于Seq2Seq任务,但需要结合训练编码器和解码器。
Q11:针对BERT原生模型,后续的BERT系列模型是如何改进生成任务的?
MASS (微软)
- 特点:通过Seq2Seq框架统一BERT和LM模型,优化了生成任务。
UNILM (微软)
- 特点:通过引入不同的注意力掩码机制,优化了生成任务。
Q12:针对BERT原生模型,后续的BERT系列模型是如何引入知识的?
ERNIE 1.0 (百度)
ERNIE (THU)
- 特点:将文本中的实体对齐到知识图谱,通过知识嵌入优化模型。
Q13:针对BERT原生模型,后续的BERT系列模型是如何引入多任务学习机制的?
MTDNN (微软)
- 特点:在下游任务中引入多任务学习机制,共享知识,提高泛化能力。
ERNIE 2.0 (百度)
- 特点:在预训练阶段引入多任务学习,通过增量学习方式持续更新预训练模型。
Q14:针对BERT原生模型,后续的BERT系列模型是如何改进掩码策略的?
- BERT WWM:按照整个单词维度进行掩码。
- ERNIE等系列:引入外部知识,按照实体维度进行掩码。
- SpanBERT:通过随机掩码策略,提高模型鲁棒性。
Q15:针对BERT原生模型,后续的BERT系列模型是如何进行精细化调参的?
RoBERTa (Facebook)
- 特点:丢弃NSP任务,动态改变掩码策略,优化学习率,延长训练序列长度。
Q16:XLNet提出的背景是什么?
- 背景:传统自回归模型(如ELMo、GPT)无法处理双向上下文,而自编码模型(如BERT)存在独立性假设问题。
Q17:XLNet为何如此有效?
Permutation Language Model (PLM)
- 特点:通过随机拆解顺序,学习双向上下文,解决了没有目标位置信息的问题。
Two-Stream Self-Attention
- 特点:引入Query流和Content流,解决预测目标位置信息的问题。
Q18:Transformer-XL如何实现对长文本建模?
- 特点:采用相对位置编码,缓存前一个segment的表示,处理上下文碎片问题,提高推断速度。
预训练语言模型的未来
未来的预训练语言模型将更加注重以下几个方向:
- 改进语言模型目标:突破现有模型的上限。
- 利用大数据和大算力:将数据和算力发挥到极致。
- 提高推断速度:开发轻量级模型,达到顶级效果。
- 引入更多知识信息:精细调参,有价值的掩码策略。
- 统一生成任务框架:如基于XLNet的编码和解码框架,提高解码速度。