土法炼钢兴趣小组的算法知识备份

【Transformer 与注意力机制】10 RNN 的根本局限:为什么需要 Transformer

文章导航

分类入口
transformer
标签入口
#transformer#rnn#attention#长程依赖

目录

〇、写在前面

上一篇我们把 RNN 的故事讲完了:从 Elman 1990 的简单循环网络,到 LSTM 1997 的门控革命,再到 Seq2Seq+attention 的黄金时期。每一步进步都解决了上一代的某个具体问题。LSTM 解决了梯度消失,Seq2Seq 解决了变长输入输出,attention 解决了 context bottleneck。

但 RNN 这条路并没有走到尽头。2017 年 Vaswani 等人发表 Attention Is All You Need,提出 Transformer 架构,完全抛弃循环结构。从此以后五年内,几乎所有大模型都基于 Transformer,RNN 变成了「教学材料」和「特定场景工具」。

为什么会发生这种翻转?是什么让 Transformer 这么彻底地取代了 RNN?这一篇要回答这个问题。

回答的核心是「RNN 的三难」:长程依赖、梯度稳定、训练并行——这三个目标 RNN 难以同时满足。LSTM 解决了第二个,但前两个仍然吃力,第三个根本无解(循环结构的本质就是串行)。Transformer 通过「抛弃循环、全用 attention」一次性绕过了这三难,但付出了 \(O(N^2)\) 复杂度的代价。

理解这场翻转不只是理解 Transformer 的胜利,更是理解「架构设计」这件事的本质:每种架构都有归纳偏置,归纳偏置带来便利也带来限制。Transformer 不是「最终答案」,它有自己的局限(\(O(N^2)\)、长上下文成本、缺少递归归纳偏置),所以才有了 2023 之后 Mamba/RWKV 等「带循环结构」的新尝试。

我们这一篇会讲:

第一,三难是什么——把长程依赖、梯度稳定、训练并行三件事拆开来逐一分析,看 RNN 在每个维度上的表现。

第二,长程依赖的细致分析——LSTM 究竟能学多远?工程实践告诉我们的真相,比理论分析更扎心。

第三,训练并行性问题——为什么 RNN 在 GPU 时代变成「速度瓶颈」,这背后的硬件原因。

第四,信息瓶颈——固定容量的 hidden state 处理任意长输入,本质上是有损压缩。

第五,attention 的崛起——Bahdanau 2014、Luong 2015 怎么作为补丁逐步把 RNN 推向极限。

第六,Transformer 的核心洞见——Vaswani 2017 怎么发现「循环是不必要的」。

第七,范式转变后的世界——为什么 Transformer 时代和 RNN 时代是两个不同的工程文化。

第八,Transformer 不是终点——Mamba/RWKV/状态空间模型的回归。

读完这一篇你会明白:Transformer 的胜利不是偶然,是 RNN 三难逼出来的必然;但 Transformer 的局限也是真实的,未来还有空间。

一、RNN 的三难(Trilemma)

1.1 三难的形式化

任何处理序列的神经网络架构都希望同时具备三个性质:

第一,长程依赖(Long-range dependency):能建模序列中相距很远的两个 token 之间的关系。比如一段 1000 字文章里第 1 句和第 800 句的关联。

第二,梯度稳定(Gradient stability):训练时梯度既不爆炸也不消失,能稳定地优化所有参数。

第三,训练并行(Training parallelism):能充分利用 GPU/TPU 的并行能力,单步训练速度不被序列长度严重拖累。

理想架构应该三者兼得。RNN 在三个维度上的表现:

第一个维度,长程依赖:Vanilla RNN 弱(梯度消失),LSTM/GRU 中等(能学几百步),Transformer 强(理论上无限远)。

第二个维度,梯度稳定:Vanilla RNN 弱(爆炸/消失),LSTM/GRU 中等(cell state 缓解),Transformer 强(残差连接 + LayerNorm)。

第三个维度,训练并行:Vanilla RNN 弱,LSTM/GRU 弱(仍然串行),Transformer 强(全并行)。

RNN 在三个维度上都不算最强,Transformer 三个都最强(但代价是 \(O(N^2)\) 复杂度)。

1.2 为什么这三个问题相互制约

RNN 的循环结构同时引发了这三个问题,它们不是独立的。

循环结构意味着 hidden state 沿时间累积,这是「记忆」的来源(潜在能学长依赖),但也是梯度沿时间连乘的来源(潜在不稳定)。同时,每一步的 hidden state 依赖前一步的 hidden state,这意味着 forward 必须串行(不能并行)。

所以 RNN 的三个弱点都源于同一个设计选择:沿时间累积状态

要解决这三个问题,就必须改变这个设计。LSTM 通过 cell state 让累积变成「加法」(缓解第二个问题),但没解决第三个问题。Transformer 直接把累积去掉,让每个位置独立计算(同时解决三个问题),但代价是失去了 RNN 的 \(O(N)\) 性质。

这是架构设计里典型的 trade-off。每种解法都有自己的痛点。

1.3 三难视角下的演化

从三难视角看 RNN 的演化史:

