给定输出节点和权重的错误,如何使用反向传播更新隐藏节点的错误

How to update the error on a hidden node using back-propogation, given the error on the output nodes and weights

我正在学习神经网络,我想手动编写反向传播代码以了解它的工作原理,但我在算法上遇到了困难。我正在尝试解决 this 论文的第 30 题(这样我就有了一个例子来说明它是如何工作的)。

问题的简短版本是,如果有人可以告诉我如何找到 H2 的错误,我将不胜感激(答案应该是 A;-0.0660)。

问题的长版本是,我的想法是否正确(在 H2 处使用反向传播找到错误):

  1. I1、I2 和 I3 的误差(来自问题 29)分别为 0.1479、-0.0929 和 0.1054。

  2. 网络架构为:

  1. 权重为:

所以我想到了我必须做的事情:

  1. 找出导致每次输出错误的权重总数(我取绝对值得到错误的总和,对吗?):

    E1 = 1.0 + 3.5 => 4.5

    E2 = 0.5 + 1.2 => 1.7

    E3 = 0.3 + 0.6 => 0.9

  2. 然后我计算出来自我感兴趣的节点(y2)的每个权重的比例:

    E1 = 3.5/4.5 = 0.777

    E2 = 1.2/1.7 = 0.71

    E3 = 0.6/0.7 = 0.86

  3. 然后我计算出来自该权重比例的错误比例:

    E1 => (0.14/100)*14 = 0.01078

    E2 => (-0.09/100)*71 = -0.0639

    E3 => (0.1054/100)*86 = 0.090644

如果有人能告诉我哪里出错了(因为如上所述,我知道正确答案应该是什么),我将不胜感激。另外,如上所述,我在原始考试的原始问题30中添加了一个link,如果它有帮助的话(这是17年前的,不是我正在做的考试,只是想理解它) .我知道我可以使用 TensorFlow/Keras 来自动实现它,但我正试图真正了解它是如何工作的。

在你提到的问题中,给出了误差函数:

您需要计算 j = 2 的值。您有所有 delta_k 和 w_ij 的值。

还给出了激活函数的导数 f'(Hj):

最后给出隐藏节点2的激活值,即f(H2)。您需要做的就是将您拥有的所有值放入方程式:

f'(H2) = 0.74 * (1 - 0.74) = 0.1924

delta_2 = 0.1924 * ((0.1479 * -3.5) + (-0.0929 * -1.2) + (0.1054 * 0.6)) = -0.06598