2

我有几个关于反向传播的问题。我正在尝试学习神经网络理论背后的基础知识,并想从小处着手,构建一个简单的 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] 训练为相同的值。

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

4

1 回答 1

2

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

于 2012-09-24T14:27:10.823 回答