Transformer 架构解析

拆开 Transformer 本体:总体结构与三种形态、embedding 与位置编码、自注意力的 QKV 完整机制与因果掩码、多头并行、前馈网络与残差归一化、输出侧的投影与采样,以及它为什么战胜了 RNN。

大语言模型基础讲了模型“是什么”,AI 底层架构讲了“跑在什么上面”,中间还缺一块:模型本体长什么样。这篇把 Transformer 拆开——从整体结构到每个组件的职责,看完你就能把“注意力、多头、前馈网络、残差、归一化”这些术语各归各位。

一、总览:一张图与三种形态

flowchart TB
    A[输入 token] --> B[Embedding 与位置编码]
    B --> C[Transformer 块 乘以 N 层]
    C --> D[最终归一化]
    D --> E[输出投影]
    E --> F[下一个 token 的概率分布]

Transformer 就是这条流水线:文本变成向量,穿过几十层结构相同的“块”,最后变成下一个 token 的概率分布。所有的智能都藏在那些重复的块里,所以拆开一个块就够了。

按块的组织方式,Transformer 有三种形态:

形态代表擅长现状
仅编码器 Encoder-onlyBERT理解:分类、检索、匹配嵌入模型仍在用
仅解码器 Decoder-onlyGPT 系列生成:对话、写作、代码LLM 时代的主流
编码器-解码器T5、翻译模型序列到序列转换翻译等专用场景

后面的拆解以 decoder-only(GPT 一系)为主线——它是所有大语言模型的骨架。

二、输入侧:Embedding 与位置编码

token 进入模型先查表:每个 token 对应一行可学习的向量(维度几百到几千),这一步叫 Embedding——语义相近的词向量相近,原理见基础篇。

紧跟着必须注入位置信息。原因很本质:注意力机制把输入当成“一袋 token”,天生不知道谁前谁后——“猫追狗”和“狗追猫”会得到完全相同的表示。位置编码就是给每个位置一个独特的向量印记,与 Embedding 相加后进入第一层。

位置编码的方案演化值得一提:

  • 早期:固定的正弦函数编码,或可学习的位置表——简单,但长度受限(表只有多大,窗口就多大);
  • 主流现在:旋转位置编码 RoPE——把“位置”变成向量在平面上的旋转角度,两个 token 的相对位置自然体现为旋转差。它对相对距离敏感、可外推到训练时没见过的长度,是各家长上下文方案的共同基石。

三、自注意力:QKV 的完整机制

注意力是整个架构的心脏。底层架构篇给过直白类比,这里把机制走完整。

三个投影矩阵

每个 token 的向量被三组可学习的权重矩阵分别投影,得到三个身份:

  • Query:我在找什么;
  • Key:我能被怎样找到;
  • Value:找到我之后能带走什么内容。

三个矩阵是训练中学出来的——模型自己学会了该用哪种视角“发问”、该用哪种标签“被检索”。

打分与加权

拿到 Q 和 K 之后,四步走完一次注意力:

  1. 打分:当前 token 的 Q 与所有 token 的 K 做点积——方向越一致,分数越高,代表“越相关”;
  2. 缩放:分数除以 √d(d 是向量维度)。不除的话维度一大点积就巨大,softmax 会饱和成“只看一个 token”,梯度也容易消失——这是个纯数值稳定的工程细节;
  3. 归一化:分数过 softmax,变成一组加起来为 1 的注意力权重;
  4. 加权求和:按权重混合所有 token 的 Value,得到当前 token 的新表示——它现在“吸收”了上下文里相关的信息。

因果掩码:GPT 能一边看一边学的关键

decoder-only 模型生成文本时只能看过去、不能看未来。训练时用的是一个小技巧:因果掩码——把每个位置“看向未来”的注意力分数强行置成负无穷,softmax 后权重恰好为零。

这个掩码带来一个惊人的红利:虽然模型在学“预测下一个词”,但掩码保证了每个位置的预测只依赖它左边的内容——于是一句话里所有位置可以同时训练。这就是 Transformer 相比 RNN 的核心优势:训练完全并行。

