XLNet——打破 BERT 局限的预训练语言模型
近年来,深度学习在自然语言处理(NLP)领域取得了革命性进展,其中 BERT 的出现标志着双向语言建模的强大能力。然而,BERT 也存在一些局限性,限制了其在生成任务中的表现。2019 年,由 Google 和 Carnegie Mellon University 联合提出的 XLNet 模型,通过引入 排列语言建模(Permuted Language Modeling, PLM) 和 Transformer-XL 结构,打破了 BERT 的瓶颈,并在多个 NLP 任务中实现了超越。
本文将从 XLNet 的核心概念、设计原理、优势与局限 等方面,详细介绍这款强大的预训练语言模型。
1. XLNet 是什么?
XLNet 是一种基于 Transformer 的预训练语言模型,旨在结合自回归模型(如 GPT)和自编码模型(如 BERT)的优势,解决 BERT 的以下局限性:
- 预训练和微调不一致:BERT 的
Masked Language Model(MLM)依赖于遮掩的[MASK]token,但在微调时[MASK]不存在,导致不一致。 - 上下文利用有限:BERT 只能预测被遮掩 token,而未显式建模所有 token 的联合分布。
为此,XLNet 提出了 排列语言建模,并结合了 Transformer-XL 的记忆机制,实现了对更长上下文的建模和对联合概率分布的显式优化。
2. 核心创新:排列语言建模(Permuted Language Modeling, PLM)
传统的语言模型训练目标通常是固定的:
- 自回归模型(如 GPT):从左到右依次预测下一个 token。
- 自编码模型(如 BERT):遮掩部分 token,然后预测这些 token。
(1) 排列语言建模的核心思想
XLNet 使用随机排列的方式改变 token 的预测顺序,例如:
- 对于序列
x = [x1, x2, x3, x4, x5],生成随机排列[x3, x1, x2, x5, x4]。 - 按照排列的顺序,模型依次预测 token(如预测
x3时仅考虑排列中x1, x2)。
通过排列语言建模,XLNet 显式优化了 token 的联合概率分布:
P ( x ) = ∏ t = 1 T P ( x z t ∣ x z 1 , . . . , x z t − 1 ) P(x) = \prod_{t=1}^T P(x_{z_t} | x_{z_1}, ..., x_{z_{t-1}}) P(x)=t=1∏TP(xzt∣xz1,...,xzt−1)
其中, z z z 表示随机排列的顺序。
(2) 动态预测目标
在训练过程中,模型会动态生成排列顺序,确保在每次训练中都能学习不同的上下文依赖关系。这种机制避免了数据重复,同时提升了数据多样性。
3. 结合 Transformer-XL 的长距离建模能力
XLNet 基于 Transformer-XL 架构,进一步增强了对长文本的建模能力:
- 记忆机制:通过缓存上一段文本的隐状态,实现跨段上下文的信息共享。
- 有效的长距离依赖建模:相比于传统 Transformer,Transformer-XL 避免了序列长度限制带来的上下文截断问题。
这种设计使得 XLNet 能够在长文本场景中表现得更加出色,例如阅读理解和文档分类。
4. XLNet 的优势
(1) 超越 BERT 的理解能力
- XLNet 通过排列语言建模捕捉了 token 的联合分布,显式建模上下文关系,比 BERT 的 MLM 更全面。
- 在多个 NLP 任务(如 GLUE、SQuAD)中,XLNet 的表现优于 BERT。
(2) 克服预训练和微调的不一致性
- BERT 在预训练中使用
[MASK],但下游任务通常不包含遮掩 token,这种不一致性会影响性能。 - XLNet 无需遮掩 token,因此预训练和微调阶段的输入更一致。
(3) 适用于长文本任务
- Transformer-XL 的记忆机制让 XLNet 能够处理比 BERT 更长的上下文序列,在需要全局理解的任务中表现更佳。
5. XLNet 的局限性
(1) 计算成本高
- 排列语言建模需要多次动态生成排列,并显式计算联合概率分布,相比 BERT 和 GPT,计算复杂度更高。
(2) 不完全适合生成任务
- 虽然 XLNet 引入了自回归特性,但其双向建模方式仍主要面向理解任务。在逐步生成文本时,GPT 的左到右自回归建模更高效。
(3) 复杂性较高
- XLNet 的实现和训练逻辑比 BERT 和 GPT 更复杂,对硬件和开发的要求更高。
6. XLNet 的应用场景
(1) 自然语言理解任务
- 文本分类:如情感分析、话题分类。
- 自然语言推断(NLI):判断句子间的逻辑关系。
- 阅读理解(QA):从上下文中抽取答案。
(2) 序列标注任务
- 命名实体识别(NER)。
- 词性标注(POS tagging)。
(3) 长文本任务
- 文档级分类:如法律、金融文档分析。
- 文本摘要生成(结合下游微调)。
7. XLNet 与 GPT、BERT 的对比
| 模型 | 目标 | 上下文建模 | 适用任务 | 生成能力 |
|---|---|---|---|---|
| BERT | MLM | 双向(静态遮掩) | 理解任务(分类、QA) | 较弱(遮掩限制) |
| GPT | 自回归语言模型 | 单向(左到右) | 生成任务(文本生成) | 强 |
| XLNet | 排列语言建模 | 双向 + 自回归(动态) | 理解任务(分类、QA) | 有限(生成性能弱于 GPT) |
参考代码:使用 Hugging Face 加载 XLNet
from transformers import XLNetTokenizer, XLNetForSequenceClassification
import torch# 加载 XLNet 模型和分词器
tokenizer = XLNetTokenizer.from_pretrained("xlnet-base-cased")
model = XLNetForSequenceClassification.from_pretrained("xlnet-base-cased", num_labels=2)# 输入文本
text = "XLNet is a powerful model for NLP tasks."
inputs = tokenizer(text, return_tensors="pt")# 推理
outputs = model(**inputs)
logits = outputs.logits
print("Logits:", logits)
相关文章:
XLNet——打破 BERT 局限的预训练语言模型
近年来,深度学习在自然语言处理(NLP)领域取得了革命性进展,其中 BERT 的出现标志着双向语言建模的强大能力。然而,BERT 也存在一些局限性,限制了其在生成任务中的表现。2019 年,由 Google 和 Ca…...
开源代码统计工具cloc的简单使用
一.背景 公司之前开发了个小系统,要去申请著作权,需要填写代码数量。应该怎么统计呢?搜索了一下,还是用开源工具cloc吧!我的操作系统是windows,代码主要是java项目和vue项目。 二.到哪里找 可以去官方下载…...
如何创建一个项目用于研究element-plus的原理
需求:直接使用element-plus未封装成组件的源码,创建一个项目,可以使用任意的element-plus组件,可以深度研究组件的运行。例如研究某一个效果,如果直接在node_modules修改elment-plus打包之后的那些js、mjs代码…...
单片机进阶硬件部分_day2_项目实践
设计要求 从绘制原理图到画PCB板,完成智能云衣柜项目 STM32 (Modbus)云IOT衣物云端管理 华为PCB布线规范 基于IoT的智享家主控系统 步骤分析 需求分析 器件选型绘制原理图(器件连接)PCB布局、布线泪滴、铺铜、添加丝印…...
labview关于文件路径的问题
在调用文件或拆分文件的时候经常会用到拆分路径函数和创建路径函数,最常用的也是当前应用程序目录或者是当前VI目录。 这里我们看到应用程序目录和VI目录在同一项目中,应用程序目录更像是根目录,往下拆分成了各个VI的子目录。 接下来我们来拆…...
72项!湖北省2024年度第二批省级科技计划项目拟立项项目公示!
本期精选 SCI&EI ●IEEE 1区TOP 计算机类(含CCF); ●EI快刊:最快1周录用! 知网(CNKI)、谷歌学术期刊 ●7天录用-检索(100%录用),1周上线; 免费稿件评估 免费匹配…...
神经网络问题之:梯度不稳定
梯度不稳定是深度学习中,特别是在训练深度神经网络时常见的一个问题,其本质涉及多个方面。 一、根本原因 梯度不稳定问题的根本原因在于深度神经网络的结构和训练过程中的一些固有特性。随着网络层数的增加,梯度在反向传播过程中会逐层累积变…...
ORACLE删不掉job,如何解决。
问题: 删掉 NYZSM 时出错: ORA-27478: 作业 “ZHY.NYZSM” 正在运行 ORA-06512: 在 “SYS.DBMS_ISCHED”, line 213 ORA-06512: 在 “SYS.DBMS_SCHEDULER”, line 657 ORA-06512: 在 line 2 1、停止作业: 使用DBMS_SCHEDULER.STOP_JOB过程来…...
可视化建模与UML《活动图实验报告》
你当像鸟飞往你的山。 一、实验目的: 1、熟悉活动图的基本功能和使用方法。 2、掌握使用建模工具软件绘制协作图的方法 二、实验环境: window7 | 10 | 11 EA15 三、实验内容: <1>绘制学生选课系统中添加课程(Add Course)用例的活动图…...
基于 MUSA 的大语言模型推理和服务框架vLLM
1. 引言 vLLM是一个高性能且内存高效的大语言模型推理和服务框架,也是当前业界使用范围最广的大模型推理框架,截至目前github star数28.4k。该框架性能优秀,而且部署容易,使用CUDA/ROCm提供GPU加速能力。但vLLM目前不支持使用摩…...
鸿蒙网络编程系列48-仓颉版UDP回声服务器示例
1. UDP回声服务器简介 回声服务器指的是这样一种服务器,它接受客户端的连接,并且把收到的数据原样返回给客户端,本系列的第2篇文章《鸿蒙网络编程系列2-UDP回声服务器的实现》中基于ArkTS语言在API 9的环境下实现了UDP回声服务器,…...
android-studio-4.2下载 、启动
下载 分享一个国内的android studio网站,可以下载SDK和一些Android studio开发工具 https://www.androiddevtools.cn/ 启动 JAVA_HOME/app/zulu17.48.15-ca-jdk17.0.10-linux_x64/ /app5/android-studio-home/android-studio-ide-201.6568795-linux-4.2C1/bin/s…...
深度学习day2-Tensor 2
六 Tensor常见操作 Tensor:多维数组,用于存储和操作数据 1 获取元素值 data.item():单个元素tensor转为python数值 import torch #标量 xtorch.tensor(1) print(x.item()) #一阶 xtorch.tensor([100]) print(x.item()) #如果输入的数据超过1个&#…...
【Android踩过的坑】14.小米系统TTS无法生效的问题
【Android踩过的坑】14.小米系统TTS无法生效的问题 解决办法: 在AndroidManifest.xml中添加: <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"…...
RabbitMQ实现异步下单与退单
前言: 在电商项目中的支付模块也是一个很重要的模块,其中下订操作以及退订操作就是主要的操作。其次的下单是同步下单,也就是第三方支付、数据库扣减、积分增加、等等其他业务操作,等待全部执行完毕后向用户返回成功响应请求。对…...
鸿蒙NEXT开发案例:随机数生成
【引言】 本项目是一个简单的随机数生成器应用,用户可以通过设置随机数的范围和个数,并选择是否允许生成重复的随机数,来生成所需的随机数列表。生成的结果可以通过点击“复制”按钮复制到剪贴板。 【环境准备】 • 操作系统:W…...
nwjs崩溃复现、 nwjs-控制台手动操纵、nwjs崩溃调用栈解码、剪切板例子中、nwjs混合模式、xdotool显示nwjs所有进程窗口列表
-1. nwjs在低版本ubuntu运行情况 ubuntu16.04运行nw-v0.93或0.89报错找不到NSS_3.30、GLIBC_2.25 uname -a #Linux Asus 4.15.0-112-generic #113~16.04.1-Ubuntu SMP Fri Jul 10 04:37:08 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux cat /etc/issue #Ubuntu 16.04.7 LTS \n \l…...
视觉SLAM--经典视觉SLAM框架
整个视觉SLAM流程主要包括以下步骤: 1、传感器信息读取:在视觉SLAM中主要为相机图像信息的读取和预处理。 2、前端视觉里程计:估算相邻图像间相机的运动,以及局部地图的样子。 3、后端(非线性)优化&#…...
Wallpaper壁纸制作学习记录05
效果简介 效果可以应用于现有组件,主要是您导入的图像。您可以在图像图层、文本图层、全屏图层和合成图层上使用效果。要添加效果需要打开之前的项目或创建一个新的项目,然后点击右侧效果区域的添加按钮。 将鼠标悬停在效果列表是,将显示眼睛…...
Elasticsearch 中的热点以及如何使用 AutoOps 解决它们
作者:来自 Elastic Sachin Frayne 探索 Elasticsearch 中的热点以及如何使用 AutoOps 解决它。 Elasticsearch 集群中出现热点的方式有很多种。有些我们可以控制,比如吵闹的邻居,有些我们控制得较差,比如 Elasticsearch 中的分片分…...
看门狗悖论:对波普尔可证伪主义划界标准的归谬反驳
看门狗悖论:对波普尔可证伪主义划界标准的归谬反驳摘要卡尔・波普尔提出的可证伪性标准,被学界长期奉为科学与非科学的核心划界原则。该原则主张:一个命题若具备被经验事实反驳的逻辑可能,即可归入科学命题范畴。然而,…...
UVM实战:RAL寄存器测试全流程详解(含代码示例)
UVM实战:RAL寄存器测试全流程详解(含代码示例) 在芯片验证领域,寄存器测试是确保硬件功能正确性的关键环节。UVM(Universal Verification Methodology)作为行业标准验证方法学,其内置的RAL&…...
基于微电网的小信号建模下垂控制稳定性的根轨迹分析
基于小信号建模的下垂控制稳定分析,文章完全浮现。 关键词:微电网,下垂控制,小信号模型,根轨迹,稳定性。一、程序核心目标 本程序通过小信号建模方法,构建微电网下垂控制的数学模型,…...
OpenCore Legacy Patcher技术解析:老旧Mac设备的macOS现代化方案
OpenCore Legacy Patcher技术解析:老旧Mac设备的macOS现代化方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 一、工具概述与价值定位 OpenCo…...
WarcraftHelper:魔兽争霸III体验增强与兼容性优化工具
WarcraftHelper:魔兽争霸III体验增强与兼容性优化工具 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专注于解决魔兽…...
BootDo项目使用指南:从架构解析到生产环境部署
BootDo项目使用指南:从架构解析到生产环境部署 【免费下载链接】bootdo 项目地址: https://gitcode.com/gh_mirrors/bo/bootdo 项目核心架构解析 核心目录树与功能模块关联 BootDo采用分层架构设计,核心目录结构如下: bootdo/ ├─…...
AI辅助开发:利用快马多模型AI为9·1免费素材网站添加智能搜索与推荐
AI辅助开发:利用快马多模型AI为91免费素材网站添加智能搜索与推荐 最近在做一个免费素材网站的项目,需要为91免费素材平台添加智能搜索和推荐功能。传统的关键词搜索已经不能满足用户需求了,特别是对于设计素材这种视觉化内容。正好发现了In…...
⚔️ 易经+人性+数学·三位一体终极博弈|算法裁判·话语权殖民·三色审计逻辑链闭环 v2.0|UID9622
《道德经》第三十六章:“将欲夺之,必固予之。” —— 先给你一把裁判的椅子,再告诉你,坐上去的人才有资格说话。🧭 这篇文章在干嘛⚔️ 这不是针对任何人的。 这是一场博弈论的推演——用易经的智慧、人性的逻辑、数学…...
从OpenWrt到iStoreOS:在VMware里体验‘小白友好型’软路由的存储与路由功能
从OpenWrt到iStoreOS:虚拟化环境下的软路由进化体验 当第一次接触OpenWrt时,很多人会被它强大的功能所吸引——从防火墙规则到QoS流量控制,从VPN服务到多WAN负载均衡,这个开源路由系统几乎能满足你对网络管理的所有想象。但随之而…...
8-Bit硬边框UI如何提升AI工具体验?Pixel Fashion Atelier交互反馈机制解析
8-Bit硬边框UI如何提升AI工具体验?Pixel Fashion Atelier交互反馈机制解析 1. 像素化界面设计的创新价值 在AI工具同质化严重的今天,Pixel Fashion Atelier通过8-Bit硬边框UI设计带来了全新的用户体验。这种设计不仅仅是视觉风格的改变,更是…...
