当前位置: 首页 > news >正文

用 Excel 手动实现 MLP 前向传播 + 反向传播(完整版)

一、为什么还要用 Excel 学神经网络?

很多人觉得神经网络必须用 Python + PyTorch 才能跑。但当你亲手在单元格里写出每一行梯度公式时,才能真正理解“链式法则”是如何从输出流回输入,理解权重为什么更新、学习率怎么影响每一步。

Excel 的优势是完全透明:所有中间值、梯度、更新量一览无余,没有任何黑盒。调整一个输入,整个表格立刻重新计算,非常适合初学者验证每一步的数值。


二、网络结构与公式推导

我们实现一个2‑输入 → 2‑隐藏神经元 → 1‑输出的 MLP,结构如下:

x1 ---\ \ --> z1 --> a1 = ReLU(z1) ---\ x2 ---/ \ --> y_pred = a1*v1 + a2*v2 x1 ---\ / \ / --> z2 --> a2 = ReLU(z2) ---/ x2 ---/

参数:

  • 隐藏层权重:w11(x1→神经元1),w21(x2→神经元1),w12(x1→神经元2),w22(x2→神经元2)

  • 隐藏层偏置:b1,b2

  • 输出层权重:v1,v2

  • 损失函数:L = ½ (y_pred – y_true)²

  • 激活函数:ReLU,导数ReLU'(z) = 1 if z>0 else 0

前向传播

z1 = x1*w11 + x2*w21 + b1 a1 = max(0, z1) z2 = x1*w12 + x2*w22 + b2 a2 = max(0, z2) y_pred = a1*v1 + a2*v2

反向传播(核心梯度)

∂L/∂y_pred = y_pred - y_true ∂L/∂v1 = ∂L/∂y_pred * a1 ∂L/∂v2 = ∂L/∂y_pred * a2 ∂L/∂a1 = ∂L/∂y_pred * v1 ∂L/∂a2 = ∂L/∂y_pred * v2 ∂L/∂z1 = ∂L/∂a1 * ReLU'(z1) ∂L/∂z2 = ∂L/∂a2 * ReLU'(z2) ∂L/∂w11 = ∂L/∂z1 * x1 ∂L/∂w21 = ∂L/∂z1 * x2 ∂L/∂b1 = ∂L/∂z1 ∂L/∂w12 = ∂L/∂z2 * x1 ∂L/∂w22 = ∂L/∂z2 * x2 ∂L/∂b2 = ∂L/∂z2

参数更新(学习率 η = 0.1):

新参数 = 旧参数 - η * 梯度

三、Excel 文件结构(5 张工作表)

你下载的MLP完整版_前向+反向传播.xlsx包含以下工作表:

📄 Parameters(参数初始值)
参数
x1, x20.5, 0.8
w11, w21, w12, w220.2, 0.3, 0.4, 0.7
v1, v20.6, 0.9
b1, b20.1, 0.1
y_true1
lr0.1
📈 Forward(前向传播)

公式完全引用 Parameters,自动计算:

  • z1,a1

  • z2,a2

  • y_pred

当前初始值下:
y_pred = 0.44*0.6 + 0.86*0.9 = 1.038

📉 Loss(损失)

Loss = 0.5*(1.038-1)^2 = 0.000722

🔁 Backward(完整梯度)

按上述链式法则计算所有 13 个梯度。例如:

  • dL/dv1 = 0.038 * 0.44 = 0.01672

  • dL/dw11 = dL/dz1 * x1 = (dL/da1 * 1) * 0.5 = (0.038*0.6)*0.5 = 0.0114

  • 等等。

🔄 Update(参数更新)

使用梯度下降更新所有权重和偏置,例如:

  • v1_new = 0.6 - 0.1*0.01672 = 0.59833

  • w11_new = 0.2 - 0.1*0.0114 = 0.19886

一次迭代后,损失从 0.000722 下降(实际需多次迭代)。你只需将 Update 表中的新值复制回 Parameters 表,Excel 就会自动重算下一轮。


