深圳Yolo 视觉
深圳
立即加入
词汇表

长短期记忆网络 (LSTM)

了解长短期记忆网络 (LSTM) 如何擅长处理序列数据、克服 RNN 局限性并为 NLP 和预测等 AI 任务提供支持。

长短时记忆(LSTM)是更广泛的递归神经网络(RNN)家族中的一种专门架构。 递归神经网络 (RNN) 设计用于处理顺序数据并有效捕捉长期依赖关系。与标准前馈 网络不同,LSTM 保持着一种随时间推移而持续存在的内部 "记忆"、 使其能够学习文本、音频和金融数据等序列中的模式。这一功能解决了 传统 RNN 的重大局限,即 梯度消失问题,即网络 在这种情况下,网络很难在模型训练过程中保留长序列中较早步骤的信息。 模型训练。通过利用独特的门控机制,LSTM 可以选择性地记忆或遗忘信息,使其成为深度学习(DL)历史上的一项奠基性技术。 深度学习(DL)历史上的一项奠基性技术。

LSTM 的工作原理

LSTM 的核心创新点在于其单元状态,通常被描述为贯穿整个网络链的传送带,只有少量的线性互动。 网络的整个链条,只有少量的线性互动。这种结构允许信息沿着它流动 在长序列中保持上下文不变。LSTM 通过三个不同的门调节信息流,这三个门通常由 通常由sigmoid神经网络层和 点乘法运算:

  • 遗忘门:确定上一单元状态中哪些信息已不再相关,应予以丢弃。 应被丢弃。
  • 输入门:决定当前输入步骤中哪些新信息足够重要,可以存储到单元状态中。 存储在单元状态中。
  • 输出门:控制单元状态的哪些部分应输出到下一个隐藏状态,通常使用 使用 tanh(双曲正切)激活来 缩放值。

这种复杂的设计使 LSTM 能够处理相关信息与所需信息之间差距很大的任务。 这一概念在克里斯托弗-奥拉(Christopher Olah)著名的 的《LSTM 理解指南》这一概念进行了形象化。

实际应用

LSTM 在推进 人工智能(AI) 的能力。LSTM 了解时间动态的能力使其成为以下领域的理想选择:

  1. 自然语言处理 (NLP):机器翻译等任务中 在机器翻译等任务中,LSTM 可以接收一种语言的句子,并通过保留前面出现的单词的上下文,生成另一种语言的翻译。 句子,并通过保留句子中较早出现的单词的上下文,生成另一种语言的翻译。 生成另一种语言的译文。同样,在 情感分析中,该模型可以理解 段落开头的修饰词(如 "不")如何否定段落结尾的单词(如 "推荐")、 "推荐")。
  2. 视频分析和动作识别计算机视觉(CV)模型,如 YOLO11等计算机视觉(CV)模型擅长检测静态图像中的物体,而 LSTM 可以处理由卷积神经网络(CNN)提取的图像特征序列。 卷积神经网络 (CNN) 来识别一段时间内的动作,如 "奔跑 "或 "挥手"。这种组合弥补了 空间检测和 时间视频理解之间差距。

与相关架构的比较

将 LSTM 与类似的序列建模技术区分开来很有帮助:

  • RNN 与 LSTM:标准 RNN 具有简单的重复结构(通常是单 tanh 层),但由于梯度不稳定性,无法学习长程依赖性。 但由于梯度不稳定性,无法学习长程依赖关系。LSTM 引入了多门结构来解决这一问题。 解决了这一问题。
  • GRU 与 LSTM:GRU 门控循环单元(GRU)是 LSTM 的简化变体,它将遗忘门和输入门合并为一个更新门。 是 LSTM 的简化变体,它将遗忘门和输入门合并为一个更新门。GRU 计算效率更高,性能通常也不相上下,因此在计算资源有限的情况下很受欢迎。 在计算资源有限的情况下,GRU 更受青睐。
  • Transformer 与 LSTM:现代 Transformer架构依赖于 自注意机制,在 NLP 领域已在很大程度上取代了 LSTM。 NLP 中的 LSTM。变换器以并行而非顺序的方式处理整个序列,因此可以在 GPU 上实现更快的 在GPU上进行训练,并更好地处理 更好地处理全局上下文。

实施实例

下面的示例演示了如何使用 PyTorch.该代码段初始化了一个层,并处理了一个 处理一批虚假的连续数据,这是时间序列分析中常见的工作流程。 时间序列分析中常见的工作流程。

import torch
import torch.nn as nn

# Define an LSTM layer: input_dim=10, hidden_dim=20, num_layers=2
lstm_layer = nn.LSTM(input_size=10, hidden_size=20, num_layers=2, batch_first=True)

# Create dummy input: (batch_size=5, sequence_length=3, input_dim=10)
input_seq = torch.randn(5, 3, 10)

# Forward pass: Returns output and (hidden_state, cell_state)
output, (hn, cn) = lstm_layer(input_seq)

print(f"Output shape: {output.shape}")  # Expected: torch.Size([5, 3, 20])

更多阅读和资源

要进一步了解 LSTM,您可以查阅 Hochreiter 和 Schmidhuber 的原始 Hochreiter 和 Schmidhuber 的研究论文。 介绍这一概念的原始研究论文。对于那些对实际应用感兴趣的人,官方的 PyTorch LSTM 文档TensorFlow Keras LSTM API提供了 全面的指南。此外,斯坦福大学的 斯坦福大学的 NLP课程通常会深入介绍序列模型的理论 序列模型的理论基础。了解这些组件对于掌握复杂的人工智能系统至关重要、 从简单的语音到文本引擎到先进的 自主代理

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入