如何解决给定输出节点和权重上的错误,如何使用反向传播更新隐藏节点上的错误
我正在学习神经网络,我想手动编码反向传播以了解它的工作原理,但我在算法方面遇到了困难。我正在尝试解决 this 论文的第 30 个问题(以便我有一个示例来说明它是如何工作的)。
问题的简短版本是,如果有人可以告诉我如何执行此操作以找到 H2 的错误,我将不胜感激(答案应该是 A;-0.0660)。
问题的长版本是,我的想法是否正确(在 H2 使用反向传播找到错误):
-
I1、I2 和 I3 的误差(来自问题 29)分别为 0.1479、-0.0929 和 0.1054。
-
网络架构是:
- 权重为:
所以我想我必须做什么:
-
找出导致每个输出错误的权重总数(我取绝对值得到错误总和,对吗?):
E1 = 1.0 + 3.5 => 4.5
E2 = 0.5 + 1.2 => 1.7
E3 = 0.3 + 0.6 => 0.9
-
然后我计算出来自我感兴趣的节点 (y2) 的每个权重的比例:
E1 = 3.5/4.5 = 0.777
E2 = 1.2/1.7 = 0.71
E3 = 0.6/0.7 = 0.86
-
然后我计算出来自该重量比例的误差比例:
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 来自动实现这一点,但我正在尝试真正了解它是如何工作的。
解决方法
在你提到的问题中,你得到了误差函数:
您需要计算 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。