2012-09-24 58 views
2

我有幾個關於backpropogation的問題。我試圖學習神經網絡理論背後的基礎知識,並希望從小處着手,構建一個簡單的XOR分類器。我讀過很多文章,並且翻閱了多本教科書 - 但是我似乎無法教這個東西XOR的模式。關於Backpropogation算法的問題

首先,我不清楚backpropogation的學習模式。這裏有一些僞代碼來表示我如何訓練網絡。 [讓我們假設我的網絡設置正確(即:多個輸入連接到隱藏層連接到輸出層,並且所有連接都正確)]。

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]是相同的值。

如果您有任何建議,其他資源,文章,博客等,我可以看看我非常有興趣瞭解有關此主題的更多信息。感謝您的協助,我非常感謝!

+0

你至少使用2個隱藏的神經元嗎?你如何初始化權重? –

+0

權重隨機初始化,我使用至少2個隱藏的神經元。我相信我的問題是我正在使用的後向數學。我想我需要專注於使錯誤計算在數學上更加正確。 – Colemangrill

回答

2

好的。首先。反向傳播,因爲它說從後面工作。從輸出到所有隱藏層直至輸入層。在最後一層計算的錯誤「傳播」到所有先前的錯誤。所以我們假設你有一個類型的模型:input - 1 hidden layer - output。在第一步中,您從期望值和您擁有的值中計算錯誤。然後,你會隱藏和輸出之間的權重。之後,你會在輸入和隱藏之間進行反向權重。在每一步中,你從後一層到後一層的backprop錯誤都很簡單。但數學可能會令人困惑;)請看他的短篇章節作進一步解釋:http://page.mi.fu-berlin.de/rojas/neural/chapter/K7.pdf

+0

謝謝你,d3r0n!那篇文章勝過我讀過的所有內容。雖然我還沒有解決我的問題,但我意識到我使用的數學是完全關閉的。我需要再讀一遍pdf,我想我會擁有它!再次感謝:) – Colemangrill

+0

我很高興幫助:) – d3r0n