使用反向傳播算法訓練多層神經網絡(圖示)

本文爲翻譯內容,如下給出原文鏈接。

原文:Principles of training mult-layer neural network using backpropagation

鏈接:http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html


本文描述了使用反向傳播算法訓練多層神經網絡的過程。爲了更直觀的說明該訓練過程,使用如下圖所示的三層神經網絡,其中只有兩個輸入,一個輸出。

每個神經元由兩個單元組成:

    第一個單元表示輸入信號的加權和(Xi爲輸入信號,Wi爲權重係數);

    第二個單元實現非線性函數(也稱爲神經元激活函數);

如下圖,信號e爲線性輸出,y=f(e)爲非線性輸出,y也是當前神經元的輸出信號。


在訓練神經網絡時,我們需要用到訓練數據集。訓練數據集中包含輸入信號(X1和X2)以及相應的目標輸出(Z)。網絡訓練是一個迭代過程,在每次的迭代中,節點的權重係數會根據訓練集中的新數據進行修正。

一、計算初始參數

最初的權重係數按如下方法進行計算:
  • 強制從訓練集的所有輸入信號開始(本例中只有X1和X2)
  • 然後我們就能確定每一層網絡中每個神經元的輸出信號
符號w(xm)n表示,網絡輸入xm和神經元n之間的連接權重。符號yn表示神經元n的輸出信號。

下面三個圖演示了輸入信號在網絡中是如何傳遞到第一層神經元的。





下面兩張圖是信號在隱藏層之間的傳遞,前一層的輸出作爲後一層的輸入。符號wmn表示神經元m與下一層神經元n之間的連接權重。





下圖是輸出層的信號傳遞。


二、計算誤差信號

將網絡的輸出信號y與訓練集的目標輸出z進行比較,二者的差值稱爲輸出層神經元的誤差信號d

輸出層神經元的誤差信號是很好計算的,但是對於隱藏層來說,直接計算誤差信號是不可能的,因爲隱藏層神經元的目標輸出是未知的。在80年代中期反向傳播方法出現之前,都沒有什麼訓練多層網絡的有效方法。而反向傳播的思想就是,將輸出層的誤差信號反向傳播給所有的神經元,意味着所有神經元的輸出與輸入反向。

如下兩張圖是誤差信號傳遞到最後一個隱藏層的過程。



如下是隱藏層再向輸入方向的神經元進行誤差傳遞,權重係數wmn 依然用於連接神經元m和神經元n,只是計算方向不同。





三、參數更新

當所有神經元的誤差信號都計算完成,就可以用於修正每個神經元輸入節點的權重係數了。在下面幾張圖的公式中, df(e)/de 表示神經元激活函數的導數。







係數h 影響神經網絡的學習速率,有一些方法可以用來選擇該參數。第一種方法是,選擇一個較大的學習速率,當初始權重係數確定之後,逐漸減小學習速率。第二種方法比較複雜,選擇一個較小的學習速率,在訓練過程中逐漸增大,最後階段再減小。採用第二種方法能夠確定權重係數的符號。

References
Ryszard Tadeusiewcz "Sieci neuronowe", Kraków 1992




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章