长短期记忆入门 | AI生成和翻译

Home 2025.10

什么是 LSTM?

长短期记忆网络(LSTM)是一种特殊的循环神经网络(RNN)架构,专为处理和学习序列数据(如时间序列、自然语言或语音)而设计。由 Sepp Hochreiter 和 Jürgen Schmidhuber 于 1997 年提出,LSTM 解决了传统 RNN 的关键局限性,特别是它们在处理数据中的长程依赖关系时的困难。

LSTM 的核心是一种神经网络单元,它逐步处理输入序列,同时保持对先前输入的“记忆”。这种记忆使其能够捕获长时间跨度的模式,因此对于序列中遥远上下文信息至关重要的任务非常强大。LSTM 被广泛应用于 TensorFlow 和 PyTorch 等深度学习框架中,构成了许多人工智能领域先进模型的基础。

背景:为什么需要 LSTM

传统的 RNN 通过隐藏状态将信息从一个时间步传递到下一个来处理序列。然而,它们存在两个主要问题:

这些问题限制了普通 RNN 只能处理短序列。LSTM 通过引入细胞状态来解决这个问题——这是一个类似传送带的结构,贯穿整个序列,通过最小的线性相互作用来长距离保存信息。

LSTM 工作原理:核心组件

LSTM 单元在时间步 \( t \) 处理输入序列 \( x_t \),根据先前的隐藏状态 \( h_{t-1} \) 和细胞状态 \( c_{t-1} \) 更新其内部状态。其关键创新在于使用了门控——由 Sigmoid 函数激活的神经网络,用于决定保留、添加或输出哪些信息。这些门控充当信息流的“调节器”。

三个主要门控

  1. 遗忘门 (\( f_t \))
    • 决定从细胞状态中丢弃哪些信息。
    • 公式:\( f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) \)
    • 输出:一个值在 0(完全忘记)到 1(完全保留)之间的向量。
    • 其中,\( \sigma \) 是 Sigmoid 函数,\( W_f \) 和 \( b_f \) 是可学习的权重和偏置。
  2. 输入门 (\( i_t \)) 和候选值 (\( \tilde{c}_t \))
    • 决定将哪些新信息存储到细胞状态中。
    • 输入门:\( i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) \)
    • 候选值:\( \tilde{c}t = \tanh(W_c \cdot [h{t-1}, x_t] + b_c) \)(使用双曲正切函数,值在 -1 到 1 之间)。
    • 这些共同创建对细胞状态的潜在更新。
  3. 输出门 (\( o_t \))
    • 决定将细胞状态的哪些部分作为隐藏状态输出。
    • 公式:\( o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) \)
    • 隐藏状态随后计算为:\( h_t = o_t \odot \tanh(c_t) \)(其中 \( \odot \) 表示逐元素乘法)。

更新细胞状态

细胞状态 \( c_t \) 更新如下: \[ c_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_t \]

这种加法更新(不同于 RNN 中的乘法更新)有助于梯度更好地流动,从而缓解梯度消失问题。

视觉化表示

可以将细胞状态想象成一条高速公路:遗忘门是交通信号灯,决定让前一路段的哪些车辆(信息)通过;输入门从匝道合并新的车辆;输出门则过滤哪些车辆可以驶向下一条高速公路(隐藏状态)。

数学概述

为了更深入地了解,以下是基本 LSTM 单元的完整方程组:

\[ \begin{align} f_t &= \sigma(W_f x_t + U_f h_{t-1} + b_f)
i_t &= \sigma(W_i x_t + U_i h_{t-1} + b_i)
\tilde{c}_t &= \tanh(W_c x_t + U_c h_{t-1} + b_c)
o_t &= \sigma(W_o x_t + U_o h_{t-1} + b_o)
c_t &= f_t \odot c_{t-1} + i_t \odot \tilde{c}_t
h_t &= o_t \odot \tanh(c_t) \end{align
} \]

LSTM 的优势

缺点包括更高的计算成本(更多参数)和调参复杂性。

变体与演进

应用领域

LSTM 在具有时间或序列结构的领域中表现出色:

近年来(截至 2025 年),LSTM 经常与 Transformer 结合以提高混合效率,但它们对于计算资源有限的边缘设备来说仍然是基础性的。

开始使用 LSTM

要进行实验,可以使用 Python 配合 Keras/TensorFlow:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

model = Sequential()
model.add(LSTM(50, input_shape=(timesteps, features)))  # 50 个单元
model.add(Dense(1))  # 输出层
model.compile(optimizer='adam', loss='mse')
# 在您的序列数据上进行训练

实践资源:官方的 TensorFlow 教程或原始论文。

LSTM 彻底改变了序列建模,为当今的人工智能进步铺平了道路。如果您想深入研究,请专注于通过 LSTM 流程图等可视化工具来理解门控机制。

参考文献


Back

x-ai/grok-4-fast

Donate