Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Long Short-Term Memory (LSTM)

LSTM 是一种循环网络,其门控细胞状态能够在长序列中传递信息。内容涵盖其门控机制、方程、与 GRU 的比较以及代码。

长短期记忆网络(LSTM)是一种循环神经网络(RNN)架构。它在简单 RNN 的隐藏状态旁增加了一个门控记忆——细胞状态,因此能够跨越数百或数千个时间步传递信息。Sepp Hochreiter 和 Jürgen Schmidhuber 于 1997 年提出了 LSTM,以解决梯度消失问题;该问题会使简单 RNN 难以学习长距离依赖关系。他们的论文报告称,LSTM 能跨越超过 1,000 个时间步的间隔建立联系。2010 年代,LSTM 曾用于语音识别、机器翻译和手写识别,后来大多数语言任务转而采用 Transformer。在时间序列分析、传感器数据流和端侧模型中,LSTM 仍很常见,因为这些场景看重固定大小的状态和每步固定的计算开销。

LSTM 单元的工作原理#

在每个时间步 t,LSTM 读取输入 xₜ 和前一个隐藏状态 hₜ₋₁,并计算三个门和一个候选值,每项都有各自的权重。门使用 sigmoid 函数,因此每个元素都在 0 到 1 之间;候选值使用 tanh,因此在 −1 到 1 之间:

  • 遗忘门:fₜ = σ(W_f xₜ + U_f hₜ₋₁ + b_f),决定保留旧细胞状态中每个元素的多少。
  • 输入门:iₜ = σ(W_i xₜ + U_i hₜ₋₁ + b_i),决定写入多少候选值。
  • 候选值:gₜ = tanh(W_g xₜ + U_g hₜ₋₁ + b_g),提出新的内容。
  • 输出门:oₜ = σ(W_o xₜ + U_o hₜ₋₁ + b_o),决定向外输出多少细胞状态内容。

然后,两个状态按以下方式更新:cₜ = fₜ ⊙ cₜ₋₁ + iₜ ⊙ gₜ,hₜ = oₜ ⊙ tanh(cₜ),其中 ⊙ 表示逐元素相乘。细胞状态是长期记忆,隐藏状态则是短期输出,会馈入下一层和下一步。

细胞状态采用加法更新。cₜ 对 cₜ₋₁ 的梯度逐元素等于 fₜ,因此,当遗忘门接近 1 时,误差信号几乎不变地向后传递,并跨越多个时间步;原论文将这条路径称为“恒定误差环”。1997 年的 LSTM 没有遗忘门,细胞只能累积信息。Felix Gers、Schmidhuber 和 Fred Cummins 于 2000 年加入遗忘门,使细胞能够重置;如今所有标准 LSTM 都包含遗忘门。Rafal Jozefowicz 及其同事于 2015 年建议将遗忘门偏置初始化为 1,这能让训练初期的门保持开启状态,使网络一开始就倾向于记住信息。

PyTorch 中的 LSTM#

PyTorch 的 nn.LSTM 会在整个序列上运行该单元,并返回每一步的隐藏状态以及最终的隐藏状态和细胞状态。下面的代码片段根据逐帧特征向量对短视频片段分类,例如这些特征向量可以由卷积神经网络(CNN)从每一帧中提取:

import torch
from torch import nn

# 8 video clips, 16 frames each, 512 features per frame: (batch, time, features)
clips = torch.randn(8, 16, 512)

# One LSTM layer with a 128-dim hidden state, and a classifier over 5 actions
lstm = nn.LSTM(input_size=512, hidden_size=128, batch_first=True)
classifier = nn.Linear(128, 5)

# output holds h at every step; h_n and c_n are the final hidden and cell states
output, (h_n, c_n) = lstm(clips)
logits = classifier(h_n[-1])
print(f"output {tuple(output.shape)}, h_n {tuple(h_n.shape)}, c_n {tuple(c_n.shape)}, logits {tuple(logits.shape)}")

# Each weight matrix stacks four blocks of 128 rows: input gate, forget gate, candidate, output gate
print(f"Input weights {tuple(lstm.weight_ih_l0.shape)}, recurrent weights {tuple(lstm.weight_hh_l0.shape)}")

它会输出 output (8, 16, 128), h_n (1, 8, 128), c_n (1, 8, 128), logits (8, 5) 和 Input weights (512, 512), recurrent weights (512, 128)。最终隐藏状态会汇总每段 16 帧视频的信息,供五分类器使用;每个权重矩阵有 4 × 128 = 512 行,因为 PyTorch 将四个门块存储在一个矩阵中。

  • 简单 RNN:在每一步通过一个 tanh 层重写整个状态,因此梯度会随序列长度呈几何级数缩小或增大,难以学习长距离依赖关系。
  • GRU:将细胞状态和隐藏状态合并,并使用两个门而不是三个门,因此在宽度相同时有三个权重块,参数量为 LSTM 的四分之三。两者在不同任务中没有一种始终占优。
  • Transformer:通过自注意力并行处理所有位置,在 GPU 上训练快得多,并可直接访问远距离上下文,因此 Transformer 取代了语言建模和翻译领域中的 LSTM。注意力的开销会随上下文长度增长,而 LSTM 每新增一步的计算量和内存用量都相同。
  • xLSTM:Hochreiter 团队于 2024 年提出了 xLSTM,加入指数门控和可并行训练的矩阵记忆。其 70 亿参数语言模型 xLSTM 7B 于 ICML 2025 发表,性能与相近规模的 Transformer 模型相当,推理速度更快。

应用场景#

  • 语音识别:Google 于 2015 年将语音搜索切换到采用连接主义时序分类(CTC)训练的 LSTM 声学模型;端侧识别器长期以来也依赖堆叠式 LSTM。
  • 机器翻译:Google 于 2016 年推出的神经机器翻译系统,在编码器和解码器中各堆叠了八层 LSTM。
  • 洪水预报:Google 的洪水预报系统在《Nature》2024 年发表的论文中进行了介绍。该系统使用 LSTM 网络根据天气数据预测河流流量,并可提前最多五天预测没有水文站流域中的极端洪水。
  • 动作识别:CNN 对每一帧视频进行编码,LSTM 读取帧特征序列并为片段分类,上面的代码片段采用的就是这种结构。
  • 轨迹预测:Social LSTM 为每名行人运行一个 LSTM,并聚合附近行人的隐藏状态,以预测人群中的行进路径。YOLO26 在跟踪模式下会为每个人分配跨视频帧保持不变的 ID,从而将逐帧检测结果转换为此类预测器所需的位置历史记录。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来