四、多头注意力:几组视角同时看

一次注意力只能捕捉一种关系。多头的做法是:把向量切成若干份,每份独立做一套完整的 QKV 注意力,最后拼起来再线性融合。

每个头维度更低、视角不同——实践中观察到有的头专注语法结构,有的头追踪指代,有的头对齐长距离依赖。与其说“多头让模型更强”,不如说它让模型同时用多种关系理解同一段话。主流模型几十个头,头数与维度是训练前定好的超参数。

五、块内部:注意力之外还有一半

一个 Transformer 块 = 注意力子层 + 前馈子层,各配一套“稳定器”:

flowchart TB
    A[块输入] --> B[多头自注意力]
    B --> C[残差连接与归一化]
    C --> D[前馈网络 FFN]
    D --> E[残差连接与归一化]
    E --> F[输出到下一层]
  • 前馈网络(FFN):两层 MLP,先把向量升维再压回。注意力负责“在 token 之间传信息”,FFN 负责“对每个 token 独立做深度加工”。一个常被忽略的事实:模型约三分之二的参数在 FFN 里——它被普遍认为是知识的主要存储地;
  • 残差连接:把子层的输入直接加到输出上,形成“信息高速路”。没有它,几十层的深网梯度传不回去、根本训不动;
  • 归一化:把每层激活值拉回稳定区间,防止数值漂移。现代模型多用 RMSNorm,且放在子层之前(Pre-Norm),训练更稳。

块堆叠几十层,逐层加深理解:底层抓语法与局部搭配,高层提炼语义与逻辑——这是训练后自然形成的分工,不是人为设计的。

六、输出侧:从向量回到 token

最后一个块的输出向量,经过最终归一化后做输出投影:映射回词表大小的维度,每个 token 得到一个分数(logit),softmax 后成为概率分布,再按 temperature 等策略采样出下一个 token——采样细节见底层架构篇第五节。

一个优雅的工程细节:输出投影常与输入 Embedding 共用同一个矩阵(权重绑定)。词表到向量的映射和向量到词表的打分互为逆操作,共享参数既省显存又效果相当。

七、为什么 Transformer 赢了

2017 年《Attention Is All You Need》提出 Transformer 时,主流还是循环神经网络 RNN。Transformer 全面取代它,靠三点:

  1. 训练并行:RNN 必须逐 token 顺序处理,GPU 干等;Transformer 配合因果掩码全序列并行,万亿 token 的训练才变得可行;
  2. 长程依赖:RNN 的信息要一站一站传,隔得远就衰减;注意力让任意两个 token 直连,隔十万 token 也是一步可达;
  3. 可扩展性:结构规整、全是矩阵乘法,完美贴合 GPU——缩放定律(加参数加数据就变强)只有在 Transformer 上才跑得通。它是“大力出奇迹”这条路线的载体。

代价也来自同一个源头:注意力两两配对,计算与显存随长度平方增长——这就是长上下文昂贵的根源,也是滑动窗口、KV 压缩、稀疏注意力这些工程对策的出发点(见工作原理篇的上下文组装)。此外,主流大模型还普遍采用混合专家 MoE 变体:每个块里的 FFN 换成多个“专家”,每个 token 只激活其中少数几个——参数总量巨大、单次计算量可控,是当前旗舰模型的常见选择。

八、小结

组件职责一句话
Embeddingtoken 向量化语义相近则向量相近
位置编码注入顺序信息RoPE 用旋转表达相对位置
自注意力token 之间传信息Q 配 K 打分,加权取 V
因果掩码只看过去训练并行化的关键开关
多头多视角并行每个头学一种关系
FFNtoken 内深度加工约三分之二参数、知识存储地
残差 + 归一化稳定深层训练信息高速路与数值稳定器
输出投影向量变概率常与 Embedding 共享权重

对照整个系列:这篇拆的是四层栈里“模型层”那一个格子。从怎么用、怎么想、怎么跑到模型内部与基础设施,这条线现在完整了。