← 返回题目列表

Transformer 相比 RNN 和 CNN 有什么优势?代价是什么?

高频 中等 第 11 / 25 题 更新于 2026/08/03
TransformerRNNCNN自注意力并行

简化版

Transformer 用自注意力取代了 RNN 的递归和 CNN 的卷积,核心优势有两个:① 可并行——RNN 必须按时间步一个个算(无法并行),Transformer 一次性并行处理整个序列,训练大幅提速;② 长程依赖强——自注意力让任意两个 token 之间是「一步直达」(路径长度 O(1)),而 RNN 要经过很多步、信息会逐渐衰减(梯度消失),CNN 要堆很多层才能覆盖远距离。代价是自注意力的计算和显存是 O(n²)(序列越长越贵),且没有内建的顺序/局部先验,需要额外的位置编码。

详细版

三者的机制

  • RNN/LSTM:按时间步递归,h_t = f(h_{t-1}, x_t),用隐状态携带历史。
  • CNN:用固定大小的卷积核在局部窗口滑动,靠堆叠扩大感受野。
  • Transformer:自注意力让每个 token 直接与所有 token 交互,加权聚合。

关键维度对比

维度RNN/LSTMCNNTransformer
序列并行否(时间步串行)
任意两点路径长度O(n)O(n/k) 或 O(log_k n)O(1)
长程依赖弱(易衰减)中(靠堆层)
每层计算复杂度O(n·d²)O(n·k·d²)O(n²·d)
顺序/局部先验有(递归天然有序)有(局部性)无(需位置编码)
长序列成本线性线性二次(O(n²))

为什么并行和长程这两点如此关键

  • 并行让 Transformer 能吃下海量数据、训超大模型,直接催生了大模型时代(RNN 因串行难以规模化)。
  • 长程依赖强让它能建模「相隔很远但相关」的内容(篇章级语义、跨句指代),这是语言理解的核心。

代价

  • O(n²):长上下文计算和显存爆炸(催生 FlashAttention、稀疏注意力等)。
  • 无归纳偏置:不像 CNN 有局部性、RNN 有顺序性,Transformer 要靠位置编码补顺序,且数据量小时不如有先验的模型,得靠大数据才能发挥。

完整版教学

一、先看 RNN 的两个致命短板

RNN/LSTM 曾是序列建模的主力,但有两个硬伤:

① 无法并行(串行瓶颈)。 RNN 的隐状态 h_t 依赖 h_{t-1},必须从左到右一步步算,第 t 步要等前 t−1 步都算完。这意味着序列越长,计算越无法用 GPU 的并行能力铺开,训练极慢。在「大数据 + 大模型」的路线上,串行是致命的——你没法高效地喂给它海量数据。

② 长程依赖弱(信息衰减)。 两个相距 n 的 token,信息要经过 n 步递归传递,梯度在这条长链上反复相乘,容易梯度消失或爆炸,远处的信息被逐渐「遗忘」。LSTM/GRU 用门控缓解,但根本上仍难建模很长的依赖。

二、CNN 的改善与局限

CNN 把序列当一维信号,用卷积核在局部窗口提取特征:

  • 能并行(各位置卷积独立),解决了 RNN 的串行问题。
  • 感受野受限于核大小:一层只能看到 k 个邻居,要覆盖远距离得堆很多层(感受野随层数线性或对数增长)。两个远端 token 要经过多层才能「相遇」,长程建模仍不直接。
  • 好处是自带局部性先验,在局部模式(n-gram、局部纹理)上高效。

三、Transformer 的破局:自注意力

自注意力让每个 token 一次性与所有 token 直接交互,加权聚合信息。这带来两个质变:

① 完全并行。 所有位置的注意力可以同时算(一个大矩阵乘法),充分利用 GPU。训练时整条序列一起处理,不再有时间步串行。这是 Transformer 能规模化、能训超大模型的根本前提。

② 任意两点”一步直达”(路径长度 O(1))。 无论两个 token 相距多远,注意力都能让它们在同一层直接连接,信息传递不经过中间步骤,不衰减。这让长程依赖建模变得直接而强大——第 1 个词和第 1000 个词可以立刻互相关注。

「路径长度」是理解优劣的关键指标:RNN 是 O(n)(要走 n 步)、CNN 是 O(log n)~O(n/k)(要过几层)、Transformer 是 O(1)(一层直达)。路径越短,长程信息越不易丢失、梯度越好传。

四、天下没有免费的午餐:Transformer 的代价

① O(n²) 的计算与显存。 每个 token 要和所有 token 算相关度,产生 n×n 的注意力矩阵,计算 O(n²·d)、显存 O(n²)。序列一长(32K、128K),成本二次爆炸。这催生了一整个「高效/长上下文」研究方向:FlashAttention(IO 优化、精确)、稀疏/线性注意力(降阶、近似)、滑动窗口、KV 压缩等。相比之下 RNN 是线性 O(n) 成本。

