论文阅读笔记-XLNet: Generalized Autoregressive Pretraining for Language Understanding

前言

Google发布的XLNet在问答、文本分类、自然语言理解等任务上都大幅超越BERT,XLNet提出一个框架来连接语言建模方法和预训练方法。我们所熟悉的BERT是denoising autoencoding模型,最大的亮点就是能够获取上下文相关的双向特征表示,所以相对于标准语言模型(自回归)的预训练方法相比,基于BERT的预训练方法具有更好的性能,但是这种结构同样使得BERT有着它的缺点:

  • 生成任务表现不佳:预训练过程和生成过程的不一致,导致在生成任务上效果不佳;
  • 采取独立性假设:没有考虑预测[MASK]之间的相关性(位置之间的依赖关系),是对语言模型联合概率的有偏估计(不是密度估计);
  • 输入噪声[MASK],造成预训练-精调两阶段之间的差异;
  • 无法适用在文档级别的NLP任务,只适合于句子和段落级别的任务;

鉴于这些利弊,作者提出一种广义自回归预训练方法XLNet,该方法:

  • enables learning bidirectional contexts by maximizing the expected likelihood over all permutations of the factorization orde
  • overcomes the limitations of BERT thanks to its autoregressive formulation

前情提要

首先在此之前需要了解一下预训练语言模型的相关联系和背景,这里推荐两篇文章,一篇是邱锡鹏老师的关于NLP预训练模型的总结Paper:Pre-trained Models for Natural Language Processing: A Survey,我之前对它有写过阅读笔记:论文阅读笔记:超详细的NLP预训练语言模型总结清单!,还有一篇就是:nlp中的预训练语言模型总结(单向模型、BERT系列模型、XLNet),其中总结的也相当的全面精辟到位。

目前无监督表示学习这一块,自回归(autogression)语言建模和自动编码(autoencoding)无疑是最成功的两个。对于ELMO、GPT等预训练模型都是基于传统的语言模型(自回归语言模型AR),自回归语言模型天然适合处理生成任务,但是无法对双向上下文进行表征,因此人们反而转向自编码思想的研究(如BERT系列模型)。

那AE就完美了嘛?自编码语言模型(AE)虽然可以实现双向上下文进行表征,但是依旧存在不适于生成任务的问题,就和上面说的BERT的缺点一样,以BERT为代表的系列模型:

  • BERT系列模型引入独立性假设,没有考虑预测[MASK]之间的相关性;
  • MLM预训练目标的设置造成预训练过程和生成过程不一致;
  • 预训练时的[MASK]噪声在finetune阶段不会出现,造成两阶段不匹配问题;

对于AE和AR两种模型在各自的方向优点,有什么办法能构建一个模型使得同时具有AR和AE的优点并且没有它们缺点呢?这也是XLNet诞生的初衷,对于XLNet:

  • 不再像传统AR模型中那样使用前向或者反向的固定次序作为输入,XLNet引入排列语言模型,采用排列组合的方式,每个位置的上下文可以由来自左边和右边的token组成。在期望中,每个位置都要学会利用来自所有位置的上下文信息,即,捕获双向上下文信息。
  • 作为一个通用的AR语言模型,XLNet不再使用data corruption,即不再使用特定标识符号[MASK]。因此也就不存在BERT中的预训练和微调的不一致性。同时,自回归在分解预测tokens的联合概率时,天然地使用乘法法则,这消除了BERT中的独立性假设。
  • XLNet在预训练中借鉴了Transformer-XL中的segment recurrence机制的相对编码方案,其性能提升在长文本序列上尤为显著。
  • 由于分解后次序是任意的,而target是不明确的,所以无法直接使用Transformer-XL,论文中提出采用“reparameterize the Transformer(-XL) network”以消除上述的不确定性。

排列语言模型

受无序NADE(Neural autoregressive distribution estimation)的想法的启发,提出一个排列组合语言模型,该模型能够保留自回归模型的优点,同时能够捕获双向的上下文信息。例如一个长度为T的序列,其排序组合为T!,如果所有排列组合次序的参数共享,那么模型应该会从左右两个方向的所有位置收集到信息。但是由于遍历 T! 种路径计算量非常大(对于10个词的句子,10!=3628800)。因此实际只能随机的采样 T! 里的部分排列,并求期望;
在这里插入图片描述

为了更好的理解,看下面这张图:
在这里插入图片描述
假设输入的序列是[1,2,3,4], 排列共有4x3x2=24种,选其中的四种分别为[3,2,4,1],[2,4,3,1],[1,4,2,3],[4,3,1,2]。在预测位置3的单词时,第一种排列看不到任何单词,第二种排列能看到[2,4],第三种排列能看到[1,2,4],第四种排列能看到[4],所以预测位置3的单词时,不仅能看到上文[1,2],也能看到下文的[4],所以通过这种方式,XLNet模型能同时编码上下文信息。

