传统模型:CNN / RNN / LSTM
一句话 TL;DR:Transformer 之前统治 NLP 的三大架构。CNN 靠局部窗口提特征,RNN 靠隐状态传信息,LSTM 用门控解决 RNN 的梯度消失。它们各有专长,但都被 Transformer 的并行性和长程依赖能力所取代。理解它们,才能理解 Transformer 为什么是革命。
L1 · 一句话点破
这三种模型的核心差异在于如何处理序列:
- CNN:用滑动窗口看局部,能并行但感受野受限。
- RNN:按时间步逐个处理,能传任意长度但无法并行、长程信息会衰减。
- LSTM:RNN 加门控,缓解长程衰减,但仍是串行。
Transformer 用自注意力同时解决了它们的痛点:全局感受野 + 并行计算。这不是渐进改良,而是计算范式的切换。
L2 · 通俗类比
想象三种处理长文档的方式:
- CNN 像用放大镜逐段扫:每次只看一个固定大小的窗口(如 5 个词),扫完一遍提取局部特征,再堆叠多层扩大视野。优点是速度快(能并行扫),缺点是看不到全局--要看到第 1 词和第 100 词的关系,得堆很多层。
- RNN 像逐字阅读并记笔记:从第 1 个字读到第 100 个字,每读一个就更新一次"笔记"(隐状态)。笔记里累积了所有前文信息。缺点是读到后面,前面的内容在笔记里已经被冲淡了(梯度消失),而且必须逐字读,不能跳着读(无法并行)。
- LSTM 像带"重点标记"的阅读:在 RNN 的笔记机制上加了一个"遗忘门"和"记忆门",主动决定哪些信息该记、哪些该忘。这样重要信息能传得更远。但本质还是逐字读,串行问题没解决。
Transformer 的做法完全不同:让所有词同时互相看见,不用传也不用扫,一步到位建立全局关系。代价是计算量 $O(n^2)$,但 GPU 时代这笔交易划算。
L3 · 正经定义
这三种架构是深度学习处理序列/结构化数据的基础,在 2017 年 Transformer 出现前是主流:
CNN(卷积神经网络):通过卷积核在输入上滑动,提取局部特征。一维 CNN 可处理文本序列,二维 CNN 处理图像。核心特点:局部连接 + 权重共享 + 平移等变。代表文本应用:TextCNN(Kim 2014)用于文本分类。
RNN(循环神经网络):按时间步处理序列,每步维护一个隐状态 $h_t$,由前一步隐状态和当前输入更新:
$$ h_t = \tanh(W_h h_{t-1} + W_x x_t + b) $$
核心特点:任意长度输入 + 隐式记忆。适合变长序列,但训练时梯度沿时间反向传播会指数衰减(梯度消失)或爆炸。
LSTM(长短期记忆网络,Hochreiter & Schmidhuber 1997):RNN 的改进版,引入细胞状态 $c_t$ 和三个门(遗忘门、输入门、输出门),让信息有选择地保留或遗忘:
$$ \begin{aligned} f_t &= \sigma(W_f [h_{t-1}, x_t] + b_f) \quad \text{遗忘门} \ i_t &= \sigma(W_i [h_{t-1}, x_t] + b_i) \quad \text{输入门} \ c_t &= f_t \odot c_{t-1} + i_t \odot \tanh(W_c [h_{t-1}, x_t] + b_c) \ o_t &= \sigma(W_o [h_{t-1}, x_t] + b_o) \quad \text{输出门} \ h_t &= o_t \odot \tanh(c_t) \end{aligned} $$
核心特点:门控缓解梯度消失,长程依赖建模能力大幅提升。GRU 是 LSTM 的简化版,效果接近。
参考资料:
- Kim, 2014 - TextCNN
- Hochreiter & Schmidhuber, 1997 - LSTM 原始论文
- Cho et al., 2014 - GRU
- LeCun et al., 1998 - CNN 经典论文
L4 · 原理深挖
4.1 CNN 处理序列:局部窗口的代价
一维 CNN 处理文本:卷积核大小 $k$,每次看 $k$ 个连续 token,滑动覆盖整个序列。
输入: [t1] [t2] [t3] [t4] [t5] [t6] [t7]
卷积(k=3): [c1] [c2] [c3] [c4] [c5] <- 第一层,感受野=3
卷积(k=3): [d1] [d2] [d3] <- 第二层,感受野=5
卷积(k=3): [e1] [e2] <- 第三层,感受野=7优点:
- 并行:所有位置可同时卷积,训练快。
- 局部特征强:对 n-gram 类特征(如情感词)特别有效。
缺点:
- 感受野受限:要看到第 1 和第 100 个 token 的关系,需要 $\log_k(n)$ 层堆叠或膨胀卷积。层数一多,参数和计算量都涨。
- 顺序信息弱:卷积本身对位置不敏感(平移等变),需要位置编码补充(和 Transformer 一样的问题)。
TextCNN 在短文本分类上效果很好且极快,至今仍是工业界 baseline。但长序列建模上输给 RNN/LSTM 和 Transformer。
4.2 RNN 的梯度消失:数学根因
RNN 的隐状态更新 $h_t = \tanh(W_h h_{t-1} + W_x x_t)$。反向传播时,梯度要通过 $W_h$ 连乘 $t$ 次:
$$ \frac{\partial \mathcal{L}}{\partial h_0} = \frac{\partial \mathcal{L}}{\partial h_t} \cdot \prod_{i=1}^{t} \frac{\partial h_i}{\partial h_{i-1}} = \frac{\partial \mathcal{L}}{\partial h_t} \cdot \prod_{i=1}^{t} W_h^\top \text{diag}(\tanh'(\cdot)) $$
如果 $W_h$ 的最大奇异值 $< 1$,这个连乘会指数衰减到 0(梯度消失);如果 $> 1$,会指数增长到溢出(梯度爆炸)。$\tanh$ 的导数最大值是 1(在 0 处),实际多数情况小于 1,加剧了衰减。
后果:RNN 实际有效记忆长度约 20-50 步。超过这个距离,前面的信息基本学不到了。这是为什么 RNN 做不好长文档任务。
梯度爆炸可以用梯度裁剪缓解,但梯度消失是结构性的,必须改架构--这就是 LSTM 出现的原因。
4.3 LSTM 如何解决梯度消失:细胞状态的高速公路
LSTM 的关键设计是细胞状态 $c_t$:一条贯穿所有时间步的"高速公路",信息可以几乎无损地流过:
$$ c_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_t $$
如果遗忘门 $f_t \approx 1$(保持)、输入门 $i_t \approx 0$(不写入),则 $c_t \approx c_{t-1}$,信息原样传递。反向传播时梯度沿 $c_t$ 这条路走,连乘的是 $f_t$(接近 1),不再指数衰减。
这就是 LSTM 能建模几百步长程依赖的原因。GRU 简化了门控(合并遗忘门和输入门),效果接近但参数更少。
但 LSTM 没解决的根本问题:仍是串行的。$h_t$ 必须等 $h_{t-1}$ 算完才能算,无法并行。序列越长训练越慢。这在 GPU 时代是致命的。
4.4 Transformer 为什么赢了:范式切换
| 维度 | CNN | RNN/LSTM | Transformer |
|---|---|---|---|
| 感受野 | 局部,需堆叠扩大 | 全局但衰减 | 全局,1 步直达 |
| 并行性 | 训练可并行 | 不可并行 | 训练全并行 |
| 长程依赖 | 弱 | LSTM 中等 | 强 |
| 显存 | $O(n)$ | $O(n)$ | $O(n^2)$ |
| 硬件友好 | 中等 | 差(串行) | 极好(矩阵乘) |
Transformer 用 $O(n^2)$ 显存换来了全局感受野 + 全并行。在 GPU 时代,并行性的价值远超显存成本--一个能充分并行利用 GPU 的模型,训练速度可以快几十倍,意味着同样时间能训更大模型、用更多数据。这是 scaling law 得以成立的前提。
CNN 和 LSTM 没有死,而是退守到各自擅长的领域:
- CNN:仍是图像领域的王者(ViT 之外的主流),也在短文本分类、时间序列上有用。
- LSTM:在资源受限的边缘设备、超长时序预测(如 Mamba 之前的状态空间模型前身)仍有市场。
但在通用大模型领域,Transformer 已经是唯一选择。
4.5 2024 年的回马枪:Mamba 与状态空间模型
有趣的是,2023-2024 年出现了一批挑战 Transformer 的工作,思路恰恰是回到 RNN 的串行范式但解决其问题:
- Mamba(Gu & Dao 2023):基于状态空间模型(SSM),训练时可并行(像 Transformer),推理时是 $O(1)$ 状态更新的 RNN(像 LSTM 但不衰减)。
- RWKV:类似思路,RNN 架构但能并行训练。
这些工作瞄准的是 Transformer 的 $O(n^2)$ 痛点,试图用线性复杂度替代。目前它们在小到中等规模上展现了潜力,但还没在超大模型上证明能替代 Transformer。这是当前架构研究的前沿。
L5 · 沿革与坑
沿革
- 1980s-1990s:RNN 和 LSTM 被提出。LSTM(1997)长期被学术界忽视,直到 2010 年代才被深度学习浪潮重新发现。
- 2014 年:Cho 等人提出 GRU,LSTM 的简化版。Bahdanau 等人在 seq2seq 上加注意力,为 Transformer 埋下伏笔。
- 2014-2015 年:TextCNN、Char-CNN 把 CNN 用于文本,短文本分类效果好且快。
- 2014-2017 年:LSTM + 注意力是 NLP 序列任务的 SOTA,机器翻译、问答、NER 都用它。
- 2017 年:Transformer 发表。最初只是"翻译上略好于 LSTM+注意力",但研究者很快发现它可并行、可堆深、可扩展的优势。
- 2018-2019 年:BERT、GPT 证明 Transformer 全面超越 LSTM,NLP 架构大切换。
- 2020 年后:LSTM 在通用 NLP 中基本消失,CNN 退守图像和短文本。Transformer 一统江湖。
- 2023-2024 年:Mamba、RWKV 等线性注意力/状态空间模型出现,试图在特定场景挑战 Transformer,但尚未颠覆。
常见误解
❌ 误解:LSTM 是过时的烂模型,没人用了。 ✅ 真相:在通用大模型领域确实被淘汰,但在资源受限场景(边缘设备、嵌入式)、超长时序预测、小数据任务上,LSTM 仍是合理选择。它的参数效率高、推理快、显存小,这些优势在特定场景仍然成立。
❌ 误解:RNN 的梯度消失是 bug,是设计失误。 ✅ 真相:梯度消失是 RNN 结构的数学必然(连乘 $W_h$),不是 bug。LSTM 用门控绕开它是工程创新。Transformer 用自注意力彻底避开时间步连乘,是更彻底的解法。这是架构演进的三个层次,不是"修正 bug"。
❌ 误解:CNN 不能处理序列,只能处理图像。 ✅ 真相:一维 CNN 处理序列效果很好,TextCNN 至今是短文本分类的强 baseline。CNN 在 NLP 的衰落不是因为"不能处理序列",而是因为长序列建模能力不如 Transformer。
❌ 误解:Transformer 出现后,传统模型就没价值了。 ✅ 真相:在它们擅长的领域仍有价值。CNN 在图像(ViT 之外)、短文本、时间序列上仍是主力。LSTM 在边缘设备和特定时序任务上仍不可替代。架构选择是工程权衡,不是"新的一定比旧的好"。
面试怎么考
- "RNN 为什么会有梯度消失?数学上怎么解释?" --连乘 $W_h$,奇异值 $<1$ 时指数衰减(见 4.2)。必须能写出梯度连乘式。
- "LSTM 如何解决梯度消失?" --细胞状态 $c_t$ 作为信息高速公路,梯度沿 $f_t$(接近 1)传递不衰减(见 4.3)。
- "RNN/LSTM 和 Transformer 相比,最大的劣势是什么?" --无法并行(结构性的),导致训练慢,无法 scale 到大模型。这是根本原因,比"长程依赖弱"更重要。
- "CNN 处理序列的优缺点?" --能并行、局部特征强,但感受野受限,长程依赖弱(见 4.1)。
- "LSTM 的三个门分别干什么?" --遗忘门(决定丢什么)、输入门(决定写什么)、输出门(决定输出什么)。
- "GRU 和 LSTM 的区别?" --GRU 合并了遗忘门和输入门为一个"更新门",去掉了细胞状态,参数更少,效果接近。
延伸阅读
- 📄 Hochreiter & Schmidhuber, 1997 - LSTM
- 📄 Kim, 2014 - TextCNN
- 📄 Cho et al., 2014 - GRU & seq2seq
- 📄 Bahdanau et al., 2014 - 注意力机制起源
- 📄 Gu & Dao, 2023 - Mamba - RNN 范式的回归
- 📝 Understanding LSTM Networks - colah's blog - LSTM 最经典的图解
上一篇:GPT / LLaMA -- Transformer 路线的胜利。下一篇:模型组件:参数 / 层 / 激活函数 -- 架构的最小积木。