深入浅出——用Excel硬核拆解多层感知机(MLP)的数学原理
在深度学习的黑盒中,神经网络是如何“学习”的?很多初学者会被复杂的代码和框架绕晕。今天,我们将剥开代码的外衣,通过一份纯手工打造的Excel计算示例,一步步拆解多层感知机(MLP)的前向传播与反向传播过程。
1. 我们的神经网络结构(基于Excel数据)
根据我们的Excel表格,这是一个没有使用非线性激活函数(即线性激活)的简易MLP网络片段。我们取其中一个神经元的计算链路来看:
输入特征 (
): 5
隐藏层权重 (
): 10
隐藏层偏置 (
): 10
输出层权重 (
): 10
真实目标值 (
): 208
学习率 (
): 0.01
2. 第一步:前向传播 (Forward Propagation)
前向传播就是网络根据当前的权重猜一个答案的过程。
隐藏层计算:
隐藏层加权和 =
计算:
(表格中“隐藏层加权和”与“隐藏层输出值”均为60)
输出层计算:
假设经过其他神经元的累加及输出偏置后,当前网络的**最终输出值 (
)**为9520。
3. 第二步:计算误差 (Loss Calculation)
网络猜出来的答案(9520)和真实答案(208)差距有多大?我们用**均方误差(MSE)**的平方项来表示:
误差平方=
计算:
差距非常大!接下来网络需要通过“反向传播”来纠正这个错误。
4. 第三步:反向传播与链式求导 (Backward Propagation)
我们需要计算误差对每一个权重的导数(梯度),以此来决定权重该往哪个方向调整。
① 对输出层的求导(误差的源头):
误差对输出值的导数 (
)=
计算:
② 更新输出层权重 ():
导数= 误差导数
隐藏层输出 =
调整幅度= 导数
学习率 =
新
= 原
- 调整幅度 =
③ 更新隐藏层权重 () 与偏置 (
):
首先计算误差传递到隐藏层的梯度:
隐藏层梯度 (
)= 误差导数
=
接着更新和
:
导数=
输入
=
调整幅度=
新
=
导数=
=
调整幅度=
新
=
5. 总结
经过一次迭代,我们的权重产生了巨大的调整(因为没有归一化且学习率相对当前误差来说偏大,导致了梯度爆炸现象)。通过这种计算误差 -> 链式求导 -> 更新参数的循环,这就是Excel表格中所展示的神经网络学习的本质!
