【Transformer 与注意力机制】38|GPT 系列:从 GPT-1 到 GPT-4 的路线演进
GPT 路线的关键不是某个模型名字,而是 Decoder-only Transformer、next-token prediction、规模扩展、上下文学习、指令微调和人类反馈逐步合流。本文从 GPT-1 讲到 GPT-4,只使用公开可确认信息,解释为什么自回归语言模型最终成为大语言模型时代的主线。
发布来自土法炼钢兴趣小组的知识、笔记、进展和应用。主题包括数据结构和算法、编程语言、网络安全、密码学等。
共 58 篇文章 · 返回首页
GPT 路线的关键不是某个模型名字,而是 Decoder-only Transformer、next-token prediction、规模扩展、上下文学习、指令微调和人类反馈逐步合流。本文从 GPT-1 讲到 GPT-4,只使用公开可确认信息,解释为什么自回归语言模型最终成为大语言模型时代的主线。
T5 的核心不是又发明了一种 Transformer,而是把翻译、摘要、分类、问答都改写成“输入文本到输出文本”的统一格式。本文解释 T5 为什么选择 Encoder-Decoder 架构,span corruption 和 BERT/GPT 的目标有什么差异,C4 和系统化消融实验为什么让 T5 成为迁移学习路线的重要基准。
Transformer 不是只有一种形态。Encoder-only、Encoder-Decoder、Decoder-only 分别对应理解、条件生成和自回归生成三类信息流。本文横向比较 BERT、T5、GPT 代表的三条路线,解释为什么通用大模型时代 Decoder-only 占主流,以及为什么这不意味着另外两条路线失去价值。
Transformer 本身没有递归和卷积,如果不注入位置信息,它只会看到一袋 token。本文从原始正弦位置编码讲到 learned embedding、相对位置、RoPE 和 ALiBi,解释位置编码为什么从“给 token 加坐标”演进到“让 attention 感知相对距离”,以及长上下文为什么让位置外推变成核心问题。
FlashAttention 的关键不是近似注意力,也不是把公式改掉,而是重新安排标准 attention 在 GPU 内存层级里的计算路径。本文解释为什么标准 attention 的瓶颈常常是 HBM 读写,FlashAttention 如何用 tiling 和 online softmax 避免物化完整注意力矩阵,以及它为什么省显存、提吞吐,却没有消除 O(n²) 的根本复杂度。
FlashAttention 优化的是 full attention 的实现路径,稀疏注意力则直接改变 token 之间的连接图。本文解释局部窗口、全局 token、随机连接和结构化稀疏为什么能降低长序列成本,以及 Longformer、BigBird、Sparse Transformer 各自代表什么取舍。
MoE 的关键不是把很多模型简单拼成 ensemble,而是让每个 token 通过 router 只激活少数专家,从而把总参数量和每 token 计算量部分解耦。本文解释 Transformer 里的 MoE 为什么常替换 FFN,Switch Transformer、GShard、Mixtral 代表什么,以及负载均衡、容量因子、专家塌缩和通信成本为什么是 MoE 的核心难题。
ViT 的关键不是把每个像素当成 token,而是把图像切成 patch,再把每个 patch 映射成向量序列。本文解释 CNN 的归纳偏置是什么,ViT 如何用 patch embedding、位置编码和 CLS token 处理图像,为什么它一开始依赖大数据,以及 DeiT、Swin Transformer 如何补足数据效率和层级结构。
多模态模型的核心不是把图片简单转成文字,而是让图像、文本、mask、视频等不同模态在表示空间、注意力结构和任务接口上对齐。本文用 CLIP、Flamingo、LLaVA、SAM 四条线解释图文对比学习、视觉语言连接器、视觉指令微调和 promptable segmentation。
扩散模型早期常用 U-Net 作为去噪网络,但当图像和视频被表示成 latent patch token 后,Transformer 也可以成为扩散模型 backbone。本文解释 DiT 如何把 latent patch、时间步和条件信息送入 Transformer,为什么它有更清晰的 scaling 行为,以及视频生成为什么把序列长度问题放大到极致。
语言模型不会直接输出“答案”,它每一步输出的是下一个 token 的 logits。本文解释 logits、softmax 和概率分布的关系,比较贪心解码、Beam Search、temperature、top-k、top-p、重复惩罚等策略,说明为什么解码不是模型之外的小细节,而是直接决定文本风格、稳定性和幻觉风险的决策层。
自回归推理和训练不是同一种程序。本文解释 KV Cache 为什么成立:历史 token 的 Key/Value 一旦算出,在后续 decode 中不会改变;缓存它们可以避免反复重算前缀。文章同时讲清 prefill 与 decode 的差异、cache 显存公式、长上下文为什么受限,以及 PagedAttention、MQA/GQA、cache 量化等方向各自在解决什么。
KV Cache 避免了重复计算历史前缀,但自回归生成仍然一个 token 接一个 token。Speculative Decoding 的思路是让小 draft model 先草拟多个 token,再由大 target model 批量验证,在保持目标模型分布正确的前提下降低延迟。本文解释它的算法直觉、接受率瓶颈和适用边界。
大模型部署的瓶颈不只有参数量,还有显存带宽、KV Cache、激活和延迟。本文解释量化、蒸馏、剪枝分别压缩什么:量化降低数值精度,蒸馏把大模型行为迁移到小模型,剪枝移除不重要结构;并说明 GPTQ、AWQ、SmoothQuant 等方法背后的核心取舍。
Transformer 的 attention weight 很容易被画成热力图,但“看起来关注哪里”不等于“模型为什么这样回答”。本文区分用户解释、行为解释和机制解释,解释 attention is not explanation 的争议,以及梯度、遮挡实验、探针和因果干预各自能说明什么。
机制可解释性不满足于“模型看起来关注哪里”,而是试图找出 Transformer 内部哪些 head、MLP feature、残差流路径共同实现了某种行为。本文解释 induction heads、activation patching、superposition、Sparse Autoencoder 和电路分析的基本思想,以及为什么它们接近因果解释却仍远未解决大模型整体解释。
大模型能力有时看起来会突然出现,但“涌现”既包含真实规模效应,也受到指标阈值、任务格式和评测方法影响。本文解释 emergent abilities 的争议、in-context learning、Chain-of-Thought、规模与数据的关系,以及为什么不能把涌现神秘化。
Transformer 的成功没有消除它的结构性代价。本文区分工程瓶颈和架构瓶颈,解释 O(n²) attention、KV Cache 线性增长、自回归串行性、长上下文与长期记忆的差异、位置外推和数据效率问题,并说明为什么 Mamba、RWKV、RetNet、线性注意力等路线都在试图绕开同一组限制。
Transformer 的 full attention 在长序列上代价高昂,状态空间模型试图用可学习状态在线性时间里携带历史。本文从最小状态空间直觉讲到 S4 和 Mamba,解释 selective state space、parallel scan 为什么重要,以及 SSM 为什么有吸引力但还不能简单宣布取代 Transformer。
后 Transformer 路线不是一条路。线性注意力试图改写 softmax attention,RWKV 把 RNN 推理形态和 Transformer 训练经验结合,RetNet 在 parallel、recurrent、chunkwise 三种模式之间建立 retention 机制。本文比较这些路线如何降低长序列成本,以及它们为什么仍要面对质量、硬件和训练稳定性的考验。
后 Transformer 时代不太可能是某个新架构一夜之间消灭 Transformer,更可能是 attention、SSM、MoE、检索、外部记忆、工具调用和多模态模块逐渐混合。本文回顾本系列主线,解释为什么 Transformer 很难突然消失,也为什么它不可能原样解决所有问题。
大模型训练最怕的不是 loss 降得慢,而是它在看起来一切正常时突然尖峰、发散、NaN。本文把 Transformer 训练稳定性拆开讲:梯度为什么会爆炸,warmup 为什么重要,FP16/BF16 混合精度有什么数值陷阱,Pre-LN 为什么比 Post-LN 更容易训深,以及为什么稳定性是一套诊断系统,不是一个超参魔法。
BERT 不是“早期大模型”的历史遗物,而是 Encoder-only Transformer 路线的代表。本文解释为什么 BERT 选择双向编码器,Masked Language Modeling 到底在学什么,Next Sentence Prediction 为什么后来被质疑,以及为什么 BERT 天然适合分类、匹配、抽取这类理解任务,却不是自回归生成模型。
从「self-attention 是排列等变的」这件几乎被忽视的事实出发,推导出位置编码不是装饰、不是工程小技巧,而是结构性必需。原论文为什么选正弦、那个奇怪的 10000 是怎么来的、PE 与 embedding 是相加还是拼接、可学习位置和 sinusoidal 的本质差别在哪、为什么训练 512 推理 2048 会让可学习位置难以直接外推——这一篇把这些问题一次讲完,并把读者交到现代位置编码(RoPE、ALiBi)的门口。
把 Transformer encoder 从“左半边”这个模糊概念拆成可操作的结构:单层里 self-attention、FFN、残差、LayerNorm 各做什么;6 层堆叠为什么不是重复劳动;encoder 输出为什么适合理解任务而不直接擅长生成;以及它和 decoder-only、encoder-decoder 两条路线到底差在哪。
把 Transformer decoder 拆开讲透:masked self-attention、cross-attention、FFN 三块子层如何串起来;训练时为什么能并行、推理时为什么必须串行;以及 decoder-only 为什么会成为 GPT 时代的主流路线。
从 ResNet 的核心思想出发,讲清 Transformer 里残差连接真正解决的不是“信息保留”这种空泛说法,而是优化路径、梯度传播和迭代修正。顺带说明为什么 pre-norm 能训得更深、为什么现代大模型会讨论 residual scaling,以及 residual stream 为什么是理解大模型机制的关键对象。
从公式到工程把 LayerNorm 讲清楚:它在每个 token 内部如何做归一化,为什么比 BatchNorm 更适合变长序列和自回归训练,post-LN 与 pre-LN 对梯度路径有什么影响,RMSNorm 又为什么会在现代大模型里大量替代标准 LN。
把 Transformer block 里那个看起来最不起眼的两层 MLP 真正讲清楚——4 倍扩张比的来历、逐位置而不是跨位置的设计、Geva 等人 2021 年提出的「键值记忆」视角、SwiGLU/GLU/GeGLU 的现代变体、参数量分布、可解释性研究、量化时的瓶颈,以及它和 MoE 的关系。
把 2017 年 Transformer 原论文的训练配方完整复现一遍——数据集、硬件、优化器、学习率公式、warmup、label smoothing、dropout、batching by tokens、beam search 推理。重点解释那个看起来很神秘的学习率公式 lr = d^(-0.5) · min(step^(-0.5), step · warmup^(-1.5)),以及为什么 warmup_steps=4000 这个魔法常数不能去掉。
把《Attention Is All You Need》的实验结果拆开看:WMT14 英德与英法任务上的 headline number 到底意味着什么,为什么 8 张 P100、3.5 天训练就足以压过当时最强的 RNN 与 CNN 路线,注意力可视化又真实说明了什么,哪些地方是结论,哪些地方只是 2017 年特定 benchmark 下的胜利。
从“模型到底在预测什么最小单位”这个问题出发,把 tokenization 讲清楚:按词为什么 OOV 爆炸,按字节或字符为什么序列太长,BPE、WordPiece、SentencePiece 分别怎么切、各自优化目标是什么,为什么现代大模型最后大多落在“子词 + 字节兜底”这条折中路线上。
预训练不只是“拿海量文本先训一下”这么笼统,而是先决定模型到底要预测什么。本文把三条主线拆开:GPT 的自回归语言建模、BERT 的掩码语言建模、T5/BART 的序列到序列去噪。它们分别擅长什么、牺牲什么,为什么最后大模型主航道几乎都走向了 decoder-only 的 next-token prediction。
全参数微调的代价 → Adapter / Prefix Tuning / Prompt Tuning 的早期尝试 → LoRA 低秩分解的核心洞察 → r 与 alpha 的真实关系 → QLoRA 与 DoRA 的工程演进 → 与全参数微调的效果对比 → 灾难性遗忘与多任务部署。这一篇把「为什么不再有人对 7B 模型做全参数 SFT」讲清楚。
预训练模型会补全,不等于会按人类意图回答。本文把 instruction tuning 的逻辑讲清楚:SFT 数据从哪里来,prompt-response 格式为什么能改写模型行为,FLAN、InstructGPT、Self-Instruct、LIMA、Orca 分别贡献了什么,以及为什么“会听话”本质上是分布重定向,而不是凭空长出新知识。
SFT 只能让模型学会模仿示范答案,不能充分表达“人更喜欢哪种回答”。本文把 RLHF 的主线讲透:奖励模型为什么出现,PPO 版本的 RLHF 解决了什么又带来了什么成本,DPO 为什么能绕开显式强化学习,GRPO 又为什么在可验证奖励和推理场景里流行起来。
从 Kaplan 到 Chinchilla,把 scaling laws 讲清楚:为什么 loss 会随着参数量、数据量、计算量呈幂律下降,为什么“更大模型”不是唯一答案,compute-optimal 训练到底在优化什么,以及为什么过去很多大模型其实不是参数太少,而是每个参数看到的 token 太少。
大模型训练里最贵的不只是算力,还是高质量数据。本文把数据工程拆开讲:语料从哪里来,为什么去重、过滤、混配、污染控制都属于“模型能力工程”,C4、The Pile、RefinedWeb、Dolma 这些语料路线各自代表什么,以及为什么 scaling laws 最终会把问题推回到数据质量上。
为什么 attention 是 O(n²),O(n²) 到底贵在哪里,5 类降复杂度方案的优劣,FlashAttention 不是 O(n) 这件事,长上下文是怎么把架构师逼疯的。
把 18 篇文章里讲过的所有零件——QKV、多头注意力、causal mask、位置编码、FFN、残差、归一化——拼成一张完整的 Transformer 图。跟随一个 token 走完从输入到输出的全部旅程,建立对架构的「身体记忆」。
单头 attention 只有一组 softmax 权重,只能在一种相似度度量下做一次聚合。Multi-Head Attention 通过多套独立的 Q/K/V 投影,让模型在同一步内并行建模多种关系,并在几乎不增加参数量的前提下提升表达力。
> 本文从零推导注意力机制点积方差的来源,解释缩放因子如何防范梯度弥散,并作为大模型 Scaling Laws 数值稳定的基石。
从 cross-attention 到 self-attention 的退化路径 → 为什么 self-attention 是 O(1) 跳数 → 为什么它对位置完全无知(permutation-equivariant) → 「The cat sat on the mat. It was tired.」中 it→cat 的共指消解 → 为什么需要位置编码 → attention 不等于解释(向第 52 篇预告)。
信息检索类比 → Bahdanau 到 Q/K/V 的演化 → 为什么要分开 Q/K/V → softmax($QK^\top$/$\sqrt{d_k}$)V 公式逐项拆解 → 维度走查 → 三 token、d_k=2 的玩具示例手算 → additive vs multiplicative 取舍 → 自注意力时 Q/K/V 同源的特殊性。这是整个系列最重要的一篇。
把 Bahdanau, Cho, Bengio 2014 那篇「Neural Machine Translation by Jointly Learning to Align and Translate」逐项拆开。固定 context vector 的瓶颈、双向 RNN 编码、additive attention 公式 vᵀtanh(W₁s + W₂h)、与 Luong 2015 multiplicative attention 的取舍,以及为什么这是 Q/K/V 的雏形。
RNN 三难(长程依赖、梯度稳定、训练并行)的系统分析;attention 如何作为补丁逐步把 RNN 推向极限;Vaswani 2017 抛弃循环的范式革命
从人类阅读时的眼动出发,把「注意力」拆成视觉生理、翻译对齐、加权平均三件事。讲清楚为什么权重必须满足非负与和为一、为什么 softmax 不是审美选择而是可微优先的工程结果,以及为什么我们要选连续概率选择而不是 argmax。
在 Transformer 出现之前,序列建模属于 RNN 的世界。本文从 Vanilla RNN 讲起,经过 BPTT、梯度消失爆炸、LSTM、GRU,到 Sutskever 2014 的 Seq2Seq 框架,完整讲述 RNN 时代的故事和它留下的工程经验。
用 6 张 matplotlib 图和一个真实可运行的 toy MLP,把神经网络从单神经元、前向传播、损失函数、反向求导、梯度下降、NumPy/PyTorch 实现一路讲到为什么序列任务最终需要 RNN。
embedding 是把离散的词变成稠密向量的桥梁。从 one-hot 的痛苦出发,经过 Firth 的分布假设、word2vec、GloVe、ELMo、BERT,一路走到现代 LLM 的 embedding 矩阵,本文把这条 70 年的演化讲清楚。
从《Attention Is All You Need》出发,把注意力机制、Transformer 架构、训练范式、模型变体、推理工程、可解释性与未来架构串成一条 58 篇主线加一篇桥接文的深度博客线。
Softmax 不是一个孤立的归一化函数,而是把任意实数分数变成概率分布的一座桥。本文从'为什么需要它'出发,讲清楚公式、几何、温度、稳定性、与交叉熵的配合,以及它在 Transformer 注意力里扮演的关键角色。
神经网络真正会「学习」靠的是两件事:把误差变成可微分的损失函数,再沿着这个损失对参数的梯度方向一点点往下挪。本文从一维抛物线讲到多变量梯度,从两层网络的手算反向传播讲到为什么 backprop 是 O(参数量),再到 Transformer 为什么几乎一律选 Adam/AdamW,希望把「网络是怎么学的」这件事彻底讲透。
上一篇我们论证了一件事——纯线性的网络再深,也只是一个线性变换。把 $W2(W1\mathbf{x} + \mathbf{b}1) + \mathbf{b}2$ 展开就是 $W'\mathbf{x} + \mathbf{b}'$。线性的复合还是线性,这是线性代数的铁律。
如果你问我「神经网络到底是什么」,我会先把所有教材合上,然后给你一句朴素得近乎敷衍的话——神经网络就是一个函数。
这是【Transformer 与注意力机制】系列的第一篇,承担两件事:一是把这套五十多篇文章为谁写、解决什么问题、彼此之间是什么关系交代清楚;二是为完全没基础的读者画出一条从向量、点积、矩阵乘法走到自注意力、再走到大语言模型的爬升路径,让你在投入时间之前先知道终点在哪、路上要经过哪些坎、读完之后你会、还不会做什么事。
回到 2017 年 6 月那篇论文:八位作者、Google Brain/Translate 的内部背景、LSTM 时代的工程困境、为什么这篇在当年是「机器翻译的论文」、为什么七年后却被读成了「大模型时代的圣经」。
把时序深度学习放回量化系统里讨论:TCN 的因果卷积/扩张/残差三件套、Transformer 在金融上的位置编码与稀疏注意力改造、IC loss 与分位数损失、训练-推理偏移与多种子集成、与传统因子的残差融合、ONNX/TorchScript 部署与延迟监控。给出可直接套用的 PyTorch 代码与 vectorbt 评估骨架。