XLNet 是由 Google Brain 和 CMU 于 2019 年提出的一种强大的预训练语言模型,旨在克服 BERT 的局限性,结合自回归和自编码的优点,取得了更好的性能。
一、什么是 XLNet?
属性 | 内容 |
---|---|
模型名称 | XLNet |
提出机构 | Google Brain + CMU |
发布时间 | 2019 年 |
基础架构 | Transformer-XL(带有相对位置编码) |
最大特点 | Permutation Language Modeling(排列语言建模) |
主要目标 | 结合 BERT(MLM)和 GPT(Auto-regressive)的优点 |
二、XLNet 与 BERT 的对比
特性 | BERT | XLNet |
---|---|---|
预训练方式 | Masked Language Model(MLM) | Permutation Language Model(PLM) |
输入遮盖 | 15% token 被 Mask,预测原始词 | 不遮盖,重新排列 token 顺序后,预测任意 token |
训练效率 | 较快,简单的 Mask 操作 | 较慢,需要多次排列组合 |
依赖未来信息 | 有(因为 mask 的 token 看不到右边信息) | 无(自回归特性,允许上下文建模) |
保留词序 | 否 | 是(Transformer-XL 中使用相对位置编码) |
下游性能 | 很强 | 通常优于 BERT,尤其在排序类任务(QA/文本分类) |
三、核心思想:Permutation Language Modeling
传统自回归语言模型(如 GPT)从左到右预测:
P(x1) * P(x2|x1) * P(x3|x1,x2) * ...
XLNet 的创新之处在于使用 所有 token 顺序的排列组合 进行训练,例如:
x3, x1, x2 的顺序:P(x3) * P(x1|x3) * P(x2|x3,x1)
通过多种 token 预测顺序,模型可以捕捉更丰富的上下文特征,同时具备双向建模能力。
四、Transformer-XL 的优势
XLNet 基于 Transformer-XL,带来了以下优势:
-
支持长文本建模(缓存历史隐藏状态)
-
使用 相对位置编码(增强顺序感知)
-
避免 BERT 中的固定窗口限制
五、模型结构概览
-
输入序列重排列(多个可能顺序)
-
基于 Transformer-XL 处理每种顺序
-
预测其中一个 token,依赖其前置 token
-
重复操作,训练获得整体语言建模能力
六、PyTorch 示例:使用 Hugging Face 加载 XLNet
pip install transformers
from transformers import XLNetTokenizer, XLNetModel
import torch
tokenizer = XLNetTokenizer.from_pretrained("xlnet-base-cased")
model = XLNetModel.from_pretrained("xlnet-base-cased")
inputs = tokenizer("XLNet is a powerful transformer model.", return_tensors="pt")
outputs = model(**inputs)
print(outputs.last_hidden_state.shape) # torch.Size([1, sequence_length, hidden_size])
七、在哪些任务上表现优异?
XLNet 在下列任务上超越 BERT:
-
自然语言推理(MNLI、RTE)
-
问答任务(SQuAD 1.1 / 2.0)
-
情感分类(SST-2)
-
文本相似度(STS-B)
其原因是:
-
上下文建模能力更强
-
能捕捉长距离依赖
-
相对位置编码更适应变长输入
八、总结
项目 | 内容 |
---|---|
模型类型 | 自回归 + 自编码混合型 Transformer |
特点 | Permutation LM、Transformer-XL 架构 |
优势 | 保留词序、无信息泄露、捕捉更丰富上下文 |
应用效果 | 多数 NLP 基准任务优于 BERT |
开源地址 | Hugging Face: xlnet-base-cased , xlnet-large-cased |
九、是否选择 XLNet?
场景 | 是否推荐使用 XLNet |
---|---|
英文问答 / 分类任务 | ✅ 非常适合,优于 BERT |
中文 NLP 应用 | ❌ 中文预训练 XLNet 较少 |
推理 / 相似度任务 | ✅ 优势显著 |
长文本建模任务 | ✅ 可通过 Transformer-XL 支持 |
训练资源有限 / 实时推理要求高 | ❌ 相比 BERT 更重 |