关于反向传播算法的问题

时间:2012-09-24 03:33:48

标签: 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 个答案:

答案 0 :(得分:2)

确定。首先。反向传播,因为它表明后面的工作。从输出到所有隐藏层到输入层。在最后一层中计算的错误被“传播”到所有先前的错误。所以我们假设你有类型的模型:输入 - 1隐藏层 - 输出。在第一步中,您可以计算出所需值的错误和您拥有的错误。然后你对隐藏和输出之间的权重进行反向调整。之后,你会对输入和隐藏之间的权重进行反向调整。在每个步骤中,您都会从下一个图层返回错误,简单。但数学可能令人困惑;)请仔细阅读他的简短章节以获得进一步的解释:http://page.mi.fu-berlin.de/rojas/neural/chapter/K7.pdf