You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何CuDNN LSTM需要b_ih与b_hh两个偏置项?

关于RNN/LSTM双偏置的深层疑问

在PyTorch、TensorFlow/Keras等深度学习框架的高阶讨论中,有一个问题被反复提及:为什么RNN(包括LSTM)要设置两个偏置向量?常见的回答都是“因为CuDNN就是这么实现的”,但这个回答并没有触及本质,背后是否存在未被说明的技术原因或优势?

目前能看到的全是双偏置带来的弊端:

  • 实现更复杂:多维护一个参数,需要额外的代码逻辑
  • 运算效率更低:增加了额外的计算步骤
  • 内存占用更高:多存储一组偏置参数

这难道是CuDNN开发者的疏漏吗?

同时还有几个待验证的疑问:

  • 两个偏置项b_ih(输入侧偏置)和b_hh(循环侧偏置)的梯度是否相同?从数学逻辑上看,二者的梯度必须一致,否则模型的推导就存在错误。但有推测认为,b_hh只接收来自循环连接部分的梯度,b_ih只接收来自前馈输入部分的梯度。如果二者初始值一致且梯度始终相同,那它们应该会保持完全相等,这种情况下双偏置就等效于使用2 * b(单个偏置b的两倍),仅在参数缩放程度上和单偏置有细微差异。
  • 对于CuDNN提供的cudnnRNNBiasMode_t配置项,无法理解CUDNN_RNN_SINGLE_INP_BIAS和CUDNN_RNN_SINGLE_REC_BIAS的区别——从数学逻辑出发,这两种模式不应该存在差异,否则就违背了模型的数学推导。

内容的提问来源于stack exchange,提问作者Albert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 10:12:52