什么是 循环神经网络?

循环神经网络(RNN,Recurrent Neural Network)是一类按顺序处理数据的神经网络,在每一步把共享参数应用于当前输入与前一隐状态,并产生新的状态及可选输出。

快速了解

创建时间1986 年由 David Rumelhart、Geoffrey Hinton 和 Ronald Williams 提出
规范文档官方规范

工作原理

状态产生顺序敏感计算

输入顺序变化会改变整条 Hidden State 链。Causal RNN 只消费过去信息,可在线输出;Bidirectional RNN 同时使用两个方向,因此需要拿到完整片段。Sequence-to-One、Sequence-to-Sequence 与逐步输出的 Head 在 Loss 施加位置上不同,Padding Mask 与序列边界都属于模型契约。

BPTT 暴露训练边界

Backpropagation Through Time 会展开循环,并沿重复的状态转移累积导数。长链 Jacobian 连乘可能衰减或放大,引发 Vanishing Gradient 或 Exploding Gradient。Gradient Clipping 能控制爆炸,却无法恢复已经消失的信号;Truncated BPTT 降低内存和更新延迟,也会限制 Credit Assignment 的跨度。

LSTM 与 GRU 是缓解机制,不是彻底解决

LSTM 增加 Cell State 以及 Input、Forget、Output Gate,GRU 则把门控合并为更紧凑的状态更新。它们通常比 Vanilla RNN 更容易保留长跨度信号,但不能保证任意长度的信息都被记住。Initialization、Normalization、截断、优化器、数据与状态宽度仍会影响结果。

状态生命周期决定生产正确性

必须在 Entity 或 Session 边界重置状态,只在身份和顺序契约明确时延续状态,并阻止未来信息进入因果评测。比较 RNN、Temporal CNN、Transformer 和 State Space Model 时,应同时测量质量、上下文长度、流式延迟、内存、吞吐、事件缺失或乱序,以及间断后的恢复行为。

主要特点

  • 在不同序列位置复用同一组状态转移参数
  • 维护固定宽度隐状态来摘要先前输入
  • 支持逐事件执行的在线因果推理
  • 使用 BPTT 或 Truncated BPTT 训练循环转移
  • 可能出现梯度消失、梯度爆炸、状态陈旧或跨会话污染
  • 包含 Vanilla、Bidirectional、LSTM、GRU 与 Stacked 等变体

常见用途

  1. 使用有界逐步状态进行传感器流或音频流分类
  2. 观测严格有序且要求低延迟的在线预测
  3. 紧凑循环模型已满足质量目标的序列标注
  4. 受内存与 Batch Size 约束的端侧工作负载
  5. 具有显式重置与断流处理的有状态异常检测

示例

loading...
Loading code...

常见问题

RNN 的隐状态保存了什么?

它是前一状态与当前输入的学习型压缩函数,不是逐字保存的历史记录,也没有保证的记忆长度。哪些信息能留下,取决于状态转移动力学、状态宽度、目标函数、训练序列长度、截断窗口和数据。

RNN、LSTM 和 GRU 有什么区别?

Vanilla RNN 使用简单循环状态更新;LSTM 增加独立 Cell State 与三个 Gate;GRU 使用更紧凑的门控更新。LSTM 和 GRU 通常更容易保留长跨度信号,但都不会自动解决长上下文推理或所有梯度问题。

什么是截断的随时间反向传播?

Truncated BPTT 会继续向前传递状态,但只在有限窗口内反向传播梯度。它减少 Activation Memory 与更新延迟,使长数据流可训练,同时阻止训练信号跨越截断边界,因此窗口既是资源配置,也是建模假设。

什么时候应该选择 RNN 而不是 Transformer?

当输入逐步到达、状态很小、延迟必须有界,而且所需依赖跨度适合循环建模时,可以考虑 RNN。应通过测量比较:Transformer 提供并行训练与灵活全局上下文,Temporal CNN 或 State Space Model 则可能提供其他延迟和内存权衡。

隐状态错误为什么会造成数据泄漏?

在不同用户、设备、文件或评测样本之间复用状态,会泄漏先前信息并改变预测。Bidirectional Model 还会使用未来上下文,不能按因果流式系统评测。测试应覆盖重置边界、顺序、Mask、序列化、断流恢复,以及训练与服务一致性。

相关术语

相关文章