自回归模型
自回归模型(Autoregressive Model)是生成式 AI 最朴素也最强大的范式之一:将生成拆解为一系列”预测下一步”的问题。从 PixelRNN 逐像素生成图像,到 WaveNet 逐样本合成音频,再到 GPT 逐 token 生成文本——自回归是当前大语言模型的根本原理。2024–2025 年,自回归范式进一步突破了文本边界:VAR(Visual Autoregressive)用”逐尺度”生成图像超越了扩散模型,Chameleon/GPT-4o 将文本与图像/音频统一到单一自回归框架,DeepSeek-V3 用 Multi-Token Prediction 让训练更高效。本页讲解自回归的数学本质、经典与现代模型谱系,并链接到 LLM 的全面讲解。大语言模型的深入讨论见 语言模型演进。
- 自回归 = 一步步写,每一步只看前面:写文章时你不会一次性写出全文,而是一个字一个字写——每个字都基于前面已经写下的内容来决定。自回归模型完全模拟这个过程:给定”今天天气真”,预测下一个字大概率是”好”。
- 为什么叫”自回归”? 因为模型用自己的历史输出作为输入来预测下一步——“自”指自己,“回归”指基于历史值的预测。没有外部标注,完全靠数据本身的序列结构驱动学习。
- 链式法则是数学基础:联合概率可以分解为条件概率的连乘——这正是自回归模型的数学表达。这个分解是精确的、无近似的,因此自回归模型可以精确计算数据的似然(likelihood,即模型给数据分配的概率值),这是 GAN 做不到的。
- 串行性是固有代价:因为每一步都依赖前面所有的输出,生成过程天然是串行的——必须先生成第 1 个 token,才能预测第 2 个,以此类推。这导致自回归模型生成速度为 O(n)(n 为序列长度),也催生了 KV Cache、Speculative Decoding 等大量推理加速技术。
自回归生成的链式分解
Section titled “自回归生成的链式分解”任何序列数据 的联合概率,可以由链式法则分解:
即:每个元素的概率 = 给定前面所有元素的条件概率。模型要学的就是这个条件概率 。
生成时:先采样 x_1,再根据 x_1 采样 x_2,再根据 x_1,x_2 采样 x_3……每一步的输出成为下一步的输入——这就是”自回归生成”。推理速度天然是 O(n) 的(串行),不像 GAN 或 扩散模型 可以并行。
三大自回归模型家族
Section titled “三大自回归模型家族”| 家族 | 生成粒度 | 代表模型 | 骨干网络 |
|---|---|---|---|
| 图像自回归 | 逐像素 / 逐尺度 | PixelRNN / PixelCNN / VAR / LlamaGen | RNN / 因果卷积 / Transformer |
| 音频自回归 | 逐采样点 | WaveNet / VALL-E | 因果扩张卷积 / Transformer |
| 文本自回归 | 逐 token | GPT / LLaMA / Qwen / DeepSeek-V3 / Llama 3 | Transformer Decoder / MoE |
| 多模态自回归 | 逐 token(混合模态) | Chameleon / GPT-4o / Show-o | Transformer(共享词表) |
PixelRNN / PixelCNN:逐像素生成图像
Section titled “PixelRNN / PixelCNN:逐像素生成图像”PixelRNN(van den Oord et al., 2016)将图像视为像素序列,从左上到右下逐个像素生成。每个像素的 RGB 值取决于其上方和左方的所有像素:
- PixelRNN:用 LSTM 沿图像行扫描建模,效果好但慢。
- PixelCNN:用**因果卷积(masked convolution)**替代 LSTM——卷积核遮住”未来”像素,只看上方和左方。速度快得多,效果接近 PixelRNN。
PixelCNN 的因果掩码思想后来被 Transformer 继承——GPT 的因果掩码(见 Transformer 架构)与此完全一脉相承。
VAR:从”逐像素”到”逐尺度”的范式跃迁(2024–2025)
Section titled “VAR:从”逐像素”到”逐尺度”的范式跃迁(2024–2025)”PixelCNN 逐像素生成的最大问题是速度极慢(一张 256×256 图像需要串行生成 65536 步),且质量远不如扩散模型。2024 年的 VAR(Visual Autoregressive Modeling, Tian et al.) 提出了一个关键转变:不在像素维度做自回归,而在”分辨率尺度”维度做自回归。
- 直觉理解:传统图像自回归像”逐砖砌墙”,VAR 像”先打粗稿草图 → 再逐步精细化”。先生成一张 1×1 的”宏观粗图”,再生成 2×2、4×4、8×8……每个尺度都是一整张特征图(而非单个像素),整张图内部用并行卷积一次性生成。
- 技术细节:VAR 使用 VQVAE 将图像编码为多分辨率层次的离散 token,然后对”尺度序列”做自回归——每一步预测一个完整尺度的所有 token,这比逐 token 快几个数量级。
- 为什么重要:VAR 首次证明自回归模型在 ImageNet 256×256 图像生成上超越了扩散模型(如 DiT、LDM)的质量和速度,打破了”图像生成 = 扩散模型”的刻板印象。LlamaGen(2024)将 Llama 架构直接用于图像 token 自回归生成,进一步验证了这一路线。
VAR 的”逐尺度自回归”重新点燃了自回归图像生成的生命力,是 2024–2025 年生成式 AI 最受关注的方向之一。
WaveNet:逐采样点生成音频
Section titled “WaveNet:逐采样点生成音频”WaveNet(van den Oord et al., 2016)将音频波形视为逐采样点的序列(每秒 16000–48000 个点),用**因果扩张卷积(dilated causal convolution)**建模:
- 感受野随层数指数增长——用 10 层 dilation=[1,2,4,8,…,512] 的卷积,就能覆盖上千个采样点
- 生成质量极高,Google Assistant 早期用它做 TTS,听感接近真人
WaveNet 的扩张卷积后来启发了时序预测领域的 TCN(时序卷积网络)。
GPT:逐 token 生成文本
Section titled “GPT:逐 token 生成文本”GPT 系列(Radford et al., 2018–至今)是自回归模型的最高成就。它用 Transformer Decoder(见 Transformer 架构)建模 :
训练:输入 "今天天气真好" → 预测 "天|今" "气|今天" "真|今天天" "好|今天天气真"(并行,带因果掩码)生成:输入 "今天天气真" → 预测 "好" → 拼接成 "今天天气真好" → 再预测下一个 → 循环GPT 本质就是”大规模自回归语言模型”。关于训练(预训练/微调/RLHF)、能力(涌现/上下文学习)、应用的全面讨论见 语言模型演进。
现代自回归 LLM 的架构演进(2023–2025)
Section titled “现代自回归 LLM 的架构演进(2023–2025)”GPT 之后的自回归语言模型在架构上做了大量优化,当前主流模型(Llama 3、Qwen 2.5、DeepSeek-V3 等)的标配技术包括:
- RoPE(Rotary Position Embedding,旋转位置编码):通过旋转矩阵将位置信息注入注意力计算,使模型自然支持长上下文外推(从训练时的 4K 扩展到推理时的 128K+),无需额外训练。
- GQA(Grouped-Query Attention,分组查询注意力):多个 Query 共享同一组 Key/Value 头,在 KV Cache 大小和推理速度之间取得平衡——Llama 3、Qwen 2.5 均采用。
- MoE(Mixture of Experts,混合专家):将 FFN 层替换为多个”专家”子网络,每个 token 只激活其中少数几个(如 DeepSeek-V3 总共 256 个专家但每 token 只激活 8 个)。直觉理解:像一个医院的分诊台——病人进来先判断该挂哪个科,只有对应科室的医生(专家)才接诊。这样模型总参数量很大但计算量很小,用”稀疏激活”换取推理效率。
- Multi-Token Prediction(MTP,多 token 预测):DeepSeek-V3 引入的训练目标——不仅预测下一个 token,还同时预测第 2、3 个 token。这让模型学到更长程的规划能力,同时推理时可以做 Speculative Decoding(用 MTP 模块快速”起草”多个候选 token,再由主模型并行验证),大幅加速。
Numpy 自回归逐字符生成
Section titled “Numpy 自回归逐字符生成”用纯 numpy 演示自回归生成的核心逻辑——给定历史字符预测下一个:
import numpy as np
# 用 Bigram(二元)统计模型演示自回归text = "今天天气真好天气真好人真好" # 训练文本chars = list(text)vocab = sorted(set(chars)) # 字符表
# 统计每个字后面跟着什么字(bigram 频率)transitions = {c: {} for c in vocab}for i in range(len(chars) - 1): cur, nxt = chars[i], chars[i + 1] transitions[cur][nxt] = transitions[cur].get(nxt, 0) + 1
def generate(start="今", length=10): """自回归生成:每步根据当前字预测下一个字""" result = [start] for _ in range(length): cur = result[-1] nexts = transitions.get(cur, {}) if not nexts: break # 没有后续记录,停止 # 按频率采样下一个字 chars_list = list(nexts.keys()) probs = np.array(list(nexts.values()), dtype=float) probs /= probs.sum() result.append(np.random.choice(chars_list, p=probs)) return "".join(result)
print(generate("今")) # 输出示例: "今天天气真好"这只是 bigram(只看前 1 个字),GPT 则是用 Transformer 看前面全部 token——但自回归的生成逻辑完全相同:基于已生成内容预测下一步,再拼接回去循环。
PyTorch 自回归生成框架
Section titled “PyTorch 自回归生成框架”展示自回归生成的核心循环(以 Transformer Decoder 为例):
import torchimport torch.nn as nn
class TinyLM(nn.Module): """最小自回归语言模型(Transformer Decoder)""" def __init__(self, vocab_size=1000, d_model=128, nhead=4): super().__init__() self.embed = nn.Embedding(vocab_size, d_model) self.decoder = nn.TransformerDecoderLayer( d_model=d_model, nhead=nhead, batch_first=True) self.fc = nn.Linear(d_model, vocab_size) self.d_model = d_model
def forward(self, x): emb = self.embed(x) # (B, seq_len, d_model) # 自注意力(空 memory,仅用 causal self-attention) out = self.decoder(emb, emb) return self.fc(out) # (B, seq_len, vocab_size) 每位置预测下一个 token
# 自回归生成循环model = TinyLM()tokens = torch.tensor([[1, 5, 10]]) # 初始 prompt(token id 序列)for _ in range(20): # 生成 20 个新 token logits = model(tokens) # (1, seq_len, vocab) next_token = logits[:, -1:].argmax(dim=-1) # 贪心解码:取概率最高的 tokens = torch.cat([tokens, next_token], dim=1) # 拼接到已有序列print(tokens) # 输出: 完整的 token 序列训练时用整条序列并行计算(带因果掩码),但生成时必须逐 token 串行——这是自回归模型的固有代价,也是 LLM 推理优化的核心难题(KV Cache、Speculative Decoding 等)。
- 自回归 = 串行生成 = 慢:生成长度 n 的序列需要 n 次前向传播。这是 LLM 推理优化的核心挑战——KV Cache、批量解码、投机解码(Speculative Decoding)等技术都是为了缓解这个问题。详见 LLM 推理优化。
- 采样策略决定生成质量:贪心解码(取概率最高)→ 确定但重复;Temperature Sampling → 控制随机性;Top-k / Top-p(核采样)→ 在多样性和连贯性间平衡。这是调整 LLM 输出风格的关键参数。
- 自回归 vs 非自回归:自回归质量高但慢;非自回归(NAR,如扩散模型、MaskGIT)并行生成所有位置,速度快但质量通常略低。在机器翻译等领域有 NAR 探索。
- 精确似然是自回归的优势:与 GAN 不同,自回归模型可以精确计算 ,因此有明确的训练目标(最大化似然)和评估方式(困惑度 perplexity)。
- 大语言模型(主体应用):GPT、LLaMA、Qwen、DeepSeek、Claude 全部是自回归语言模型。这是自回归模型在当前 AI 中最重要、最广泛的应用。详见 语言模型演进。
- PixelCNN 图像生成:逐像素生成图像,虽不如扩散模型主流,但在精确似然评估和低维生成场景仍有价值。ImageGPT 将 Transformer 架构应用于像素序列,是 ViT 的前身之一。
- WaveNet 语音合成:逐采样点生成音频波形,曾驱动 Google Assistant 的 TTS 系统。现代 TTS 虽多用端到端方案,但自回归生成仍是核心组件之一。详见 语音合成 TTS。
- 音乐生成:Music Transformer、Jukebox 等用自回归方式生成 MIDI 和音频,参见 AI 音乐生成。
- 时间序列预测:自回归模型在时序预测中也广泛应用——ARIMA 就是经典的线性自回归模型,深度学习版如 DeepAR 也是自回归的。
典型类库与工具
Section titled “典型类库与工具”| 类库 | 语言 | 说明 |
|---|---|---|
| HuggingFace Transformers | Python | 提供 GPT/LLaMA/Qwen 等自回归模型的预训练权重和推理 API |
| PyTorch | Python | nn.TransformerDecoderLayer + 因果掩码即可搭建自回归模型 |
| TensorFlow / Keras | Python | tf.keras.layers 支持自回归模型构建 |
| vLLM | Python | 高性能自回归 LLM 推理引擎,支持 PagedAttention 和连续批处理 |
| JAX / Flax | Python | Google 的高性能数值计算框架,用于训练大规模自回归模型 |
| 术语 | 英文 | 解释 |
|---|---|---|
| 自回归 | Autoregressive (AR) | 用自身历史输出作为输入、逐步预测下一步的生成方式 |
| 链式法则 | Chain Rule of Probability | 联合概率分解为条件概率连乘,自回归模型的数学基础 |
| 因果掩码 | Causal Mask | 遮蔽未来位置的掩码,保证自回归训练时不偷看后续 token |
| 因果卷积 | Causal Convolution | 只看当前及过去位置的卷积,用于 PixelCNN/WaveNet |
| 扩张卷积 | Dilated Convolution | 卷积核间隔采样,感受野随层数指数增长,WaveNet 的核心 |
| 困惑度 | Perplexity | 语言模型的评估指标,衡量预测下一个 token 的不确定性,越低越好 |
| 贪心解码 | Greedy Decoding | 每步取概率最高的 token,确定但容易重复 |
| 核采样 | Nucleus Sampling (Top-p) | 从概率累积超过 p 的最小 token 集合中采样,平衡多样性和质量 |
| 温度采样 | Temperature Sampling | 用温度参数调整 softmax 分布的尖锐程度,控制生成随机性 |
- 自回归模型谱系:PixelRNN/PixelCNN(2016,逐像素图像)→ WaveNet(2016,逐采样点音频)→ GPT-1(2018,逐 token 文本)→ GPT-3/4(2020–2023,大规模)→ LLaMA/Qwen/DeepSeek(开源生态)。
- 与大语言模型的关系:自回归模型是 GPT 的根本原理。GPT 系列的预训练目标就是”自回归下一 token 预测”,推理时就是”自回归逐 token 生成”。完整的 LLM 讨论——从训练(预训练/SFT/RLHF)到应用(提示工程/RAG/Agent)——见 语言模型演进 和 提示工程。
- 与其他生成模型的关系:自回归(逐步预测)、GAN(对抗博弈)、VAE(概率编码)、扩散模型(逐步去噪)是生成式 AI 的四大路线。自回归的优势是精确似然和强表达力,劣势是串行生成慢。详见 生成式 AI 概览。