跳转到内容

LSTM — 用门控让神经网络记得住上一段话

是什么

LSTM(Long Short-Term Memory,长短期记忆网络)是一种让神经网络在读长序列时还能记住开头说过什么的循环神经网络(RNN)变体。日常类比:像一个会做笔记的会议秘书——他不靠死记,而是边听边在小本子上写关键信息、划掉过期信息、需要时翻出来用。这个”小本子”就是 LSTM 的 cell state(记忆单元),写/划/翻三个动作就是三个 (gate)。

朴素 RNN 像一个只用脑子硬记的人——记着记着前面就忘了,或者激动到大脑过载(梯度消失/爆炸)。LSTM 把”记忆”从隐藏状态里独立出来,做成一条几乎不会被冲掉的传送带,再用三个开关控制传送带上的内容进出。

为什么重要

不理解 LSTM,下面这些都看不懂:

  • 为什么 2014~2017 年所有翻译、语音识别、对话系统都用它做底座
  • Transformer 之前 20 年的序列建模主线是什么
  • 门控这个范式为什么至今还活着——Llama 里的 SwiGLU、ResNet 的残差、Highway Network,都是 LSTM 门控思想的近亲
  • 训练长依赖网络为什么是个数学硬难题(梯度消失/爆炸)

核心要点

一条传送带 + 三个门

LSTM 每个时间步收到当前输入 x_t 和上一步隐藏状态 h_{t-1},更新一条记忆传送带 c_t

  1. 遗忘门 forget gate f_t:决定从旧 c_{t-1}划掉多少。1 全留,0 全擦。
  2. 输入门 input gate i_t:决定把多少新信息写进传送带。
  3. 输出门 output gate o_t:决定从传送带翻出多少给到外面(生成 h_t)。

三个门都是 sigmoid 输出 0~1 的开关,逐元素乘到信息流上。

Constant Error Carousel(CEC)—— 为什么梯度不消失

朴素 RNN 反向传播时,梯度要按权重 W 连乘 T 次(T 是序列长度)。W < 1 就指数消失,W > 1 就指数爆炸。Hochreiter 1991 硕士论文先指出这个病。

LSTM 的 cell 自连边权重恒为 1——这是论文最关键的设计,叫 constant error carousel:误差沿这条路径反传时乘 1 不变,远古信息也能影响今天的梯度。门是开关,不参与连乘,只决定”这条路通不通”。

一个易混淆点:原版没有 forget gate

1997 原论文只有 input + output gate,cell 状态只增不减——长序列里会饱和。Forget gate 是 1999/2000 由 Gers, Schmidhuber, Cummins 补上的,今天教科书讲的”标准 LSTM”实际是 2000 年定型的版本。

数学骨架(一眼看懂版)

每一步走六行公式(其中 σ 是 sigmoid,⊙ 是逐元素乘):

f_t = σ(W_f · [h_{t-1}, x_t] + b_f) # 遗忘门
i_t = σ(W_i · [h_{t-1}, x_t] + b_i) # 输入门
g_t = tanh(W_g · [h_{t-1}, x_t] + b_g) # 候选记忆
c_t = f_t ⊙ c_{t-1} + i_t ⊙ g_t # 更新传送带
o_t = σ(W_o · [h_{t-1}, x_t] + b_o) # 输出门
h_t = o_t ⊙ tanh(c_t) # 隐藏状态

第 4 行是心脏f_t ⊙ c_{t-1} 决定保留多少旧记忆,i_t ⊙ g_t 决定写入多少新记忆,相加得到新的传送带。

实践案例

案例 1:char-rnn 学莎士比亚

# Karpathy 2015 经典 demo(伪代码)
import torch.nn as nn
model = nn.LSTM(input_size=128, hidden_size=512, num_layers=2)
# 喂入莎士比亚全集字符流,预测下一个字符
# 训完它能写出像模像样的五幕剧台词

一层两层 LSTM 学完《莎士比亚全集》能生成成段戏剧——这是 2015 年深度学习圈的”魔法时刻”,让大众第一次直观感受到序列模型能”创作”。

案例 2:Google Neural Machine Translation(GNMT)2016

GNMT 上线时是 LSTM 工业巅峰:

  • Encoder:8 层双向 LSTM,把源语言句子编成一串向量
  • Decoder:8 层单向 LSTM,加 attention 机制每步翻一个目标词
  • 单模型替换掉了 Google 翻译十几年的统计机器翻译流水线

