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

LSTM中拼接h(t-1)与x(t)后,为何h(t)与h(t-1)维度始终一致

LSTM隐状态维度恒定的核心逻辑
  • 你的困惑本质来自入门教程常见的简化省略:多数框图为了简洁,不会明确标出拼接向量之后的线性投影步骤,很容易让人误以为拼接得到的高维向量会直接进入逐元素相乘环节
  • 实际完整的运算流程不存在维度膨胀的可能:
    1. 每个时间步确实会拼接上一步隐状态h(t-1)和当前输入x(t),得到维度为固定隐状态维度 + 输入维度的临时中间向量
    2. 这个临时向量会分别送入4个独立的线性全连接层,我们在模型初始化时就会把这几个线性层的输出维度设为和预定义的隐状态维度完全一致——不管拼接的临时向量维度有多高,经过这层线性变换后,输出的所有门控信号、候选细胞状态向量,都会被强制压回和h(t-1)完全相同的维度
    3. 激活函数(sigmoid、tanh)都是逐元素运算,本身不会改变向量维度,因此从线性层出来的所有参与后续计算的张量,维度都是严格对齐的
  • 后续的逐元素乘法环节根本不存在维度差:
    • 细胞状态更新公式:C(t) = f_t * C(t-1) + i_t * C候选,其中遗忘门f_t、输入门i_t、上一步细胞状态C(t-1)、候选细胞状态C候选全是固定隐状态维度,计算得到的新细胞状态C(t)维度不会变化
    • 新隐状态计算:h(t) = o_t * tanh(C(t)),输出门o_t和经过tanh变换的细胞状态维度完全匹配,最终输出的h(t)从源头就被约束到固定大小
  • 隐状态不会随时间步推进不断增长的核心原因是:
    跨时间步的所有线性层权重是共享的,每个时间步内部的拼接操作只是临时计算状态,算完门控信号后这个高维拼接向量就会被丢弃,根本不会带入下一个时间步的循环计算中。整个循环始终在固定维度的向量空间内完成迭代,不存在维度随步数累积的通道。

你目前梳理的理解示意图,就是因为省略了拼接向量到激活层之间的线性投影模块,才会产生“维度会越算越大”的推导偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 02:06:04