第一阶段,Vanilla RNN(1990):三难全输。

第二阶段,LSTM(1997):解决了梯度稳定,长程依赖有限改善。但仍然串行。

第三阶段,Bidirectional / Stacked RNN(2000s):在前两个维度上微小改进,但代价是参数翻倍、并行依然不行。

第四阶段,Seq2Seq + attention(2014-2015):长程依赖大幅改善(attention 直接连源端任意位置),但仍然有 RNN 部分,并行性没解决。

第五阶段,Transformer(2017):抛弃 RNN,三难全解。

第六阶段,Mamba/RWKV(2023+):在保持训练并行的前提下重新引入循环,试图绕过 Transformer 的 \(O(N^2)\)

这条线索清晰地展示了:架构设计是不断在 trade-off 之间寻找新位置的过程

1.4 没有完美架构

任何架构都有 trade-off。Transformer 解决了 RNN 三难,代价是 \(O(N^2)\) 内存。Mamba 试图回到 \(O(N)\),代价是某些任务上的表达力下降。

理解这一点能让你避免「架构崇拜」——没有哪种架构是「正确答案」。每种架构是一种特定 trade-off 的产物,适用于特定场景。

1.5 三难的图灵机视角

从计算理论看,序列模型本质上是在「模拟一个有限状态机」。这个状态机的「状态空间大小」决定了它能记住的东西,「转移函数」决定它能学的关系。

RNN 的状态空间是连续的(hidden state 是 \(\mathbb{R}^d\) 向量),转移函数是非线性函数。理论上 RNN 是图灵完备的——给定无限精度和无限时间,能模拟任何图灵机。但「理论可达」不等于「梯度下降能学到」。

Transformer 的「状态空间」是另一种形式:每一层的 KV cache 是显式存储。这种「显式记忆」比 RNN 的「隐式压缩」更接近图灵机的「磁带」。

这种视角让我们看到:架构差异本质上是「记忆机制」的差异。RNN 是固定容量的隐式记忆,Transformer 是动态容量的显式记忆。

1.6 三难与生物神经系统

有趣的是,生物大脑似乎也面临三难,但用了不同方式解决:

第一,长程依赖:通过多模态记忆系统(工作记忆、长期记忆、语义记忆)分层处理。

第二,梯度稳定:生物神经元的学习不是反向传播,而是局部 Hebbian 规则,本质上没有梯度爆炸问题。

第三,并行:大脑天生大规模并行(百亿神经元同时活动)。

这给我们启发:「循环 vs 并行」不是非此即彼。生物系统通过分层 + 局部计算同时实现了两者。未来的架构也许能借鉴这种思路。

二、长程依赖:理论与现实

2.1 什么算「长程」

「长程依赖」这个词被滥用,需要明确定义。我们说的「长程」指的是「序列里两个相距 \(k\) 步的 token 之间的语义/语法关联」。

短程:\(k < 10\),比如 “the cat” 里 “the” 和 “cat” 的依赖。

中程:\(10 < k < 100\),比如句子内主语和谓语的距离。

长程:\(k > 100\),比如段落级、文档级的依赖。

超长程:\(k > 1000\),比如长文档里章节之间的呼应。

不同任务对长程依赖的需求不同。文本分类常常短程就够,机器翻译需要中程,长文档摘要需要长程,代码理解或法律文档分析需要超长程。

2.2 LSTM 实际能学多远

理论上 LSTM 能学任意长依赖(只要 forget gate 接近 1)。实际呢?

实证研究(Khandelwal 2018, Sharp Nearby, Fuzzy Far Away)发现:LSTM 在语言建模任务里,对最近 ~50 个 token 敏感(精确利用),对 50-200 token 范围还能利用(但精度下降),超过 200 token 就基本无效了。

LSTM 的「有效记忆长度」远小于它「理论记忆长度」。原因不是梯度(cell state 解决了),而是「容量」——固定 hidden 维度装不下太多信息。

这是 LSTM 的实际天花板。即使你把 hidden_dim 从 256 调到 1024,长程能力也只是稍微提升,不会突破到 1000 token 量级。

2.3 Transformer 的长程是「免费」吗

Transformer 的 self-attention 让每两个位置直接连接,路径长度为 1。理论上没有长程衰减。

但实际呢?Transformer 也有「位置偏好」。研究发现 BERT/GPT 等模型对最近的 token 关注权重更高(因为语言本身的局部性 + 训练数据的统计偏置)。

不过 Transformer 的「关注偏好」是「软」的,可学的。如果任务需要长程,attention weight 会重新分配。LSTM 的「关注偏好」是「硬」的——hidden state 已经压缩了,找不回原始信息。

所以 Transformer 在长程上有更高上限,即使在短程任务上和 LSTM 差不多。

2.4 长程依赖的诊断任务

研究者设计了一些专门测试长程依赖的合成任务:

第一,copy task:输入 \([a_1, a_2, \ldots, a_T, \text{SEP}, ?, ?, \ldots, ?]\),要求输出 \([a_1, a_2, \ldots, a_T]\)。模型必须记住前 \(T\) 个 token 才能复制。

