Skip to content

传统模型: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 的简化版,效果接近。

参考资料

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 为什么赢了:范式切换

维度CNNRNN/LSTMTransformer
感受野局部,需堆叠扩大全局但衰减全局,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 的串行范式但解决其问题:

  • MambaGu & 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 在边缘设备和特定时序任务上仍不可替代。架构选择是工程权衡,不是"新的一定比旧的好"。

面试怎么考

  1. "RNN 为什么会有梯度消失?数学上怎么解释?" --连乘 $W_h$,奇异值 $<1$ 时指数衰减(见 4.2)。必须能写出梯度连乘式。
  2. "LSTM 如何解决梯度消失?" --细胞状态 $c_t$ 作为信息高速公路,梯度沿 $f_t$(接近 1)传递不衰减(见 4.3)。
  3. "RNN/LSTM 和 Transformer 相比,最大的劣势是什么?" --无法并行(结构性的),导致训练慢,无法 scale 到大模型。这是根本原因,比"长程依赖弱"更重要。
  4. "CNN 处理序列的优缺点?" --能并行、局部特征强,但感受野受限,长程依赖弱(见 4.1)。
  5. "LSTM 的三个门分别干什么?" --遗忘门(决定丢什么)、输入门(决定写什么)、输出门(决定输出什么)。
  6. "GRU 和 LSTM 的区别?" --GRU 合并了遗忘门和输入门为一个"更新门",去掉了细胞状态,参数更少,效果接近。

延伸阅读


上一篇:GPT / LLaMA -- Transformer 路线的胜利。下一篇:模型组件:参数 / 层 / 激活函数 -- 架构的最小积木。

内容采用 CC BY-SA 4.0,代码采用 MIT。