在深度学习领域LSTMLong Short-Term Memory因其在处理时间序列数据上的卓越表现而闻名。然而许多初学者在面对其复杂的门控机制遗忘门、输入门、输出门和反向传播BPTT时往往会感到一头雾水。为了彻底搞懂 LSTM 的内部运行机制我决定放弃调用现成的 PyTorch/TensorFlow 库而是使用 Excel 进行了一次纯手工的 LSTM 前向与反向传播推导。本文将结合我的推导过程详细梳理 LSTM 的计算流。一、 网络规模与初始设定为了方便手工计算我们构建了一个极简的单步 LSTM 网络输入维度 d 2当前时刻输入 $x_1 [0.5, 0.8]$隐藏层维度 h 3上一时刻隐藏状态 $h_0 [0.1, 0.2, 0.3]$初始 Cell 状态$C_0 [0.0, 0.0, 0.0]$为了计算我们将 $h_0$ 和 $x_1$ 拼接形成一个 5 维向量 $[h_0, x_1] [0.1, 0.2, 0.3, 0.5, 0.8]$。二、 前向传播 (Forward Pass)信息的过滤与沉淀LSTM 的核心在于四个权重矩阵$wf$遗忘门、$wi$输入门、$wu$候选值、$wo$输出门。它们的作用相当于四个守门员。计算原始值 (net)通过矩阵乘法计算拼接向量与四个权重矩阵的点积。例如遗忘门的原始值 $net\_f wf \cdot [h_0, x_1]^T$。激活函数转换 (门控信号)使用Sigmoid 函数$\sigma(x) \frac{1}{1 e^{-x}}$ 处理 $net\_f, net\_i, net\_o$将其压缩到 $0 \sim 1$ 之间代表“保留比例”。使用Tanh 函数处理 $net\_u$将其压缩到 $-1 \sim 1$ 之间代表“待写入的新内容”。更新细胞状态 (长期记忆 $C_1$)$$C_1 f_1 \odot C_0 i_1 \odot u_1$$这一步是 LSTM 的灵魂旧记忆 $C_0$ 经过遗忘门过滤加上由输入门控制的新知识 $u_1$形成当前时刻的新记忆。计算隐藏状态 (短期记忆 $h_1$)$$h_1 o_1 \odot \tanh(C_1)$$将长期记忆用 Tanh 激活后经过输出门的过滤得到对外输出的隐藏状态。三、 反向传播 (Backward Pass)顺藤摸瓜的误差传递反向传播的核心是链式法则。假设我们的目标真实值 $y [20, 20, 20]^T$损失函数采用均方误差 $L \sum (h_1 - y)^2$。计算初始梯度$\frac{\partial L}{\partial h_1} 2(h_1 - y)$。对输出门求导由于 $h_1 o_1 \odot \tanh(C_1)$我们可以求出 $\frac{\partial L}{\partial o_1}$进而利用外积求得权重矩阵 $wo$ 的梯度。核心通路 Cell 状态的求导$C_1$ 承载了长期记忆它的梯度 $\frac{\partial L}{\partial C_1}$ 会继续向下游的 $i_1, u_1, f_1$ 传递。求各权重矩阵的梯度结合 Sigmoid 和 Tanh 的导数公式如 $\sigma(x) \sigma(x)(1-\sigma(x))$依次求出 $\frac{\partial L}{\partial wu}, \frac{\partial L}{\partial wi}, \frac{\partial L}{\partial wf}$。(注因为初始化 $C_0 0$没有任何旧记忆可以遗忘因此本次运算中遗忘门对 Loss 的贡献为 0即 $wf$ 的梯度全为 0。这也验证了数学逻辑的严密性)四、 总结通过在 Excel 中敲下每一个MMULT矩阵乘法和微分公式深度学习不再是一个玄学黑盒。我们可以清晰地看到数据是如何在矩阵乘法和非线性激活函数中流转的误差是如何一步步反向分配给每一个权重参数的。这种最原始的“手工推演”是掌握复杂算法最坚实的基石。