四、如何用这个文件进行实验?

  1. 手动验证一次前向和反向:对照公式,用计算器验算 Excel 的数值。

  2. 改变学习率:修改 Parameters!B12(例如改成 0.5),观察梯度更新的幅度。

  3. 修改激活函数:在 Forward!B2 和 Forward!B4 中将MAX(0, …)改为1/(1+EXP(-…))(Sigmoid),并相应修改 Backward 中 ReLU 导数部分(改为a*(1-a))。

  4. 多轮训练:复制 Update 表中的新值,用“选择性粘贴 – 数值”覆盖 Parameters 对应单元格,反复操作,观察 Loss 收敛。

  5. 增加样本:可扩展为多行,用 SUM 或数组公式实现批量梯度下降。


五、完整 Excel 文件获取方式

百度网盘:通过网盘分享的文件:MLP完整版_前向+反向传播.xlsx
链接: https://pan.baidu.com/s/17yzJgfgo_sYbeeC2E_A98w?pwd=gt6r 提取码: gt6r


六、总结

这个 Excel 文件完整展示了一个 MLP 从输入到损失、再到反向传播更新参数的全部细节。对于学生、教师、以及想彻底搞懂反向传播的工程师,它都是绝佳的动手工具。

试一试:修改初始权重,观察梯度变化;或者把激活函数换成 Leaky ReLU,看看导数如何修改。一旦你亲手在单元格里敲出dL/dw11 = dL/dz1 * x1,神经网络就不再是魔法,而只是微积分和链式法则的美丽应用。

http://www.jsqmd.com/news/856324/

相关文章:

  • 【设计模式 10】抽象工厂:整体换季
  • Prompt基础与AI产品管理方法论 — 深度解析与实操设计 - hlc
  • 从0到1:企业级AI项目迭代日记 Vol.29|自然语言变工作流:Agent 自动拼装子图的实现路径
  • 免费远控软件良心度横评:ToDesk免费版到底有多能打?
  • 别再手动调阈值了!OpenMV自适应色块识别保姆级教程(附完整Python代码)
  • STM32F103 平行替代方案全面分析(2026 年最新)
  • 2025-2026年优优推电话查询:网络推广前请核实服务范围与收费模式 - 品牌推荐
  • B站视频下载解决方案:基于多API调用的无水印视频获取系统
  • 水质在线监测系统嵌入式工控机选型与实战指南
  • 2025-2026年山东谦和金属制品有限公司电话查询:联系前请核实产品规格与资质 - 品牌推荐
  • React 还是 Vue:2026 年,这个问题问错了
  • 大厂Java面试实战:Spring Boot微服务、Redis缓存、Kafka消息队列与Spring AI RAG
  • Linux运维:Jenkins部署
  • 汽车质量管理体系的核心要素与持续改进之道
  • Gemini 3.5 Flash 完整介绍:定价、性能、接入教程与选型建议
  • ABAQUS模态分析中的‘隐形’设置:材料阻尼、约束与接触,这些细节才是结果不准的元凶
  • 高频高速PCB板材选型:从参数本质到工程落地的专业指南
  • 嵌入式Linux下MT7601U无线网卡驱动移植与网络配置实战
  • 背单词为什么不背词典:CANN上FlashAttention的分块逻辑
  • Hyperf 高并发的庖丁解牛
  • 百考通AI搭起学术研究的“起跑线”
  • STM32/Delay延时函数编程思路
  • 别再死记硬背了!用一张图帮你理清CPU里的MMU、TLB和Cache到底是怎么分工的
  • 不知道怎么挖漏洞?吐血整理40个网络安全漏洞挖掘姿势,看完不信你还挖不到
  • 离线绘图新选择:draw.io桌面版,让敏感数据不再“上网”
  • 音乐学者紧急预警:Perplexity搜索结果偏差率高达47%?3步校验法立即挽救你的学术引用
  • 初识C语言(一)
  • 2026年5月国内优质招标网推荐:五大平台排名专业评测项目找标防遗漏 - 品牌推荐
  • 原生PHP如何才能提高并发?
  • RX65N嵌入式开发实战:从硬件设计到外设驱动与调试