2016-09-07 63 views
2

我從this blog使用的,而不是雙曲正切激活功能乙狀結腸失敗 - 神經網絡

查看以下code它給使用的選項均sigmoidtanh激活功能。

的XOR測試似乎好工作與tanh功能產生〜(0,1,1,0)

但是一旦轉到sigmoid我得到錯誤的輸出〜(0.5,0.5,0.5,0.5)

我已經與another piece of code我在網上找到和嘗試這個完全相同的問題發生。

似乎唯一改變的是激活函數(及其派生)。改變這種方式是否需要其他改變,比如後向推演?

非常感謝您的幫助!

+0

您是否嘗試過增加sidmoid-only網絡的大小來驗證它是否能夠學習XOR?嘗試一些像2-10-1那樣的矯枉過正。 tanh輸出間隔'[-1,1]'傾向於將SOR更快地與sigmoid輸出層相結合。使用sigmoid不會改變底層反向傳播計算。 – jorgenkg

回答

0

看起來你使用的模型不會訓練偏差。 tanhsigmoid之間唯一的區別是縮放和偏移量。學習新的縮放將通過權重完成,但您還需要學習補償新的偏移量,這也應該通過學習偏差來完成。

+0

感謝您的解釋。有沒有一個程序的例子(最好在python的可讀性),你可以引用我哪些列車的偏見? –

+0

順便說一下,如果我使用True = 0.9和False = 0.1進行異或運算?我還需要偏見嗎? –

+1

偏差可以看作是總是等於'1'的額外分量的權重:如果x =(x1,x2,...,xn)是神經元的輸入向量,並且w =(w1,w2 ,...,wn)'是你學習的權重,你可以通過增加你的輸入作爲'x =(x0 = 1,x1,x2,...,xn)'和學習增廣權重'w =(w0,w1,w2,...,wn)','w0'將會是你的偏見。 – Julien