用 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,本质上就是沿时间方向把梯度继续累加回去。

相关推荐
湘美书院--湘美谈教育4 分钟前
湘美谈教育AI系列经验集锦:赋能整理聊斋志异大寓言
大数据·人工智能·深度学习·神经网络·机器学习
宜昌未来智慧谷7 分钟前
WWDC 2026开发者视角解读:Siri独立App的技术架构与第三方AI模型接入机制
人工智能·架构·apple·wwdc·gemini
协享科技8 分钟前
Spring Boot 与 Go 双服务架构实践:从单体拆分到通信设计
java·人工智能·spring boot·后端·架构·golang·ai编程
piglet1213816 分钟前
把搜索调到 Claude.ai 的水准
前端·人工智能
Linlingu17 分钟前
openClaw不能操作我的电脑提示没有权限如何解决?
人工智能·windows·办公自动化·数字员工·小龙虾
snpgroupcn23 分钟前
SNP亮相2026思爱普中国峰会,助力企业加速数据价值兑现
人工智能
IT乐手24 分钟前
Anthropic 为何限制中国大陆使用 Claude?
人工智能
To_OC26 分钟前
用 ESM 模块化搭建 DeepSeek LLM 调用,顺带用 Prompt 实现轻量 NLP 任务
人工智能·nlp·deepseek
jrjrgood29 分钟前
现货黄金和黄金期货的区别有哪些?如何投资?
大数据·人工智能·区块链
属于自己的天空32 分钟前
确认弹窗太多?一次配好 Claude Code 权限,安心让 AI 干活
人工智能