Skip to content

导论:序列建模的本质与记忆的数学 ​

如果说前馈神经网络(MLP)和卷积神经网络(CNN)处理的是空间(Space)——一张图像中的像素排列、一个表格中的特征列,那么循环神经网络(RNN)及其变体处理的则是时间(Time)与序列(Sequence)。文本、语音、金融时间序列、基因序列……这些数据不仅包含“内容”,更包含“顺序”。顺序决定了语义:“狗咬人”与“人咬狗”的词汇完全相同,但词序的颠倒彻底改变了含义。

RNN 的核心哲学是**“记忆”。它通过引入隐藏状态(Hidden State)**——一个在网络内部循环传递的信息载体,将过去时刻的信息“烙印”在当前的计算中。这种结构使其在理论上能够处理任意长度的上下文,成为早期自然语言处理、语音识别和手写文字识别的事实标准。

然而,简单的记忆在长序列中遭遇了致命的物理瓶颈:梯度消失与爆炸。这催生了 LSTM 和 GRU 这样精妙的“阀门系统”。而近年来,Transformer 的强势崛起并未完全取代 RNN,反而催生了 “线性注意力” 这一全新的研究方向,试图将 RNN 的线性复杂度和 Transformer 的全局建模能力统一起来。


第一部分:基础 RNN(Vanilla RNN)——循环的基石与崩溃的根源 ​

1.1 结构定义与展开 ​

对于一个标准的前馈网络,信息只能沿层向上流动。RNN 打破了这一限制:它在隐藏层之间建立了循环边(Recurrent Edge)。

在时间步 t,RNN 接收两个输入:当前时刻的外部输入 xt 和上一时刻的隐藏状态 ht−1。其核心状态更新方程如下:

ht=tanh⁡(Wxhxt+Whhht−1+bh)yt=Whyht+by
  • Wxh∈Rdh×dx:输入到隐藏状态的权重矩阵。
  • Whh∈Rdh×dh:隐藏状态到自身的循环权重矩阵(记忆矩阵),这是 RNN 的灵魂。
  • tanh(双曲正切)或 ReLU 作为非线性激活函数。

将网络沿时间轴“展开”(Unroll),RNN 实际上等价于一个深度为序列长度 T 的深层前馈网络,且每一层的权重 Whh 都是共享的(权值共享)。

1.2 随时间反向传播(BPTT)与梯度问题 ​

RNN 的训练依赖于 BPTT(Backpropagation Through Time)。由于网络在时间上展开极深,梯度需要沿着时间通道从 T 时刻传递回 1 时刻。

通过链式法则,第 t 时刻的损失 Lt 对较早时刻 τ 的隐藏状态 hτ 的梯度包含一个连乘因子:

∂Lt∂hτ=∂Lt∂ht⋅∏k=τ+1t∂hk∂hk−1

其中 ∂hk∂hk−1=WhhT⋅diag(tanh′⁡(hk))。

  • 梯度爆炸(Exploding Gradients):若 Whh 的最大奇异值 > 1,连乘导致梯度指数级放大,参数更新剧烈震荡,损失变为 NaN。解决手段:梯度裁剪(Gradient Clipping),将梯度的 L2 范数限制在某个阈值(如 1.0)内。
  • 梯度消失(Vanishing Gradients):若最大奇异值 < 1,梯度指数级衰减至 0。这使得网络无法学习距离超过 10~15 个时间步的长程依赖(Long-term Dependency)。RNN 记不住“开头说了什么”。这是基础 RNN 的根本性架构缺陷。

第二部分:LSTM(长短期记忆网络)——精巧的梯度高速公路 ​

为了解决长程依赖问题,Sepp Hochreiter 和 Jürgen Schmidhuber 在 1997 年提出了 LSTM。其核心思想是引入细胞状态(Cell State) ct 作为信息的“传送带”,并通过精密的门控机制(Gating Mechanism) 控制信息的遗忘、写入和读取。

2.1 核心数学定义 ​

LSTM 的每个单元包含三个门:遗忘门 ft、输入门 it 和输出门 ot,以及候选细胞状态 c~t。