第二,addition task:输入两个 \(T\) 位数字的对应位序列,输出它们的和。需要记住所有位的信息。

第三,Long Range Arena (LRA):Google 2020 年发布的 benchmark,包含 1K-16K 长序列任务。

LSTM 在 \(T > 100\) 的 copy task 上就力不从心了。Transformer 能做到几千。Mamba 在 LRA 的某些任务上甚至超过 Transformer。

这些诊断任务比真实任务(如翻译)更能暴露架构在长程上的真实能力。

2.5 长程依赖与 inductive bias

不同架构对长程依赖有不同的 inductive bias。

RNN 偏置:「最近的更重要」(默认)。学长程要克服这个偏置。

CNN 偏置:「局部模式重要」。长程通过堆层数实现,浅层学不到。

Transformer 偏置:「全局可达」。但需要位置编码引入位置信息。

这些偏置决定了架构在不同任务上的相对优势。比如视觉任务上 CNN 的局部偏置很有用(图像本来就有局部相关性),但 Transformer(ViT)通过更多数据补偿了缺失的偏置。

2.6 长程依赖的信息论分析

从信息论看,长程依赖的难度由「互信息衰减率」决定。如果 \(I(x_t; x_{t+k})\)\(k\) 指数衰减,那么任何架构都很难学(信息本身就少)。如果 \(I(x_t; x_{t+k})\) 是 power-law 衰减或不衰减,那么架构必须能容纳长程信号。

自然语言的互信息衰减是 power-law(Lin & Tegmark 2017)。这意味着语言里有大量「跨远距离」的依赖,需要架构有相应能力。RNN 对应「指数衰减」假设(梯度沿时间指数衰减),所以和自然语言的 power-law 不匹配。

2.7 长程依赖的实证标尺

研究者用几个标尺测量架构的长程能力:

第一,effective context length:模型实际能利用的最长上下文。LSTM 大约 200-300,Transformer 数千。

第二,copy task length:能完成 copy 任务的最长序列长度。LSTM ~100,Transformer 数千,Mamba 上万。

第三,Long Range Arena (LRA):综合 benchmark,包含多个任务。

第四,长文档理解 perplexity:在长文档上的语言建模困惑度。

这些标尺给「长程能力」一个量化定义,避免空谈。

三、训练并行性问题

3.1 为什么 RNN 不能并行

RNN 的 forward 是

\[ h_t = f(W_h h_{t-1} + W_x x_t) \]

要算 \(h_t\) 必须先有 \(h_{t-1}\)。所以 \(h_1, h_2, \ldots, h_T\) 只能按顺序算,\(T\) 步串行。

GPU 的优势是「同时算很多东西」。但 RNN 的串行结构让 GPU 大部分时间在等待——一次只能算一个 hidden state,GPU 利用率极低。

3.2 量化代价:GPU 利用率

实测训练 LSTM 时 GPU 利用率常在 5-15% 之间。同等规模的 Transformer 能做到 70-95%。

这意味着相同硬件上 Transformer 的训练吞吐量是 LSTM 的 5-10 倍。在大模型时代(参数量上百亿),这种差距让 RNN 训练变得不可行。

「训练得起」是大模型时代的硬约束。Transformer 之所以胜出,并行训练能力是核心原因。

3.3 RNN 的并行尝试

研究者尝试过给 RNN 加并行性:

第一,Quasi-RNN(QRNN):把 RNN 的非线性拆开,让 forward 部分能并行。

第二,Simple Recurrent Unit(SRU):简化门控让 RNN 能在 element-wise 维度上并行。

第三,SCRN, IndRNN, Parallel SCAN:各种工程优化。

这些方案在小规模上有效,但都没成为主流。原因是 Transformer 同期出现,把所有 RNN 优化的努力都比下去了。

3.4 Transformer 的并行性

Transformer 的 self-attention 计算

\[ \text{Attn}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V \]

是矩阵乘法。所有位置同时算,没有任何 token 依赖另一个 token 先算完。

这就是 Transformer 训练快的根本原因。GPU 上一个 batch 的所有 token 在所有层同时前向,几个矩阵乘法搞定。

3.5 推理阶段的逆转

但训练并行 ≠ 推理并行。Transformer 的自回归生成(GPT 类)必须一个 token 一个 token 地生成,因为下一个 token 依赖上一个。这时它的优势没了。

更糟的是,Transformer 推理要存 KV cache,长上下文下内存占用巨大。这反而是 RNN 的优势——RNN 推理是 \(O(1)\) 内存,每步只更新 hidden state。

这是 2023 年 Mamba 等模型重新关注循环结构的原因之一。「训练并行 + 推理高效」是新一代序列模型的目标,而 Transformer 只占了前一半。

3.6 序列长度的硬约束

并行性还影响「能处理多长的序列」。

RNN 训练时 \(T\) 步串行,单步训练时间正比于 \(T\)。所以训练 \(T = 1000\) 的序列比 \(T = 100\) 慢 10 倍。

