Embedding和Transformer
为什么 embedding 和 Transformer 是一体的? 为什么训练这么贵,而推理(inference)相对轻?
我来分三层讲清楚:
- 一层讲结构:embedding 在 Transformer 里是什么位置
- 一层讲机制:为什么训练资源消耗惊人
- 一层讲直觉:为什么训练 = 学世界的几何,推理 = 在几何里走一小步
🧩 一、Embedding 是 Transformer 的“输入语言”
Transformer 模型(包括 GPT、BERT、Claude、Gemini…)内部都是在处理向量。 而我们输入的文本是离散符号(tokens)。 两者之间的桥梁,就是 embedding 层。
🔹 1️⃣ Token Embedding
假设我们输入句子:
"AI changes the world"
首先会被分词器切成 token,例如:
["AI", "changes", "the", "world"]
然后每个 token 都会被查表变成一个向量:
"AI" → [0.2, -0.4, 0.8, ...]
"changes"→ [0.1, 0.9, -0.5, ...]
这些向量就构成了一个矩阵: [ E = \begin{bmatrix} v_{AI}
v_{changes}
v_{the}
v_{world} \end{bmatrix} \in \mathbb{R}^{4 \times d} ] 这里 d 通常是 768、1024、4096……这就是 embedding 维度。
🔹 2️⃣ Transformer 接着干什么?
Transformer 的多头注意力层(Multi-Head Attention) 会在这些向量之间计算: [ \text{Attention}(Q, K, V) = \text{softmax}!\left(\frac{QK^\top}{\sqrt{d}}\right)V ] 这里的 (Q,K,V) 也是从 embedding 线性变换来的。
它的本质是:
学会哪些词之间该互相关注, 从而在向量空间中重组语义关系。
经过 N 层这种注意力与前馈网络堆叠后, 输出的每个 token 向量,就携带了上下文语义—— 这是 contextual embedding(上下文嵌入)。
🔹 3️⃣ 总结结构关系
| 模块 | 功能 | 向量空间角色 |
|---|---|---|
| Embedding 层 | 把离散 token 变成连续向量 | 进入语义空间的入口 |
| Transformer Encoder/Decoder | 在语义空间中动态重组、传播、聚焦信息 | 改变语义流形的形状 |
| Output Head(Linear + Softmax) | 把高维语义向量投影回词表概率分布 | 语言输出的出口 |
所以可以说:
Transformer = Embedding 的几何操纵器 它在 embedding 空间里,不断拉伸、旋转、压缩这些语义点,让语言逻辑变成向量运算。
⚙️ 二、为什么训练比推理贵得多
现在讲重点: 为什么训练阶段耗费几百万 GPU 小时,而推理阶段只需要几毫秒?
🔹 1️⃣ 因为训练不仅要“跑模型”,还要“算梯度”
在训练时,模型不是只做前向推理(forward), 还要做反向传播(backward)来更新参数。
前向: [ y = f_\theta(x) ]
反向: [ \nabla_\theta L = \frac{\partial L(f_\theta(x))}{\partial \theta} ]
这个反向传播需要:
- 保存每一层的中间结果;
- 对所有参数求偏导;
- 累积梯度并更新。
所以一次训练步骤的内存和计算量 ≈ 前向 × 3~5 倍。
而推理只要 forward 一遍,没有反向更新。 所以单次推理的 FLOPs(浮点运算量)要小得多。
🔹 2️⃣ 因为训练要遍历海量语料
以 GPT-4 级模型为例:
- 训练数据:几万亿 token;
- 迭代轮数(epochs):多次遍历;
- 参数数量:数千亿;
- 每步 batch:数千条样本;
- 每次更新:全参数矩阵乘法。
这意味着:
训练阶段是在“让模型学世界”,要覆盖所有语义流形。 推理阶段是在“让模型走路径”,只探索其中一小段。
打个比方:
- 训练 = 把整个地图绘出来;
- 推理 = 在地图上走一步。
🔹 3️⃣ 因为训练要同步更新数十亿参数
在分布式训练中(如 GPT、Claude、Gemini 都用的方式):
- 模型参数会被分布到成千上万个 GPU;
- 每个 GPU 计算一部分梯度;
- 然后所有 GPU 要在每步迭代后 同步(all-reduce)更新权重。
网络通信(NCCL、InfiniBand)本身就可能占掉 30~40% 的时间。
推理则不需要这些通信,只要加载权重、forward 一次即可。
🧬 三、直觉总结:训练是在“学几何”,推理是在“走几何”
我们可以这么理解:
| 阶段 | 在语义流形中的操作 | 比喻 |
|---|---|---|
| 训练 | 学习语义流形的形状:不同语句、概念、领域之间的几何关系 | “绘制地图” |
| 推理 | 在这张流形上找到从输入到输出的最短路径 | “在地图上导航” |
绘地图很难,要走遍每个角落、不断校正误差; 导航相对简单,只要知道地图怎么走。
💡 四、延伸:Embedding 和 Transformer 在训练中的分工
| 模块 | 学习内容 | 消耗资源 |
|---|---|---|
| Embedding 层 | 学习词与语义的基础对应 | 相对较少 |
| Attention 层 | 学习词与词的交互关系 | 大量矩阵乘法 |
| FeedForward 层 | 学习非线性组合(语义抽象) | 最耗 FLOPs |
| Output Softmax | 学习语言分布 | 较轻 |
这就是为什么显卡大多在 attention + MLP 层被吃满。
✅ 五、总结一句话
Embedding 是 Transformer 的语言入口,Transformer 是在 embedding 空间中塑造语义几何的机器。
训练阶段是绘制整张“语义地图”——计算巨大、数据海量、要反向传播; 推理阶段只是沿着这张地图走一步——所以便宜得多。