AI 基础
深度学习中的循环神经网络(RNN)和长短期记忆网络(LSTM)是什么?
循环神经网络(RNN)通过随时间更新隐藏状态来处理序列。长短期记忆(LSTM)网络是带门控的 RNN,旨在比基本的循环单元更有效地保留和控制信息。
RNN 和 LSTM 曾在众多语言任务中占据主导地位,但现代的大型聊天机器人主要基于 transformers。循环模型仍然在流式处理、时间序列、语音、控制以及对增量状态和低延迟有要求的资源受限系统中发挥作用。
关键要点
- RNN 在每个序列步骤中复用相同的参数,并将隐藏状态向前传递。
- 跨时间的训练可能导致梯度消失或梯度爆炸。
- LSTM 增加了细胞状态以及输入门、遗忘门和输出门。
- Transformer 以不同的方式处理长距离关系和并行训练;没有哪种架构适用于所有部署场景。

基础 RNN 的工作原理
在步骤 t,简单的循环单元将当前输入 xₜ 与前一隐藏状态 hₜ₋₁ 结合:
hₜ = activation(Wₓxₜ + Wₕhₜ₋₁ + b)
隐藏状态是一个学习得到的摘要,用于下一步,并根据任务可作为输出。‘展开’的示意图为每个时间步绘制一个副本,但所有副本共享参数。输出并非简单地复制回作为新的原始输入;递归通过定义的变换传递隐藏状态。
时间反向传播(BPTT)
RNN 通过时间反向传播(BPTT)进行训练。展开的序列形成深层计算图,反向传播计算损失相对于共享循环参数的依赖关系。
重复的乘法会导致梯度趋向于零或无限增长。梯度消失阻碍对长期依赖的学习;梯度爆炸会导致更新不稳定。梯度裁剪可缓解梯度爆炸,而门控、初始化、归一化以及更短的训练窗口也有助于改善。
LSTM 单元内部结构
LSTM 在隐藏状态 hₜ 之外还维护一个细胞状态 cₜ。其门是通过学习得到、依赖数据的控制:
- 遗忘门控制保留先前细胞状态的程度。
- 输入门控制写入候选信息的量。
- 输出门控制细胞信息对隐藏状态的贡献程度。
Sigmoid 在 0 到 1 之间的输出充当软门,而 tanh 变换的候选提供新内容。加法的细胞状态路径有助于梯度保持,但 LSTM 并不能保证无限记忆,也无法消除所有优化问题。
GRU 与双向循环
门控循环单元(GRU)将门控机制合并到一个更简洁的循环单元中,且没有独立的 LSTM 风格细胞状态。GRU 可以更快训练,并在某些任务上表现相似。
双向 RNN 在完整序列的两个方向上进行处理并合并状态。它可以利用未来上下文进行标注或编码,但在因果流式场景下(未来输入尚不可得)并不适用。
序列到序列模型
编码器-解码器 RNN 将一个序列映射到另一个序列。注意力机制的引入使得解码器能够查阅不同的编码器状态,而不依赖单一固定向量。这一研究方向催生了 transformer 架构,用基于注意力的块取代了循环。
RNN 与 transformer 的对比
Transformer 并行处理训练位置,并在远距离 token 之间建立短的注意力路径。RNN 按顺序处理状态,限制了并行度,但在流式处理中提供固定大小的循环状态。Transformer 推理可能需要不断增长的键值缓存,而 RNN 将历史压缩到隐藏状态中,可能会丢失细节。
应根据序列长度、数据规模、硬件、延迟、内存以及任务是离线还是流式等因素进行选择。混合模型和状态空间架构提供了额外的权衡。
当前使用场景
RNN 和 LSTM 在预测、异常检测、传感器处理、语音组件、手写、嵌入式控制以及低延迟序列建模等方面仍具相关性。它们并非当前大型语言模型或 AI 聊天机器人的默认技术解释。
循环、门控与序列记忆
循环神经网络通过将当前输入与前一步携带的隐藏状态相结合来处理序列。共享权重支持可变序列长度,展开过程将计算随时间展开以便训练。基础 RNN 能表示时间依赖,但在长序列上梯度的反复乘积往往导致梯度消失或爆炸。截断的反向传播限制了记忆和计算,而梯度裁剪控制极端更新。隐藏状态是学习得到的摘要,而非对每个早期 token 的忠实存储。
长短期记忆网络添加了细胞状态以及输入、遗忘和输出门,以调节信息的写入、保留和暴露。门控循环单元采用更简洁的重置和更新结构。双向变体利用未来上下文,因此在因果流式场景下会产生延迟而无法实时流式。堆叠、残差以及注意力增强的循环模型提升了容量。填充和掩码必须防止人为的序列元素影响状态或损失,且在真实的序列边界处应重置状态,以避免示例之间的泄漏。
训练、对比与有状态服务
RNN 和 LSTM 在流式、紧凑的设备端模型、时间序列以及顺序状态高效的工作负载中仍然有用。Transformer 以不同方式并行化训练并建模长程交互,但可能需要更大的内存和缓存。应随序列长度变化在准确率、延迟、吞吐量、内存、功耗和性能等方面比较架构。使用滚动时间切分评估预测,使用序列感知指标评估语言,使用事件级度量评估异常检测。检查在长间隔、状态转变、缺失样本和突发序列边界后的失败情况。
有状态部署必须将隐藏状态与正确的会话关联、设置过期、在敏感情况下加密,并在错误或模型更改后重置。无序或重复的事件可能破坏状态;需包含时间戳、序列号和幂等性。监控状态年龄、序列长度、缺失情况、输出漂移和延迟。量化需要针对门控的验证,因为微小的数值变化会随时间累积。RNN 的记忆提供上下文,但也可能保留私人或过时信息,因此保留策略和用户控制应纳入设计。
实战示例:用于流式传感器序列的 LSTM
某工具使用 LSTM 根据近期测量值、日历和天气预测短期负荷。序列按严格的时间顺序构建;在馈线边界处重置隐藏状态,并对填充进行掩码。将季节性朴素模型和梯度提升基线与 LSTM 在滚动窗口上进行比较。测试覆盖缺失区间、天气延迟、假期、停电以及超出典型训练长度的序列。
流式服务将状态与单个馈线关联,拒绝无序重复,并在长时间间隔或模型更新后使状态失效。当传感器或状态无效时,安全的统计预测会替代输出。对长序列进行量化推理检查以防累计漂移。监控跟踪状态年龄、缺失情况、延迟、偏差和区间误差。模型仅在电网变化后重新训练,审查结果表明学习到的时间关系已不再具备泛化能力。
实施证据与运营准备
生产决策需要的不仅是成功的演示。需明确预期用户、运行环境、输入、输出、依赖、负责人以及每个关键故障的后果。调优前建立可复现的基线和带版本的评估集。测试普通案例、边界条件、格式错误或缺失的输入、分布漂移、依赖故障、误用以及最可能被忽视的群体或环境。衡量任务质量时同时考虑校准或不确定性、延迟、吞吐量、资源成本、可访问性、隐私和安全。记录每一次转换和阈值,以便独立审阅者能够复现结果并区分证据与吸引人的原型。
上线前,需指定发布、例外、变更、回滚和退役的权限。采用分阶段发布,保留安全回退,并通过人为注入故障验证监控。运营遥测应揭示输入质量、输出行为、模型或规则版本、依赖健康状况、人为覆盖以及已确认的结果,同时避免收集不必要的敏感数据。定义警报阈值和响应负责人,然后在部署后审查真实世界的证据,而非假设离线性能会持续。每当数据来源、用户、模型、供应商、政策、硬件或目标发生变化时都需重新评估。维护中的系统还需有文档化的恢复、事件学习、删除与保留流程,以及明确的停用或替换时点。
常见问题
LSTM 总是比基础 RNN 更好吗?
不一定。门控有助于解决许多长期依赖问题,但会增加计算量和参数。基础 RNN 对于短小、简单的序列可能已经足够,而在极长上下文情况下其他架构可能更适合。
LSTM 能处理无限历史吗?
不能。其状态容量有限,梯度和训练数据也会设限,且相关细节可能被覆盖。必须对长上下文性能进行测量,而不能仅凭架构名称推断。












