c# - 关于反向传播算法的问题

标签 c# algorithm neural-network backpropagation

我有一些关于反向传播的问题。我正在尝试学习神经网络理论背后的基础知识,并想从小处开始,构建一个简单的 XOR 分类器。我读过很多文章并浏览了多本教科书 - 但我似乎无法教这个东西 XOR 的模式。

首先,我不清楚反向传播的学习模型。这是一些伪代码来表示我如何尝试训练网络。 [假设我的网络设置正确(即:多个输入连接到隐藏层,连接到输出层并且所有连接都正确)]。

SET guess = getNetworkOutput() // Note this is using a sigmoid activation function.
SET error = desiredOutput - guess
SET delta = learningConstant * error * sigmoidDerivative(guess)
For Each Node in inputNodes
   For Each Weight in inputNodes[n]
      inputNodes[n].weight[j] += delta;

// At this point, I am assuming the first layer has been trained.
// Then I recurse a similar function over the hidden layer and output layer.
// The prime difference being that it further divi's up the adjustment delta.

我意识到这可能还不够,我很乐意阐述我的实现的任何部分。使用上述算法,我的神经网络确实得到了训练。但不正确。输出总是

XOR 1 1 [smallest number]
XOR 0 0 [largest number]
XOR 1 0 [medium number]
XOR 0 1 [medium number]

我永远无法将 [1,1] [0,0] 训练为相同的值。

如果您有任何建议、其他资源、文章、博客等供我查看,我非常有兴趣了解有关此主题的更多信息。感谢您的帮助,非常感谢!

最佳答案

好的。首先。反向传播,因为它表示从后面开始工作。从输出到所有隐藏层直到输入层。最后一层中计数的错误将“传播”到所有先前的错误。因此,假设您有以下类型的模型:输入 - 1 个隐藏层 - 输出。在第一步中,您根据所需值和已有值计算错误。然后对隐藏层和输出层之间的权重进行反向传播。之后,您对输入和隐藏之间的权重进行反向传播。在每一步中,您都将误差从下一层反向传播到上一层,很简单。但数学可能会令人困惑;)请查看他的简短章节以获取进一步的解释:http://page.mi.fu-berlin.de/rojas/neural/chapter/K7.pdf

关于c# - 关于反向传播算法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12558517/

相关文章:

python - 在 Python 中解析化学公式

algorithm - 当无法访问所有位置时,如何确定通过二维数组的路径中的最大总和?

artificial-intelligence - 如何为国际象棋编写神经网络?

R - 神经网络 - 传统的反向传播看起来很奇怪

c# - ASP.NET Web API 2.0 管道和 ASP.NET Core Web API 管道差异

java - 字节数组上的 Karatsuba 乘法优化

c# - 文本框自动完成字符串集合建议

python - Django:只为 `manage.py runserver` 执行代码,不为 `migrate` 、 `help` 等执行代码

c# - ControlTransfer 指令未从 LibUsbDotNet 中的设置打包器发送值参数

c# - 在某个端口上查找传出连接的 IP 地址