设 xt 为当前输入,ht−1 为上一时刻隐藏状态:

  1. 遗忘门(Forget Gate):决定丢弃多少旧信息(核心创新)。

    ft=σ(Wf⋅[ht−1,xt]+bf)

    σ 为 Sigmoid 函数,输出 [0,1] 之间的值。1 表示“完全保留”,0 表示“彻底遗忘”。

  2. 输入门(Input Gate):决定存储多少新信息。

    it=σ(Wi⋅[ht−1,xt]+bi)c~t=tanh⁡(Wc⋅[ht−1,xt]+bc)
  3. 细胞状态更新(恒定误差传送带 CEC):这是解决梯度消失的数学根源。旧的细胞状态 ct−1 乘以遗忘门,加上新的候选状态乘以输入门。

    ct=ft⊙ct−1+it⊙c~t

    ⊙ 表示逐元素(Hadamard)乘积。

  4. 输出门(Output Gate):决定基于当前细胞状态输出什么给隐藏状态。

    ot=σ(Wo⋅[ht−1,xt]+bo)ht=ot⊙tanh⁡(ct)

2.2 为什么 LSTM 能避免梯度消失(数学证明) ​

反向传播时,梯度从 ct 传递到 ct−1 的导数为:

∂ct∂ct−1=diag(ft)+...(其他由输入门控制的项)

关键在于,当遗忘门 ft 接近 1 时,导数矩阵趋近于单位矩阵 I。这条路径上没有非线性激活函数(如 tanh)的压缩,也没有权重矩阵的反复相乘。误差信号可以像“高速公路”一样顺畅地沿细胞状态线直通远方时刻,这就是恒定误差传送带(Constant Error Carousel, CEC) 的本质。


第三部分:GRU(门控循环单元)——轻量高效的简化版卫士 ​

Cho 等人在 2014 年提出了 GRU,可以视为 LSTM 的“精简版”。它将 LSTM 的“遗忘门”和“输入门”合并为单一的 “更新门(Update Gate)”,并将细胞状态 ct 与隐藏状态 ht 合并。

3.1 数学定义 ​

zt=σ(Wz⋅[ht−1,xt])(更新门,决定保留多少旧状态)rt=σ(Wr⋅[ht−1,xt])(重置门,决定忽略多少旧状态)h~t=tanh⁡(Wh⋅[rt⊙ht−1,xt])ht=(1−zt)⊙ht−1+zt⊙h~t

3.2 GRU vs LSTM ​

  • 参数更少:GRU 只有 2 个门(无独立的输出门),参数总量比 LSTM 少约 1/3,计算速度更快,更不易过拟合(在小数据集上优势明显)。
  • 表现对比:在大多数序列建模任务(如情感分析、语音帧预测)中,GRU 的表现与 LSTM 相当甚至略优。但在需要精确记忆极长期内容(如生成复杂的代码或长文档摘要)时,LSTM 的独立细胞状态结构依然提供更强大的容量。
  • 本质联系:若将 (1−zt) 视作 LSTM 的遗忘门 ft,将 zt 视作输入门 it,GRU 强制了 ft+it=1 的约束,而 LSTM 允许两者独立(即可以同时遗忘旧信息并写入新信息,或两者皆可)。

第四部分:CNN + LSTM 融合架构——视觉与语义的联姻(以文字识别 CRNN 为例) ​

单一的 RNN 难以直接处理 2D 图像(因为图像像素间存在极强的局部空间相关性,且序列过长)。2015 年提出的 CRNN(Convolutional Recurrent Neural Network) 完美结合了 CNN 强大的特征提取能力和 RNN 的序列上下文建模能力,成为了场景文字识别(Scene Text Recognition)和语音识别中的经典范式。

4.1 架构拆解(三大模块) ​

  1. 卷积层(CNN,特征提取器): 接收原始图像 X∈RH×W×C,通过多层的卷积、池化操作,输出特征图 F∈RH′×W′×D。这里的 CNN 通常使用 VGG 或 ResNet 的前几层,用于将原始像素转换为具有语义的高级特征(如笔画方向、边缘轮廓)。

  2. 特征序列映射(Map-to-Sequence): CRNN 的关键转换在于:将特征图的“列”(Columns)视为时间序列。对特征图 F 按列切分,每一列 vt∈RH′×D 作为一个“时间步”的特征向量输入到 RNN 中。

    例如,输入图像宽 160px,经过 4 倍下采样(Stride=4)后,W′=40。这意味着 RNN 接收的是一个长度为 40 的序列。每一列特征包含了该垂直切片内的所有像素信息。

  3. 循环层(LSTM/GRU,上下文建模): 将序列 {v1,…,vW′} 输入双向 LSTM(BiLSTM)。双向结构可以同时利用前向和后向的上下文,这对文字识别至关重要(例如,看到“ing”后缀可以反推前面是“jump”)。 最终,每个时间步输出一个关于字符类别的概率分布。

4.2 序列对齐与 CTC 损失(Connectionist Temporal Classification) ​

