长短期记忆入门 | AI生成和翻译
什么是 LSTM?
长短期记忆网络(LSTM)是一种特殊的循环神经网络(RNN)架构,专为处理和学习序列数据(如时间序列、自然语言或语音)而设计。由 Sepp Hochreiter 和 Jürgen Schmidhuber 于 1997 年提出,LSTM 解决了传统 RNN 的关键局限性,特别是它们在处理数据中的长程依赖关系时的困难。
LSTM 的核心是一种神经网络单元,它逐步处理输入序列,同时保持对先前输入的“记忆”。这种记忆使其能够捕获长时间跨度的模式,因此对于序列中遥远上下文信息至关重要的任务非常强大。LSTM 被广泛应用于 TensorFlow 和 PyTorch 等深度学习框架中,构成了许多人工智能领域先进模型的基础。
背景:为什么需要 LSTM
传统的 RNN 通过隐藏状态将信息从一个时间步传递到下一个来处理序列。然而,它们存在两个主要问题:
- 梯度消失问题:在通过时间的反向传播(BPTT)过程中,梯度可能会指数级缩小,使得学习长期依赖关系变得困难。如果一个相关事件发生在 50 步之前,网络可能会“忘记”它。
- 梯度爆炸问题:相反,梯度也可能变得过大,导致训练不稳定。
这些问题限制了普通 RNN 只能处理短序列。LSTM 通过引入细胞状态来解决这个问题——这是一个类似传送带的结构,贯穿整个序列,通过最小的线性相互作用来长距离保存信息。
LSTM 工作原理:核心组件
LSTM 单元在时间步 \( t \) 处理输入序列 \( x_t \),根据先前的隐藏状态 \( h_{t-1} \) 和细胞状态 \( c_{t-1} \) 更新其内部状态。其关键创新在于使用了门控——由 Sigmoid 函数激活的神经网络,用于决定保留、添加或输出哪些信息。这些门控充当信息流的“调节器”。
三个主要门控
- 遗忘门 (\( f_t \)):
- 决定从细胞状态中丢弃哪些信息。
- 公式:\( f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) \)
- 输出:一个值在 0(完全忘记)到 1(完全保留)之间的向量。
- 其中,\( \sigma \) 是 Sigmoid 函数,\( W_f \) 和 \( b_f \) 是可学习的权重和偏置。
- 输入门 (\( 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 之间)。
- 这些共同创建对细胞状态的潜在更新。
- 输出门 (\( 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}
\]
- \( W \) 矩阵连接输入到门控;\( U \) 矩阵连接隐藏状态。
- 训练涉及通过梯度下降优化这些参数。
LSTM 的优势
- 长期记忆:擅长处理长达数千步的序列,这是标准 RNN 无法比拟的。
- 灵活性:处理可变长度输入和双向处理(同时处理前向和后向序列)。
- 可解释性:门控机制提供了模型“记住”或“忘记”了什么的洞察。
- 鲁棒性:与简单模型相比,在噪声序列数据上不易过拟合。
缺点包括更高的计算成本(更多参数)和调参复杂性。
变体与演进
- 门控循环单元(GRU):一种更轻量级的替代方案(2014 年),将遗忘门和输入门合并为一个更新门,在保持大部分 LSTM 性能的同时减少了参数。
- 窥孔连接:一种早期变体,门控可以“窥视”细胞状态。
- 双向 LSTM(BiLSTM):使用两个 LSTM(前向和后向),在机器翻译等任务中提供更好的上下文。
- 现代集成:Transformer 中的 LSTM(例如混合模型)或注意力增强的 LSTM。
应用领域
LSTM 在具有时间或序列结构的领域中表现出色:
- 自然语言处理(NLP):情感分析、机器翻译(例如早期的谷歌翻译)、文本生成。
- 时间序列预测:股票价格、天气预测、传感器数据中的异常检测。
- 语音识别:将音频转换为文本(例如 Siri 或 Alexa 中)。
- 视频分析:通过处理帧序列进行动作识别。
- 医疗保健:根据序列化医疗记录预测患者结果。
- 音乐生成:通过对音符序列建模来创作旋律。
近年来(截至 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 流程图等可视化工具来理解门控机制。