PLM的本质就是LM联合概率的多种分解机制的体现,将LM的顺序拆解推广到随机拆解,但是需要保留每个词的原始位置信息(PLM只是语言模型建模方式的因式分解/排列,并不是词的位置信息的重新排列!)

但是有个问题需要注意,上面提出的排列语言模型,在实现过程中,会存在一个问题,举个例子,还是输入序列[1, 2, 3, 4]肯定会有如下的排列[1, 2, 3, 4],[1,2,4,3],第一个排列预测位置3,得到如下公式 P ( 3 ∣ 1 , 2 ) P(3|1,2) P(31,2),第二个排列预测位置4,得到如下公式 P ( 4 ∣ 1 , 2 ) P(4|1,2) P(41,2),这会造成预测出位置3的单词和位置4的单词是一样的,尽管它们所在的位置不同。论文给出具体的公式解释如下:
在这里插入图片描述
那怎么解决没有目标(target)位置信息的问题?那就是下面要讲的Two-Stream Self-Attention。

Two-Stream Self-Attention

除了上述之外,模型的实现过程中还有两点要求

  • 在预测当前单词的时候,只能使用当前单词的位置信息,不能使用单词的内容信息。
  • 在预测其他单词的时候,可以使用当前单词的内容信息

为了满足同时这两个要求,XLNet提出了双流自注意力机制,结构如下:
在这里插入图片描述

下文用 g z t g_{z_t} gzt 表示,上下文的内容信息用 x z < t x_{z<t} xz<t 表示,目标的位置信息 z t z_t zt ,目标的内容信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/55772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-基于不同策略的英文单词的词频统计和检索系统

数据结构课程设计:基于不同策略的英文单词的词频统计和检索系统 - 海月CSDN - 博客园 数据结构-基于不同策略的英文单词的词频统计和检索系统-CSDN博客 李冬梅老师课程设计 多学多练习!!!! C/C++在线餐馆预订管理系统_数据结构美团餐馆预订管理信息系统-CSDN博客 高校…

Java之Native详解

在Java编程中&#xff0c;Native方法是一种特殊的方法&#xff0c;它允许Java代码直接调用用其他编程语言&#xff08;如C或C&#xff09;编写的代码。这种机制使得Java程序能够与底层系统资源或其他编程语言进行交互&#xff0c;实现更高效的操作或访问特定功能。本文将详细介…

计算机科学各种协议

tls&#xff1a;TLS” 即 “Transport Layer Security”&#xff08;传输层安全&#xff09; ssl&#xff1a;SSL&#xff08;Secure Sockets Layer&#xff0c;安全套接层&#xff09;协议 Qos&#xff1a;网络服务质量&#xff08;Quality of Service&#xff0c;QoS&#…

前端的全栈混合之路Meteor篇:关于前后端分离及与各框架的对比

这篇属于番外&#xff0c;属于技术性的讨论文&#xff0c;主要谈一下可能困惑不少人的问题。meteor看似一个前后端混合的框架&#xff0c;但实际上它并不是前后端混合的&#xff0c;只是共享了一个数据结构&#xff08;数据对象&#xff09;。现实中很多团队都说是前后端分离的…

【AIGC】ChatGPT提示词Prompt高效编写模式:结构化Prompt、提示词生成器与单样本/少样本提示

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;结构化Prompt (Structured Prompt)组成元素应用实例优势结论 &#x1f4af;提示词生成器 (Prompt Creator)如何工作应用实例优势结论 &#x1f4af;单样本/少样本提示 (O…

什么是安全运营中心 SOC?

SOC 代表安全运营中心&#xff0c;它是任何企业中负责组织安全、保护企业免受网络风险的单一、集中的团队或职能。 安全运营中心将管理和控制业务运营的所有安全要素&#xff0c;从监控资产到雇用合适的人员和流程&#xff0c;再到检测和应对威胁。 在本文中&#xff0c;我们…

PHP变量(第④篇)

本栏目教学是php零基础到精通&#xff0c;如果你还没有安装php开发工具请查看下方链接&#xff1a; Vscode、小皮面板安装-CSDN博客 今天来讲一讲php中的变量&#xff0c;变量是用于存储信息的"容器"&#xff0c;这些数据可以在程序执行期间被修改&#xff08;即其…

ThinkBook 16+ 锐龙6800h 安装ubuntu键盘失灵

