神经网络拆解:用Excel模拟手写数字识别

发布于:2025-08-20 ⋅ 阅读:(21) ⋅ 点赞:(0)

点击 “AladdinEdu,同学们用得起的【H卡】算力平台”,H卡级别算力,按量计费,灵活弹性,顶级配置,学生专属优惠。


前向传播/反向传播可视化 × 激活函数对比实验
读者收获:深度理解网络工作原理

当神经网络不再是黑箱,而是在Excel表格中清晰展现每一个计算步骤,你将在神经元的世界里获得上帝视角。本文将带你用Excel亲手构建一个数字识别网络,彻底掌握深度学习的底层原理。

一、Excel神经网络的非凡意义

1.1 为什么选择Excel?

  • 透明计算:每个公式可见,告别"黑箱"困惑
  • 实时可视化:权重变化、梯度流动直观呈现
  • 零代码门槛:无需编程基础理解核心概念
  • 历史溯源:追溯任意时刻的网络状态

1.2 我们将构建的微型网络

在这里插入图片描述
网络规格

  • 输入:25维(5×5二值化图像)
  • 隐藏层:3个神经元(带Sigmoid激活)
  • 输出层:1个神经元(Sigmoid激活)
  • 目标:识别手写数字0和1

二、数据准备:制作微型MNIST

2.1 创建数字模板库

在这里插入图片描述
在Excel中实现

  1. B2:AF3区域创建像素网格
  2. AG列添加标签(0或1)

2.2 设计数据生成器

# 生成新样本(带随机噪点)
=IF(RAND()<0.8, 原值, 1-原值) 

三、前向传播:Excel中的信号流动

3.1 权重矩阵初始化

在这里插入图片描述
Excel实现

  1. 隐藏层权重:AK2:BC4区域
    =RAND()*0.1-0.05 (-0.05到0.05随机值)
  2. 输出层权重:BD2:BD4区域
    =RAND()*0.1-0.05

3.2 逐层计算实现

隐藏层计算

# BE2单元格(第一个隐藏神经元)
=SUMPRODUCT($B2:$AF2, AK$2:AK$26)  # 加权和
=1/(1+EXP(-BE2))                  # Sigmoid激活

输出层计算

# BF2单元格(输出神经元)
=SUMPRODUCT(BE2:BG2, BD$2:BD$4)   # 加权和
=1/(1+EXP(-BF2))                  # Sigmoid激活

3.3 实时可视化技巧

  1. 权重热力图
# 条件格式 → 色阶 
红:负权重,蓝:正权重
  1. 激活强度条
# 数据条格式 
长度表示激活值大小

四、反向传播:Excel中的学习过程

4.1 损失函数计算

# 均方误差
=0.5*(BF2-$AG2)^2

4.2 梯度计算与分解

输出层梯度

# δ_output 
= (BF2 - $AG2) * BF2 * (1 - BF2)

隐藏层梯度

# δ_hidden1 
= BE2 * (1 - BE2) * BD$2 * $BG$2

4.3 权重更新公式

# 输出层权重更新 
= BD2 - 学习率 * BG2 * BE2

# 隐藏层权重更新
= AK2 - 学习率 * δ_hidden1 * $B2

4.4 学习率优化器

# 自适应学习率
= 0.1 * EXP(-0.01*epoch)

五、激活函数对比实验

5.1 三大函数Excel实现

在这里插入图片描述

5.2 函数特性对比分析

在这里插入图片描述

5.3 实验结果对比

在这里插入图片描述

六、训练过程可视化

6.1 损失函数曲线

# 创建动态图表
1. 记录每epoch损失值
2. 插入 → 折线图
3. 添加趋势线(指数衰减)

6.2 权重变化轨迹

# 制作权重动画
1. 每5步保存权重快照
2. 创建热力图序列
3. 开发工具 → 插入滚动条控制

6.3 决策边界演化

# 可视化分类效果
1. 创建测试样本矩阵
2. 应用网络预测
3. 条件格式着色:
   - 红色:预测0
   - 蓝色:预测1

七、进阶:网络结构扩展

7.1 增加隐藏层

在这里插入图片描述
Excel实现要点

  1. 新增权重矩阵(5×3)
  2. 添加梯度计算链
# 第二隐藏层梯度
= BH2*(1-BH2)*SUMPRODUCT(δ_output, W_output)

7.2 多分类改造

One-hot编码输出
在这里插入图片描述
Softmax激活函数:

# 输出1的概率
= EXP(BF2)/(EXP(BF2)+EXP(BG2)+EXP(BH2))

7.3 卷积操作模拟

手动实现卷积核

# 特征图计算
= SUMPRODUCT(
    OFFSET($B2,0,0,3,3), 
    {1,0,-1;0,1,0;-1,0,1}
) 

八、Excel局限与Python衔接

8.1 Excel网络局限性

  • 最大神经元数:约1000(性能限制)
  • 训练速度:100样本/分钟
  • 无法实现:循环神经网络/注意力机制

8.2 迁移到Python代码

import numpy as np

# 从Excel导入权重
W1 = np.loadtxt('hidden_weights.csv') 
W2 = np.loadtxt('output_weights.csv')

# 前向传播
def forward(X):
    h = 1/(1+np.exp(-X.dot(W1))) 
    y = 1/(1+np.exp(-h.dot(W2)))
    return y

8.3 真实MNIST识别结果

在这里插入图片描述

结语:从电子表格到深度学习

当你在Excel中目睹权重如何响应梯度信号,激活值如何如波浪般传递,神经网络不再是神秘的黑箱,而成为精密的数学机械。

关键认知升级

  1. 前向传播是加权和的接力赛
  2. 反向传播是误差的逆向溯源
  3. 激活函数决定神经元的"性格"
  4. 学习率是训练过程的"调速器"

行动指南

journey  
    title 神经网络掌握路线  
    section 基础理解  
      Excel模拟: 5: 已完成  
      数学推导: 3: 需加强  
    section 工程实践  
      PyTorch实现: 0: 待开始  
      模型部署: 0: 待开始  

现在打开Excel,在B2单元格输入第一个权重值——你即将开启的不仅是一次实验,而是对智能本质的深度探索。那些在电子表格中跳动的数字,正是AI世界的原子与分子。

附录:Excel神经网络模板

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到