用 Excel 手动实现 MLP 计算过程
前言在学习神经网络时很多人都会直接使用 Python、TensorFlow 或 PyTorch 进行建模。这样虽然方便但也容易出现一个问题知道怎么调用却不清楚模型内部到底是怎么计算的。为了更直观地理解多层感知机MLP的运行机制我这次使用Excel手动搭建了一个简单的 MLP 模型并把它的计算过程完整展示出来包括前向传播损失函数计算反向传播权重与偏置更新通过这种方式可以清楚看到每一个参数、每一步计算以及误差是如何一步步传递和更新的。一、什么是 MLPMLP全称Multi-Layer Perceptron中文叫多层感知机属于最基础的前馈神经网络。一个典型的 MLP 通常包括三部分输入层Input Layer隐藏层Hidden Layer输出层Output Layer它的基本思想是输入数据经过加权求和和激活函数处理后得到预测结果再根据预测误差反向调整权重和偏置使模型输出越来越接近真实值。这也是神经网络最核心的训练机制。二、实验目标本次实验的目标是使用 Excel 展示一个简单 MLP 的完整计算过程。主要包括以下几个部分输入数据设置初始权重与偏置设置前向传播计算输出值损失函数计算误差反向传播求梯度根据梯度更新参数这样做的目的不是追求训练效率而是为了更直观地理解神经网络的底层原理。三、网络结构设计本次在 Excel 中构建的是一个简单的三层神经网络输入层2 个神经元隐藏层2 个神经元输出层1 个神经元整体结构如下输入层x1, x2↓隐藏层h1, h2↓输出层ŷ为了保证模型可以正常完成线性组合每一层还加入了偏置项 Bias。四、前向传播过程前向传播就是从输入层开始逐层计算最终得到模型预测值。1. 输入层到隐藏层设输入为输入层到隐藏层的权重分别为隐藏层偏置为那么隐藏层两个神经元的加权求和分别为2. 隐藏层激活函数输出为了给模型加入非线性能力这里对隐藏层输出使用 Sigmoid 激活函数Sigmoid 函数的输出范围在 0 到 1 之间适合用于这种教学演示型实验。3. 隐藏层到输出层设隐藏层到输出层的权重为输出层偏置为那么输出层加权求和为如果输出层同样采用 Sigmoid 激活函数则最终预测值为其中表示模型预测结果。五、损失函数计算模型得到预测值后还需要判断预测得准不准因此要引入损失函数。设真实值为预测值为这里采用平方误差损失函数平方误差越小说明模型预测结果越接近真实值。在 Excel 中我们可以直接通过公式计算每组输入对应的误差值。六、反向传播过程反向传播是神经网络训练中最关键的一步。它的作用是根据当前预测误差反过来计算每个权重和偏置对误差的影响程度也就是梯度进而更新参数。1. 输出层误差项输出层误差项为这里包含两部分预测误差Sigmoid 函数导数2. 输出层参数梯度根据链式法则可以得到输出层权重的梯度输出层偏置的梯度为3. 隐藏层误差项误差从输出层向隐藏层继续传递这一步体现了“反向传播”的本质后面的误差会沿着网络结构逐层向前传递。4. 输入层到隐藏层参数梯度由此可进一步得到输入层到隐藏层的权重梯度隐藏层偏置的梯度分别为七、参数更新公式当梯度求出后就可以对网络参数进行更新。设学习率为则每个权重和偏置的更新方式为经过一次更新后新的参数会替代旧参数进入下一轮训练。如果不断重复这个过程模型误差通常会逐渐减小预测效果也会不断变好。八、Excel 中的具体实现思路为了让计算过程更清晰我在 Excel 中把整个过程拆分成多个区域。1. 输入区用于填写输入值和目标值包括真实输出2. 参数区用于填写初始参数包括输入层到隐藏层权重隐藏层到输出层权重各层偏置学习率3. 前向传播区这一部分负责计算隐藏层加权和隐藏层激活值输出层加权和最终预测值4. 损失函数区根据预测值和真实值计算当前误差。5. 反向传播区依次计算输出层误差项隐藏层误差项每个权重的梯度每个偏置的梯度6. 参数更新区根据学习率和梯度更新所有权重与偏置。这种方式最大的优点是每个单元格背后都对应一条数学公式可以清楚看到 MLP 每一步到底是怎么计算出来的。九、实验结果分析通过这次 Excel 手动实现 MLP可以得到以下几点认识1. 神经网络本质上是数学运算的组合无论神经网络看起来多复杂本质上仍然是线性加权激活函数变换误差计算梯度更新2. 前向传播和反向传播缺一不可前向传播负责“算出结果”反向传播负责“纠正错误”。如果没有反向传播网络就无法根据误差自动学习。3. Excel 非常适合教学演示虽然 Excel 不适合大规模深度学习训练但它特别适合初学者理解原理因为公式可见参数可见计算步骤可见更新过程可见相比直接调用现成框架Excel 更容易帮助我们真正理解 MLP 的底层逻辑。十、实验心得体会在实际学习中我们经常会依赖深度学习框架来完成建模任务但这些框架往往已经把底层细节封装好了。使用起来虽然方便却很容易造成“只会用、不理解”的情况。这次通过 Excel 手动实现 MLP 后我对以下内容有了更深刻的认识每个神经元是如何接收输入并参与计算的权重和偏置在模型中起到了什么作用激活函数为什么能提升模型表达能力损失函数是如何衡量预测误差的反向传播是如何把输出层误差传回隐藏层的参数更新为什么能让模型不断优化可以说这次实验不仅让我熟悉了 MLP 的计算流程也让我对神经网络训练机制有了更加清晰和系统的理解。十一、总结本文使用 Excel 对一个简单的 MLP 模型进行了可视化实现完整展示了以下过程前向传播损失计算反向传播参数更新通过这种方式我们可以把原本抽象的神经网络训练过程拆解成一个个可观察、可验证的步骤。对于理解 MLP 的基本原理这是一种非常直观且有效的方法。十二、Excel展示参考说明以上就是我使用 Excel 展示 MLP 计算过程的完整实验内容。如果文章对你有帮助欢迎交流讨论。