问题&#xff1a;在ThinkBook 16 锐龙6800h 安装ubuntu18.04 出现笔记本键盘按下延迟非常高&#xff0c;输出卡死的情况&#xff0c;但是外接键盘可以正常使用 解决&#xff1a;更新内核 1、进入 https://kernel.ubuntu.com/~kernel-ppa/mainline/ 下载所需内核版本&#x…

Node.js+Express毕设论文选题最新推荐题目和方向

目录 一、前言 二、毕设选题推荐 三、总结 四、附录&#xff08;手册、官网、资源教程等&#xff09; 1. Node.js 官方资源 2. Express 官方资源 3.安装方法 4 创建示例 一、前言 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它允许开发者使用…

智能医疗:Spring Boot医院管理系统开发

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

x++、++x的一些问题

x、x在字面上无非就说一个先前置递增然后再运算&#xff0c;另一个是运算完再递增&#xff0c;是不是有些许模棱两可的感觉&#xff0c;接下来引用一个简单的for循环就能够大致理解&#xff1a; 先是x&#xff1a; int i0,x0;for(i0;(i)<5;){xi;printf("%d\n",x)…

JDK1.2主要特性

JDK 1.2&#xff0c;也被称为Java 2 Platform, Standard Edition, v1.2&#xff0c;是Java编程语言的第二个主要版本&#xff0c;由Sun Microsystems公司在1998年发布。JDK 1.2是Java 2平台的一部分&#xff0c;它引入了许多重要的特性和改进&#xff0c;对Java编程语言的未来产…

ubuntu 安装baget

一、安装netcore3.1 环境 二、下载运行文件 下载&#xff1a;github.com/loic-sharma/BaGet/releases 修改&#xff1a;appsettings.json文件 mkdir -p /root/apps/baget mkdir -p /root/apps/datas touch /root/apps/baget.db cd /root/apps/baget dotnet BaGet.dll --urls&…

Android Framework(八)WMS-窗口动效概述

文章目录 动画简述本地、远端动画的定义什么是“leash”图层“leash”图层的命令与创建 Winscope流程小结 动画流程概览分析Activity启动app_transition 动画的主要事件触发动画执行的套路动画真正执行动画的结束回调触发远端动画的Target 动画简述 1、动画的原理也是利用了视觉…

Spring国际化和Validation

SpringBoot国际化和Validation融合 场景 在应用交互时&#xff0c;可能需要根据客户端得语言来返回不同的语言数据。前端通过参数、请求头等往后端传入locale相关得参数&#xff0c;后端获取参数&#xff0c;根据不同得locale来获取不同得语言得文本信息返回给前端。 实现原…

pymeshlab 学习笔记

目录 安装&#xff1a; pymeshlab不能直接可视化点云&#xff0c;用open3d可视化 pymeshlab保存物体的横截面&#xff08;compute planar section&#xff09; 点云去噪&#xff1a; 安装&#xff1a; pip install pymeshlab pip install open3d pymeshlab不能直接可视化…

Pandas 时间序列处理

Pandas 时间序列处理 说明&#xff1a; 请回答以下问题&#xff0c;以展示您对 pandas 中时间序列处理的全面理解。请在适用时提供代码示例。 问题 1 如何将日期字符串列表 [2023-01-01, 2023-01-02, 2023-01-03] 转换为 pandas 的 DatetimeIndex&#xff1f; 问题 2 给定一…

使用 Nginx 和 Gunicorn 部署 Flask 项目详细教程

使用 Nginx 和 Gunicorn 部署 Flask 项目详细教程 在这篇文章中&#xff0c;我们将介绍如何使用 Nginx 和 Gunicorn 来部署一个 Flask 项目。这种部署方式非常适合在生产环境中使用&#xff0c;因为它能够提供更好的性能和更高的稳定性。 目录 Flask 项目简介环境准备Gunico…

centos 7.9系统redis6.2.6哨兵模式部署

由于系统需要处理大量的数据并发请求,所以借助于Redis的高性能,可以有效提升整个系统的处理效率。这里采用redis6.2版本源码编译部署哨兵模式,提高整个系统的可用性,避免单点故障。 1. Redis基本环境安装 centos7安装redis 6.2.6 采用源码编译方式安装。 服务器主机名:…

思科dhcp的配置

以路由器为例 让pc3 自动获取ip地址并获取的网段为172.16.4.100-172.16.4.200 配置如下&#xff1a; R1(config)#interface GigabitEthernet0/2 R1(config)#ip address 172.16.4.254 255.255.255.0 R1(config)# no shutdown R1(config)#ip dhcp pool 4_pool //创建dhcp地址池…