2013-04-28 103 views
1

我已經通過了我的所有代碼,如果它真的是問題,那麼我不知道它是如何避開我。發帖太久了,所以我會告訴你我的問題,我想要解決的問題,如果你有任何想法,我還可以尋找什麼,我會非常感激!好吧,所以首先按照haykin的指示,用平均零和方差等於該神經元輸入數量的1 /平方根初始化權重。MLP神經網絡不會學習

我已經餵它一個簡單的正弦波首先學習。隱藏層中的權重似乎會收斂,從而爲該層內的每個神經元提供相同的輸出......這使得輸出神經元給出幾乎固定的輸出。

那麼,可能是什麼原因?首先,我檢查了網絡學習率是否導致它陷入局部最小值並增加了它,並且還嘗試着沒有動力的&。我發現它在一定程度上糾正了這個問題,因爲網絡產生了正弦波。但是,不正確! :(

網絡輸出的振幅大約是離中心軸高度的三分之一,並且不會下移,看起來有點像你選擇了正弦波,擠壓了三分之一,並將其​​提升到坐在它的軸上的最低峯,此外,頂峯都是平坦的...此外,頂點都是平坦的...

我試着改變網絡拓撲結構,因此如果我添加另一個隱藏的神經元(總共3個)它突然只給出一個固定的輸出。

+0

雖然你的代碼可能太長,沒有代碼,但很難知道你的問題是什麼。也許你可以發佈你的輸出圖片和你認爲會導致問題的部分代碼。您的激活功能是否與有限的域名一起使用?例如,Sigmoid輸出被限制爲[0,1]。這聽起來像你可能需要改變你的功能或擴大你的數據,然後再送入網絡(並重新調整輸出)。 – 2013-04-28 23:58:32

回答

0

正弦波對於具有S形激活函數的神經網絡來說不是一個簡單的問題,3個隱藏的神經元通常是不夠的,看看this舉例:有200個隱藏節點在[0,2 *π]範圍內產生正弦波。本例中的激活函數是:隱藏層中的logistic sigmoid和輸出層中的標識。你總是應該在輸出層使用身份來進行迴歸。

當你沒有得到好的結果時,也可能會降低學習率。有時,梯度下降在誤差函數的陡峭區域之間振盪,因爲學習速率太大。