我已經構建了自己的神經網絡,並且我有一個奇怪的問題。我的神經網絡學習sin x但不是cos x
該網絡是一個相當簡單的前饋1-N-1網絡,具有反向傳播學習功能。 Sigmoid被用作激活功能。
我的訓練集由[-PI,PI]和它們的[0,1] - 縮放正弦值之間的隨機值生成(這是因爲「Sigmoid-net」僅生成[0,1]和非標定正弦函數產生[-1,1]之間的值)。
使用該訓練集,網絡設置爲1-10-1,學習率爲0.5,一切都很好,網絡學會了應有的正弦函數。但是,如果我對COSINE功能以完全相同的方式做所有事情,網絡將不會學習它。沒有任何隱藏層大小或學習率的設置。
任何想法?我錯過了什麼嗎?
編輯:我的問題似乎與this applet可以看到相似。它似乎不會學習正弦函數,除非首先爲權重教授一些「更容易」的東西(比如1400次二次函數)。小程序中的所有其他設置都可以保持原樣。因此,在正弦或餘弦的情況下,似乎在找到解決方案之前,權重需要一些提升至至少部分正確的方向。爲什麼是這樣?
它代之以什麼?這可能有助於我們猜測問題出在哪裏。 –
我注意到sin(x + 0.5 * PI)(它等於cos x)也不起作用。功率函數(^ 2,^ 3等)似乎也不起作用。線性函數可以工作。代碼中可能存在一些問題,並且sin [-PI,PI]函數的成功只是一個奇怪的副作用。 –
張貼一些代碼可能會幫助我們來幫助你。 – g19fanatic