深度神经网络中的反向传播过程17 Mar 2025 | 6 分钟阅读 反向传播是神经网络的重要概念之一。 我们的任务是最好地分类我们的数据。 为此,我们必须更新参数和偏差的权重,但我们如何在深度神经网络中做到这一点? 在线性回归模型中,我们使用梯度下降来优化参数。 类似地,在这里我们也使用梯度下降算法,即使用反向传播。 对于单个训练示例,反向传播算法计算误差函数的梯度。 反向传播可以写成神经网络的一个函数。 反向传播算法是一组用于有效训练人工神经网络的方法,它遵循利用链式规则的梯度下降方法。 反向传播的主要特征是迭代、递归和有效的方法,通过该方法计算更新后的权重以改进网络,直到它无法执行正在训练的任务为止。 在网络设计时需要知道激活函数的导数,这对于反向传播来说是必需的。 现在,误差函数如何在反向传播中使用,反向传播如何工作? 让我们从一个例子开始,并从数学上理解如何使用反向传播精确地更新权重。 ![]() 输入值X1=0.05 初始权重W1=0.15 w5=0.40 偏差值b1=0.35 b2=0.60 目标值T1=0.01 现在,我们首先通过正向传播计算 H1 和 H2 的值。 正向传播为了找到 H1 的值,我们首先将输入值乘以权重,如下所示 H1=x1w1+x2w2+b1 为了计算 H1 的最终结果,我们执行了 sigmoid 函数,如下所示 ![]() 我们将以与 H1 相同的方式计算 H2 的值 H2=x1w3+x2w4+b1 为了计算 H1 的最终结果,我们执行了 sigmoid 函数,如下所示 ![]() 现在,我们以与计算 H1 和 H2 相同的方式计算 y1 和 y2 的值。 为了找到 y1 的值,我们首先将输入值(即 H1 和 H2 的结果)乘以权重,如下所示 y1=H1w5+H2w6+b2 为了计算 y1 的最终结果,我们执行了 sigmoid 函数,如下所示 ![]() 我们将以与 y1 相同的方式计算 y2 的值 y2=H1w7+H2w8+b2 为了计算 H1 的最终结果,我们执行了 sigmoid 函数,如下所示 ![]() 我们的目标值是 0.01 和 0.99。 我们的 y1 和 y2 值与目标值 T1 和 T2 不匹配。 现在,我们将找到总误差,这只是输出与目标输出之间的差异。 总误差计算如下 ![]() 因此,总误差为 ![]() 现在,我们将反向传播此误差以使用反向传播更新权重。 在输出层进行反向传播为了更新权重,我们在总误差的帮助下计算对应于每个权重的误差。 通过将总误差相对于 w 进行微分来计算权重 w 上的误差。 ![]() 我们执行反向过程,因此首先考虑最后一个权重 w5,如下所示 ![]() 从等式二可以看出,我们无法相对于 w5 对其进行偏微分,因为没有任何 w5。 我们将等式一拆分为多个项,以便我们可以轻松地相对于 w5 对其进行微分,如下所示 ![]() 现在,我们逐一计算每个项,以区分 Etotal 相对于 w5,如下所示 ![]() 将 e-y 的值放入等式 (5) ![]() 因此,我们将 ![]() 现在,我们将在以下公式的帮助下计算更新后的权重 w5new ![]() 以相同的方式,我们计算 w6new,w7new 和 w8new,这将为我们提供以下值 w5new=0.35891648 在隐藏层进行反向传播现在,我们将反向传播到我们的隐藏层,并更新权重 w1、w2、w3 和 w4,就像我们处理 w5、w6、w7 和 w8 权重一样。 我们将计算 w1 处的误差,如下所示 ![]() 从等式 (2) 可以看出,我们无法相对于 w1 对其进行偏微分,因为没有任何 w1。 我们将等式 (1) 拆分为多个项,以便我们可以轻松地相对于 w1 对其进行微分,如下所示 ![]() 现在,我们逐一计算每个项,以区分 Etotal 相对于 w1,如下所示 ![]() 我们再次拆分此项,因为 Etoatal 中没有任何 H1final 项,如下所示 ![]()
![]() 我们再次拆分这两个 ![]() 现在,我们通过将值放入等式 (18) 和 (19) 来找到 从等式 (18) ![]() 从等式 (8) ![]() 从等式 (19) ![]() 将 e-y2 的值放入等式 (23) ![]() 从等式 (21) ![]() 现在从等式 (16) 和 (17) ![]() 将 ![]() 我们有 ![]() 将 e-H1 的值放入等式 (30) ![]() 我们计算总净输入到 H1 相对于 w1 的偏导数,就像我们对输出神经元所做的那样 ![]() 因此,我们将 ![]() 现在,我们将在以下公式的帮助下计算更新后的权重 w1new ![]() 以相同的方式,我们计算 w2new,w3new 和 w4,这将为我们提供以下值 w1new=0.149780716 我们已经更新了所有权重。 当我们向前馈送 0.05 和 0.1 输入时,我们发现网络上的误差为 0.298371109。 在第一轮反向传播中,总误差降至 0.291027924。 在重复此过程 10,000 次后,总误差降至 0.0000351085。 此时,当我们向前馈送 0.05 和 0.1 时,输出神经元会生成 0.159121960 和 0.984065734,即接近我们的目标值。 下一个主题深度神经网络的实现 |
我们请求您订阅我们的新闻通讯以获取最新更新。