【预训练语言模型】XLNet: Generalized Autoregressive Pretraining for Language Understanding

简介: 【预训练语言模型】XLNet: Generalized Autoregressive Pretraining for Language Understanding

·阅读摘要:

 本文对标BERT模型,基于自回归(autoregressive, AR)和自编码(autoencoding, AE)两大阵营进行改进,提出了XLNet模型,并证明了XLNet比BERT的效果更好一些。

·参考文献:

 [1] XLNet: Generalized Autoregressive Pretraining for Language Understanding

 [2] BERT模型讲解,参考博客:【文本分类】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

 [3] RoBERTa模型讲解,参考博客:【预训练语言模型】RoBERTa: A Robustly Optimized BERT Pretraining Approach

  目前预训练语言模型按时间排:ELMo - GPT - BERT - XML - XLNet - RoBERTa - ALBERT。基本上越往后的模型效果越好。

  XLNet是我目前看的最糟心的一篇论文,比Transformer和BERT还糟心。XLNet总给我一种“强行改进,打败BERT”的感觉。

[0] Abstract


  BERT这样基于去噪自编码(autoencoding, AE)的预训练模型有很好地建模双向上下文的能力,性能优于基于自回归(autoregressive, AR)语言模型的预训练方法。然而,由于BERT需要mask一部分输入,BERT忽略了被mask的词的位置之间的依赖关系,因此出现预训练和微调效果的差异。

【注一】:AR模型与AE模型的区别将在Introduction中介绍。

  基于上述问题,该研究提出了一种泛化的自回归预训练模型 XLNet。XLNet可以:

  1)通过最大化所有可能的因式分解顺序的对数似然,学习双向语义信息;

  2)用自回归本身的特点克服BERT的缺点。

  3)此外,XLNet还融合了当前最优自回归模型Transformer-XL 的思路。

[1] Introduction


  如下图,AR模型与AE模型的区别。

image.png

  什么是AR模型?

  在BERT出世之前,大家使用的语言模型其实是根据上文内容预测下一个可能跟随的单词,就是常说的自左向右的语言模型任务,或者反过来也行(就是根据下文预测前面的单词)。这种类型被称为自回归语言模型(autoregressive)。

  例如RNN、LSTM、GPT 都是自回归语言模型。

  Bi-LSTM、ELMO尽管看上去利用了上文,也利用了下文,但是本质上仍然是自回归 LM,它们只是分别做了两个方向的自回归(从左到右以及从右到左两个方向的语言模型),然后把两个方向的隐状态拼接到一起,所以其本质上仍然是自回归语言模型。

【注二】:参考上图的左边部分,预测第t个词,需要基于前t-1个词,所以说AR是一种单向的、不能使用全局信息的模型。再看它的损失函数,它使用的就是对数乘积似然

  AR模型的优缺点?

  自回归语言模型的缺点是无法同时利用上下文的信息。它的优缺点跟下游 NLP 任务有关,比如生成类NLP任务,比如文本摘要,机器翻译等,在实际生成内容的时候,就是从左向右的,自回归语言模型天然匹配这个过程。而在生成类 NLP 任务中,比如阅读理解等,就存在明显训练与实际过程不匹配的情况。

  什么是AE模型?

  相比之下,基于AE的预训练旨在从有噪声的输入中还原原始数据。一个显著的例子是BERT。给定输入序列,15%部分的序列被特殊符号[MASK]替换,并训练模型从有噪声的版本中恢复原始序列。

  AR模型在t时刻只能看到之前的时刻;而AE模型可以同时看到整个句子的所有的Token,即看到全局序列。

【注三】:参考上图的右边部分,预测第t个词,它是被mask的,可以基于全体序列x。

  AE模型的优缺点?

  这种 AE LM 的优缺点正好和 AR LM 反过来,它能比较自然地融入双向语言模型,同时看到被预测单词的上文和下文。缺点主要在输入侧引入 [Mask] 标记,导致预训练阶段和 Fine-tuning 阶段不一致的问题,因为 Fine-tuning 阶段是看不到 [Mask] 标记的。

  此外,由于预测的Token在输入中被mask,BERT不能像AR语言建模那样使用乘积规则来建模损失函数。

【注四】:到这里,再去看Abstract的第一段话,就很好懂了。“BERT需要mask一部分输入,BERT忽略了被mask的词的位置之间的依赖关系,因此出现预训练和微调效果的差异。”

【注五】:XLNet的目的是:融合自回归 LM 和 DAE LM 两者的优点。具体来说就是,站在 AR 的角度,如何引入和双向语言模型等价的效果。做法在Proposed Method部分。

[2] Proposed Method


[2.1] 排列语言建模


  文章提出使用 排列语言建模(Permutation Language Modeling) 来融合AR LM 和 AE LM 两者的优点。

  什么是排列语言建模?

  设有一个输入序列L,通过随机取L排列的一种,然后将末尾一定量的词给 “遮掩”(并不是像BERT用 “[MASK]” 替换)掉,最后用 AR LM 的方式来按照这种排列方式依次预测被 “遮掩” 掉的词。

image.png

  如何实现排列语言建模?

  具体的实现方式不是打乱输入句子的顺序,而是保持原始序列顺序,使用与原始序列相对应的位置编码,而是通过对 Transformer 的 Attention Mask 来实现因子分解顺序的排列。