这套架构上线半年后被 2017 的 Transformer 论文替换,但 attention 的种子是在 LSTM-encoder-decoder 上长出来的。

案例 3:门控思想的当代续命

# SwiGLU(Llama / PaLM 用的 FFN 激活)
# 本质是简化版 input gate
def swiglu(x, W, V):
return swish(x @ W) * (x @ V) # 逐元素乘 = 门控

LSTM 三件套(input/forget/output)虽然在序列建模里被注意力替了,但逐元素乘以 sigmoid/swish 控制信息流的范式直接进了 Transformer FFN——SwiGLU 的 * 就是当年 LSTM 的 input gate。

踩过的坑

  1. 以为 LSTM 能记 100k token:“Long short-term” 真正意思是 “短期记忆持续得久”,不是”长期记忆”。实际有效记忆窗口大约几百 token,远不如 Transformer 的全局注意力。

  2. train 慢且难并行:cell 状态 c_t 依赖 c_{t-1},时间步必须串行。Transformer 全并行是它接班的关键原因之一。

  3. 混淆 LSTM 和 GRU:GRU(Cho 2014)把 input + forget 合成一个 update gate,参数少 25%,多数任务表达力相近。如果论文不强调记忆门控细节,业内常默认用 GRU。

  4. 门控 ≠ 注意力:门控是逐时间步的标量乘法,决定信息流的开/关;注意力是跨所有时间步的加权和,决定哪一步重要。两者解决的是不同问题。

  5. 直接读 1997 原论文容易懵:46 页,记号繁复,且没 forget gate。建议先读 Christopher Olah 2015 博客 “Understanding LSTM Networks”,再回头看原文。

适用 vs 不适用场景

适用

  • 短到中等长度序列(几十到几百步)
  • 在线/流式场景——逐步处理无需看到全文(如实时语音、传感器流)
  • 资源受限设备(手表、IoT)——参数比 Transformer 小一两个数量级
  • 时序预测基础模型(M4 竞赛冠军、TimesFM 内部模块仍用 LSTM 变体)

不适用

  • 超长上下文(>1k token)→ Transformer 注意力远胜
  • 需要大规模并行训练 → cell 串行依赖卡住 GPU
  • 需要双向且全局的语义理解 → BERT 类双向 Transformer 更合适

历史小故事(可跳过)

  • 1991:Hochreiter 在慕尼黑工大写硕士论文,第一次系统刻画 RNN 的梯度消失/爆炸问题。这篇德文论文当时没几个人读。
  • 1994:Bengio, Simard, Frasconi 独立证明”RNN 学长依赖是数学硬难题”。
  • 1995:Hochreiter & Schmidhuber 写技术报告 TR-FKI-207-95,提出 CEC 雏形。
  • 1997:Neural Computation 正式发表 LSTM 论文。当年几乎无人引用——深度学习还在寒冬,神经网络是学术冷门。
  • 1999/2000:Gers, Schmidhuber, Cummins 加 forget gate,LSTM 才变成今天的样子。
  • 2013:Graves 用 LSTM 生成手写英文,效果以假乱真,工业界开始注意。
  • 2014:Sutskever et al. seq2seq 论文,LSTM 进入 NLP 主舞台。
  • 2017:Vaswani et al. “Attention is All You Need”,Transformer 接班。

从论文发表到工业应用花了 16 年——典型的”长冷启动 + 一夜之间”科研故事。Schmidhuber 后来在多个场合 “calling out” 别人没引他,但 LSTM 本身的影响力毋庸置疑。

学到什么

  1. 门控 = 逐元素乘 sigmoid:这是深度学习最复用的范式之一,至今活在 SwiGLU 和 ResNet 残差里
  2. CEC 思想:想让梯度跨 T 步不消失,给信息一条”权重恒为 1 的传送带”
  3. 架构决定可训练性:vanilla RNN 数学上能表达的,LSTM 能学到——区别在反向传播路径
  4. 教科书版本 ≠ 原始论文:1997 原版没 forget gate,今天讲的”标准 LSTM”是 2000 修订版
  5. 理论 → 工业 → 替代:1997 → 2014 工业崛起 → 2017 被替——序列模型 20 年主线

延伸阅读

关联

  • word2vec —— 同时代 NLP 经典;word2vec 给词嵌入,LSTM 给序列建模
  • fastertransformer-2021 —— Transformer 工业推理优化,对照看为什么 LSTM 难加速
  • anthropic-circuits —— 现代可解释性研究对象多是 Transformer,LSTM 内部机制研究在 2015~2018 年也热过一波