我在學習(從今天開始)神經網絡並且可以完成一個2x2x1網絡(前向數據饋送和後向錯誤傳播)一組輸入。它還使用隨機參數來避免任何局部最小值。我的第一個來源是:http://www.codeproject.com/Articles/14342/Designing-And-Implementing-A-Neural-Network-Librar當我嘗試教下一組訓練輸入時,我的神經網絡忘記了最後一次訓練。
問題是:它學習0和0使用輸入(0,0),但是當我給(0,1)它忘記0和0,然後學習0和1。一個普通的新手bug?
我的嘗試:
loop for 10000 times
learn 0 and 0
end loop
loop for 10000 times
learn 0 and 1 (forgets 0 and 0)
end loop
loop for 10000 times
learn 1 and 0 (forgets 0 and 1)
end loop
loop for 10000 times
learn 1 and 1 (forgets 1 and 0)
end loop
only one set is learned
fail
試驗2:
loop for 10000 times
learn 0 and 0
learn 0 and 1
learn 1 and 0
learn 1 and 1
end loop
gives same result for all input combinations.
fail.
激活功能,每個神經元:雙曲正切
2×2結構:全對
2×1結構:全部配對
隨機學習率:是的,小到足以爆炸性迭代遠保持(每次迭代)每個神經元
隨機偏差:是的,-0.5和+0.5(剛開始)
隨機權重之間:是,在-0.5和+0.5之間(僅在開始時)
編輯:對隱藏層和輸出層的所有對執行偏置和權重更新。
編輯:所有神經元(隱藏+輸出)使用相同的激活函數。
第二個版本看起來更好,但是除非您提供有關網絡參數值的更多詳細信息,以及培訓過程的樣子,否則無法診斷。你有沒有嘗試降低學習率?您是否嘗試調試網絡?AND問題非常簡單,您可以使用鉛筆和紙張計算預期結果。在學習期間,權重如何表現預期的結果? – BartoszKP
隱藏層偏差正在-800。但是它們應該被錯誤傳播迭代自動歸一化。 –
重量小於1. –