← 返回题目列表

LSTM 中 Dropout 应该加在哪里?

中等 第 22 / 25 题 更新于 2026/09/25
循环神经网络机器学习面试题模型训练
学习 AI 实战项目

简化版

LSTM Dropout 可施加在层间输出、输入/输出或循环连接;框架内置 dropout 常只作用于多层 LSTM 的层间,不会自动屏蔽同层 recurrent state。变分 dropout 在时间维共享 mask,可减少逐步噪声。

详细版

  • 单层 LSTM 设置内置 dropout 往往不起作用。

  • 普通逐时刻 mask 会干扰长期记忆。

  • recurrent dropout 与层间 dropout 语义不同。

  • 训练态启用随机 mask,评估态关闭;常见 inverted dropout 已在训练时除以保留率,评估时无需再次缩放。

  • padding 位置虽被 mask,仍应避免无效计算影响状态。

完整版教学

一、Dropout 放在哪里决定它破坏哪条信息路径

层间 dropout 正则化不同层的表示,不直接切断同一层记忆循环;循环 dropout 会影响隐藏状态跨时间传播,强度过大更易丢长期信息。

时间锁定 mask 在整段序列复用同一屏蔽模式,使被保留的通道可以连续传递,而不是每一步随机断线。

因此同一个 dropout 概率放在不同连接上会产生不同归纳偏置,评估时必须同时说明层数、mask 粒度和作用位置。

二、底层机制与公式

standard: m_t~Bernoulli(1-p) each step
locked: m~Bernoulli(1-p), use same m for all t

三、带数字的推演

两层 LSTM、p=0.3 时,常见框架仅在第 1 层输出送往第 2 层前丢弃 30%;若只有 1 层,没有层间连接,配置可能完全不生效。

四、方案对比

方案/对象核心特点代价或边界
层间 dropout框架常内置单层无效
Locked/variational时间共享 mask需自定义/确认实现
Recurrent dropout正则隐藏循环可能损害长依赖

五、执行流程

确认框架语义 -> 选择输入/层间/循环位置 -> 训练启用 mask
-> 验证切 eval -> 消融 p 与层数 -> 检查长期依赖指标

六、边界条件与工程代价

cuDNN 优化路径可能不支持某些自定义 recurrent dropout,速度会明显下降。

MC Dropout 推理可估不确定性,但必须有意开启 dropout,并通常保持 BN 等其他层在 eval。

记忆钩子:LSTM Dropout 先问“丢在哪里”:输入、层间还是循环。

七、常见误区与追问

  • 误区:给单层 LSTM 设置 dropout 就一定生效。 许多实现只对层间连接生效。

  • 追问:为何共享时间 mask? 避免每步随机切断不同记忆通道。

  • 误区:recurrent dropout 越大越防过拟合。 可能直接破坏长期状态传播。

  • 追问:eval 模式发生什么? 停止随机屏蔽;若采用主流 inverted dropout,训练时已经完成期望缩放,eval 不再额外乘保留率。

  • 追问:如何确认具体语义? 查框架文档并用固定输入比较 train/eval 与单层行为。

八、加强记忆

LSTM Dropout 先问“丢在哪里”:输入、层间还是循环。

再问 mask 是否跨时间共享;只报一个 p 没有说明完整机制。