news 2026/4/28 18:57:43

别再死记公式了!用Excel手算一个神经网络的反向传播(附完整表格)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再死记公式了!用Excel手算一个神经网络的反向传播(附完整表格)

用Excel手把手教你理解神经网络反向传播

每次看到神经网络的反向传播算法,那些密密麻麻的数学公式是不是让你望而却步?其实,这个看似高深的概念完全可以用我们最熟悉的Excel来直观理解。今天,我们就抛开复杂的数学推导,用Excel表格一步步展示误差是如何从输出层"流回"并更新每一个权重的。

1. 为什么选择Excel学习反向传播

对于大多数非数学专业出身的学习者来说,反向传播算法最大的障碍不是理解其思想,而是被复杂的数学符号和公式吓退。Excel作为我们日常工作中最常用的工具之一,具有以下独特优势:

  • 可视化计算过程:每个单元格的计算结果都能即时呈现,权重调整对输出的影响一目了然
  • 公式联动展示:修改一个参数,所有相关计算结果自动更新,完美模拟神经网络的前后关联
  • 无需编程基础:避免了学习Python或框架的额外负担,专注于算法本质理解
  • 分步验证可能:可以随时检查中间结果,确保每一步计算都符合预期

提示:本文使用的Excel版本为Office 365,但基本公式在Excel 2010及以上版本都适用

2. 构建神经网络Excel模型

我们先构建一个最简单的三层神经网络模型:输入层(2个神经元)、隐藏层(2个神经元)、输出层(1个神经元)。以下是Excel表格的结构设计:

区域单元格范围内容说明
输入层B2:B3输入特征x1和x2
初始权重D2:E3输入层到隐藏层的权重矩阵
隐藏层偏置G2:G3隐藏层神经元的偏置值
隐藏层输入I2:I3加权求和后的值
隐藏层输出K2:K3经过sigmoid激活后的输出
输出层权重M2:M3隐藏层到输出层的权重
输出层偏置O2输出层神经元的偏置值
输出层输入Q2加权求和后的值
最终输出S2经过sigmoid激活后的预测值
真实值U2样本的真实标签
损失值W2预测值与真实值的误差

在Excel中设置以下关键公式:

// 隐藏层输入计算 I2 = B2*D2 + B3*D3 + G2 I3 = B2*E2 + B3*E3 + G3 // 隐藏层输出(sigmoid激活) K2 = 1/(1+EXP(-I2)) K3 = 1/(1+EXP(-I3)) // 输出层输入计算 Q2 = K2*M2 + K3*M3 + O2 // 最终输出(sigmoid激活) S2 = 1/(1+EXP(-Q2)) // 损失计算(均方误差) W2 = 0.5*(S2-U2)^2

3. 反向传播的Excel实现

现在我们来一步步实现反向传播过程。假设初始权重和输入值如下:

  • 输入值:x1=0.5 (B2), x2=0.3 (B3)
  • 初始权重:
    • W1: [0.5,0.3] (D2:D3), [0.2,0.4] (E2:E3)
    • W2: [0.6,0.7] (M2:M3)
    • 偏置:b1=[0.1,0.2] (G2:G3), b2=0.3 (O2)
  • 真实值:0.8 (U2)

3.1 计算输出层误差

首先计算损失函数对输出层输入的偏导数:

// 输出层误差项δ2 Y2 = (S2-U2)*S2*(1-S2) // 假设S2=0.67,则Y2≈-0.05

3.2 计算隐藏层误差

然后计算隐藏层每个神经元的误差项:

// 隐藏层误差项δ1 Z2 = Y2*M2*K2*(1-K2) // 假设K2=0.57,则Z2≈-0.01 Z3 = Y2*M3*K3*(1-K3) // 假设K3=0.57,则Z3≈-0.01

3.3 计算权重梯度

现在可以计算各权重的梯度:

// 输出层权重梯度 M2_grad = Y2*K2 // ≈-0.03 M3_grad = Y2*K3 // ≈-0.04 // 输入层权重梯度 D2_grad = Z2*B2 // ≈-0.005 D3_grad = Z2*B3 // ≈-0.003 E2_grad = Z3*B2 // ≈-0.005 E3_grad = Z3*B3 // ≈-0.003

3.4 更新权重参数

设置学习率(假设为0.1)并更新权重:

// 更新输出层权重 M2_new = M2 - 0.1*M2_grad // 0.6 - 0.1*(-0.03) = 0.603 M3_new = M3 - 0.1*M3_grad // 0.7 - 0.1*(-0.04) = 0.704 // 更新输入层权重 D2_new = D2 - 0.1*D2_grad // 0.5 - 0.1*(-0.005) = 0.5005 // 其他权重类似更新

4. 观察训练过程与效果

在Excel中,我们可以通过以下方式直观观察训练效果:

  1. 建立训练记录表:记录每次迭代的权重、输出和损失值
  2. 绘制损失曲线:用折线图展示损失值随迭代次数的变化
  3. 条件格式设置:用颜色渐变突出权重变化幅度
  4. 数据验证:随时修改输入值,观察网络响应的变化

下表展示了前5次迭代的效果:

迭代次数输出值损失值W2变化备注
10.670.008+0.003初始状态
20.6720.008+0.003第一次更新
30.6740.008+0.003损失开始下降
40.6760.007+0.002收敛趋势明显
50.6780.007+0.002接近最优解

注意:实际训练中,学习率过大可能导致震荡,过小则收敛缓慢。Excel可以方便地调整学习率观察效果

5. 扩展与优化

掌握了基本方法后,我们可以进一步扩展这个Excel模型:

  1. 增加网络复杂度

    • 添加更多隐藏层神经元
    • 尝试不同的激活函数(如ReLU)
  2. 改进训练过程

    • 实现批量训练(多组输入输出)
    • 添加动量项加速收敛
    • 尝试自适应学习率
  3. 可视化增强

    • 用箭头连接表示权重更新方向
    • 添加滚动条控件调节学习率
    • 实现自动迭代按钮
// ReLU激活函数实现 =MAX(0, hidden_input) // 带动量的权重更新 new_weight = old_weight - lr*gradient + momentum*previous_update

通过这样亲手构建和调整Excel模型,反向传播不再是一个黑箱操作,而变成了可以直观感受和验证的过程。这种理解方式为后续学习更复杂的深度学习模型打下了坚实基础。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 18:56:49

DriveGen3D:自动驾驶动态场景生成与重建技术解析

1. 项目概述:DriveGen3D的技术突破与应用价值 在自动驾驶研发领域,高质量动态场景的生成与重建一直是制约仿真效率的瓶颈问题。传统方案面临两个核心痛点:一方面,基于扩散模型的长视频生成需要消耗大量计算资源(如Magi…

作者头像 李华
网站建设 2026/4/28 18:53:33

从‘校门外的树’到线段树:用一道OJ题带你入门区间查询与修改

从‘校门外的树’到线段树:用一道OJ题带你入门区间查询与修改 当你第一次看到"校门外的树"这道题时,可能会觉得这不过是个简单的数组标记问题。确实,对于L10000这样的小规模数据,暴力解法完全可行。但想象一下&#xff…

作者头像 李华
网站建设 2026/4/28 18:50:35

3大核心优化策略:用Win11Debloat让Windows系统重获新生

3大核心优化策略:用Win11Debloat让Windows系统重获新生 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and c…

作者头像 李华