2016-09-22 92 views
5

我正在玩一個我自己實現的神經網絡:它是一個簡單的前向網絡,與基本設計相比,它使用RPROP作爲學習算法的唯一「加號」。神經網絡和異或函數

當我對MNIST進行測試時,或者當我嘗試進行圖像壓縮時,但是當我嘗試對XOR函數進行簡單模擬時,網絡得分會得分,有時在學習過程中會陷入局部最小值,以下真值表:

0 XOR 0 = 1.4598413968251171e-171 
1 XOR 0 = 0.9999999999999998 
0 XOR 1 = 0.9999999999999998 
1 XOR 1 = 0.5 

通常,訓練後的結果是正確的,但有時1 XOR 1個輸出0.5,而不是1,它應。 XOR(1,1)並不總是會發生,但是其他輸入也是如此。作爲XOR函數是後向傳播文獻中的「經典」,我想知道這裏發生了什麼,尤其是考慮到我的網絡似乎學得更復雜(但也許更少的非線性)任務就好了。

我瘋狂的猜測是,這是錯誤的偏見。

任何提示?注意1:上面的網絡佈局是2 | 3 | 1,但是當我使用更多的隱藏單元時,變化不大,某些學習嘗試仍然出錯。

注2:我把落實到一個要點:https://gist.github.com/antirez/e45939b918868b91ec6fea1d1938db0d

+0

你使用了什麼功能?你可以分享嗎? – ACV

+0

我只是在這裏完整的實現:https://gist.github.com/antirez/e45939b918868b91ec6fea1d1938db0d這是非常基本的東西。 編輯:只是添加頭文件以及。 – antirez

+0

實際上測試更多我發現它不僅僅是異或(1,1)失敗,而且其他人可能會輸出0.5。 – antirez

回答

2

的問題是由於我在執行中的錯誤:在NN的偏置單元之前沒有正確計算的輸出單元。修復代碼後,XOR函數總是正確計算。