Connect with us

AI 入门 101

什么是反向传播?

mm

什么是反向传播?

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

反向传播可能很难理解,用于执行反向传播的计算可能相当复杂。本文将尝试让您直观地理解反向传播,使用尽量少的复杂数学。然而,讨论反向传播背后的数学是必要的。

反向传播的目标

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

训练深度神经网络

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

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

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

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

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

网络中的反向传播

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

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

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

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

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

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

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