Transformer 训练时 \(T\) 是矩阵乘法的一个维度,时间不是线性增长,而是 \(O(T)\) 或者 \(O(T^2)\)(attention)。但常数小得多,且能用更大 batch 平摊。

实践上 Transformer 训练 \(T = 4096\) 的序列已经常态,RNN 训练 \(T > 1000\) 就要 truncated BPTT 了。这种 sequence length 上的差距让 Transformer 能做长文档/长对话/代码理解等任务。

3.7 batch size 的限制

RNN 训练时 batch 内每个序列长度可能不同,需要 padding。padding 浪费计算。Transformer 也有这个问题,但因为整体训练快,浪费的相对成本低。

更深层的问题是 RNN 的「内存随长度线性增长」(要存所有时刻的 hidden state 给反向用)。Transformer 也类似,但矩阵化的存取效率更高。

3.8 梯度同步的代价

分布式训练时,多 GPU 之间要同步梯度。RNN 因为单 step 时间长,每次同步前 GPU 已经做了大量计算,同步开销相对小。Transformer step 短,同步开销相对大。

但 Transformer 通过 ZeRO、FSDP 等技术能高效处理大模型分布式训练。RNN 时代的分布式训练不成熟(因为模型小,不需要)。这是另一个工程基础设施差异。

3.9 inference 时的 throughput

虽然单序列推理时 RNN 的 \(O(N)\) vs Transformer 的 \(O(N^2)\) 是 RNN 优势,但 batched inference 时 Transformer 的吞吐量常常更高——因为它能同时处理多个序列的所有 token,矩阵乘法效率高。

vLLM、SGLang 等推理引擎进一步优化了 Transformer 的 batched inference。这让「Transformer 推理慢」的问题在生产环境中没那么严重。

四、信息瓶颈:固定容量的诅咒

4.1 hidden state 是「瓶颈」

RNN 把任意长度输入压缩到固定维度 \(d\) 的 hidden state。这是它的优雅之处(结构简单),也是它的致命伤(容量固定)。

信息论说:要无损保留 \(T\) 个 token 的信息,hidden state 维度应该正比于 \(T\)。固定 \(d\) 处理任意 \(T\) 必然有损。

「有损」的代价是:长序列下 hidden state 必然丢信息。哪些信息被丢?由训练任务决定——任务里不重要的信息被压掉。

4.2 Seq2Seq 的 context bottleneck

Seq2Seq(早期版本)把整个源句压成一个固定向量(encoder 最后的 hidden state),传给 decoder。这是最极端的信息瓶颈:一个 \(d\) 维向量装下整段话的语义。

Sutskever 2014 的实验:句长从 5 到 30,BLEU 还稳定;从 30 到 60,BLEU 暴跌。原因就是 context bottleneck——长句的信息装不下。

4.3 Bahdanau 的 attention 是补丁

Bahdanau 2014 的洞见:与其压成一个向量,不如保留 encoder 所有 hidden state \(h_1, \ldots, h_T\),让 decoder 每一步「选择性地关注」其中部分。

这就是 attention:

\[ c_t = \sum_{i=1}^T \alpha_{ti} h_i, \quad \alpha_{ti} = \frac{\exp(\text{score}(s_t, h_i))}{\sum_j \exp(\text{score}(s_t, h_j))} \]

attention 让 context 不再是「单一向量」,而是「动态加权和」。容量不再固定。

实证:加 attention 后,Seq2Seq 在长句上的性能不再衰减。这是「打破 context bottleneck」的胜利。

4.4 attention 是 Transformer 的种子

attention 一旦加到 Seq2Seq 里,研究者发现一个有趣的现象:模型的大部分能力来自 attention,而不是 RNN 部分

如果你做消融实验:去掉 RNN 但保留 attention(仅留 embedding + attention + softmax),翻译质量会下降但仍然可观。去掉 attention 但保留 RNN,质量大幅下降。

这暗示了「attention 比 RNN 重要」。Vaswani 2017 把这个观察推到极端:完全去掉 RNN,只保留 attention(再加位置编码弥补 attention 缺失的位置信息),性能反而更好。

4.5 信息瓶颈的本质

信息瓶颈不是 RNN 独有的问题。任何「把变长输入压缩成固定容量」的设计都有这个问题——CNN 的 global pooling、ViT 的 [CLS] token 都是不同形式的信息瓶颈。

但 attention 是一个「自适应」的容量分配机制:不同 token 用不同的关注权重,容量按需分配。这就是为什么 attention 在很多任务上比固定瓶颈好。

4.6 容量与有效维度

固定的 hidden_dim \(d\) 不等于实际容量。神经网络的「有效容量」由训练动力学决定——模型只能学到「易优化的」函数子集。

实证上 LSTM 的有效容量远低于 \(d\)。这就是为什么把 hidden_dim 从 256 调到 1024 不能等比例提升能力。

Transformer 也有「有效容量」概念,但因为 attention 的多头设计、跨层的 KV cache 等机制,实际有效容量比 RNN 高得多。

4.7 信息瓶颈与可解释性

