Python中的反向傳播
可以試用編寫的Python腳本,該腳本在此Github存儲庫中實現了反向傳播算法。
反向傳播代碼:https://github.com/mattm/simple-neural-network
反向傳播可視化
要獲得顯示神經網絡的交互式可視化效果,請查看神經網絡可視化:
http://www.emergentmind.com/neural-network
總覽
在本教程中,我們將使用具有兩個輸入,兩個隱藏的神經元,兩個輸出神經元的神經網絡。另外,隱藏和輸出的神經元將包括偏差。
基本結構如下:
爲了獲得一些數字,下面是初始權重,偏差和訓練輸入/輸出:
反向傳播的目標是優化權重,以便神經網絡可以學習如何正確地將任意輸入映射到輸出。
對於本教程的其餘部分,我們將使用單個訓練集:給定輸入0.05和0.10,我們希望神經網絡輸出0.01和0.99。
前進通道
首先,讓我們看看在上述權重和偏差以及輸入爲0.05和0.10的情況下,神經網絡目前預測的結果。
爲此,我們將通過網絡提供這些輸入。我們計算出每個隱含層神經元的總輸入,使用激活函數(這裏我們使用邏輯函數)壓縮總輸入,然後對輸出層神經元重複這個過程。
計算總誤差
現在,我們可以使用平方誤差函數計算每個輸出神經元的誤差,並對它們求和以獲得總誤差:
該1/2包括在內,以便我們以後區分該指數被取消。無論如何,最終結果還是要乘以學習率,因此我們在此處引入常數[ 1 ] 都沒關係。
向後通行
我們反向傳播的目標是更新網絡中的每個權重,以便它們使實際輸出更接近目標輸出,從而將每個輸出神經元和整個網絡的誤差最小化。
輸出層