深度学习中的前向传播与误差分析

近年来,深度学习技术在人工智能领域取得了革命性的进展。从大学研究实验室的初步探索到全球智能设备的广泛应用,深度学习及其神经网络技术已经改变了世界。而训练神经网络的第一步就是进行前向传播。

在开始之前,先来看一个用于训练神经网络的样本数据集。这个数据集包含四个独立特征(用绿色表示)和一个依赖特征(用红色表示)。为了简化问题,先关注数据集的第一行,并尝试用这一行输入来理解前向传播的过程。第一行中的每个独立特征将被传递到神经网络的输入层,作为输入数据。

在开始前向传播之前,随机初始化所有神经元的权重。这些权重由连接两个神经元的边表示。因此,一个神经元的权重可以更准确地看作是两个层之间的权重,因为边连接的是两个层。

现在,让来谈谈第一个隐藏层的第一个神经元。这个神经元接收来自前一层所有神经元的输入,并结合自己的权重(用红色边表示)。在应用某种激活函数后,计算出这个神经元的输出,称为隐藏激活。隐藏激活的输出将作为下一层神经元的输入。同样,计算出该层所有神经元的隐藏激活。

一旦计算出第一隐藏层的所有激活,这些激活将作为下一层的输入。当计算出最后一个隐藏层的隐藏激活后,它们将通过最后一组权重(连接最后一个隐藏层和输出层)组合起来,为单行观测产生输出。

这些计算的第一行特征值为0.5,预测值变为0.5,而实际值为0。如果仔细观察,计算了每个神经元的隐藏激活,并且是顺序进行的,即一个接一个。实际上,可以对计算进行优化,使其并行计算。由于神经元的计算是相互独立的,因此可以很容易地并行计算。可以同时计算第一个隐藏激活——

// 假设代码表示并行计算第一个隐藏层的激活 parallelActivateFirstLayer();

然后同时计算第二层的激活——

// 假设代码表示并行计算第二层的激活 parallelActivateSecondLayer();

最后计算输出。

这一系列从输入到输出的计算过程被称为前向传播。

现在来理解预测过程中产生的误差以及可能的原因。到目前为止,已经看到了前向传播如何帮助计算输出。假设对于某一行,实际目标值为0,预测目标值为0.5。可以使用这个预测值来计算特定行的误差。在这里选择的误差类型是平方误差。

当然,还有其他的误差计算公式,但为了简单起见,选择了这一个。

既然已经得到了误差,那么可能的原因是什么呢?以及如何减少误差?知道误差直接依赖于两个量——实际值和预测值。不能改变实际值,所以这不是可能的嫌疑人之一。接下来,知道预测值,也就是隐藏激活,依赖于三件事——

  • 输出层的输入,即第二层的隐藏激活
  • 第二隐藏层和输出层之间的权重
  • 输出层的激活函数

不能直接修改第二隐藏层的激活,因为它们在每一步中都被计算。所以输入也不是问题。可以改变激活函数和权重,但不能迭代地改变激活函数,因为这会在训练期间改变分布。所以激活函数也不是问题。

剩下的是第二隐藏层和输出层之间的权重。实际上,不仅可以改变第二隐藏层和输出层之间的权重,还可以改变第一和第二隐藏层之间以及输入层和第一隐藏层之间的权重。但不能任意改变权重来检查哪种权重产生最低误差,因为这将需要无限的时间来检查哪种权重产生最低误差。

有趣的是,可以使用一种智能策略来调整权重并减少误差。具体来说,感兴趣的是两件事——

  • 改变权重时误差的变化量
  • 变化的方向

本文介绍了前向传播神经网络中误差的基本概念。希望能够理解这些主题。如果有任何疑问,请在评论中告诉想要涵盖的其他主题。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485