2015-02-17 79 views
2

我一直在嘗試實現一段時間的反向傳播神經網絡,並且我一次又一次地面臨問題。目前的進展是,我的神經網絡適用於XOR,AND和OR。多類神經網絡問題

下面的圖片顯示了我的神經網絡訓練XOR超過100000次迭代,它似乎收斂良好。爲此,我有2個輸入神經元和與2個神經元的隱藏層的單個輸出神經元它[雖然1就已經足夠了] enter image description here

現在正在進行向前我訓練同一網絡的兩個區分在XY平面內的座標爲兩個類與2輸入神經元和1個輸出神經元和單隱層的相同結構具有兩個神經元: Dataset enter image description here

下一個I訓練它僅但具有2個輸出神經元和結構的保持其餘兩個類同樣的,這段時間需要很長時間才能收斂,但它確實如此。 enter image description here 但現在我增加到三班; A類爲100和B類將是010和C級將是001,但現在,當我訓練它,然後它從來沒有收斂,並讓我對下面顯示的數據如下結果: enter image description here enter image description here

它似乎永遠不會匯聚。我觀察到這種模式,如果我增加輸出層神經元的數量,錯誤率就像任何東西一樣增加?我可以指導我去哪裏我錯了嗎?

+0

輸出神經元的邏輯級別是什麼?綠色爲0-0.3,藍色爲0.3-0.7,紅色爲0.7-1.0? – 2015-02-17 23:58:23

+0

不!實際上我的輸出層有3個神經元,所以如果它歸類爲A類,那麼輸出層的第一個神經元應該被觸發,並且該層的完整輸出將是100,並且類似地,如果b類然後完成輸出將是010等等 – 2015-02-18 00:09:49

+0

什麼是這些產出的總和? – 2015-02-18 00:11:21

回答

5

如果您從二進制分類轉移到多類分類,則必須推廣反向傳播算法以正確處理兩個以上的類。

到二元分類的主要區別是,該更新更改:

update

與:

y

是其中選擇參數Y(輸出)的新得分得出特徵的最高分數乘以權重向量w。這種策略被稱爲one-vs.-rest。寫爲僞代碼(from here):

pseudocode

請記住,根據自己的特定代碼,您可能需要執行其他變化(如地圖的實值輸出到二進制輸出每輸出單元)至你當前的代碼。

,如果你有由要劃分多個independent屬性你具有每類1個的二進制輸出節點的體系結構是完全沒有問題。否則,您應該考慮使用輸出層softmax(有關實現示例,請參閱here)。在輸出層中使用softmax激活會將原始值轉換爲後驗概率(而不是每個類的二進制輸出)。既然這給你一個確定性的措施,它也給你更多的見解。

+3

我對神經網絡一無所知,但這是一個很酷的答案。 – Luminous 2015-02-18 13:16:31

+0

@發光的謝謝! – runDOSrun 2015-02-18 13:17:12

+0

感謝您的回答!但我會學習很多東西來理解你在這裏所提出的觀點,然後去實現你所建議的改變......但是真正感謝你所擁有的所有資源:) – 2015-02-18 15:00:09