我有一些关于反向传播的问题。我正在尝试学习神经网络理论背后的基础知识,并想从小处开始,构建一个简单的 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/