有趣的副作用:信息瓶颈强制模型「只保留重要信息」,这让 hidden state 变得更抽象、更可解释。研究者发现训练好的 LSTM 的 hidden state 经常对应明确的语义概念。

Transformer 的 KV cache 容量大、信息保留多,反而更难解释——单个 attention head 的关注模式可能没有清晰语义。这是 trade-off 的另一面:表达力强了,可解释性下降了。

4.8 瓶颈在多模态中的体现

多模态模型常用「shared embedding space」连接不同模态。这个 shared space 也是一个信息瓶颈——把图像、文本、音频压到同一向量空间。

CLIP 等模型通过对比学习训练这个 shared space。它的容量决定了模型能区分多少种「图像-文本对」。这是另一个「固定容量处理任意输入」的例子。

五、attention 如何把 RNN 推向极限

5.1 Bahdanau 2014:第一次软对齐

我们在第 9 篇讲过 Bahdanau attention。这里从「极限」的角度重看。

Bahdanau 论文的标题是 Neural Machine Translation by Jointly Learning to Align and Translate。注意这个 “Jointly”——它不是单独学对齐再翻译,而是一起学。这种「软对齐」让模型自己决定每一步看哪里。

效果立竿见影:英法翻译 BLEU 提升 ~2 分(当时这是大进步),长句性能不再衰减。Bahdanau attention 成为 NMT 的标准组件。

5.2 Luong 2015:attention 的提速版

Luong 2015 在 Bahdanau 基础上做了几个简化:

第一,dot product attention:用 \(s_t^T h_i\) 代替 MLP 打分,更快。

第二,global vs local:global 看所有源端位置(昂贵但有效),local 只看一个窗口(快但有限)。

第三,input feeding:把 attention context 喂回下一步 RNN 输入,让信息在解码端流动。

Luong attention 在工程上更高效,被 OpenNMT 等工具默认实现。它和 Bahdanau attention 一起把 RNN+attention 推到了 RNN 时代的巅峰。

5.3 ConvS2S:CNN+attention

Gehring 2017 的 ConvS2S 用 1D CNN 取代 encoder 的 RNN,再用 attention 做对齐。这是一个有趣的中间形态:放弃 RNN encoder(解决并行性问题),保留 attention,仍然用 RNN-like 的解码器。

ConvS2S 在英德翻译上短暂超过了 RNN+attention,速度更快。它给 Transformer 论文埋下了伏笔——「也许 RNN 完全不必要」。

5.4 self-attention 的雏形

Cheng 2016 的 Long Short-Term Memory-Networks for Machine Reading、Lin 2017 的 A Structured Self-attentive Sentence Embedding 等工作开始用「self-attention」(让序列自己关注自己)来增强 RNN。

这些工作发现,self-attention 单独用就有很强的表达能力。这进一步暗示了「也许 RNN 是多余的」。

5.5 attention 的副作用:可解释性

attention 还带来一个副产品:可解释性。\(\alpha_{ti}\) 矩阵可以画成热力图,显示「decoder 第 t 步关注了 encoder 的哪些位置」。

这种可视化在机器翻译里非常直观——你能看到模型把英文 “cat” 对齐到法文 “chat”。研究者一度认为 attention 提供了「神经网络的解释」。

后来的研究(Jain 2019, Attention is not Explanation)质疑了这种解释——attention 高未必意味着该位置真正影响输出。但 attention 作为「初步可视化工具」仍然有价值。

5.6 attention is all you need 的标题选择

Vaswani 2017 论文的标题 Attention Is All You Need 是一个挑衅。它在告诉读者:「之前那些 RNN, CNN 都不需要,attention 就够了」。

这个标题敢提出来是因为前面几年 attention 的研究已经积累到这个程度——大家都隐隐感到 attention 是核心,只差有人直接拍板说「去掉其他的」。Vaswani 团队就是那个人。

六、Transformer 的核心洞见

6.1 抛弃循环

Transformer 的核心动作是抛弃循环。所有的 self-attention、feed-forward、LayerNorm 都是「位置独立」的——每个位置独立计算,不依赖前一个位置算完。

这一抛弃带来三个结果:

第一,训练并行(解决三难第三个)。

第二,长程一步直达(解决三难第一个)。

第三,梯度路径短(残差连接 + LayerNorm 保证稳定,解决三难第二个)。

三难一次性解决。代价是失去了循环带来的 inductive bias——必须用位置编码人工注入位置信息。

6.2 multi-head attention

Vaswani 的另一个创新是 multi-head attention:把 attention 分成多个 head(typically 8 或 16),每个 head 学不同的「关注模式」(句法、语义、位置等),最后拼接。

multi-head 让 attention 能同时关注多种关系。这是 RNN 做不到的——RNN 的 hidden state 只有一个,多种关系混在一起。

6.3 position encoding

抛弃循环后,attention 没有位置概念(permutation invariant)。Transformer 通过添加位置编码(sinusoidal 或 learned)给每个位置一个独特向量,让模型能区分「第 1 个 token」和「第 100 个 token」。

位置编码是个有趣的「补丁」——它说明 attention 本身不能完全替代循环的所有功能。循环天然有顺序,attention 没有。

