微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

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

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

  2. 网络架构是:

enter image description here

  1. 权重为:

enter image description here

所以我想我必须做什么:

  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 的链接(它来自 17 年前,不是我正在做的考试,只是想了解它)。我知道我可以只使用 TensorFlow/Keras 来自动实现这一点,但我正在尝试真正了解它是如何工作的。

解决方法

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

Error function

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

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

Derivative of activation function

最后,您将获得隐藏节点 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。