AI 入门 101

什么是反向传播?

mm

什么是反向传播?

深度学习系统能够学习非常复杂的模式,它们通过调整权重来实现这一点。那么,深度神经网络的权重是如何调整的?它们是通过一个称为反向传播的过程来调整的。没有反向传播,深度神经网络就无法执行诸如识别图像和解释自然语言等任务。了解反向传播的工作原理对于理解深度神经网络至关重要,因此让我们讨论反向传播以及如何使用该过程来调整网络的权重。

反向传播可能很难理解,用于执行反向传播的计算可能非常复杂。本文将尝试以一种不需要复杂数学的方式为您提供对反向传播的直观理解。然而,讨论反向传播背后的数学原理是必要的。

反向传播的目标

让我们首先定义反向传播的目标。深度神经网络的权重是神经网络中单位之间的连接强度。当神经网络建立时,会对单位之间的连接做出假设。随着数据通过神经网络,权重会被计算,假设会被更新。当数据到达网络的最后一层时,会对特征与数据集中的类别之间的关系做出预测。预测值与实际值之间的差异是损失/错误,反向传播的目标是减少损失。这是通过调整网络的权重来实现的,使假设更接近输入特征之间的真实关系。

训练深度神经网络

在对神经网络执行反向传播之前,必须进行神经网络的常规/正向训练过程。当创建神经网络时,会初始化一组权重。随着网络的训练,权重的值将被改变。神经网络的正向训练过程可以被认为是三个离散的步骤:神经元激活、神经元传递和正向传播。

训练深度神经网络时,我们需要使用多个数学函数。深度神经网络中的神经元由输入数据和激活函数组成,激活函数决定了激活节点所需的值。神经元的激活值是通过多个组件计算的,包括输入的加权和。权重和输入值取决于用于计算激活值的节点索引。计算激活值时还需要考虑另一个数字,即偏差值。偏差值不会变化,因此它们不会与权重和输入值相乘,而是被添加。所有这些意味着可以使用以下等式来计算激活值:

激活 = 加权和(权重 * 输入)+ 偏差

神经元激活后,会使用激活函数来确定神经元的实际输出值。不同的激活函数适用于不同的学习任务,但常用的激活函数包括 sigmoid 函数、Tanh 函数和 ReLU 函数。

一旦通过将激活值传递给所需的激活函数来计算神经元的输出,正向传播就完成了。正向传播只是将一层的输出作为下一层的输入。然后使用新的输入来计算新的激活函数,并将此操作的输出传递给下一层。这个过程一直继续到神经网络的末端。

网络中的反向传播

反向传播过程接受模型训练过程的最终决策,然后确定这些决策中的错误。通过比较网络的输出/决策与预期/期望的输出来计算错误。

一旦网络决策中的错误被计算出来,这些信息就会通过网络反向传播,网络的参数会在此过程中被修改。用于更新网络权重的方法基于微积分,特别是基于链式规则。然而,了解反向传播背后的想法不需要了解微积分。只要知道当神经元输出值时,输出值的斜率会使用传递函数计算,产生一个派生输出。当执行反向传播时,特定神经元的错误会根据以下公式计算:

错误 = (预期输出 – 实际输出)* 神经元输出值的斜率

当操作输出层的神经元时,类值被用作预期值。在计算错误后,错误被用作隐藏层神经元的输入,这意味着隐藏层的错误是输出层神经元的加权错误。错误计算沿着网络的权重反向传播。

计算网络错误后,网络的权重必须被更新。如前所述,计算错误涉及确定输出值的斜率。在计算斜率后,可以使用梯度下降法来调整网络的权重。梯度是一个斜率,其角度/陡峭度可以被测量。斜率是通过绘制“y sobre”或“上升”与“下降”来计算的。在神经网络和错误率的情况下,“y”是计算出的错误,而“x”是网络的参数。网络的参数与计算出的错误值有关,当网络的权重被调整时,错误会增加或减少。

“梯度下降”是更新权重以减少错误率的过程。反向传播用于预测神经网络参数与错误率之间的关系,为网络的梯度下降做好准备。使用梯度下降训练网络涉及计算权重通过正向传播,反向传播错误,然后更新网络的权重。

博客作者和程序员,专攻 Machine Learning Deep Learning 领域。Daniel 希望帮助他人利用 AI 的力量为社会做好事。