17网站一起做网店普宁,个人网站备案名称填写的注意事项,vivo官网网站服务中心,WordPress上传文件格式本文转载自公众号“夕小瑶的卖萌屋”#xff0c;专业带逛互联网算法圈的神操作
-----》我是传送门
关注后#xff0c;回复以下口令#xff1a;
回复【789】 #xff1a;领取深度学习全栈手册#xff08;含NLP、CV海量综述、必刷论文解读#xff09;
回复【入群】专业带逛互联网算法圈的神操作
-----》我是传送门
关注后回复以下口令
回复【789】 领取深度学习全栈手册含NLP、CV海量综述、必刷论文解读
回复【入群】加入卖萌屋深度学习/NLP/CV/搜广推等方向的技术交流与内推社群大V、顶会审稿人云集
回复【0511】领取算法岗面试手册刷offer神器
回复【0424】领取刷论文神器挖掘每日、每月必刷重磅论文
目录
一、不同视角下的预训练语言模型对比
二、预训练语言模型的基础特征抽取机制语言模型的分类
三、单向模型回顾内核机制探究
四、BERT内核机制探究
五、BERT系列模型进展介绍
六、XLNet的内核机制探究
参考文献 前言
在小夕之前写过的《NLP的游戏规则从此改写从word2vec, ELMo到BERT》一文中介绍了从word2vec到ELMo再到BERT的发展路径。而在BERT出现之后的这大半年的时间里模型预训练的方法又被Google、Facebook、微软、百度、OpenAI等极少数几个玩得起游戏的核心玩家反复迭代了若干版一次次的刷新我们这些吃瓜群众的案板上的瓜。 有没有感觉出瓜速度太快以至于吃速跟不上不用担心小夕帮你们找来了这篇总结的恰到好处的文章对ELMo以来的15个代表性的预训练语言模型进行了多维度的对比和分析。尤其是近期找工作的小伙伴们注意啦这篇文章里面提出来的一些问题很适合作为面试考点划掉交流点噢~ 本文转载自知乎专栏《高能NLP之路》并进行了剪切和少量修改作者JayLou原文链接 https://zhuanlan.zhihu.com/p/76912493 首先上一张镇楼专用图看一下ELMo以来的预训练语言模型发展的概况 然后上本文正餐一个高能的question list这也是本文写作的主线。
Question List Q1从不同维度对比各【预训练语言模型】 Q2基于深度学习的NLP特征抽取机制有哪些各有哪些优缺点 Q3自回归和自编码语言模型各有什么优缺点 Q4单向模型的内核机制是怎样的有哪些缺点 Q5Transformer内部机制的深入理解 为什么是缩放点积而不是点积模型 相较于加性模型点积模型具备哪些优点 多头机制为什么有效 Q6-Q10BERT内核机制探究 BERT为什么如此有效 BERT存在哪些优缺点 BERT擅长处理哪些下游NLP任务 BERT基于“字输入”还是“词输入”好对于中文任务 BERT为什么不适用于自然语言生成任务NLG Q11-Q15针对BERT原生模型的缺点后续的BERT系列模型是 如何改进【生成任务】的 如何引入【知识】的 如何引入【多任务学习机制】的 如何改进【mask策略】的 如何进行【精细调参】的 Q16XLNet提出的背景是怎样的 Q17XLNet为何如此有效 为什么PLM可以实现双向上下文的建模 怎么解决没有目标(target)位置信息的问题 Q18Transformer-XL怎么实现对长文本建模
下面本文将从以下几个方面来对上述问题一一探讨 一. 不同视角下的预训练语言模型对比 二.预训练语言模型的基础特征抽取机制语言模型的分类 三.单向模型回顾内核机制探究 四.BERT的内核机制探究 五.BERT系列模型进展介绍 六.XLNET的内核机制探究 七.预训练语言模型的未来 一、不同视角下的预训练语言模型对比
Q1从不同维度对比【预训练语言模型】
从特征抽取、预训练语言模型目标、BERT系列模型的改进方向、特征表示4个视角对比预训练语言模型 不同的特征抽取机制 RNNsELMO/ULMFiT/SiATL TransformerGPT1.0/GPT2.0/BERT系列模型 Transformer-XLXLNet 不同的预训练语言目标 自编码AutoEncodeBERT系列模型 自回归AutoRegression单向模型ELMO / ULMFiT / SiATL / GPT1.0 / GPT2.0和XLNet BERT系列模型的改进 引入常识ERNIE1.0 / ERNIE(THU) / ERNIE2.0简称为“ERNIE系列” 引入多任务学习MTDNN/ERNIE2.0 基于生成任务的改进MASS/UNILM 不同的mask策略WWM/ERNIE系列/SpanBERT 精细调参RoBERTa 特征表示是否能表示上下文 单向特征表示单向模型ELMO/ULMFiT/SiATL/GPT1.0/GPT2.0 双向特征表示BERT系列模型XLNet
二、预训练语言模型的基础特征抽取机制语言模型的分类
**Q2基于深度学习的NLP特征抽取机制有哪些各有哪些优缺点**1能否处理长距离依赖问题长距离依赖建模能力Transformer-XL Transformer RNNs CNNs MLP不考虑序列位置信息不能处理变长序列如NNLM和word2vec CNNs考虑序列位置信息不能处理长距离依赖聚焦于n-gram提取pooling操作会导致序列位置信息丢失 RNNs天然适合处理序列位置信息但仍不能处理长距离依赖由于BPTT导致的梯度消失等问题故又称之为“较长的短期记忆单元(LSTM)” Transformer/Transformer-XLself-attention解决长距离依赖无位置偏差
2前馈/循环网络 or 串行/并行计算 MLP/CNNs/Transformer前馈/并行 RNNs/ Transformer-XL循环/串行
3计算时间复杂度序列长度nembedding size为dfilter大小k CNNs RNNs Self Attention
**Q3自回归和自编码语言模型各有什么优缺点**1自回归语言模型 优点 文本序列联合概率的密度估计即为传统的语言模型天然适合处理自然生成任务 缺点 联合概率按照文本序列从左至右分解顺序拆解无法通过上下文信息进行双向特征表征 **代表模型**ELMO/GPT1.0/GPT2.0 改进XLNet将传统的自回归语言模型进行推广将顺序拆解变为随机拆解排列语言模型产生上下文相关的双向特征表示
2自编码语言模型 **优点**本质为降噪自编码特征表示通过引入噪声[MASK]构建MLM获取上下文相关的双向特征表示 缺点引入独立性假设为联合概率的有偏估计没有考虑预测[MASK]之间的相关性 不适合直接处理生成任务MLM预训练目标的设置造成预训练过程和生成过程不一致 预训练时的[MASK]噪声在finetune阶段不会出现造成两阶段不匹配问题 **代表模型**BERT系列模型
三、单向模型回顾内核机制探究 **Q4单向模型的内核机制是怎样的有哪些缺点**1ELMo (Allen Institute)[6] 要点 引入双向语言模型其实是2个单向语言模型前向和后向的集成 通过保存预训练好的2层biLSTM通过特征集成或finetune应用于下游任务 缺点 本质上为自回归语言模型只能获取单向的特征表示不能同时获取上下文表示 LSTM不能解决长距离依赖。 为什么不能用biLSTM构建双向语言模型 不能采取2层biLSTM同时进行特征抽取构建双向语言模型否则会出现标签泄漏的问题因此ELMO前向和后向的LSTM参数独立共享词向量独立构建语言模型
2ULMFiT (fast.ai) / SiATL** 2.1ULMFiT[7]要点** 三阶段训练LM预训练精调特定任务LM精调特定分类任务 特征抽取3层AWD-LSTM 精调特定分类任务逐层解冻
** 2.2) SiATL[8]要点** 二阶段训练LM预训练特定任务精调分类任务引入LM作为辅助目标辅助目标对于小数据有用与GPT相反 - 特征抽取LSTMself-attention 精调特定分类任务逐层解冻 都通过一些技巧解决finetune过程中的灾难性遗忘问题如果预训练用的无监督数据和任务数据所在领域不同逐层解冻带来的效果更明显[9]
3GPT1.0 / GPT2.0 (OpenAI) GPT1.0[10]要点 采用Transformer进行特征抽取首次将Transformer应用于预训练语言模型 finetune阶段引入语言模型辅助目标辅助目标对于大数据集有用小数据反而有所下降与SiATL相反解决finetune过程中的灾难性遗忘 预训练和finetune一致统一二阶段框架 GPT2.0[11]要点 没有针对特定模型的精调流程GPT2.0认为预训练中已包含很多特定任务所需的信息。 生成任务取得很好效果使用覆盖更广、质量更高的数据 缺点 依然为单向自回归语言模型无法获取上下文相关的特征表示
四、BERT内核机制探究
这一部分对BERT的内核机制进行介绍在回答“BERT为什么如此有效”之前首先介绍Transformer的内核机制。
Q5Transformer[12]内部机制的深入理解回顾
**1Multi-Head Attention和Scaled Dot-Product Attention **本质是self attention通过attention mask动态编码变长序列解决长距离依赖、无位置偏差、可并行计算 为什么是缩放点积而不是点积模型 当输入信息的维度 d 比较高点积模型的值通常有比较大方差从而导致 softmax 函数的梯度会比较小。因此缩放点积模型可以较好地解决这一问题。 为什么是双线性点积模型经过线性变换Q K 双线性点积模型引入非对称性更具健壮性Attention mask对角元素值不一定是最大的也就是说当前位置对自身的注意力得分不一定最高。 相较于加性模型点积模型具备哪些优点 常用的Attention机制为加性模型和点积模型理论上加性模型和点积模型的复杂度差不多但是点积模型在实现上可以更好地利用矩阵乘积从而计算效率更高实际上随着维度d的增大加性模型会明显好于点积模型。 多头机制为什么有效 类似于CNN中通过多通道机制进行特征选择 Transformer中先通过切头spilt再分别进行Scaled Dot-Product Attention可以使进行点积计算的维度d不大防止梯度消失同时缩小attention mask矩阵。
2Position-wise Feed-Forward Networks FFN 将每个位置的Multi-Head Attention结果映射到一个更大维度的特征空间然后使用ReLU引入非线性进行筛选最后恢复回原始维度。 Transformer在抛弃了 LSTM 结构后FFN 中的 ReLU成为了一个主要的提供非线性变换的单元。
3Positional Encoding将Positional Embedding改为Positional Encoding主要的区别在于Positional Encoding是用公式表达的、不可学习的而Positional Embedding是可学习的如BERT两种方案的训练速度和模型精度差异不大但是Positional Embedding位置编码范围是固定的而Positional Encoding编码范围是不受限制的。 为什么引入 和 建模Positional Encoding 引入 和 是为了使模型实现对相对位置的学习两个位置 pos 和 posk 的位置编码是固定间距k的线性变化 可以证明间隔为k的任意两个位置编码的欧式空间距离是恒等的只与k有关。 Q6BERT[13]为什么如此有效 引入Masked Language Model(MLM)预训练目标能够获取上下文相关的双向特征表示 引入Next Sentence Prediction(NSP)预训练目标擅长处理句子或段落的匹配任务 引入强大的特征抽取机制Transformer(多种机制并存) Multi-Head self attention多头机制类似于“多通道”特征抽取self attention通过attention mask动态编码变长序列解决长距离依赖无位置偏差、可并行计算 Feed-forward 在位置维度计算非线性层级特征 Layer Norm Residuals加速训练使“深度”网络更加健壮 引入大规模、高质量的文本数据
Q7BERT存在哪些优缺点 优点能够获取上下文相关的双向特征表示 缺点 生成任务表现不佳预训练过程和生成过程的不一致导致在生成任务上效果不佳 采取独立性假设没有考虑预测[MASK]之间的相关性是对语言模型联合概率的有偏估计不是密度估计 输入噪声[MASK]造成预训练-精调两阶段之间的差异 无法文档级别的NLP任务只适合于句子和段落级别的任务
Q8BERT擅长处理哪些下游NLP任务[14]
1. 适合句子和段落级别的任务不适用于文档级别的任务 2. 适合处理高层语义信息提取的任务对浅层语义信息提取的任务的提升效果不大如一些简单的文本分类任务3. 适合处理句子/段落的匹配任务因此在一些任务中可以构造辅助句类似匹配任务实现效果提升如关系抽取/情感挖掘等任务4. 不适合处理NLG任务
**Q9BERT基于“字输入”还是“词输入”好对于中文任务**1. 如果基于“词输入”会加剧OOV问题会增大输入空间需要利用大得多的语料去学习输入空间到标签空间的函数映射。2. 随着Transfomer特征抽取能力分词不再成为必要词级别的特征学习可以纳入为内部特征进行表示学习。
**Q10BERT为什么不适用于自然语言生成任务NLG**1. 由于BERT本身在预训练过程和生成过程的不一致并没有做生成任务的相应机制导致在生成任务上效果不佳不能直接应用于生成任务。2. 如果将BERT或者GPT用于Seq2Seq的自然语言生成任务可以分别进行预训练编码器和解码器但是编码器-注意力-解码器结构没有被联合训练BERT和GPT在条件生成任务中只是次优效果。
五、BERT系列模型进展介绍
这一部分介绍一些模型它们均是对BERT原生模型在一些方向的改进。
**Q11针对BERT原生模型后续的BERT系列模型是如何改进【生成任务】的**1MASS(微软)[15] 统一预训练框架:通过类似的Seq2Seq框架在预训练阶段统一了BERT和LM模型 Encoder中理解unmasked tokensDecoder中需要预测连续的[mask]tokens获取更多的语言信息Decoder从Encoder中抽取更多信息 当k1或者n时MASS的概率形式分别和BERT中的MLM以及GPT中标准的LM一致k为mask的连续片段长度
2UNILM (微软)[16] 统一预训练框架:和直接从mask矩阵的角度统一BERT和LM 3个Attention Mask矩阵LM、MLM、Seq2Seq LM 注意UNILM中的LM并不是传统的LM模型仍然是通过引入[MASK]实现的
**Q12针对BERT原生模型后续的BERT系列模型是如何引入【知识】的**1ERNIE 1.0 (百度)[17] 在预训练阶段引入知识实际是预先识别出的实体引入3种[MASK]策略预测 Basic-Level Masking跟BERT一样对subword进行mask无法获取高层次语义 Phrase-Level Maskingmask连续短语 Entity-Level Maskingmask实体
2ERNIE (THU)[18] 基于BERT预训练原生模型将文本中的实体对齐到外部的知识图谱并通过知识嵌入得到实体向量作为ERNIE的输入 由于语言表征的预训练过程和知识表征过程有很大的不同会产生两个独立的向量空间。为解决上述问题在有实体输入的位置将实体向量和文本表示通过非线性变换进行融合以融合词汇、句法和知识信息 引入改进的预训练目标 Denoising entity auto-encoder (DEA)要求模型能够根据给定的实体序列和文本序列来预测对应的实体
Q13针对BERT原生模型后续的BERT系列模型是如何引入【多任务学习机制】的
多任务学习(Multi-task Learning)[19]是指同时学习多个相关任务让这些任务在学习过程中共享知识利用多个任务之间的相关性来改进模型在每个任务的性能和泛化能力。多任务学习可以看作是一种归纳迁移学习即通过利用包含在相关任务中的信息作为归纳偏置(Inductive Bias)来提高泛化能力。多任务学习的训练机制分为同时训练和交替训练。1MTDNN(微软)[20]在下游任务中引入多任务学习机制
2ERNIE 2.0 (百度)[21]在预训练阶段引入多任务学习 MTDNN是在下游任务引入多任务机制的而ERNIE 2.0 是在预训练引入多任务学习与先验知识库进行交互使模型能够从不同的任务中学到更多的语言知识。 主要包含3个方面的任务 word-aware 任务捕捉词汇层面的信息 structure-aware 任务捕捉句法层面的信息 semantic-aware 任务捕捉语义方面的信息 主要的方式是构建增量学习后续可以不断引入更多的任务模型通过多任务学习持续更新预训练模型这种连续交替的学习范式不会使模型忘记之前学到的语言知识。 将3大类任务的若干个子任务一起用于训练引入新的任务时会将继续引入之前的任务防止忘记之前已经学到的知识具体是一个逐渐增加任务数量的过程[22] (task1)-(task1,task2)-(task1,task2,task3)-…-(task1task2,…,taskN)
Q14针对BERT原生模型后续的BERT系列模型是如何改进【mask策略】的 原生BERT模型按照subword维度进行mask然后进行预测 BERT WWM(Google)按照whole word维度进行mask然后进行预测 ERNIE等系列引入外部知识按照entity维度进行mask然后进行预测 SpanBert不需要按照先验的词/实体/短语等边界信息进行mask而是采取随机mask 采用Span Masking根据几何分布随机选择一段空间长度之后再根据均匀分布随机选择起始位置最后按照长度mask通过采样平均被遮盖长度是3.8 个词的长度 引入Span Boundary Objective新的预训练目标旨在使被mask的Span 边界的词向量能学习到 Span中被mask的部分新的预训练目标和MLM一起使用 注意BERT WWM、ERNIE等系列、SpanBERT旨在隐式地学习预测词mask部分本身的强相关性之间的关系[23]而在 XLNet 中是通过 PLM 加上自回归方式来显式地学习预测词之间关系
**Q15针对BERT原生模型后续的BERT系列模型是如何进行【精细调参】的**RoBERTa(FaceBook)[24] 丢弃NSP效果更好 动态改变mask策略把数据复制10份然后统一进行随机mask 对学习率的峰值和warm-up更新步数作出调整 在更长的序列上训练不对序列进行截短使用全长度序列
六、XLNet的内核机制探究
在BERT系列模型后Google发布的XLNet在问答、文本分类、自然语言理解等任务上都大幅超越BERTXLNet的提出是对标准语言模型自回归的一个复兴[25]提出一个框架来连接语言建模方法和预训练方法。
Q16XLNet[26]提出的背景是怎样的 对于ELMO、GPT等预训练模型都是基于传统的语言模型自回归语言模型AR自回归语言模型天然适合处理生成任务但是无法对双向上下文进行表征因此人们反而转向自编码思想的研究如BERT系列模型 自编码语言模型AE虽然可以实现双向上下文进行表征但是 BERT系列模型引入独立性假设没有考虑预测[MASK]之间的相关性 MLM预训练目标的设置造成预训练过程和生成过程不一致 预训练时的[MASK]噪声在finetune阶段不会出现造成两阶段不匹配问题 有什么办法能构建一个模型使得同时具有AR和AE的优点并且没有它们缺点呢
Q17XLNet为何如此有效内核机制分析
1排列语言模型Permutation LMPLM 如果衡量序列中被建模的依赖关系的数量标准的LM可以达到上界不像MLM一样LM不依赖于任何独立假设。借鉴 NADE[27]的思想XLNet将标准的LM推广到PLM。 为什么PLM可以实现双向上下文的建模 PLM的本质就是LM联合概率的多种分解机制的体现 将LM的顺序拆解推广到随机拆解但是需要保留每个词的原始位置信息PLM只是语言模型建模方式的因式分解/排列并不是词的位置信息的重新排列 如果遍历 ! 种分解方法并且模型参数是共享的**PLM就一定可以学习到各种双向上下文**换句话说当我们把所有可能的! 排列都考虑到的时候对于预测词的所有上下文就都可以学习到了 由于遍历 ! 种路径计算量非常大对于10个词的句子10!3628800。因此实际只能随机的采样!里的部分排列并求期望
2Two-Stream Self-Attention
如果采取标准的Transformer来建模PLM会出现没有目标(target)位置信息的问题。问题的关键是模型并不知道要预测的到底是哪个位置的词从而导致具有部分排列下的PLM在预测不同目标词时的概率是相同的。 怎么解决没有目标(target)位置信息的问题 对于没有目标位置信息的问题XLNet 引入了Two-Stream Self-Attention Query 流就为了预测当前词只包含位置信息不包含词的内容信息 Content 流主要为 Query 流提供其它词的内容向量包含位置信息和内容信息
**3 融入Transformer-XL的优点具体见Q18 **
Q18Transformer-XL[28]怎么实现对长文本建模 BERT(Transformer)的最大输入长度为512那么怎么对文档级别的文本建模 vanilla model进行Segment但是会存在上下文碎片化的问题无法对连续文档的语义信息进行建模同时推断时需要重复计算因此推断速度会很慢 Transformer-XL改进 对于每一个segment都应该具有不同的位置编码因此Transformer-XL采取了相对位置编码 前一个segment计算的representation被修复并缓存以便在模型处理下一个新的segment时作为扩展上下文resume 最大可能依赖关系长度增加了N倍其中N表示网络的深度 解决了上下文碎片问题为新段前面的token提供了必要的上下文 由于不需要重复计算Transformer-XL在语言建模任务的评估期间比vanilla Transformer快1800倍 引入recurrence mechanism(不采用BPTT方式求导) **引入相对位置编码方案 **
七、预训练语言模型的未来
上述的【预训练语言模型】主要从2大方面进行介绍一是总的对比二是分别介绍单向语言模型、BERT系列模型、XLNet模型。
可以看出未来【预训练语言模型】更多的探索方向主要为[25] 复兴语言模型进一步改进语言模型目标不断突破模型的上界 大数据、大算力将大数据、大算力推到极致 更快的推断轻量级模型是否有可能达到SOTA效果 引入更丰富的知识信息更精细的调参更有价值的MASK策略 统一条件生成任务框架如基于XLNet统一编码和解码任务同时可考虑更快的解码方式
本文转载自公众号“夕小瑶的卖萌屋”专业带逛互联网算法圈的神操作
-----》我是传送门
关注后回复以下口令
回复【789】 领取深度学习全栈手册含NLP、CV海量综述、必刷论文解读
回复【入群】加入卖萌屋深度学习/NLP/CV/搜广推等方向的技术交流与内推社群大V、顶会审稿人云集
回复【0511】领取算法岗面试手册刷offer神器
回复【0424】领取刷论文神器挖掘每日、每月必刷重磅论文
参考文献
[1] NLP将迎来黄金十年 https://www.msra.cn/zh-cn/news/executivebylines/tech-bylines-nlp
[2] a review of the recent history of nlp
[3] AISACL2019进展报告
[4] ACL 主席周明一起拥抱 ACL 和 NLP 的光明未来
[5] 自然语言处理中的语言模型预训练方法 https://www.jiqizhixin.com/articles/2018-10-22-3
[6] ELMO:Deep contextualized word representations
[7] ULMFiTUniversal Language Model Fine-tuning)
[8] SiATLAn Embarrassingly Simple Approach for Transfer Learning from Pretrained Language Models
[9] BERT时代与后时代的NLP https://zhuanlan.zhihu.com/p/66676144
[10] GPT:Improving Language Understanding by Generative Pre-Training
[11] GPT2.0:Language Models are Unsupervised Multitask Learners
[12] Transformer:Attention is all you need
[13] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
[14] Bert时代的创新应用篇Bert在NLP各领域的应用进展 https://zhuanlan.zhihu.com/p/68446772
[15] MASS: Masked Sequence to Sequence Pre-training for Language Generation
[16] UNILMUnified Language Model Pre-training for Natural Language Understanding and Generation
[17] ERNIE: Enhanced Representation through Knowledge Integration
[18] ERNIE: Enhanced Language Representation with Information Entities
[19] nndl神经网络与深度学习
[20] MT-DNNMulti-Task Deep Neural Net for NLU
[21] ERNIE 2.0: A CONTINUAL PRE-TRAINING FRAMEWORK FOR LANGUAGE UNDERSTANDING
[22] 陈凯https://www.zhihu.com/question/337827682/answer/768908184
[23] SpanBert对 Bert 预训练的一次深度探索
[24] RoBERTa: A Robustly Optimized BERT Pretraining Approach
[25] ab他们创造了横扫NLP的XLNet专访CMU博士杨植麟
[26] XLnet: Generalized Autoregressive Pretraining for Language Understanding
[27] Neural autoregressive distribution estimation
[28] Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context