计算示例:

本文用一个单输入、6 个隐藏神经元、单输出的多层感知机(MLP)作为例子,展示如何用 Excel 公式完整复现一次训练迭代。配套 Excel 文件中的"MLP计算过程"工作表已经把前向传播、损失计算、反向传播梯度和参数更新全部写成可联动公式。
1. 模型结构与初始参数
本例的网络结构为 1-6-1 :输入层 1 个神经元,隐藏层 6 个神经元,输出层 1 个神经元。输入值为 x=5,目标值为 y=208,学习率为 η=0.01。激活函数使用 Leaky ReLU:
f(t)=IF(t>0,t,0.05t)
| j | 隐藏层权重 W_j | 隐藏层偏置 b_j | 输出层权重 v_j |
|---|---|---|---|
| 1 | 10 | 10 | 10 |
| 2 | 20 | 10 | 20 |
| 3 | 30 | 10 | 10 |
| 4 | 20 | 10 | 10 |
| 5 | 10 | 10 | 30 |
| 6 | 20 | 10 | 20 |
2. 前向传播
隐藏层第 j 个神经元先计算加权和:
z_j = x·W_j + b_j
然后经过激活函数得到隐藏层输出:
h_j = f(z_j)
本例中隐藏层输出为:
h = [60, 110, 160, 110, 60, 110]
输出层加权和为:
s = Σ(v_j·h_j) + c = 9520
由于 s>0,最终输出为 ŷ=f(s)=9520。
3. 损失函数
单样本平方误差为:
L=(ŷ-y)^2=(9520-208)^2=86,713,344
4. 反向传播
先计算输出层梯度:
∂L/∂s = 2(ŷ-y)·f'(s) = 18,624
然后逐层向前传递梯度。例如:
∂L/∂v_j = ∂L/∂s · h_j∂L/∂c = ∂L/∂s∂L/∂h_j = ∂L/∂s · v_j∂L/∂z_j = ∂L/∂h_j · f'(z_j)∂L/∂W_j = ∂L/∂z_j · x∂L/∂b_j = ∂L/∂z_j
5. 参数更新
所有参数都使用梯度下降更新:
θ_new = θ - η · ∂L/∂θ
例如第 1 个隐藏层权重的更新为:
W_1_new = 10 - 0.01 × 931200 = -9302
输出层偏置的更新为:
c_new = 20 - 0.01 × 18624 = -166.24
6. Excel 中的核心公式
| 步骤 | Excel 公式 | 作用 |
|---|---|---|
| 隐藏层加权和 | =B18*C18+D18 |
计算 z_j |
| 激活函数 | =IF(E18>0,E18,$B$7*E18) |
计算 h_j |
| 输出层加权和 | =SUMPRODUCT(H18:H23,F18:F23)+B8 |
计算 s |
| 损失函数 | =(B10-B6)^2 |
计算平方误差 |
| 参数更新 | =C18-$B$4*K18 |
更新隐藏层权重 |
提示:本例主要用于展示 MLP 的计算链路。学习率较大时,一次更新可能让参数变化非常明显;实际训练中通常需要调整学习率、归一化数据,并进行多轮迭代。
7. 总结
通过这个 Excel 示例,可以清楚看到 MLP 的四个关键步骤:前向传播得到预测值,损失函数衡量预测误差,反向传播计算每个参数的梯度,最后用梯度下降更新参数。Excel 的优势在于每个单元格都可以显示公式,非常适合用来学习神经网络的底层计算过程。