位置编码(Positional Encoding)
Transformer 中让模型理解词序的关键机制,从正弦编码到 RoPE、ALiBi 的演进与对比。
从 RNN 到 Transformer 再到 MoE,理解现代大模型架构的演进脉络
内容摘要
模型架构演进,指的是深度学习处理序列数据(文字、语音、时间序列等)的网络结构从 RNN(Recurrent Neural Network,循环神经网络)一路发展到 Transformer(变换器),再到当前 MoE(Mixture of Experts,混合专家)主导的整个技术路线变迁。
模型架构演进,指的是深度学习处理序列数据(文字、语音、时间序列等)的网络结构从 RNN(Recurrent Neural Network,循环神经网络)一路发展到 Transformer(变换器),再到当前 MoE(Mixture of Experts,混合专家)主导的整个技术路线变迁。
这条演进路线的核心驱动力是两个工程瓶颈:一是早期 RNN 无法并行训练,GPU 算力被浪费;二是长序列信息会在逐步传递中丢失(梯度消失问题)。2017 年 Google 提出的 Transformer 架构用 Self-Attention(自注意力)机制一次性解决了这两个问题,彻底取代了 RNN 成为主流骨架。
对 Agent 开发者而言,理解架构演进不是为了自己造模型,而是为了在选型时搞清楚一个关键问题:为什么现在几乎所有大语言模型(GPT、Claude、Gemini、Llama 等)都是 Decoder-Only Transformer?为什么 2025 年之后前沿模型又全部转向了 MoE?搞懂架构演进的逻辑,才能理解模型的能力边界和资源需求。
模型架构演进可以划分为四个关键阶段,每个阶段解决了前一阶段的核心瓶颈:
| 阶段 | 代表架构 | 核心突破 | 时间段 |
|---|---|---|---|
| 序列建模起步 | RNN / LSTM / GRU | 引入"记忆"处理变长序列 | 1990s-2017 |
| 注意力革命 | Transformer | 全并行 + 全局注意力 | 2017-2020 |
| 三大变体分化 | BERT / GPT / T5 | Encoder-Only / Decoder-Only / Encoder-Decoder 分工 | 2018-2023 |
| 效率与规模并进 | MoE / SSM | 稀疏激活 + 线性复杂度 | 2023-至今 |
RNN 的核心思想是"带记忆的链式处理":每处理一个词,就把当前信息和上一步的隐藏状态(Hidden State)合并,传给下一步。LSTM(Long Short-Term Memory,长短期记忆网络)在此基础上加入了门控机制(Gate),用"遗忘门"、"输入门"、"输出门"控制信息的保留和丢弃,缓解了梯度消失问题。GRU(Gated Recurrent Unit,门控循环单元)是 LSTM 的简化版本,用更少的参数达到类似效果。
但 RNN 家族有一个无法克服的硬伤:必须按顺序逐词处理,无法并行。训练一个 RNN 模型时,GPU 的数千个核心大部分在空等,只有一个在干活。
2017 年论文"Attention Is All You Need"提出的 Transformer 完全抛弃了循环结构,用 Self-Attention 让序列中任意两个位置直接"对话"。打个比方:RNN 像是一个人逐页阅读一本书,读到最后一页时前面的内容已经模糊了;Transformer 则像把整本书的所有页同时摊开在桌上,任意两页之间都能直接比较。
Transformer 的 Encoder(编码器)和 Decoder(解码器)可以单独使用或组合,形成三种主流变体。这三种变体的核心区别在于注意力的方向和训练目标不同(详见下方核心原理)。
标准 Transformer 的注意力复杂度是 O(n^2),模型越大推理越慢。MoE 架构的解决思路是"不是所有参数都需要参与每次计算":模型总参数量很大(如 DeepSeek-V3 有 6710 亿参数),但每个 Token 只激活一小部分专家网络(370 亿参数),大幅降低了实际计算量。
理解架构演进的核心,需要抓住三个关键机制的递进关系:
1. Self-Attention(自注意力)如何取代循环
Self-Attention 的核心操作:对序列中的每个位置,计算它与所有其他位置的相关性分数,然后按分数加权汇总信息。具体通过三个向量实现:
计算公式:Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) * V
除以 sqrt(d_k)(d_k 是 Key 的维度)是为了防止点积值过大导致 softmax 输出极端化。
2. 三大 Transformer 变体的注意力方向差异
当前大模型几乎全部采用 Decoder-Only 架构,核心原因有两个:训练数据只需要普通文本(不需要配对数据),以及推理时可以用 KV Cache 加速(已生成的 Token 不需要重新计算注意力)。
3. MoE 如何实现"大模型、小计算"
MoE 在 Transformer 的每一层(或交替层)中,把标准的 FFN(Feed-Forward Network,前馈网络)替换为多个"专家"FFN + 一个"路由器"(Router/Gate)。路由器根据输入 Token 的特征,选择 Top-K 个专家处理该 Token,其余专家不参与计算。
以 DeepSeek-V3 为例:总共 256 个路由专家 + 1 个共享专家,每个 Token 只激活 8 个路由专家 + 1 个共享专家,实际计算量只相当于一个 370 亿参数的稠密模型,但拥有 6710 亿参数的表达能力。
架构演进全景图:
图中的关键流转:
MoE 稀疏激活机制:
路由器为每个 Token 计算所有专家的得分,只把 Token 发送给得分最高的 K 个专家,其余专家完全不参与计算。共享专家(Shared Expert)始终激活,负责捕获通用知识,避免路由专家之间的冗余。
以下用 PyTorch 演示 Self-Attention 的核心计算过程(约 15 行),帮助理解 Q/K/V 的作用:
# 基于 torch==2.0+ 验证(截至 2026-03)
import torch
import torch.nn.functional as F
# 模拟 3 个词的嵌入向量,每个 8 维
x = torch.randn(1, 3, 8) # (batch=1, seq_len=3, d_model=8)
# Q/K/V 线性投影(实际模型中是可学习参数)
W_q = torch.randn(8, 8)
W_k = torch.randn(8, 8)
W_v = torch.randn(8, 8)
Q = x @ W_q # 查询向量
K = x @ W_k # 键向量
V = x @ W_v # 值向量
# 计算注意力分数并归一化
scores = Q @ K.transpose(-2, -1) / (8 ** 0.5) # 缩放点积
weights = F.softmax(scores, dim=-1) # 转为概率分布
output = weights @ V # 加权汇总
print("注意力权重矩阵(3x3,每行是一个词对所有词的关注度):")
print(weights.squeeze().detach())
# 每行加起来等于 1,表示当前词的注意力如何分配给序列中的每个位置
Q @ K 的转置得到的是一个 3x3 矩阵,第 i 行第 j 列表示"第 i 个词对第 j 个词的关注程度"。softmax 将每行归一化为概率分布,再乘以 V 完成信息汇总。实际模型中会使用多头注意力(Multi-Head Attention)将这个过程拆分到多个子空间并行执行,每个"头"学习不同的关注模式。
| 概念 | 与模型架构演进的区别 | 更适合关注的重点 |
|---|---|---|
| Attention Mechanism(注意力机制) | 注意力机制是 Transformer 内部的一个组件,不等于 Transformer 本身。RNN 也可以加注意力(Seq2Seq + Attention) | 关注"注意力如何计算相关性"这个具体算法 |
| Model Scaling(模型缩放) | 架构演进讲的是"网络结构怎么设计",模型缩放讲的是"同一架构下参数量、数据量、计算量怎么配比" | 关注 Scaling Law 和训练资源规划 |
| Model Fine-tuning(模型微调) | 架构演进是预训练阶段的基础设施选择,微调是在已有架构上调整模型行为 | 关注 LoRA、全量微调等训练后技术 |
核心区别:
| 常见误区 | 正确理解 |
|---|---|
| Transformer 完全淘汰了 RNN | 不完全正确。RWKV(一种线性 RNN)在 2025 年已达到同规模 Transformer 的水平;xLSTM-7B 训练速度是同规模 Transformer 的 3.5 倍。循环结构以新形式回归 |
| 注意力权重高 = 这个词更"重要" | 注意力权重反映的是模型计算时的信息提取路径,不等于人类理解的"重要性"。有研究发现,移除注意力最高的 Token 有时对输出几乎没有影响 |
| 模型参数量越大效果一定越好 | MoE 架构已经证明"总参数量"和"激活参数量"是两回事。DeepSeek-V3 用 370 亿激活参数就达到了很多 700 亿稠密模型的水平。参数效率比绝对数量更重要 |
| Decoder-Only 胜出是因为架构本身更优 | 主要原因是工程经济性:训练只需要普通文本不需要配对数据,推理可以用 KV Cache 加速。有研究表明在同等计算量下,Encoder-Decoder 在指令跟随任务上反而更优 |
参考答案:
RNN 按顺序逐词处理,信息通过隐藏状态逐步传递,距离越远信息损失越大(梯度消失)。Transformer 用 Self-Attention 让任意两个位置直接计算相关性,信息传递不受距离影响。此外 RNN 必须串行计算(后一步依赖前一步),而 Transformer 全序列并行计算,训练速度快一个数量级以上。
参考答案:
两个核心原因:(1)训练数据门槛低 -- Decoder-Only 只需要普通文本做 Next Token Prediction,互联网上有无限量的训练数据;而 Encoder-Decoder 需要输入-输出配对数据(如翻译对),数据获取成本高得多。(2)推理效率高 -- Decoder-Only 在生成新 Token 时,已生成部分的 KV 可以缓存复用(KV Cache),不需要重新计算;而 Encoder-Decoder 每次生成都需要重新运行交叉注意力。这两个工程优势使得 Decoder-Only 在大规模场景下更实用。
参考答案:
DeepSeek-V3 采用 MoE 架构,256 个路由专家 + 1 个共享专家,每个 Token 只激活 8+1 个专家,实际计算量相当于 370 亿参数的稠密模型。部署时需要注意:(1)虽然计算量小,但所有专家的参数都需要加载到显存中(或通过 Offloading 管理),显存需求仍然很大;(2)路由器的负载均衡问题 -- 如果某些专家被过度调用,会形成计算热点,降低吞吐量;(3)MoE 模型的通信开销 -- 在多 GPU 部署时,Token 需要被路由到不同 GPU 上的专家,跨卡通信可能成为瓶颈。
优先展示同分类且标签更接近的内容,方便继续串联学习。
Transformer 中让模型理解词序的关键机制,从正弦编码到 RoPE、ALiBi 的演进与对比。
根据参数规模选择合适的 LLM,平衡性能、成本和硬件需求
通过路由器动态选择少量专家子网络处理每个 Token,用更多参数换更强能力而不增加推理成本。