用 Excel 手算 LSTM:从四个门到梯度下降的完整过程

本文用一个隐藏维度为 3、输入维度为 2、序列长度为 1 的极简例子,借助 Excel 公式演示 LSTM 的前向传播、损失计算、反向传播和一次梯度下降更新。配套文件为 LSTM算法计算过程_答案.xlsx,其中所有关键单元格都使用公式自动计算。

说明: Excel 文件将候选门 u 严格写成 TANH(net_u),避免手算时因四舍五入或笔误造成数值不一致。

一、LSTM 的核心思想

LSTM 通过 Cell 状态保存长期记忆,并利用四个门控制信息流:

符号 名称 作用
f 遗忘门 控制旧记忆保留多少
i 输入门 控制新信息写入多少
u 候选记忆/更新门 生成准备写入的新内容
o 输出门 控制 Cell 状态对隐藏状态输出多少

二、示例设定

本例使用:

复制代码
x_t = [0.5, 0.8]
h_(t-1) = [0.1, 0.2, 0.3]
C_(t-1) = [0, 0, 0]
z = [h_(t-1), x_t] = [0.100000, 0.200000, 0.300000, 0.500000, 0.800000]
目标 y = [20, 20, 20]
学习率 η = 0.01

三、前向传播

四个门的计算公式为:

复制代码
f = sigmoid(Wf · z + bf)
i = sigmoid(Wi · z + bi)
u = tanh(Wu · z + bu)
o = sigmoid(Wo · z + bo)

本例计算得到:

项目 数值
net_f 0.740000, 0.570000, 0.300000
f 0.676996, 0.638763, 0.574443
net_i 0.190000, 0.380000, 0.570000
i 0.547358, 0.593873, 0.638763
net_u 1.040000, 1.230000, 1.420000
u=tanh(net_u) 0.777888, 0.842579, 0.889599
net_o 0.760000, 0.950000, 1.140000
o 0.681354, 0.721115, 0.757680

然后更新 Cell 状态与隐藏状态:

复制代码
C = f ⊙ C_(t-1) + i ⊙ u = [0.425783, 0.500385, 0.568243]
tanh(C) = [0.401791, 0.462420, 0.514068]
h = o ⊙ tanh(C) = [0.273762, 0.333458, 0.389499]

四、损失函数

Excel 中使用的损失函数是:

复制代码
L = 0.5 × Σ(h - y)^2

当前示例的总损失为:

复制代码
L = 580.234552

五、反向传播

由于 L = 0.5Σ(h-y)^2,所以第一步梯度为:

复制代码
dL/dh = h - y = [-19.726238, -19.666542, -19.610501]

随后按链式法则反传:

复制代码
dL/do      = dL/dh ⊙ tanh(C)
dL/dnet_o = dL/do ⊙ o ⊙ (1-o)

dL/dC      = dL/dh ⊙ o ⊙ (1 - tanh(C)^2)
dL/df      = dL/dC ⊙ C_(t-1)
dL/dnet_f = dL/df ⊙ f ⊙ (1-f)

dL/di      = dL/dC ⊙ u
dL/dnet_i = dL/di ⊙ i ⊙ (1-i)

dL/du      = dL/dC ⊙ i
dL/dnet_u = dL/du ⊙ (1-u^2)
梯度 数值
dL/dnet_f -0.000000, -0.000000, -0.000000
dL/dnet_i -2.172184, -2.265761, -2.243993
dL/dnet_u -2.436131, -1.920567, -1.456727
dL/dnet_o -1.720783, -1.828918, -1.850907

每个门的权重梯度都可以用外积表示:

复制代码
dW_gate = dnet_gate ⊗ z
db_gate = dnet_gate

这也是 Excel 中 03_反向传播 工作表的主要结构。

六、参数更新

得到梯度后,使用梯度下降更新参数:

复制代码
W_new = W_old - η × dW
b_new = b_old - η × db

工作表 04_参数更新 对 Wf、Wi、Wu、Wo 四组权重和偏置分别展示了原值、梯度和更新后的结果。

七、如何使用配套 Excel

  1. 打开 01_参数 工作表,修改输入向量、目标 y、学习率或权重矩阵。
  2. 查看 02_前向传播,观察四个门、Cell 状态、隐藏状态和损失如何变化。
  3. 查看 03_反向传播,理解损失如何逐层传回各个门。
  4. 查看 04_参数更新,观察一次梯度下降后参数如何变化。

八、总结

LSTM 的计算可以拆成"门控计算 → 状态更新 → 隐藏输出 → 损失 → 反向传播 → 参数更新"六个部分。Excel 的优势是能把每一步拆成独立单元格,既能看到公式,也能看到数值。理解这个单时间步示例后,再推广到多时间步 BPTT,本质上就是沿时间方向把梯度继续累加回去。

相关推荐
只是没名字13 小时前
Codex CLI Windows 新手安装教程:从 Node.js 到首次运行
人工智能
用户86306526961314 小时前
Krea 2 LoRA 训练全流程踩坑记录:从打标到双卡并行的 Windows 原生实战
人工智能
木雷坞16 小时前
让 AI 编程助手跑得起项目:Dev Container 实践记录
人工智能
腾讯云开发者17 小时前
港科大郭毅可谈Agentic AI时代的核心命题:人机共生,人不可能退场
人工智能
常丛丛17 小时前
5.6 LangGraph-Edges理解-Agent图的道路系统
人工智能
雪隐17 小时前
个人电脑玩AI-08让5060 Ti给你打工——我拿 Unlimited-OCR扫了 600 页书,然后悟了
人工智能·后端
Coffeeee17 小时前
Prompt要花心思写,与 AI 对话的七个技巧
人工智能·aigc·ai编程
蝎子莱莱爱打怪17 小时前
Claude Code 官宣新升级:子智能体默认后台跑,你边聊它边干活
人工智能
武子康17 小时前
调查研究-206 DeepSeek DSpark 深度解析:大模型推理加速,正在从“模型能力”转向“系统工程”
人工智能·agent·deepseek