RNN / LSTM(循环神经网络)

一类按时间步顺序处理序列数据的神经网络。每个时间步的输出依赖前一步的隐藏状态,天然适合序列建模但无法并行计算。LSTM和GRU是其改进变体,用门控机制缓解梯度消失问题。

RNN / LSTM(循环神经网络)

一句话理解

RNN 是一种按时间步顺序处理序列数据的神经网络——上一步的输出作为下一步的输入,像一个带记忆的循环。

RNN 的核心思想

ht=f(ht1,xt)h_t = f(h_{t-1}, x_t)ht=f(ht1,xt)

每个时间步 ttt 的隐藏状态 hth_tht 由前一步的状态 ht1h_{t-1}ht1 和当前输入 xtx_txt 共同决定。信息沿时间步逐步传递,理论上可以"记住"整个序列的信息。

两个致命瓶颈

1. 顺序依赖,无法并行

Token 必须一个一个处理——处理 100 个词就要串行跑 100 步,无法并行加速。这导致训练极慢,成为堆大模型的瓶颈。

2. 长距离遗忘(梯度消失)

第 1 个词的信息要经过 99 步传递才能影响第 100 个词,信号逐步衰减。这就是为什么早期 RNN 很难处理长文本。

LSTM:打补丁

LSTM(Long Short-Term Memory,1997)引入了门控机制——遗忘门、输入门、输出门——控制信息的保留和丢弃:

ft=σ(Wf[ht1,xt]+bf)f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)ft=σ(Wf[ht1,xt]+bf) it=σ(Wi[ht1,xt]+bi)i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)it=σ(Wi[ht1,xt]+bi) C~t=tanh(WC[ht1,xt]+bC)\tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C)C~t=tanh(WC[ht1,xt]+bC) Ct=ftCt1+itC~tC_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_tCt=ftCt1+itC~t

其中 ftf_tft 是遗忘门(决定丢弃多少旧信息),iti_tit 是输入门(决定写入多少新信息),CtC_tCt 是细胞状态(长期记忆的载体)。σ\sigmaσ 是 sigmoid 函数,\odot 是逐元素乘法。

这缓解了梯度消失问题,但没有根治,而且增加了计算复杂度。

GRU(Gated Recurrent Unit)是 LSTM 的简化版本,将遗忘门和输入门合并为一个更新门,参数更少但效果相近。

历史地位

RNN/LSTM 在 2017 年 Transformer 出现之前统治了序列建模领域。Transformer 用 Self-Attention 完全抛弃了循环结构,让任意两个 token 之间的距离变为 O(1),同时支持并行计算,彻底取代了 RNN 在主流 NLP 中的地位。

引用本术语的文章