fa0db7410d8c4e139ee987d33d5b9a04.png

  如上图,假设序列[1, 2, 3, 4]被打乱成了[3, 2, 4, 1]。

  在“can see self”模式下,第1行代表序列[3, 2, 4, 1]中“1”的状态,由于它在最后,它什么信息都能看到,所以第一行都是红色;第2行代表序列[3, 2, 4, 1]中“2”的状态,由于“2”前面只有“3”,所以它能看到“2”、“3”的信息,所以第2、3个是红色;其他同理。

  在“cannot see self”模式下,也同理,只是当前状态下不能看到自身的信息了。

[2.2] 目标感知表示的双流自注意


  通过对 Transformer 的 Attention Mask 来实现因子分解顺序的排列之后,模型并不知道要预测的那个词在原始序列中的位置(目标预测中的模糊性)

 这个和Transformer中的位置编码没有关系。因为:1)假设模型知道一个词的向量,模型就能准确分辨出来这是序列中第几个词?2)况且在预测掩码时,我们肯定完全不知道这个词的任何信息,因此就不可能知道它要预测的词到底是哪个位置的词,所以我们必须 “显式” 的告诉模型我要预测哪个位置的词。

image.png

  综上,这个两个要求发生不可调和得矛盾,所以论文提出“目标感知表示的双流自注意”来解决。

image.png

[2.3] Transformer-XL


  接下来 XLNet 借鉴了 Transformer-XL 的优点,它对于很长的上下文的处理是要优于传统的 Transformer 的。

  Transformer-XL是对Transformer的改进或变种,主要是解决长序列的问题,其中XL表示extra long,在最近流行的XLNet中就是使用Transformer-XL作为基础模块。

[3] Conclusions


  XLNet是一种通用的AR预训练方法,它使用排列语言建模目标来结合AR和AE方法的优点。XLNet的神经架构被开发为与AR目标无缝协作,包括集成Transformer XL和精心设计的双流注意机制。XLNet在各种任务上比之前的预培训目标有了实质性的改进。

相关文章
|
数据库
ACN规则深度解密-全网最细的剖析
ACN规则深度解密-全网最细的剖析
|
3月前
|
存储 人工智能 弹性计算
OpenClaw (Clawdbot) 是什么?最新深度解析与部署实操教程
OpenClaw(原Clawdbot/Moltbot)是2026年爆火的开源AI智能体框架,支持本地/云端部署,可直接执行文件管理、日程安排等任务,实现“主动执行”而非被动问答。隐私优先、数据不出设备,集成网关、Agent、技能与记忆模块,附阿里云一键部署教程。
569 2
|
前端开发 JavaScript 程序员
WordPress免费主题:Document,让阅读变得更加方便
“Document”的主题以方便记、方便查、简约为核心设计理念,适合用作文档类博客。功能包括文章目录导航、黑夜/白天模式切换、代码高亮与一键复制、自定义小部件等。支持SEO优化及多种前端交互效果。提供Github和Gitee开源地址,用户可下载后上传至WordPress主题目录并启用。主题持续更新中
954 58
|
存储 Java 测试技术
YashanDB TPC-C测试介绍
本文介绍了在YashanDB单机数据库上运行基于BenchmarkSQL的TPC-C测试的操作流程与示例。TPC-C是针对OLTP系统的性能测试标准,模拟大型商品批发商的业务场景,包含5类核心事务:New-Order、Payment、Order-Status、Delivery和Stock-Level。文章详细说明了测试工具下载、环境配置(如修改jTPCC.java等文件)、数据装载及清理步骤,并提供了性能调优建议,包括数据库参数和建库配置优化。最后通过执行`runBenchmark.sh`完成测试,结果中的tpmC值反映系统性能,值越高表明性能越优。
YashanDB TPC-C测试介绍
|
供应链 项目管理
项目管理的十大领域是什么?详解
详解项目管理十大领域,整合管理、范围管理、时间管理、成本管理、质量管理、资源管理、沟通管理、风险管理、采购管理和干系人管理。
664 1
项目管理的十大领域是什么?详解
|
数据采集 存储 搜索推荐
使用Python构建自定义搜索引擎:从数据抓取到索引与搜索
使用Python构建自定义搜索引擎:从数据抓取到索引与搜索
|
XML 数据格式 Kotlin
Kotlin 异步 | Flow 限流的应用场景及原理
Kotlin 异步 | Flow 限流的应用场景及原理
1349 0
|
SQL 存储 Windows
微软SQL 2019,“无法连接到WMI提供程序,您没有权限或者该服务器无法访问”
微软SQL 2019,解决“无法连接到WMI提供程序,您没有权限或者该服务器无法访问”的方法
591 0
微软SQL 2019,“无法连接到WMI提供程序,您没有权限或者该服务器无法访问”
|
前端开发 JavaScript IDE
云原生开发必备:首个通用无代码开发平台 iVX 编辑器
未来一定是一个“全民编程时代”,STEM教育的流行,也从侧面证明了这一点。
云原生开发必备:首个通用无代码开发平台 iVX 编辑器

热门文章

最新文章