XLNet架构
XLNet 是一种基于自回归(autoregressive)的预训练语言模型,由 Google AI 和 CMU 的研究团队于 2019 年提出。它是为了改进之前的预训练语言模型(如 BERT)的性能。其核心特点是结合了 BERT 的双向表示优势 和 自回归模型(如 GPT) 的建模能力。与 BERT 等模型不同,XLNet 并不直接使用经典的 "masking" 技术来预训练语言模型,而是通过 排列语言建模(Permutation Language Modeling) 的方式,使得模型能够捕捉到输入序列的不同排列顺序的信息。
XLNet 的架构是基于 Transformer-XL 进行改进的,它的核心思想是结合自回归语言模型(如 GPT)和双向语言模型(如 BERT)的优势。以下是 XLNet 的架构详细说明:
XLNet 架构概览
基础模型:Transformer XLNet 继承了 Transformer 模型的基础架构,主要包括多头自注意力机制(Self-Attention Mechanism)、前馈神经网络层和残差连接。Transformer 架构的优点在于可以并行处理输入序列中的每一个位置,并通过自注意力机制捕捉序列中远距离的依赖关系。
Transformer-XL XLNet 使用了 Transformer-XL 作为其基础。Transformer-XL 是一种改进的 Transformer 架构,解决了标准 Transformer 在处理长序列时的效率问题。它引入了 记忆机制 来保持跨句子的信息,使得模型能够处理更长的依赖关系,而不是仅限于固定长度的输入序列。
排列语言建模(Permutation Language Modeling) XLNet 的最大创新是其 排列语言建模 机制。传统的自回归模型(如 GPT)只能从左到右或从右到左生成序列,而 XLNet 使用一种新的方法,通过随机排列输入序列中的词顺序,来进行预训练。这种随机排列允许模型从所有可能的词顺序中学习上下文信息,使得 XLNet 能够同时捕捉到双向的依赖关系。
架构细节
输入表示 与 BERT 类似,XLNet 采用了三种输入嵌入:
词嵌入(Token Embeddings):表示句子中的每一个词。
段落嵌入(Segment Embeddings):用于区分不同的句子或段落(类似于 BERT 的句子对任务中的 segment IDs)。
位置嵌入(Position Embeddings):表示词在句子中的相对位置。
但是,XLNet 中的 位置嵌入 更灵活,因为输入序列的排列是随机的,因此它需要能够适应不同的排列。
多头自注意力(Multi-head Self-Attention) 自注意力机制是 Transformer 的核心。XLNet 的自注意力层允许每个词与其他所有词(无论距离多远)进行交互。通过 多头注意力,XLNet 能够在不同的子空间中捕捉到更丰富的上下文信息。
排列语言建模的实现 传统的语言模型(如 GPT)使用自回归的方法来预测下一个词,而 BERT 使用掩码语言模型(masked language modeling)进行双向建模。XLNet 使用 排列语言建模,具体实现方式是通过随机排列输入序列中的词,并让模型在新的排列顺序下预测某个词。
例如,对于输入序列 "the cat sat on the mat":
GPT 模型会从左到右预测 "the -> cat -> sat -> on -> the -> mat"。
BERT 会随机屏蔽某些词,并通过其他词预测被屏蔽的词。
而 XLNet 会随机排列这个序列,例如 "cat -> the -> sat -> mat -> the -> on",然后让模型预测每个位置的词。这种方法允许模型从不同的词序中学习上下文信息。
记忆机制 XLNet 通过 Transformer-XL 的 记忆机制 扩展了标准 Transformer 的能力。具体来说,Transformer-XL 会保存上一层中的隐藏状态,这些状态可以跨多个段落传递,从而使得 XLNet 能够捕捉更长的上下文信息。记忆机制解决了原始 Transformer 在处理长序列时丢失信息的问题。
目标函数 XLNet 使用了最大化 对数似然估计 的目标函数,即模型学习通过排列后的上下文来预测目标词。通过引入对数似然估计,XLNet 能够将自回归和双向上下文建模的优势结合起来。
XLNet 的架构流程图
从架构流程上可以总结为以下几个步骤:
输入词序列:首先输入一个句子的词序列,例如 "the cat sat on the mat"。
随机排列:对输入序列进行随机排列,生成新的词序列(例如 "cat -> the -> sat -> on -> the -> mat")。
词嵌入和位置嵌入:对每个词生成相应的词嵌入和位置嵌入。
Transformer 编码器:使用多层 Transformer 编码器(基于 Transformer-XL),通过自注意力机制和前馈神经网络来处理词的上下文关系。
记忆机制:利用 Transformer-XL 的记忆机制保留跨段落的上下文信息。
排列语言建模:模型根据排列后的输入序列进行训练,通过最大化对数似然估计预测目标词。
总结
XLNet 的架构基于 Transformer,但通过引入 排列语言建模 和 Transformer-XL 的记忆机制,改进了现有模型(如 BERT 和 GPT)的能力,能够在预训练阶段捕捉到更加丰富和完整的上下文信息。这使得 XLNet 在多个 NLP 任务中表现优异,尤其是在处理长序列和复杂上下文时具有优势。
Reference:
Last updated