为什么 GPT 是 Decoder-Only:自回归生成的最佳形态
副标题 / 摘要 GPT 采用 decoder-only 结构是为了极致匹配自回归生成任务:因果注意力保证顺序一致性,结构简化降低训练与推理成本。本文对比 encoder-only 与 encoder-decoder,并给出最小 PyTorch 示例。 预计阅读时长:14~18 分钟 标签:gpt、decoder-only、autoregressive SEO 关键词:GPT, Decoder-Only, 自回归, Causal Attention 元描述:从任务目标到工程成本,解释 GPT 为什么选择 decoder-only 结构。 目标读者 想理解 GPT 架构选择的入门读者 需要做生成模型选型的工程实践者 想对比不同 Transformer 结构的开发者 背景 / 动机 在文本生成任务中,模型必须严格遵循“从左到右”的因果顺序。 GPT 的 decoder-only 结构天然满足这一目标,同时简化了模型设计。 但它与 encoder-only、encoder-decoder 的差异常被混淆,需要系统梳理。 核心概念 Decoder-only:仅使用解码器堆叠 + 因果自注意力。 Encoder-only:双向自注意力,擅长理解任务。 Encoder-decoder:编码输入再解码输出,擅长序列到序列任务。 Causal Mask:确保 token 只能看见左侧历史。 A — Algorithm(题目与算法) 用通俗语言说明主题内容 GPT 的任务是“预测下一个词”,所以只需要解码器并遵守因果顺序。 Encoder-only(如 BERT)不适合生成,因为它能看到未来词。 Encoder-decoder(如 T5)适合翻译/摘要,但结构更复杂。 基础示例(1) 输入:“今天是” → 模型预测“周五”。 这要求模型只能看到“今天是”,不能看到未来词。 基础示例(2) 机器翻译需要“源序列 → 目标序列”,更适合 encoder-decoder。 实践指南 / 步骤 任务为生成/续写 → 优先 decoder-only。 任务为理解/分类 → 优先 encoder-only。 任务为序列到序列 → 优先 encoder-decoder。 可运行示例(最小因果注意力) import torch import torch.nn.functional as F def causal_attention(x): # x: (batch, seq, dim) scores = x @ x.transpose(-2, -1) seq = x.size(1) mask = torch.tril(torch.ones(seq, seq)).bool() scores = scores.masked_fill(~mask, float("-inf")) weights = F.softmax(scores, dim=-1) return weights @ x x = torch.randn(1, 4, 8) out = causal_attention(x) print(out.shape) 解释与原理 因果 mask 保证 token 只依赖左侧历史。 这与自回归目标完全一致,避免信息泄露。 Decoder-only 结构也更容易并行化与扩展模型规模。 C — Concepts(核心思想) 方法类型 GPT 属于自回归生成模型,采用 decoder-only 结构 + 因果自注意力。 ...