这是整个架构的“魔法引擎”。传统分类需要标注每个像素/列对应哪个字符(数据标注成本极高)。CTC 引入了一个特殊的 blank(空白)标签,允许网络输出一个长度远大于目标字符串长度的序列(只需预测“出现哪些字符”,不需对齐)。 CTC 通过动态规划(前向-后向算法) 将所有可能的“路径”映射到最终标签序列的概率,直接最大化该概率。CRNN + CTC 成为 OCR(光学字符识别)领域统治多年的工业级标准。


第五部分:线性注意力——向线性复杂度的进击与 RNN 的回归 ​

Transformer 强大的全局建模能力虽好,但其自注意力复杂度为 O(L2)(L 为序列长度),处理长文本(如 10 万 token)时显存和计算力捉襟见肘。而 RNN 虽然复杂度是线性的 O(L),却因梯度问题难以记住超长上下文。

线性注意力(Linear Attention) 的提出,旨在将这两条路径合二为一:让模型在训练时具有并行计算的 Transformer 形式,但在推理或隐式表示上,其计算复杂度是 O(L) 的“RNN 形式”。

5.1 Softmax 注意力的“内核化”改写 ​

标准自注意力的 Q∈RL×d,K∈RL×d,V∈RL×d。输出为:

Attention(Q,K,V)=softmax(QKT/d)V

若将 softmax 分解为特征映射 ϕ(⋅) 的点积形式(即 sim(qi,kj)=ϕ(qi)Tϕ(kj)),则利用矩阵乘法的结合律(Associative Property) 重写公式:

Oi=ϕ(qi)∑j=1Lϕ(kj)Tvjϕ(qi)∑j=1Lϕ(kj)T

突破性转变:现在,∑j=1Lϕ(kj)Tvj 和 ∑ϕ(kj)T 可以先对所有键(Keys)和值(Values)累加,从而避免显式计算庞大的 L×L 注意力矩阵。这将时间复杂度从 O(L2d) 降为 O(Ld2)(假设 d≪L,即线性复杂度)。

5.2 线性注意力与 RNN 的等价性(因果推断) ​

在自回归生成(Causal)设定下(只看过去信息,不看未来),上述公式退化为递归累加,完美等价于一个 RNN:

St=St−1+ϕ(kt)Tvt(记忆矩阵)zt=zt−1+ϕ(kt)T(归一化因子)ot=ϕ(qt)Stϕ(qt)zt

这里的 St 就是“RNN 的隐状态”。它不再是一个标量或小向量,而是一个 d×d 的矩阵(外积累积)。这意味着线性注意力在保持 O(L) 推理速度的同时,具备了 Transformer 级别的“全局读写”能力。

5.3 核心挑战与解决方案(特征映射的选择) ​

如果 ϕ(x)=x 或 elu(x)+1(正数映射),线性注意力的效果通常会劣于标准的 Softmax 注意力,因为它失去了 Softmax 带来的“锐利聚焦”(Sparse Focus)特性。

  • 挑战:Softmax 能让分数高的权重接近 1,分数低的接近 0;而线性注意力是所有键的“加权平均”,容易引入噪声干扰。
  • 变体:DeltaNet 或 RWKV(Receptance Weighted Key Value) 引入“衰减因子”或“门控机制”,让模型能够像 LSTM 的遗忘门一样控制旧信息的衰减,甚至允许“擦除”或“重置”记忆。这实质上是对线性注意力进行的“RNN 式门控增强”。

结语:循环的回归与融合 ​

从基础 RNN 的脆弱记忆,到 LSTM 的精巧阀门,再到 GRU 的简约高效,循环神经网络在很长一段时间内定义了序列建模的标准。CNN+LSTM 的融合架构更证明了,单一模型无法通吃万物,多模态融合才是解决复杂感知任务(如文字识别、视频理解)的必经之路。

面对 Transformer 的降维打击,RNN 并没有消亡。线性注意力的提出,证明了 RNN 在底层本质上与注意力机制是同构的——都是“查询-键-值”的聚合,只是聚合的方式(是显式的全局矩阵乘法,还是递推的状态累积)不同。随着上下文窗口增长到百万级,线性复杂度的原生优势将重新变得不可忽视。

未来的方向不是“RNN vs Transformer”的二元对立,而是融合。正如 Mamba(状态空间模型)和 RetNet 所展示的,下一代序列模型正试图兼顾 RNN 的线性推理效率、LSTM 的门控记忆调节能力以及 Transformer 的并行训练优势。架构虽有更迭,但有效处理长序列上下文这一根本命题,永远是序列建模的北极星。