基于 Excel 展示 MLP 神经网络的计算过程
刘君老师 高级算法与程序设计作业学生孙欣怡一、实验目的本次算法作业要求通过 Excel 文件展示多层感知机 MLP 的计算过程并以博客形式说明具体的计算步骤。本文以一个简单的 MLP 网络为例展示从输入层到隐藏层、输出层的前向传播过程并进一步说明损失函数计算、反向传播梯度计算以及参数更新过程。通过本实验可以更加直观地理解 MLP 神经网络中权重、偏置、激活函数、损失函数和梯度下降之间的关系。二、MLP 模型结构本文采用一个简单的三层 MLP 网络结构包括输入层2 个神经元隐藏层2 个神经元输出层1 个神经元网络结构可以表示为输入层 x1, x2 ↓ 隐藏层 h1, h2 ↓ 输出层 y_pred其中隐藏层和输出层都使用 Sigmoid 激活函数。Sigmoid 函数公式如下sigmoid(x) 1 / (1 e^(-x))该函数可以将输入值映射到 0 到 1 之间常用于二分类任务或简单神经网络示例中。三、初始化参数在 Excel 文件中首先设置输入数据、目标输出、学习率以及各层权重和偏置。假设输入为x1 0.6 x2 0.8目标输出为y 1学习率为η 0.5初始权重和偏置示例如下w11 0.1 w12 0.2 w21 0.3 w22 0.4 b1 0.1 b2 0.1 v1 0.2 v2 0.3 b3 0.1其中w11、w12、w21、w22表示输入层到隐藏层的权重b1、b2表示隐藏层神经元的偏置v1、v2表示隐藏层到输出层的权重b3表示输出层偏置四、前向传播计算过程1. 隐藏层加权求和隐藏层第一个神经元的输入为z1 x1 * w11 x2 * w21 b1隐藏层第二个神经元的输入为z2 x1 * w12 x2 * w22 b2代入数据后Excel 会根据公式自动计算出隐藏层两个神经元的加权和。2. 隐藏层激活输出对隐藏层加权和使用 Sigmoid 激活函数h1 sigmoid(z1) h2 sigmoid(z2)也就是h1 1 / (1 EXP(-z1)) h2 1 / (1 EXP(-z2))在 Excel 中可以使用如下公式1/(1EXP(-单元格))这样就可以得到隐藏层两个神经元的输出值。3. 输出层加权求和输出层输入为z3 h1 * v1 h2 * v2 b3其中h1和h2是隐藏层的输出v1和v2是隐藏层到输出层的权重b3是输出层偏置。4. 输出层预测结果输出层同样使用 Sigmoid 函数y_pred sigmoid(z3)即y_pred 1 / (1 e^(-z3))在 Excel 中仍然可以使用1/(1EXP(-单元格))最终得到模型的预测输出y_pred。五、损失函数计算为了衡量预测值和真实值之间的误差本文采用平方误差损失函数Loss 1/2 * (y_pred - y)^2其中y_pred表示模型预测值y表示真实标签Loss表示损失值在 Excel 中可以写成0.5*(预测值单元格-真实值单元格)^2损失值越小说明模型预测结果越接近真实值。六、反向传播计算过程前向传播得到预测值和损失后需要通过反向传播计算各参数的梯度并利用梯度下降更新参数。1. 输出层误差项由于输出层使用 Sigmoid 激活函数因此输出层误差项为δ3 (y_pred - y) * y_pred * (1 - y_pred)其中y_pred * (1 - y_pred)是 Sigmoid 函数的导数。2. 输出层权重梯度输出层权重v1和v2的梯度分别为∂Loss/∂v1 δ3 * h1 ∂Loss/∂v2 δ3 * h2输出层偏置的梯度为∂Loss/∂b3 δ33. 隐藏层误差项隐藏层误差需要由输出层误差反向传播得到。隐藏层第一个神经元的误差项为δ1 δ3 * v1 * h1 * (1 - h1)隐藏层第二个神经元的误差项为δ2 δ3 * v2 * h2 * (1 - h2)4. 输入层到隐藏层权重梯度输入层到隐藏层的权重梯度如下∂Loss/∂w11 δ1 * x1 ∂Loss/∂w21 δ1 * x2 ∂Loss/∂w12 δ2 * x1 ∂Loss/∂w22 δ2 * x2隐藏层偏置梯度为∂Loss/∂b1 δ1 ∂Loss/∂b2 δ2七、参数更新过程本文采用梯度下降法更新参数。参数更新公式为新参数 原参数 - 学习率 * 梯度例如输出层权重v1的更新过程为v1_new v1 - η * ∂Loss/∂v1输入层到隐藏层权重w11的更新过程为w11_new w11 - η * ∂Loss/∂w11其他权重和偏置也按照相同方式进行更新。在 Excel 中可以通过单元格公式完成参数更新例如旧权重单元格 - 学习率单元格 * 梯度单元格这样Excel 就能够完整展示一次 MLP 的前向传播、损失计算、反向传播和参数更新过程。八、Excel 文件设计说明本次作业的 Excel 文件主要包括以下几个部分1. 参数设置表用于存放输入数据、目标值、学习率、初始权重和偏置。2. 前向传播计算表展示隐藏层加权求和、隐藏层激活输出、输出层加权求和以及最终预测值。3. 损失函数计算表展示预测值与真实值之间的误差并计算平方误差损失。4. 反向传播计算表展示输出层误差项、隐藏层误差项以及各个参数对应的梯度。5. 参数更新表根据学习率和梯度计算更新后的权重与偏置。通过这些表格可以清晰地看到 MLP 每一步的计算结果和公式来源。九、实验总结通过本次实验我使用 Excel 展示了一个简单 MLP 神经网络的完整计算过程。相比直接使用 Python 编程实现Excel 表格能够更加直观地展示每个中间变量的计算过程例如隐藏层输入、激活输出、预测结果、损失值、梯度以及参数更新结果。本次实验加深了我对 MLP 神经网络工作原理的理解。MLP 的核心过程主要包括前向传播、损失计算、反向传播和参数更新。其中前向传播用于得到预测结果损失函数用于衡量预测误差反向传播用于计算参数梯度梯度下降用于不断优化模型参数。通过 Excel 的公式计算可以清楚地看到神经网络并不是一个“黑箱”而是由大量矩阵运算、激活函数和梯度计算组成的数学模型。十、附件说明本文对应的 Excel 文件已经展示了 MLP 的完整计算过程包括参数初始化、前向传播、损失计算、反向传播和参数更新。