新智元从BERT、XLNet到MPNet,细看NLP预训练模型发展变迁史( 三 )


具体来看 , XLNET将序列拆分为2部分 , 序列的后部分(约占句长的1/K , K为超参数)为需要预测的部分 , 前部分为已知上下文 。 已知的上下文不做预测 , 因此只计算content流注意力 , 每个token都编码之前token以及自身的完整信息 。 从预测部分开始 , 每个token同时计算Query流和Content流注意力:Query流的输出用于预训练做预测 , Content流的输出提供给后续待预测token计算Query流 , 这就保证了当预测当前token时 , 它无法看到自身编码;当前token预测结束后 , 将其Content流作为上下文部分的编码提供给后续需要预测的token 。 预训练过程计算2种注意力 , 微调过程去除了Query流 , 只保留Content流 , 因为不需要对token进行词表空间的预测 , 而是需要编码整个上下文语义用于下游任务 。
新智元从BERT、XLNet到MPNet,细看NLP预训练模型发展变迁史
本文插图
2.3 双向 AR Model
前面提到 Auto Regression 模型的缺点是只能单向编码 , 但它能够编码被预测的token之间的联系 , 即克服了BERT被mask字符间信息丢失的缺点 。 其次 , 通过上文的PLM模型弥补了自回归语言模型只能单向编码的缺点 。 AR模型在预训练和下游任务中都没有对输入序列进行损坏(遮盖部分token , 引入噪声) , 消除了模型在预训练和微调过程中的差异 。
虽然在期望上看 , PLM几乎实现了双向编码功能的自回归模型 , 但是针对某一个因式分解序列来说 , 被预测的token依然只能关注到它前面的序列 , 导致模型依然无法看到完整序列信息和位置信息 。
3.MPNet 原理及创新点简述
结合BERT、XLNet的思路 , 南京大学和微软在2020年共同提出了新的预训练语言模型MPNet:Masked and Permuted Pre-training for Language Understanding 。
MPNet的创新点在于4个字:位置补偿(position compensation) , 大家先留个印象 , 下文会再详细介绍 。
论文开篇 , 作者针对上文MLM、PLM各自特点 , 希望用一种统一的模型既保留二者的优点 , 又弥补它们的不足 , 这就是MPNet 。
3.1 统一视角
新智元从BERT、XLNet到MPNet,细看NLP预训练模型发展变迁史
本文插图
MLM、PLM回顾 , (a)、(b)中左边和右边等价
首先 , 作者通过重新排列和切分输入序列中的tokens , 将MLM和PLM统一为非预测部分(non-predicted)和预测部分(predicted) , 如图(a),(b)右侧 。 如此一来 , MLM和PLM就拥有了相似的数学表达公式 , 仅在条件部分有细小差异 。
新智元从BERT、XLNet到MPNet,细看NLP预训练模型发展变迁史
本文插图
3.2 模型架构
新智元从BERT、XLNet到MPNet,细看NLP预训练模型发展变迁史
本文插图
为缓解BERT-mask可能丢失依赖信息的问题 , MPNet沿用了XLNet的自回归结构 , 同时为弥补XLNet无法捕捉全部序列位置信息的缺陷 , 添加了「位置补偿」:针对需要预测的token , 额外添加了它们的位置信息 。 使得自回归过程中 , 在任意一个位置i , 除了可以看到之前部分的token编码 , 还能看到序列所有token的位置编码(类似于BERT) 。
例如 , 对于一个长度为6的token序列 , 采样得到一个因式分解序列;假设非预测部分为= (x1, x3, x5) , 待预测部分为 。 对于部分 , 作者在待预测的tokens左边额外添加了mask-token , 最终整个token的输入序列由三部分组成: , [M]表示遮盖该token;对应的位置序列为: 。
3个[M]和对应位置position-embedding的加入 , 就是位置补偿 。 例如在序列中预测时 , 不仅能看到的token-embedding , 还能看到的position-embedding;依次递归预测 。