② 缺乏归纳偏置。 CNN 内建局部性、RNN 内建顺序性,这些「先验」让它们在小数据上也能学得不错。Transformer几乎没有结构先验:注意力对顺序无感(要靠位置编码补),也不假设局部性。好处是灵活、不受先验束缚,能从数据里学到任意模式;坏处是必须用大数据才能发挥——数据少时,缺先验反而不如 CNN/RNN。这也解释了为什么 Transformer 是在「大数据 + 大算力」时代才真正封神。

简要说权衡:Transformer 用「O(n²) 的成本 + 对大数据的依赖」,换来了「完全并行 + 长程一步直达」——正是这两点让它成为大模型的地基。

五、为什么最终是 Transformer 赢了

把账算总:

  • 深度学习进入「大数据 + 大算力」时代,能并行 = 能规模化,RNN 的串行使它出局。
  • 语言、图像的高层语义高度依赖长程、全局关系,自注意力的 O(1) 路径最擅长这个。
  • 缺乏先验在小数据是缺点,在大数据反而是优点(不被先验限制,容量随规模释放),完美契合 Scaling Law。
  • O(n²) 的成本问题是「可工程优化」的(FlashAttention 等已大幅缓解),而 RNN 的串行是「结构性的」难以根治。

这些因素叠加,让 Transformer 从 NLP 一路统一到视觉(ViT)、语音、多模态。

六、面试拆解算例

这类题最怕只讲术语,最好把它落成一次资源账。假设模型有 32 层、hidden size 为 4096、序列长度从 2K 增到 16K,标准注意力的相关度矩阵规模会从 2K × 2K 变成 16K × 16K,理论元素数量放大 64 倍。即使具体算子不会真的把所有中间矩阵都落到 HBM,复杂度曲线仍然决定了 prefill 延迟和显存压力会快速上升。

attention_scores_per_head = seq_len * seq_len
2K  ->  2,048 * 2,048   ≈ 4.19M
16K -> 16,384 * 16,384  ≈ 268.44M
放大倍数 ≈ 64
观察维度面试要说清的问题工程判断
张量形状Q/K/V、hidden state 或路由权重怎样变化能否解释实现差异
复杂度随层数、序列长度、head 数怎样增长谁先成为瓶颈
质量风险是否改变训练分布或表达能力会不会掉点
部署代价算子、框架、缓存是否支持能不能稳定上线
输入 token -> embedding -> 注意力/FFN/归一化模块 -> hidden state -> logits
                |             |                 |
             位置/掩码       显存与吞吐        质量与稳定性

所以回答「Transformer 相比 RNN 和 CNN 有什么优势?代价是什么?」时,推荐先讲结构变化,再讲这条变化怎样影响资源曲线,最后补一句质量和部署的边界。这样比单纯背「某某结构更快、更省」更像工程答案。

七、常见误区与追问

  • 误区:Transformer 各方面都碾压 RNN。超长序列 + 资源受限场景,O(n²) 是负担,近年也有 RNN 复兴的线性时间模型(如状态空间模型 Mamba、RWKV)试图兼得并行与线性成本。
  • 误区:Transformer 天生懂顺序。 自注意力对顺序无感,必须加位置编码。
  • 追问:为什么 RNN 难以规模化? 时间步串行无法并行,训练慢,喂不下大数据。
  • 追问:路径长度指什么,为何重要? 任意两 token 交互要经过的步数;越短,长程信息越不衰减、梯度越好传。Transformer 是 O(1)。
  • 追问:Transformer 的主要代价? O(n²) 计算/显存 + 缺乏归纳偏置(依赖大数据 + 需位置编码)。
  • 追问:有没有兼顾并行和线性成本的新方向? 状态空间模型(Mamba)、线性注意力、RWKV 等,试图用近线性复杂度挑战 Transformer 的长序列短板。

八、加强记忆

Transformer vs RNN/CNN 记「两大优势、两大代价」:优势——① 完全并行(RNN 串行,喂不下大数据;Transformer 一次并行整条序列,能规模化);② 长程依赖强(任意两 token 路径长度 O(1),一步直达不衰减,RNN 是 O(n) 会遗忘、CNN 要堆层)。代价——① O(n²) 计算与显存(长序列爆炸,靠 FlashAttention/稀疏注意力缓解);② 无归纳偏置(不懂顺序要位置编码,且依赖大数据才发挥)。 用「路径长度」这把尺子最能一眼看清三者差距:O(1) vs O(log n) vs O(n)。