深度学习模型:LSTM (Long Short-Term Memory) – 长短时记忆网络详解

LSTM(Long Short-Term Memory)——长短时记忆网络
最全面、最通俗、2026 年仍实用的深度学习经典模型详解

LSTM 是循环神经网络(RNN)家族中最重要、最经典的改进模型,由 Sepp Hochreiter 和 Jürgen Schmidhuber 在 1997 年提出,至今仍然是处理序列数据(时间序列、文本、语音、视频等)的王牌模型之一。

1. 为什么需要 LSTM?—— RNN 的致命缺陷

普通 RNN 在处理长序列时会出现 梯度消失(Vanishing Gradient)梯度爆炸(Exploding Gradient) 问题。

简单比喻:

  • RNN 像一个“记性很差的老人”:前面发生的事(长距离依赖)传到后面时,信息越来越模糊,最终完全丢失。
  • LSTM 像一个“超级记性好的老人”:它有一个长期记忆细胞(Cell State),可以选择性地记住或忘记信息。

(上图清晰展示了 RNN 在长序列中性能急剧下降,而 LSTM 和 GRU 能更好地保持长距离记忆)

2. LSTM 的核心创新:细胞状态(Cell State) + 三个门

LSTM 的核心是一个记忆细胞(Cell),里面贯穿一条“高速公路”——细胞状态 C_t(像一条传送带),信息可以在这条带上几乎无损地流动。

每个时间步 t,LSTM 单元有 三个门 来控制信息流动:

  1. 遗忘门(Forget Gate) —— 决定“忘记什么”
  2. 输入门(Input Gate) —— 决定“记住什么新信息”
  3. 输出门(Output Gate) —— 决定“输出什么”

(最经典、最清晰的 LSTM 单个细胞结构图,推荐保存)

(另一个彩色标注版,颜色区分更明显)

3. 数学公式详解(一步一步看懂)

所有门都使用 Sigmoid(σ)(输出 0~1)和 Tanh(输出 -1~1)激活函数。

设:

  • x_t:当前时刻输入
  • h_{t-1}:上一时刻隐藏状态
  • C_{t-1}:上一时刻细胞状态

① 遗忘门(Forget Gate)

决定要从细胞状态中丢弃多少旧信息

f_t = σ(W_f · [h_{t-1}, x_t] + b_f)

  • f_t ≈ 1 → 几乎全部保留旧记忆
  • f_t ≈ 0 → 几乎全部遗忘

② 输入门(Input Gate) + 候选记忆(Candidate Memory)

i_t = σ(W_i · [h_{t-1}, x_t] + b_i) ← 决定哪些信息要更新
\tilde{C}t = tanh(W_C · [h{t-1}, x_t] + b_C) ← 产生新的候选记忆

③ 更新细胞状态(最核心一步!)

C_t = f_t ⊙ C_{t-1} + i_t ⊙ \tilde{C}_t

乘以遗忘门 + 加上新记忆,这就是 LSTM 能记住超长序列的关键!

④ 输出门(Output Gate)

o_t = σ(W_o · [h_{t-1}, x_t] + b_o)
h_t = o_t ⊙ tanh(C_t)

→ 决定当前细胞状态中哪些部分要输出给下一个时刻

4. LSTM 在时间上展开的样子(Unfolded)

(上图是 LSTM 随时间展开的结构,清晰展示信息如何在多个时间步传递)

5. LSTM vs GRU(2026 年最常被问的对比)

GRU(Gated Recurrent Unit)是 LSTM 的简化版,由 Cho et al. 在 2014 年提出。

对比总结

维度LSTMGRU谁更好?(2026 年经验)
参数量较多(3 个门)较少(2 个门)GRU 训练更快
记忆能力极强(单独的细胞状态)较强(混合状态)长序列任务 LSTM 略胜
计算速度稍慢更快实时/移动端首选 GRU
实现复杂度入门推荐先学 LSTM
当前使用频率仍非常高更高(尤其工业界)Transformer 时代两者都常用作局部模块

6. LSTM 的优缺点(2026 年真实评价)

优点

  • 能有效捕捉超长距离依赖(几百甚至上千步)
  • 梯度流动稳定,不易消失
  • 在时间序列、机器翻译、语音识别、文本生成等领域长期统治

缺点(Transformer 出现后暴露):

  • 计算无法并行(必须顺序计算)
  • 参数多、训练慢
  • 超长序列(>1000)仍会衰减
  • 2026 年主流趋势:LSTM + Transformer 混合模型Mamba / RWKV 等新架构 正在逐步替代纯 LSTM

7. PyTorch 代码示例(最简版 LSTM)

import torch
import torch.nn as nn

class SimpleLSTM(nn.Module):
    def __init__(self, input_size=1, hidden_size=64, num_layers=2):
        super().__init__()
        self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True)
        self.fc = nn.Linear(hidden_size, 1)

    def forward(self, x):
        out, (hn, cn) = self.lstm(x)      # out: (batch, seq_len, hidden)
        out = self.fc(out[:, -1, :])      # 取最后一个时间步
        return out

8. 2026 年 LSTM 还在用吗?

答案:还在大量使用!

  • 时间序列预测(股票、天气、销量)→ LSTM/GRU 仍是 baseline
  • 语音识别(结合 Transformer)
  • 机器翻译的后处理模块
  • 边缘设备(手机、IoT)→ GRU/LSTM 轻量高效
  • 与 Transformer 混合(LSTM-Transformer、LSTM for local modeling)

一句话总结:

LSTM 是“带记忆细胞的循环神经网络”,通过三个门机制实现了“选择性记忆 + 选择性遗忘”,彻底解决了普通 RNN 长距离依赖问题,成为深度学习序列建模历史上最伟大的里程碑之一。

想继续深入吗?

  • LSTM 变体(Peephole、Bi-LSTM、ConvLSTM)
  • 手推反向传播
  • 与 Transformer 的详细对比
  • 实战代码(股票预测 / 文本生成)

直接告诉我你想看哪一块,我立刻给你下一篇!🚀

文章已创建 4845

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部