1. 为什么要发明 Transformer?
早期的 RNN/LSTM 需要逐 token 处理,步步相传的状态既慢又难以捕捉长距离依赖。Transformer 直接把序列映射成矩阵,一次性计算任意两个 token 的「相关度」,天然支持并行。
- 并行度高:GPU 可把矩阵乘法堆满。
- 依赖路径短:信息最远只隔两层线性层。
- 可扩展性强:层数、宽度、头数都能独立横向扩展。
LLM Research Notes
记录从 Transformer 到 GPT-1/2/3 的关键设计:自注意力、扩容策略、提示学习与采样技巧,用 SVG 图示和简明数学式辅助理解。
GPT Series
延续 Transformer 专题,把三代 GPT 的核心设计、数据集与推理方式整理成图文文章。
Deep Dive
Transformer 让「注意力」成为主角。通过抛弃循环结构,它同时对整段序列建模,而不是一个 token 接一个 token 地处理。下面按照由浅入深的顺序讲解。
早期的 RNN/LSTM 需要逐 token 处理,步步相传的状态既慢又难以捕捉长距离依赖。Transformer 直接把序列映射成矩阵,一次性计算任意两个 token 的「相关度」,天然支持并行。
编码器负责把输入序列压缩成上下文语义;解码器在生成阶段一边看已生成 token,一边通过 cross-attention 读取编码器的语义。
对于一批长度为 n 的 token,Embedding 得到矩阵
X ∈ ℝn×d_model。线性层把它投影为 Q、K、V:
Q = X · WQ, K = X · WK, V = X · WV
注意力分数通过 QKᵀ/√dk 得到,Softmax 后与 V 相乘完成信息加权。缩放项抑制大向量带来的梯度爆炸。
单个注意力头可能只能关注一种模式(例如语法依赖)。通过把向量拆成多个子空间,每个头可以学习不同特征,再把各子空间拼接回
d_model 维度。
WQ/K/V。Concat,再乘以 WO 融合。Transformer 自己不懂位置,需要使用正弦/余弦编码或学习型位置嵌入把顺序注入到向量。残差连接让梯度更容易流动,LayerNorm 则保持数值稳定。
原始论文使用固定正余弦,频率覆盖不同尺度;现代 LLM(如 LLaMA)常用 RoPE(旋转位置编码)来捕捉相对位置信息。
Transformer 可以用于编码任务(BERT 系列)、自回归生成(GPT 系列)、编码解码(T5、BART)。训练时需注意:
d_model-0.5 衰减。部署阶段可以用 Int8/Int4 量化减少显存,也可以通过 LoRA、Adapter 等增量学习方式高效微调。