本文从全局依赖、并行计算、可扩展性三个维度,系统对比 Transformer 与 CNN、RNN 的差异,解释为什么 Transformer 能成为大模型时代的基础架构。
一、为什么需要对比?
在 Transformer 出现之前,处理序列数据的主流架构是:
| 架构 | 代表 | 核心思想 |
|---|---|---|
| RNN | LSTM、GRU | 按时间步顺序处理 |
| CNN | TextCNN、ResNet | 局部卷积 + 堆叠 |
它们都能处理序列,但都有各自的瓶颈。
Transformer(2017) 用自注意力机制替代循环和卷积,一次性解决了两个核心问题:
-
长依赖
-
并行计算
二、三大维度对比
维度一:依赖建模
| 架构 | 依赖范围 | 说明 |
|---|---|---|
| Transformer | 全局 | 任意两位置直接交互 |
| RNN | 序列 | 长距离信息衰减 |
| CNN | 局部 | 需堆叠扩大感受野 |
RNN 的问题:
-
信息必须逐步传递
-
长距离依赖会衰减
-
「我 昨天 在 公园 看到 一只 可爱的 小猫」------处理「小猫」时可能忘了「昨天」
CNN 的问题:
-
卷积核只看局部
-
要靠堆叠多层才能扩大感受野
-
仍然难以建模全局依赖
Transformer 的优势:
-
自注意力 让任意两个 token 直接建立关联
-
不随距离衰减
-
长依赖建模能力强
维度二:并行计算
| 架构 | 并行性 | 说明 |
|---|---|---|
| Transformer | 高 | 所有位置同时计算 |
| RNN | 低 | 必须顺序处理 |
| CNN | 中 | 受卷积核大小限制 |
RNN 的问题:
bash
h_1 = f(x_1, h_0)
h_2 = f(x_2, h_1) ← 必须等 h_1 算完
h_3 = f(x_3, h_2) ← 必须等 h_2 算完
...
-
串行计算
-
无法利用 GPU 并行能力
-
训练慢
Transformer 的优势:
-
所有位置同时计算
-
充分利用 GPU
-
训练快
这就是 Transformer 能训练千亿/万亿参数模型的关键。
维度三:长上下文
| 架构 | 长上下文 | 说明 |
|---|---|---|
| Transformer | 强 | 注意力直接建模 |
| RNN | 弱 | 会遗忘旧信息 |
| CNN | 弱 | 只能看局部 |
RNN 的问题:
-
隐藏状态容量有限
-
信息随步数衰减
-
长文本效果差
CNN 的问题:
-
感受野有限
-
只能看局部
-
需要堆叠多层
Transformer 的优势:
-
自注意力直接建模
-
长上下文表现好
-
适合处理长文档
三、综合对比表
| 维度 | Transformer | RNN | CNN |
|---|---|---|---|
| 依赖建模 | 全局 | 序列 | 局部 |
| 并行性 | 高 | 低 | 中 |
| 长上下文 | 强 | 弱 | 弱 |
| 训练速度 | 快 | 慢 | 中 |
| 可扩展性 | 强 | 弱 | 中 |
| 代表 | BERT、GPT | LSTM、GRU | TextCNN、ResNet |
四、两大核心优势
1. 长依赖建模能力强
自注意力 让任意两个 token 直接建立关联:
Attention(Q, K, V) = softmax(QK^T / √d) V
-
不随距离衰减
-
全局可见
-
长依赖建模能力强
对比 RNN:
-
RNN 必须逐步传递
-
信息会衰减
-
长依赖弱
2. 并行计算充分利用 GPU
Transformer:
-
所有位置同时计算
-
充分利用 GPU 集群
-
训练快
支撑千亿/万亿参数模型训练:
-
GPT-3:175B 参数
-
GPT-4:推测 1.8T 参数
-
LLaMA-70B:70B 参数
没有并行计算,这些模型根本训不出来。
五、代价:计算复杂度 O(n²)
Transformer 不是没有代价:
| 维度 | 问题 |
|---|---|
| 计算复杂度 | O(n²)(n = 序列长度) |
| 显存占用 | 长序列时显存爆炸 |
| 推理速度 | 长序列推理慢 |
例子:
序列长度 1000 → 注意力矩阵 1000×1000 = 100 万
序列长度 10000 → 注意力矩阵 10000×10000 = 1 亿
优化方向:
| 方法 | 说明 |
|---|---|
| FlashAttention | 优化注意力计算,减少显存 |
| 稀疏注意力 | 只计算部分注意力 |
| 滑动窗口注意力 | 只看局部窗口 |
| 线性注意力 | 把 O(n²) 降到 O(n) |
这些优化是大模型工程的重要方向。
六、实际应用对比
1. NLP
| 任务 | Transformer | RNN | CNN |
|---|---|---|---|
| 机器翻译 | ✅ SOTA | 一般 | 一般 |
| 文本分类 | ✅ SOTA | 一般 | 较好 |
| 问答 | ✅ SOTA | 一般 | 一般 |
| 文本生成 | ✅ SOTA | 一般 | 弱 |
2. 视觉
| 任务 | Transformer | CNN |
|---|---|---|
| 图像分类 | ViT | ResNet |
| 目标检测 | DETR | YOLO |
| 分割 | SegFormer | U-Net |
趋势:Transformer 正在「统一」NLP 和 CV。
七、为什么 Transformer 能取代 RNN/CNN?
| 维度 | RNN/CNN | Transformer |
|---|---|---|
| 长依赖 | 弱 | 强 |
| 并行 | 差 | 好 |
| 可扩展 | 难 | 易 |
| 效果 | 一般 | 好 |
| 生态 | 分散 | 统一 |
核心:
Transformer 用「自注意力」替代「循环」和「卷积」,解决了长依赖和并行计算两大根本问题,从而支撑起大模型时代。
八、总结
| 维度 | Transformer | RNN | CNN |
|---|---|---|---|
| 依赖建模 | 全局 | 序列 | 局部 |
| 并行性 | 高 | 低 | 中 |
| 长上下文 | 强 | 弱 | 弱 |
| 训练速度 | 快 | 慢 | 中 |
| 可扩展性 | 强 | 弱 | 中 |
| 代价 | O(n²) | O(n) | O(n) |
两大核心优势:
-
全局依赖:自注意力让任意两 token 直接交互
-
并行计算:所有位置同时计算,支撑大模型
代价:
-
O(n²) 复杂度
-
长序列显存和计算开销大
优化方向:
-
FlashAttention
-
稀疏注意力
-
线性注意力
一句话:
「Transformer 用自注意力替代循环和卷积,全局依赖 + 并行计算,是它取代 RNN/CNN、成为大模型基础架构的根本原因。」
记忆:
「全局、并行、可扩展------Transformer 三大优势;O(n²)------它的代价。」