后续研究(rotary position embedding、ALiBi、relative position encoding)改进了位置编码,但「需要位置编码」这件事本身是 attention 的局限。

6.4 残差连接 + LayerNorm

Transformer 在每个子层周围加残差连接:

\[ x' = \text{LayerNorm}(x + \text{Sublayer}(x)) \]

这保证梯度能直接流过深度方向,避免梯度消失。同时 LayerNorm 让每层的激活分布稳定。

这两个看似简单的工程组件是 Transformer 训练成功的关键。没有它们,Transformer 很难训到 12 层、24 层、96 层这么深。

6.5 WMT14 实验

Vaswani 2017 在 WMT14 英德翻译上的实验:base Transformer 28.4 BLEU,big Transformer 28.4→41.0,分别超过当时最好的 RNN+attention 模型。训练时间是 RNN 的 1/4。

这个实验数据让 Transformer 一夜爆红。论文发布后几个月,所有 NMT 团队都在切换到 Transformer。

6.6 BERT 与 GPT:Transformer 的扩展

Transformer 出来后,2018 年 BERT 和 GPT 把它推向预训练时代:

BERT:双向 Transformer + masked language modeling,做下游任务的特征提取器。

GPT:单向 Transformer + 自回归语言建模,做生成任务。

这两个方向定义了之后五年的 NLP。RNN 时代的预训练(Word2Vec、ELMo)相比之下显得初级。

6.7 Transformer 的成功哲学

Transformer 的成功有几个深层原因:

第一,架构通用性:encoder/decoder 通吃,分类/生成/理解都能做。

第二,scaling friendly:参数从百万到千亿都能稳定训练。

第三,transfer learning 友好:预训练 + 微调成为标准范式。

第四,硬件友好:矩阵乘法主导,GPU/TPU 高效。

这些性质让 Transformer 不只是「一个更好的架构」,而是「下一代基础设施」。RNN 没有这些性质。

七、范式转变后的世界

7.1 从「序列建模」到「无差别 tokenization」

RNN 时代,序列建模和图像、表格、图结构是分开的研究。Transformer 出来后,越来越多领域发现:把数据切成 token,扔进 Transformer 就能 work。

ViT(Vision Transformer,2020):图像切成 patch token。

Swin Transformer:层次化的视觉 Transformer。

Whisper:语音 Transformer。

DNA Transformer、蛋白质 Transformer、表格 Transformer……

这种「无差别 tokenization」让 Transformer 成为通用架构。RNN 时代的「领域特定架构」逐渐消失。

7.2 从「特征工程」到「scale」

RNN 时代的工程主要是「设计特征/架构变体」。Transformer 时代的工程主要是「scale 模型和数据」。

Bender 2021 等人称之为「stochastic parrots」时代——参数从亿到千亿,能力从 NLP 任务到通用助手。RNN 时代根本想象不到「scale 一个模型到千亿参数解决所有问题」。

scale 是 Transformer 时代的核心方法论。这要求架构必须能高效训练大规模——这正是 Transformer 的优势。

7.3 从「学术研究」到「工程实践」

RNN 时代深度学习研究偏学术:你提一个新架构,跑一个 benchmark,发个 ICLR/NeurIPS。

Transformer 时代研究偏工程:你拿一个标准架构,喂大量数据,调出一个能用的产品。OpenAI、Anthropic、Meta、Google 等公司主导前沿,学界跟随。

这种转变让深度学习的研究方式根本改变。「架构创新」不再是核心,「数据 + 训练 + 评估」才是。

7.4 RNN 留下的遗产

RNN 时代不是白费的。它留下的遗产包括:

第一,门控机制:LSTM 的门后来被用到 ResNet(gated residual)、Highway Network、Mixture of Experts 的 gating 等地方。

第二,Seq2Seq 范式:encoder-decoder 结构沿用到 T5、BART 等 Transformer 模型。

第三,attention 机制本身:是 RNN 时代的产物,被 Transformer 继承。

第四,长依赖训练的工程经验:clipping、初始化、正则化等技巧在 Transformer 训练里依然有用。

第五,经典模型实验设计:language modeling、machine translation 等任务的评估方法。

RNN 是 Transformer 的爹,不是被 Transformer 杀掉的敌人。

八、Transformer 不是终点

8.1 Transformer 的痛点

Transformer 也有局限:

第一,\(O(N^2)\) 复杂度:序列长度翻倍,计算量四倍。长上下文(10K+)昂贵。

第二,KV cache 内存:长序列推理要存所有 KV,内存压力大。

第三,位置编码的硬上限:训练长度 2K,推理时超过这个长度(如 32K)需要特殊技巧(rope scaling)。

第四,缺少递归归纳偏置:某些任务(涉及长 chain reasoning、内部状态机模拟)Transformer 仍然吃力。

这些局限给了「下一代架构」机会。

8.2 efficient transformers

研究者尝试了大量「efficient transformers」减少 \(O(N^2)\) 代价:

这些方法各有优势但都没完全替代标准 Transformer。原因是它们都损失了部分 attention 表达能力。

8.3 Mamba:选择性状态空间模型

Gu, Dao 2023 的 Mamba 是一个突破:

第一,它是「循环」结构(每步状态更新),\(O(N)\) 复杂度。

第二,它用「selective state space」让状态更新依赖输入,效果接近 attention。

第三,通过 parallel scan 算法,仍能并行训练。

Mamba 在某些 benchmark(特别是长序列任务)上接近甚至超过 Transformer。它代表了「circle 回到循环」的趋势——但不是回到 1990 年的 RNN,而是用现代视角重新设计循环。

8.4 RWKV:另一种循环

Peng 2023 的 RWKV 是另一个尝试,结构上像 RNN 但训练时能并行。它用「token mixing + channel mixing」的两阶段循环替代 attention。

RWKV 已经训到了几十亿参数规模,效果接近 Transformer。它和 Mamba 一样代表了「线性复杂度序列模型」的方向。

8.5 hybrid 架构

最近的趋势是 hybrid:在 Transformer 里穿插一些循环层(比如 Jamba = Transformer + Mamba 混合)。这种设计既保留 Transformer 的强大表达,又获得循环的高效推理。

我们可能会看到未来的主流模型不再是「纯 Transformer」,而是「Transformer + 某种循环结构」的混合。

8.6 教训:架构 trade-off 没有终结

Transformer 时代不会是最后一个时代。每代架构都解决了上一代的某些问题,同时引入新问题。RNN→Transformer→Mamba 的循环(pun intended)表明:架构设计是一个无尽的 trade-off 过程。

理解这一点能让你保持开放心态——下一代架构可能会从「Transformer 的局限」入手,提出全新解决方案。可能是 SSM,可能是 Mixture of Experts,可能是某种全新形式。

九、回到具体场景:什么时候用 RNN

虽然 Transformer 主导了大模型,但 RNN 在某些场景仍有优势:

9.1 边缘设备

LSTM 参数少、推理时无 KV cache、延迟稳定。手机、IoT、嵌入式设备上 RNN 仍是首选。

苹果的端侧语音识别、Google 的智能键盘、各种 wearable AI 都大量使用 LSTM/GRU。

9.2 实时流式处理

在线语音识别、实时翻译、流式时间序列分析——这些场景每来一个 token 立即输出,RNN 的 \(O(1)\) 每步推理优势明显。

Transformer 也能流式(causal masking + KV cache),但内存随时间线性增长,不适合无限流。

9.3 极小数据

数据少(几千样本以内)的场景,Transformer 容易过拟合。LSTM 的 inductive bias 更强,小数据下表现更好。

9.4 教学场景

学习深度学习从 RNN 入门最自然。它把「时间」「状态」「记忆」这些概念以最直观的形式呈现。

我个人写代码教学时仍然先讲 RNN 再讲 Transformer。这不是怀旧,是教学顺序的合理选择。

9.5 强化学习

RL agent 处理 partial observation 时常用 LSTM 作为「记忆」组件。Transformer 也开始用(Decision Transformer),但 LSTM 在很多 RL benchmark 上仍是稳妥选择。

十、关键概念回顾

这一篇我们讲了 RNN 三难:长程依赖、梯度稳定、训练并行。Vanilla RNN 三个都弱,LSTM/GRU 解决了第二个、缓解第一个,但第三个根本不解(循环本质上是串行)。

attention 作为补丁先后被加进 RNN(Bahdanau 2014, Luong 2015),解决了 context bottleneck,让 Seq2Seq 能处理长句。但加了 attention 的 RNN 仍然有 RNN 部分,仍然不能并行训练。

Vaswani 2017 的 Transformer 抛弃 RNN,纯用 attention,三难一次性解决。代价是 \(O(N^2)\) 复杂度和需要位置编码补充。

Transformer 之后,整个深度学习生态变了:架构变通用(无差别 tokenization),方法论变 scaling-driven,研究文化变工程化。RNN 时代的领域特定模型/特征工程/学术研究范式被替代。

但 Transformer 不是终点。\(O(N^2)\) 的代价让 Mamba/RWKV 等带循环结构的模型在 2023 年开始复兴。可能未来的主流模型是 Transformer + 循环的 hybrid。

理解 RNN 的局限不是为了证明「RNN 已死」,而是为了理解「为什么 Transformer 长这样」。Transformer 的每个设计选择(multi-head、residual、LayerNorm、position encoding)都是为了解决 RNN 的某个具体痛点。把 RNN 学透,Transformer 自然就懂了。

十一、常见误解

11.1 「Transformer 完全替代了 RNN」

不准确。在大模型领域基本是这样,但在边缘设备、流式处理、小数据场景,RNN 仍有不可替代的优势。

11.3 「RNN 的问题只是慢」

不止。RNN 的问题包括长程依赖弱、梯度不稳定、容量瓶颈、训练慢——是综合问题,不只是速度。

11.4 「attention 就是 Transformer」

不等。attention 是一个机制(RNN 时代就有),Transformer 是一个完整架构(包括 multi-head、position encoding、残差、LayerNorm 等)。早期的 RNN+attention 不是 Transformer。

11.8 「LSTM 解决了梯度消失,所以长程没问题」

不对。LSTM 缓解了梯度消失,但容量瓶颈和噪声累积仍然限制有效记忆长度(实际几百步)。

11.12 「Transformer 训练稳定」

相对而言。和 RNN 比 Transformer 稳定,但训大模型仍要小心:warmup、gradient clipping、合适的初始化、合适的学习率调度都不可或缺。Transformer 大模型 training 失败也不少见(loss spike、divergence 等)。

十二、下一步

到这里,Transformer 系列第一部分(基础与 RNN 时代)告一段落。我们走过:

第 01-05 篇:神经网络与深度学习基础。

第 06-08 篇:反向传播、softmax、embedding 等核心组件。

第 09-10 篇:RNN 时代的故事——从 vanilla RNN 到 LSTM/GRU 到 Seq2Seq+attention,再到被 Transformer 取代。

接下来第二部分会专门讲 attention 机制本身。第 11 篇会从最基本的「query-key-value」抽象讲起,第 12 篇会讲缩放点积 attention 的数学和实现,第 13 篇会讲 multi-head attention 的设计动机。

之后第三部分进入 Transformer 主体:encoder/decoder 结构、位置编码、训练技巧、推理优化等。

学完这条线,你不只是「会用 Transformer」,而是「理解 Transformer 为什么这样设计」。这种理解力让你能读懂任何新架构(看它解决了上一代的什么问题),也能在实际项目中做出合理的架构选择。

11 注意力的直觉与起源 我们正式进入 attention 章节。

十三、参考文献

  1. Vaswani, A. et al. (2017). Attention Is All You Need. NeurIPS. Transformer 原始论文。
  2. Bahdanau, D., Cho, K., Bengio, Y. (2015). Neural Machine Translation by Jointly Learning to Align and Translate. ICLR. NMT 中的 attention。
  3. Luong, M.-T., Pham, H., Manning, C. D. (2015). Effective Approaches to Attention-based Neural Machine Translation. EMNLP. Luong attention 变体。
  4. Sutskever, I., Vinyals, O., Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. NeurIPS. Seq2Seq。
  5. Hochreiter, S., Schmidhuber, J. (1997). Long Short-Term Memory. Neural Computation. LSTM。
  6. Pascanu, R., Mikolov, T., Bengio, Y. (2013). On the Difficulty of Training Recurrent Neural Networks. ICML. 梯度问题。
  7. Khandelwal, U. et al. (2018). Sharp Nearby, Fuzzy Far Away: How Neural Language Models Use Context. ACL. LSTM 实际记忆长度。
  8. Gehring, J. et al. (2017). Convolutional Sequence to Sequence Learning. ICML. ConvS2S。
  9. Cheng, J., Dong, L., Lapata, M. (2016). Long Short-Term Memory-Networks for Machine Reading. EMNLP. self-attention 雏形。
  10. Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. NAACL. BERT。
  11. Radford, A. et al. (2018-2019). Language Models are Unsupervised Multitask Learners (GPT-2). OpenAI Tech Report.
  12. Dosovitskiy, A. et al. (2021). An Image is Worth 16x16 Words (ViT). ICLR.
  13. Tay, Y. et al. (2021). Long Range Arena: A Benchmark for Efficient Transformers. ICLR. LRA benchmark。
  14. Gu, A., Dao, T. (2023). Mamba: Linear-Time Sequence Modeling with Selective State Spaces. arXiv.
  15. Peng, B. et al. (2023). RWKV: Reinventing RNNs for the Transformer Era. arXiv.
  16. Tay, Y. et al. (2022). Efficient Transformers: A Survey. ACM Computing Surveys.
  17. Jain, S., Wallace, B. C. (2019). Attention is not Explanation. NAACL.
  18. Bender, E. M. et al. (2021). On the Dangers of Stochastic Parrots. FAccT.
  19. Wu, Y. et al. (2016). Google’s Neural Machine Translation System. arXiv. GNMT。
  20. Lin, Z. et al. (2017). A Structured Self-attentive Sentence Embedding. ICLR.

上一篇:09 RNN 与序列建模

下一篇:11 注意力的直觉与起源

回到:Transformer 与注意力机制 总览

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-04-15 · transformer

【Transformer 与注意力机制】01|为什么要从这里开始

这是【Transformer 与注意力机制】系列的第一篇,承担两件事:一是把这套五十多篇文章为谁写、解决什么问题、彼此之间是什么关系交代清楚;二是为完全没基础的读者画出一条从向量、点积、矩阵乘法走到自注意力、再走到大语言模型的爬升路径,让你在投入时间之前先知道终点在哪、路上要经过哪些坎、读完之后你会、还不会做什么事。

2026-04-15 · transformer

【Transformer 与注意力机制】系列总览

从《Attention Is All You Need》出发,把注意力机制、Transformer 架构、训练范式、模型变体、推理工程、可解释性与未来架构串成一条 58 篇的深度博客线。


By .