2026-04-15 · transformer
15|Scaled Dot-Product:那个 √d_k 是怎么来的
很多人第一次读 Vaswani 2017 的公式时,都会卡在那一个 √dk 上。

























上一篇我们把 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 的局限也是真实的,未来还有空间。
任何处理序列的神经网络架构都希望同时具备三个性质:
第一,长程依赖(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)\) 复杂度)。
RNN 的循环结构同时引发了这三个问题,它们不是独立的。
循环结构意味着 hidden state 沿时间累积,这是「记忆」的来源(潜在能学长依赖),但也是梯度沿时间连乘的来源(潜在不稳定)。同时,每一步的 hidden state 依赖前一步的 hidden state,这意味着 forward 必须串行(不能并行)。
所以 RNN 的三个弱点都源于同一个设计选择:沿时间累积状态。
要解决这三个问题,就必须改变这个设计。LSTM 通过 cell state 让累积变成「加法」(缓解第二个问题),但没解决第三个问题。Transformer 直接把累积去掉,让每个位置独立计算(同时解决三个问题),但代价是失去了 RNN 的 \(O(N)\) 性质。
这是架构设计里典型的 trade-off。每种解法都有自己的痛点。
从三难视角看 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 之间寻找新位置的过程。
任何架构都有 trade-off。Transformer 解决了 RNN 三难,代价是 \(O(N^2)\) 内存。Mamba 试图回到 \(O(N)\),代价是某些任务上的表达力下降。
理解这一点能让你避免「架构崇拜」——没有哪种架构是「正确答案」。每种架构是一种特定 trade-off 的产物,适用于特定场景。
从计算理论看,序列模型本质上是在「模拟一个有限状态机」。这个状态机的「状态空间大小」决定了它能记住的东西,「转移函数」决定它能学的关系。
RNN 的状态空间是连续的(hidden state 是 \(\mathbb{R}^d\) 向量),转移函数是非线性函数。理论上 RNN 是图灵完备的——给定无限精度和无限时间,能模拟任何图灵机。但「理论可达」不等于「梯度下降能学到」。
Transformer 的「状态空间」是另一种形式:每一层的 KV cache 是显式存储。这种「显式记忆」比 RNN 的「隐式压缩」更接近图灵机的「磁带」。
这种视角让我们看到:架构差异本质上是「记忆机制」的差异。RNN 是固定容量的隐式记忆,Transformer 是动态容量的显式记忆。
有趣的是,生物大脑似乎也面临三难,但用了不同方式解决:
第一,长程依赖:通过多模态记忆系统(工作记忆、长期记忆、语义记忆)分层处理。
第二,梯度稳定:生物神经元的学习不是反向传播,而是局部 Hebbian 规则,本质上没有梯度爆炸问题。
第三,并行:大脑天生大规模并行(百亿神经元同时活动)。
这给我们启发:「循环 vs 并行」不是非此即彼。生物系统通过分层 + 局部计算同时实现了两者。未来的架构也许能借鉴这种思路。
「长程依赖」这个词被滥用,需要明确定义。我们说的「长程」指的是「序列里两个相距 \(k\) 步的 token 之间的语义/语法关联」。
短程:\(k < 10\),比如 “the cat” 里 “the” 和 “cat” 的依赖。
中程:\(10 < k < 100\),比如句子内主语和谓语的距离。
长程:\(k > 100\),比如段落级、文档级的依赖。
超长程:\(k > 1000\),比如长文档里章节之间的呼应。
不同任务对长程依赖的需求不同。文本分类常常短程就够,机器翻译需要中程,长文档摘要需要长程,代码理解或法律文档分析需要超长程。
理论上 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 量级。
Transformer 的 self-attention 让每两个位置直接连接,路径长度为 1。理论上没有长程衰减。
但实际呢?Transformer 也有「位置偏好」。研究发现 BERT/GPT 等模型对最近的 token 关注权重更高(因为语言本身的局部性 + 训练数据的统计偏置)。
不过 Transformer 的「关注偏好」是「软」的,可学的。如果任务需要长程,attention weight 会重新分配。LSTM 的「关注偏好」是「硬」的——hidden state 已经压缩了,找不回原始信息。
所以 Transformer 在长程上有更高上限,即使在短程任务上和 LSTM 差不多。
研究者设计了一些专门测试长程依赖的合成任务:
第一,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。
这些诊断任务比真实任务(如翻译)更能暴露架构在长程上的真实能力。
不同架构对长程依赖有不同的 inductive bias。
RNN 偏置:「最近的更重要」(默认)。学长程要克服这个偏置。
CNN 偏置:「局部模式重要」。长程通过堆层数实现,浅层学不到。
Transformer 偏置:「全局可达」。但需要位置编码引入位置信息。
这些偏置决定了架构在不同任务上的相对优势。比如视觉任务上 CNN 的局部偏置很有用(图像本来就有局部相关性),但 Transformer(ViT)通过更多数据补偿了缺失的偏置。
从信息论看,长程依赖的难度由「互信息衰减率」决定。如果 \(I(x_t; x_{t+k})\) 随 \(k\) 指数衰减,那么任何架构都很难学(信息本身就少)。如果 \(I(x_t; x_{t+k})\) 是 power-law 衰减或不衰减,那么架构必须能容纳长程信号。
自然语言的互信息衰减是 power-law(Lin & Tegmark 2017)。这意味着语言里有大量「跨远距离」的依赖,需要架构有相应能力。RNN 对应「指数衰减」假设(梯度沿时间指数衰减),所以和自然语言的 power-law 不匹配。
研究者用几个标尺测量架构的长程能力:
第一,effective context length:模型实际能利用的最长上下文。LSTM 大约 200-300,Transformer 数千。
第二,copy task length:能完成 copy 任务的最长序列长度。LSTM ~100,Transformer 数千,Mamba 上万。
第三,Long Range Arena (LRA):综合 benchmark,包含多个任务。
第四,长文档理解 perplexity:在长文档上的语言建模困惑度。
这些标尺给「长程能力」一个量化定义,避免空谈。
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 利用率极低。
实测训练 LSTM 时 GPU 利用率常在 5-15% 之间。同等规模的 Transformer 能做到 70-95%。
这意味着相同硬件上 Transformer 的训练吞吐量是 LSTM 的 5-10 倍。在大模型时代(参数量上百亿),这种差距让 RNN 训练变得不可行。
「训练得起」是大模型时代的硬约束。Transformer 之所以胜出,并行训练能力是核心原因。
研究者尝试过给 RNN 加并行性:
第一,Quasi-RNN(QRNN):把 RNN 的非线性拆开,让 forward 部分能并行。
第二,Simple Recurrent Unit(SRU):简化门控让 RNN 能在 element-wise 维度上并行。
第三,SCRN, IndRNN, Parallel SCAN:各种工程优化。
这些方案在小规模上有效,但都没成为主流。原因是 Transformer 同期出现,把所有 RNN 优化的努力都比下去了。
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 在所有层同时前向,几个矩阵乘法搞定。
但训练并行 ≠ 推理并行。Transformer 的自回归生成(GPT 类)必须一个 token 一个 token 地生成,因为下一个 token 依赖上一个。这时它的优势没了。
更糟的是,Transformer 推理要存 KV cache,长上下文下内存占用巨大。这反而是 RNN 的优势——RNN 推理是 \(O(1)\) 内存,每步只更新 hidden state。
这是 2023 年 Mamba 等模型重新关注循环结构的原因之一。「训练并行 + 推理高效」是新一代序列模型的目标,而 Transformer 只占了前一半。
并行性还影响「能处理多长的序列」。
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 能做长文档/长对话/代码理解等任务。
RNN 训练时 batch 内每个序列长度可能不同,需要 padding。padding 浪费计算。Transformer 也有这个问题,但因为整体训练快,浪费的相对成本低。
更深层的问题是 RNN 的「内存随长度线性增长」(要存所有时刻的 hidden state 给反向用)。Transformer 也类似,但矩阵化的存取效率更高。
分布式训练时,多 GPU 之间要同步梯度。RNN 因为单 step 时间长,每次同步前 GPU 已经做了大量计算,同步开销相对小。Transformer step 短,同步开销相对大。
但 Transformer 通过 ZeRO、FSDP 等技术能高效处理大模型分布式训练。RNN 时代的分布式训练不成熟(因为模型小,不需要)。这是另一个工程基础设施差异。
虽然单序列推理时 RNN 的 \(O(N)\) vs Transformer 的 \(O(N^2)\) 是 RNN 优势,但 batched inference 时 Transformer 的吞吐量常常更高——因为它能同时处理多个序列的所有 token,矩阵乘法效率高。
vLLM、SGLang 等推理引擎进一步优化了 Transformer 的 batched inference。这让「Transformer 推理慢」的问题在生产环境中没那么严重。
RNN 把任意长度输入压缩到固定维度 \(d\) 的 hidden state。这是它的优雅之处(结构简单),也是它的致命伤(容量固定)。
信息论说:要无损保留 \(T\) 个 token 的信息,hidden state 维度应该正比于 \(T\)。固定 \(d\) 处理任意 \(T\) 必然有损。
「有损」的代价是:长序列下 hidden state 必然丢信息。哪些信息被丢?由训练任务决定——任务里不重要的信息被压掉。
Seq2Seq(早期版本)把整个源句压成一个固定向量(encoder 最后的 hidden state),传给 decoder。这是最极端的信息瓶颈:一个 \(d\) 维向量装下整段话的语义。
Sutskever 2014 的实验:句长从 5 到 30,BLEU 还稳定;从 30 到 60,BLEU 暴跌。原因就是 context bottleneck——长句的信息装不下。
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」的胜利。
attention 一旦加到 Seq2Seq 里,研究者发现一个有趣的现象:模型的大部分能力来自 attention,而不是 RNN 部分。
如果你做消融实验:去掉 RNN 但保留 attention(仅留 embedding + attention + softmax),翻译质量会下降但仍然可观。去掉 attention 但保留 RNN,质量大幅下降。
这暗示了「attention 比 RNN 重要」。Vaswani 2017 把这个观察推到极端:完全去掉 RNN,只保留 attention(再加位置编码弥补 attention 缺失的位置信息),性能反而更好。
信息瓶颈不是 RNN 独有的问题。任何「把变长输入压缩成固定容量」的设计都有这个问题——CNN 的 global pooling、ViT 的 [CLS] token 都是不同形式的信息瓶颈。
但 attention 是一个「自适应」的容量分配机制:不同 token 用不同的关注权重,容量按需分配。这就是为什么 attention 在很多任务上比固定瓶颈好。
固定的 hidden_dim \(d\) 不等于实际容量。神经网络的「有效容量」由训练动力学决定——模型只能学到「易优化的」函数子集。
实证上 LSTM 的有效容量远低于 \(d\)。这就是为什么把 hidden_dim 从 256 调到 1024 不能等比例提升能力。
Transformer 也有「有效容量」概念,但因为 attention 的多头设计、跨层的 KV cache 等机制,实际有效容量比 RNN 高得多。
有趣的副作用:信息瓶颈强制模型「只保留重要信息」,这让 hidden state 变得更抽象、更可解释。研究者发现训练好的 LSTM 的 hidden state 经常对应明确的语义概念。
Transformer 的 KV cache 容量大、信息保留多,反而更难解释——单个 attention head 的关注模式可能没有清晰语义。这是 trade-off 的另一面:表达力强了,可解释性下降了。
多模态模型常用「shared embedding space」连接不同模态。这个 shared space 也是一个信息瓶颈——把图像、文本、音频压到同一向量空间。
CLIP 等模型通过对比学习训练这个 shared space。它的容量决定了模型能区分多少种「图像-文本对」。这是另一个「固定容量处理任意输入」的例子。
我们在第 9 篇讲过 Bahdanau attention。这里从「极限」的角度重看。
Bahdanau 论文的标题是 Neural Machine Translation by Jointly Learning to Align and Translate。注意这个 “Jointly”——它不是单独学对齐再翻译,而是一起学。这种「软对齐」让模型自己决定每一步看哪里。
效果立竿见影:英法翻译 BLEU 提升 ~2 分(当时这是大进步),长句性能不再衰减。Bahdanau attention 成为 NMT 的标准组件。
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 时代的巅峰。
Gehring 2017 的 ConvS2S 用 1D CNN 取代 encoder 的 RNN,再用 attention 做对齐。这是一个有趣的中间形态:放弃 RNN encoder(解决并行性问题),保留 attention,仍然用 RNN-like 的解码器。
ConvS2S 在英德翻译上短暂超过了 RNN+attention,速度更快。它给 Transformer 论文埋下了伏笔——「也许 RNN 完全不必要」。
Cheng 2016 的 Long Short-Term Memory-Networks for Machine Reading、Lin 2017 的 A Structured Self-attentive Sentence Embedding 等工作开始用「self-attention」(让序列自己关注自己)来增强 RNN。
这些工作发现,self-attention 单独用就有很强的表达能力。这进一步暗示了「也许 RNN 是多余的」。
attention 还带来一个副产品:可解释性。\(\alpha_{ti}\) 矩阵可以画成热力图,显示「decoder 第 t 步关注了 encoder 的哪些位置」。
这种可视化在机器翻译里非常直观——你能看到模型把英文 “cat” 对齐到法文 “chat”。研究者一度认为 attention 提供了「神经网络的解释」。
后来的研究(Jain 2019, Attention is not Explanation)质疑了这种解释——attention 高未必意味着该位置真正影响输出。但 attention 作为「初步可视化工具」仍然有价值。
Vaswani 2017 论文的标题 Attention Is All You Need 是一个挑衅。它在告诉读者:「之前那些 RNN, CNN 都不需要,attention 就够了」。
这个标题敢提出来是因为前面几年 attention 的研究已经积累到这个程度——大家都隐隐感到 attention 是核心,只差有人直接拍板说「去掉其他的」。Vaswani 团队就是那个人。
Transformer 的核心动作是抛弃循环。所有的 self-attention、feed-forward、LayerNorm 都是「位置独立」的——每个位置独立计算,不依赖前一个位置算完。
这一抛弃带来三个结果:
第一,训练并行(解决三难第三个)。
第二,长程一步直达(解决三难第一个)。
第三,梯度路径短(残差连接 + LayerNorm 保证稳定,解决三难第二个)。
三难一次性解决。代价是失去了循环带来的 inductive bias——必须用位置编码人工注入位置信息。
Vaswani 的另一个创新是 multi-head attention:把 attention 分成多个 head(typically 8 或 16),每个 head 学不同的「关注模式」(句法、语义、位置等),最后拼接。
multi-head 让 attention 能同时关注多种关系。这是 RNN 做不到的——RNN 的 hidden state 只有一个,多种关系混在一起。
抛弃循环后,attention 没有位置概念(permutation invariant)。Transformer 通过添加位置编码(sinusoidal 或 learned)给每个位置一个独特向量,让模型能区分「第 1 个 token」和「第 100 个 token」。
位置编码是个有趣的「补丁」——它说明 attention 本身不能完全替代循环的所有功能。循环天然有顺序,attention 没有。
后续研究(rotary position embedding、ALiBi、relative position encoding)改进了位置编码,但「需要位置编码」这件事本身是 attention 的局限。
Transformer 在每个子层周围加残差连接:
\[ x' = \text{LayerNorm}(x + \text{Sublayer}(x)) \]
这保证梯度能直接流过深度方向,避免梯度消失。同时 LayerNorm 让每层的激活分布稳定。
这两个看似简单的工程组件是 Transformer 训练成功的关键。没有它们,Transformer 很难训到 12 层、24 层、96 层这么深。
Vaswani 2017 在 WMT14 英德翻译上的实验:base Transformer 28.4 BLEU,big Transformer 28.4→41.0,分别超过当时最好的 RNN+attention 模型。训练时间是 RNN 的 1/4。
这个实验数据让 Transformer 一夜爆红。论文发布后几个月,所有 NMT 团队都在切换到 Transformer。
Transformer 出来后,2018 年 BERT 和 GPT 把它推向预训练时代:
BERT:双向 Transformer + masked language modeling,做下游任务的特征提取器。
GPT:单向 Transformer + 自回归语言建模,做生成任务。
这两个方向定义了之后五年的 NLP。RNN 时代的预训练(Word2Vec、ELMo)相比之下显得初级。
Transformer 的成功有几个深层原因:
第一,架构通用性:encoder/decoder 通吃,分类/生成/理解都能做。
第二,scaling friendly:参数从百万到千亿都能稳定训练。
第三,transfer learning 友好:预训练 + 微调成为标准范式。
第四,硬件友好:矩阵乘法主导,GPU/TPU 高效。
这些性质让 Transformer 不只是「一个更好的架构」,而是「下一代基础设施」。RNN 没有这些性质。
RNN 时代,序列建模和图像、表格、图结构是分开的研究。Transformer 出来后,越来越多领域发现:把数据切成 token,扔进 Transformer 就能 work。
ViT(Vision Transformer,2020):图像切成 patch token。
Swin Transformer:层次化的视觉 Transformer。
Whisper:语音 Transformer。
DNA Transformer、蛋白质 Transformer、表格 Transformer……
这种「无差别 tokenization」让 Transformer 成为通用架构。RNN 时代的「领域特定架构」逐渐消失。
RNN 时代的工程主要是「设计特征/架构变体」。Transformer 时代的工程主要是「scale 模型和数据」。
Bender 2021 等人称之为「stochastic parrots」时代——参数从亿到千亿,能力从 NLP 任务到通用助手。RNN 时代根本想象不到「scale 一个模型到千亿参数解决所有问题」。
scale 是 Transformer 时代的核心方法论。这要求架构必须能高效训练大规模——这正是 Transformer 的优势。
RNN 时代深度学习研究偏学术:你提一个新架构,跑一个 benchmark,发个 ICLR/NeurIPS。
Transformer 时代研究偏工程:你拿一个标准架构,喂大量数据,调出一个能用的产品。OpenAI、Anthropic、Meta、Google 等公司主导前沿,学界跟随。
这种转变让深度学习的研究方式根本改变。「架构创新」不再是核心,「数据 + 训练 + 评估」才是。
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 也有局限:
第一,\(O(N^2)\) 复杂度:序列长度翻倍,计算量四倍。长上下文(10K+)昂贵。
第二,KV cache 内存:长序列推理要存所有 KV,内存压力大。
第三,位置编码的硬上限:训练长度 2K,推理时超过这个长度(如 32K)需要特殊技巧(rope scaling)。
第四,缺少递归归纳偏置:某些任务(涉及长 chain reasoning、内部状态机模拟)Transformer 仍然吃力。
这些局限给了「下一代架构」机会。
研究者尝试了大量「efficient transformers」减少 \(O(N^2)\) 代价:
这些方法各有优势但都没完全替代标准 Transformer。原因是它们都损失了部分 attention 表达能力。
Gu, Dao 2023 的 Mamba 是一个突破:
第一,它是「循环」结构(每步状态更新),\(O(N)\) 复杂度。
第二,它用「selective state space」让状态更新依赖输入,效果接近 attention。
第三,通过 parallel scan 算法,仍能并行训练。
Mamba 在某些 benchmark(特别是长序列任务)上接近甚至超过 Transformer。它代表了「circle 回到循环」的趋势——但不是回到 1990 年的 RNN,而是用现代视角重新设计循环。
Peng 2023 的 RWKV 是另一个尝试,结构上像 RNN 但训练时能并行。它用「token mixing + channel mixing」的两阶段循环替代 attention。
RWKV 已经训到了几十亿参数规模,效果接近 Transformer。它和 Mamba 一样代表了「线性复杂度序列模型」的方向。
最近的趋势是 hybrid:在 Transformer 里穿插一些循环层(比如 Jamba = Transformer + Mamba 混合)。这种设计既保留 Transformer 的强大表达,又获得循环的高效推理。
我们可能会看到未来的主流模型不再是「纯 Transformer」,而是「Transformer + 某种循环结构」的混合。
Transformer 时代不会是最后一个时代。每代架构都解决了上一代的某些问题,同时引入新问题。RNN→Transformer→Mamba 的循环(pun intended)表明:架构设计是一个无尽的 trade-off 过程。
理解这一点能让你保持开放心态——下一代架构可能会从「Transformer 的局限」入手,提出全新解决方案。可能是 SSM,可能是 Mixture of Experts,可能是某种全新形式。
虽然 Transformer 主导了大模型,但 RNN 在某些场景仍有优势:
LSTM 参数少、推理时无 KV cache、延迟稳定。手机、IoT、嵌入式设备上 RNN 仍是首选。
苹果的端侧语音识别、Google 的智能键盘、各种 wearable AI 都大量使用 LSTM/GRU。
在线语音识别、实时翻译、流式时间序列分析——这些场景每来一个 token 立即输出,RNN 的 \(O(1)\) 每步推理优势明显。
Transformer 也能流式(causal masking + KV cache),但内存随时间线性增长,不适合无限流。
数据少(几千样本以内)的场景,Transformer 容易过拟合。LSTM 的 inductive bias 更强,小数据下表现更好。
学习深度学习从 RNN 入门最自然。它把「时间」「状态」「记忆」这些概念以最直观的形式呈现。
我个人写代码教学时仍然先讲 RNN 再讲 Transformer。这不是怀旧,是教学顺序的合理选择。
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 自然就懂了。
不准确。在大模型领域基本是这样,但在边缘设备、流式处理、小数据场景,RNN 仍有不可替代的优势。
不止。RNN 的问题包括长程依赖弱、梯度不稳定、容量瓶颈、训练慢——是综合问题,不只是速度。
不等。attention 是一个机制(RNN 时代就有),Transformer 是一个完整架构(包括 multi-head、position encoding、残差、LayerNorm 等)。早期的 RNN+attention 不是 Transformer。
不对。LSTM 缓解了梯度消失,但容量瓶颈和噪声累积仍然限制有效记忆长度(实际几百步)。
相对而言。和 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 章节。
上一篇:09 RNN 与序列建模
下一篇:11 注意力的直觉与起源
把当前热点继续串成多页阅读,而不是停在单篇消费。
2026-04-15 · transformer
很多人第一次读 Vaswani 2017 的公式时,都会卡在那一个 √dk 上。
2026-04-15 · transformer
这是【Transformer 与注意力机制】系列的第一篇,承担两件事:一是把这套五十多篇文章为谁写、解决什么问题、彼此之间是什么关系交代清楚;二是为完全没基础的读者画出一条从向量、点积、矩阵乘法走到自注意力、再走到大语言模型的爬升路径,让你在投入时间之前先知道终点在哪、路上要经过哪些坎、读完之后你会、还不会做什么事。
2026-04-15 · transformer
把矩阵乘法掰开成两种等价但风格不同的视角——『行 × 列』的点积视角和『列的线性组合』视角,最终落到 QK^T 的形状分析。
2026-04-15 · transformer
Softmax 不是一个孤立的归一化函数,而是把任意实数分数变成概率分布的一座桥。本文从'为什么需要它'出发,讲清楚公式、几何、温度、稳定性、与交叉熵的配合,以及它在 Transformer 注意力里扮演的关键角色。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。