1

所以我有一個多層神經網絡,成功學習AND,OR,NOT和XOR。我對後向傳播有疑問。 我使用雙曲線函數,所以要確定錯誤的梯度它是這樣的:神經網絡和反向傳播

(目標 - 輸出)*輸出*(1 - 輸出)

但我的問題是,如果我有1的目標,我的輸出是0,它會導致像

(1 - 0)* 0 *(1 - 0),所以它會告訴我我的錯誤是0,即使它是(我認爲)1.它真的應該是0還是我在評估漸變時應該考慮的東西?有人可以解釋我背後的邏輯是什麼嗎?它是一個函數的局部最小值或類似的東西?

+0

您使用了什麼錯誤功能? –

回答

3

如果你想想看,這會是這樣即使你的目標是1,輸出爲1

不會發生這種情況的原因是因爲你通常不會得到真正的1或0,因爲您在每個節點都使用S形激活函數,所以它更可能得到接近於0或1的值。 如果從激活中獲得0或1,則表示乙狀結腸飽和。 您可以看到sigmoid函數的行爲如何。here

編輯:我想我應該專注於飽和度。 所以假設你在輸出層有一個1。這意味着你的sigmoid函數返回1,這意味着輸入值接近6.如果你看一下sigmoid圖,你會發現當x接近6時,輸出接近1,並且導數的輸出也將接近於0。當我們說S形「飽和」時,就是這種情況。你確實想避免這種情況。希望現在更清楚。

+0

哦,我明白了!這真的很明顯,這正是我所需要的,因爲起初我有這個問題;這是通過以較小的值開始網絡權重來解決的,但我不明白爲什麼。現在我明白了,非常感謝。 – Alejandro2600

+0

是的,更大的重量是原因。如果你看[這裏](http://yann.lecun.com/exdb/publis/pdf/lecun-98b.pdf),你會看到其他問題backprop網絡和許多好主意來解決它們。 – mp85

相關問題