我们已经知道,在大模型推理与训练过程中,所有数据的处理都以**向量(Vector)**形式进行。从整体来看,Transformer 会将整个上下文的信息不断融合进每一个 token 的隐藏状态中,而用于预测下一个词的,是 最后一个 token 经过多层注意力与 MLP 后的隐藏向量(hidden state) 。
下面我们从模型的入口开始------向量的形成(Embedding),再到核心的 Attention、MLP,最后到解码器,完整理解一句话是如何被"理解"并生成下一词的。
一、编码层(Embedding + 位置编码)
当句子进入模型后,会被分割成一个一个的 token(词或子词) 。
这些 token 本质上是词表中的索引(例如 0~5w 的数字)。
Transformer 的"编码层"实际上不是 Encoder 模块,而是:
css
Token Embedding
+ Position Embedding / Encoding
例如 GPT-3 中,Embedding 会将每个 token 映射到一个 12288 维向量。同时,模型还会加入"位置编码",让模型区分句子顺序(例如知道"你吃苹果" ≠ "苹果吃你")。
此时的每个 token 只是一个独立向量,它还不知道上下文,也不知道左边是什么右边是什么。接下来就交给注意力机制。
二、注意力机制(Attention)
经过 Embedding 后,每个 token 的向量都会并行地计算三种投影:
- Q(Query) :我在寻找什么信息?
- K(Key) :别人如何根据我来判断是否应该关注我?
- V(Value) :如果别人关注我,我愿意提供什么内容特征?
这三者来自三组独立的矩阵:
ini
q = xW_Q
k = xW_K
v = xW_V
Attention 的核心是:
Q 与 K 的相似度决定"关注的权重",
V 决定"被拿走的内容"。
数学表现为:
αij=softmax(qi⋅kjdk)\alpha_{ij} = softmax\left(\frac{q_i \cdot k_j}{\sqrt{d_k}}\right)αij=softmax(dkqi⋅kj) outi=∑jαijvjout_i = \sum_j \alpha_{ij} v_jouti=j∑αijvj
这意味着:
- token i 会根据 Q 与所有 token 的 K 的相似度决定"看谁多,看谁少";
- 得到的权重再与 V 加权求和,形成每个 token 融合上下文后的语义表示。
因此,一个"苹果"会在上下文的帮助下从:
"苹果"
变成:
"被小朋友咬了一口的红富士苹果"
它获得了上下文赋予的语义补充。
三、多头注意力(Multi-Head Attention)
为了让模型从不同角度观察句子(如句法、语义、实体、关系等),Transformer 并不是只做一次 QKV,而是:
同一层内部使用多组(如 GPT-3 的 96 组)Q/K/V 并行计算注意力。
每一组叫做一个 head(注意力头) 。
流程:
bash
输入向量 → 96 套 W_Q/W_K/W_V → 得到 96 套 q/k/v
→ 96 次独立的 Attention
→ concat 拼接
→ 再线性融合回到原维度
你可以理解为:
多头注意力 = 单层内部的 96 个"不同视角"同时读懂一句话。
但这一整套操作仍然被视为 一次 Attention 层。
四、MLP(前馈网络 / 多层感知机)
Attention 让 token 得到了上下文信息,但语义仍需要进一步非线性变换与特征组合------这正是 MLP 的作用。
一句话总结:
Attention 负责"信息流动与上下文理解",
MLP 负责"特征增强、非线性表达与高阶抽象"。
例如:
- "塔" 经过 Attention 后知道上下文指的是"埃菲尔铁塔";
- MLP 会进一步加强它的特征,如"铁做的、高、有结构特征"等。
MLP 结构通常是:
d_model → d_ff(扩大数倍)→ d_model
通过两次线性变换 + 激活函数(如 GELU),使 token 的语义表达更丰富。
五、多层 Transformer(Layer Stack)
Transformer 的基本结构单元是 一个 block:
(1)多头注意力
(2)残差 + LayerNorm
(3)MLP
(4)残差 + LayerNorm
GPT-3 175B 具有 96 层这样的 block,层层堆叠,每一层都使 token 的隐藏状态更抽象、更全局、更高阶。
因此:
多头 = 同一层内部的横向并行
多层 = 模型纵向的深度堆叠
两者不是一回事。
六、解码器(线性层 + Softmax)
Transformer 最终会使用"最后一个 token 的隐藏状态"来预测下一词。
流程:
- 线性层(Linear)
将 hidden state(如 12288 维)映射到词表维度(如 50k 维),得到 logits(生猛分数)。 - Softmax
把 logits 转成概率分布,表示每个词作为下一 token 的可能性。
最终:
css
P(苹果) = 0.72
P(香蕉) = 0.10
P(葡萄) = 0.05
...
之后由推理策略(greedy/top-k/top-p 等)选择下一词。
七、最终总结
Transformer 的完整流程可以总结为:
- 文本 → token → Embedding + 位置编码
- 多头注意力让每个 token 与所有其他 token 交换信息
- MLP 进一步抽象特征
- 多层 block 堆叠形成深度理解
- 最后一个 token 的隐藏状态经线性层 + softmax 得到下一词概率
- 推理策略选出下一个 token
这就是 Transformer 结构的核心逻辑。