使神经网络回归完全透明
神经网络通常被呈现为黑箱。
层、激活、梯度、反向传播......这可能会让人感到不知所措,尤其是当所有内容都隐藏在 model.fit() 之后。
我们将用Excel从零开始构建一个神经网络回归器。每次计算都会显式进行。每个中间值都会被看见。不会有任何东西被隐藏。
到本文结尾时,你将理解神经网络如何执行回归、前向传播的工作原理,以及该模型如何仅用几个参数来近似非线性函数。
在开始之前,如果你还没读过我之前的文章,首先应该了解线性回归和逻辑回归的实现。
你会发现神经网络并不是一个新对象。它是这些模型的自然延伸。
像往常一样,我们将遵循以下步骤:
- 首先,我们将探讨神经网络回归器模型的工作原理。在神经网络中,这一步称为前向传播。
- 然后我们将用梯度下降来训练该函数。这一过程称为反向传播。
1. 前向传播
在本部分,我们将定义模型,然后在Excel中实现,看看预测效果如何。
1.1 一个简单数据集
我们将使用我生成的一个非常简单的数据集。它仅包含12个观测和一个特征。
如你所见,目标变量与 x 有非线性关系。
在这个数据集中,我们将使用隐藏层中的两个神经元。
1.2 神经网络结构
我们的示例神经网络具有:
- 一个隐藏层,隐藏层中有两个神经元,这两个神经元将使我们能够建立非线性关系
这里是表示该神经网络的图示,以及所有必须估计的参数。总共有7个参数。
隐藏层:
输出层:
神经网络的核心只是一个功能。一个组合功能。
如果你明确写出来,就没有什么神秘之处。
我们通常用“神经元”组成的图示来表示这个功能。
在我看来,理解这个图表最好的方式是作为一个合成数学函数的可视化表示,而不是声称它字面上复制了生物神经元的工作原理。
为什么这个功能有效?
每个S形结肠表现得像平滑的阶梯。
有了两个S形,模型可以增加、减少、弯曲并压平输出曲线。
通过线性组合,网络可以近似平滑的非线性曲线。
这就是为什么对于这个数据集来说,两个神经元已经足够了。但你能找到不适合这种结构的数据集吗?
1.3 Excel 中函数的实现
在本节中,我们假设7个系数已经被找到。然后我们可以实现之前看到的公式。
为了可视化神经网络,我们可以使用新的连续x值,范围从-2到2,步长为0.02。
这是截图,我们可以看到最终函数非常符合输入数据的形状。
2. 反向传播(梯度下降)
此时,模型已完全确定。
由于这是一个回归问题,我们将使用均方误差(MSE),就像线性回归一样。
现在,我们需要找到最小化MSE的7个参数。
2.1 反向传播算法的细节
原理很简单。但是,由于有许多复合函数和许多参数,我们必须用导数来组织。
我不会明确推导出所有7个偏导数。我就直接说结果。
如我们所见,存在误差项。因此,为了实现整个过程,我们必须遵循以下循环:
2.2 初始化
我们先把输入数据集排成列格式,这样在Excel中实现公式会更容易。
理论上,我们可以从参数值的初始化随机值开始。但在实际作中,为了实现完全收敛,迭代次数可以很大。由于成本函数不是凸的,我们可能会卡在局部最小值。
所以我们必须“明智”地选择初始值。我为你准备了一些。你可以做些小调整,看看会发生什么。
2.3 前向传播
在AG到BP的柱中,我们执行前向传播阶段。我们先计算A1和A2,然后计算输出。这些公式与前向传播的前半部分相同。
为了简化计算并使其更易管理,我们分别对每个观测值进行计算。这意味着我们每个隐藏层(A1和A2)以及输出层都有12列。我们不使用求和公式,而是分别计算每个观测值。
为了在梯度下降阶段实现for循环,我们将训练数据集按列组织,然后可以在Excel中按行扩展公式。
2.4 误差与成本函数
在 BQ 到 CN 列中,我们现在可以计算成本函数的值。
2.5 偏导数
我们将计算7个偏导数,对应于神经网络的权重。对于这些偏导数,我们需要计算所有12个观测值的值,总共84列。不过,我们努力通过用颜色编码和公式整理表格,简化了这一过程,便于使用。
我们将从输出层开始,参数为a21、a22和b2。我们可以在CO到DX的列中找到它们。
那么对于参数a11和a12,我们可以从DY列到EV找到它们:
最后,对于偏置参数b11和b12,我们使用EW到FT列。
最后,我们对12个观测值的所有偏导数加法。这些聚合梯度整齐地排列在Z到AF列中。参数更新随后在列R到X进行,使用这些值。
2.6 收敛的可视化
为了更好地理解训练过程,我们通过图表可视化参数在梯度下降过程中的演变。同时,成本函数的下降在Y列跟踪,使模型收敛清晰可见。
结论
神经网络回归器不是魔法。
它仅仅是由若干参数控制的基本函数组成,并通过最小化明确定义的数学目标进行训练。
通过在Excel中明确构建模型,每一步都变得可见。前向传播、误差计算、偏导数和参数更新不再是抽象概念,而是可以检查和修改的具体计算。
我们神经网络的全面实现,从前向传播到反向传播,现已完成。鼓励你通过改变数据集、初始参数值或学习率来尝试,观察模型在训练中的表现。
通过这项动手作,我们看到梯度如何驱动学习,参数如何迭代更新,以及神经网络如何逐渐塑造自身以适应数据。这正是现代机器学习库中发生的事情,只是隐藏在几行代码后面。
推荐学习书籍 《CDA一级教材》适合CDA一级考生备考,也适合业务及数据分析岗位的从业者提升自我。完整电子版已上线CDA网校,累计已有10万+在读~ !