让 AI 拆开 LSTM 的两份状态:输出变小,记忆为何仍然留着
讲到LSTM,AI有时把“隐藏状态”和“细胞状态”都简称为记忆,于是下一步究竟传哪个数就说不清。做一张单维计算卡,让同一份细胞状态产生两种不同的输出,可以直接看见两个状态为什么不能互换。
AI模型生成的概念插图:记忆主路与可见输出支路经过不同的门;仅表达结构关系,不是模型截图或精确数值图。
先把门值与门前输入分开
本例不训练网络,直接给出已经经过激活函数的门值。上一时刻细胞状态c₀=0.8;当前遗忘门f=0.75、输入门i=0.25、候选值g=-0.4、输出门o=0.5。前三个门值i、f、o属于0到1之间的系数,候选g可为负。它们不是待送进sigmoid或tanh的原始加权和,不应再激活一次。
按PyTorch LSTMCell的定义,先算新细胞状态c₁=f×c₀+i×g,再算隐藏状态h₁=o×tanh(c₁)。本例保留项是0.75×0.8=0.6,写入项是0.25×(-0.4)=-0.1,因此c₁=0.5。负候选抵消了一部分旧值,“输入门打开”并不总使记忆数值增加。
tanh(0.5)约为0.462117157,再乘输出门0.5,得到h₁约0.231058579。交付时应把c₁=0.5和h₁约0.2311各写一格。若直接报告0.5为当前输出,便漏掉了tanh和输出门。
只关小出口,不会直接擦除当前细胞状态
保持本步其余量不变,仅将o从0.5改为0.1。c₁仍为0.5,h₁则约为0.046211716,缩为原来的五分之一。观察到的输出小了,并不能据此断言本步细胞状态已经清空。输出门控制的是从当前状态显露多少,而遗忘门作用在旧细胞状态上。
为了检查下一步传递,另给第二步的已激活量f₂=0.6、i₂=0.4、g₂=0.2、o₂=0.7。正确输入的旧细胞状态是c₁=0.5,所以c₂=0.6×0.5+0.4×0.2=0.38,h₂=0.7×tanh(0.38),约0.253895227。把h₁误塞入c的位置,会得到另一套不符合定义的结果。
让 AI 交出可检查的状态账
实际练习可要求AI每步依次列“门值来自哪里、旧状态保留量、候选写入量、新细胞状态、tanh结果、隐藏状态”,并标出传给下一步的是一对(h,c)。核对顺序时,先检查两个乘积,再检查先更新c后计算h;不要只对最后一位小数。
这里把第二步门值独立给定,是为了隔离状态传递。在真实LSTM中,门通常由当前输入与上一隐藏状态共同算出;第一步输出门一变,下一步门值也可能变化。因此只能说它未直接改动本步c₁,不能说输出门永远不影响未来记忆。
向量版中的这些乘法是逐元素相乘,门本身通常由矩阵映射产生。本例也没有投影、双向结构或多层堆叠。读框架输出时先核对状态顺序和形状,再沿一个维度复算,比把所有结构都称为“长期记忆”更容易发现接线错误。
资料核对日期:2026年10月2日。算例为原创教学设定,已用独立Python计算复核,不代表真实模型训练或性能测试。


