BP反向傳播算法原理及公式推導

BP(Back Propagation)神經網絡通常是指具有三層網路結構的淺層神經網絡。

                                               

反向傳播算法

1.什麼是BP 算法?
BP算法全稱叫作誤差反向傳播(error Back Propagation,或者也叫作誤差逆傳播)算法。BP神經網絡是由一個輸入層、一個輸出層和一個或多個隱層構成的,它的激活函數採用sigmoid函數。在這其中,輸入信號經輸入層輸入,通過隱層計算由輸出層輸出,輸出值與標記值比較,若有誤差,將誤差反向由輸出層向輸入層傳播,在這個過程中,利用梯度下降算法對神經元權值進行調整。
2.爲什麼要使用BP算法?直接使用梯度下降不行嗎?
梯度下降可以應對帶有明確求導函數的情況,或者說可以應對那些可以求出誤差的情況,比如邏輯迴歸,我們可以把它看做沒有隱層的網絡;但對於多隱層的神經網絡,輸出層可以直接求出誤差來更新參數,但其中隱層的誤差是不存在的,因此不能對它直接應用梯度下降,而是先將誤差反向傳播至隱層,然後再應用梯度下降,其中將誤差從末層往前傳遞的過程需要鏈式法則(Chain Rule)的幫助,因此反向傳播算法可以說是梯度下降在鏈式法則中的應用。 

                                                 

這個網絡只有3層,分別是藍色的輸入層、綠色的隱藏層和紅色的輸出層。

假設給了m個訓練樣本,第i個輸入輸出對錶示爲:
其中,x和y是3維向量。對於輸入x,我們把g稱作神經網絡的預測(輸出)值。

對於每個訓練樣本來說,有:

給定輸入x,我們要找到使得預測值g與輸出值y相等或比較相近的一組網絡權重。因此,我們加入了誤差函數,定義如下:

我們推廣到一般情況,而不是之前的3個輸出單元。假設輸出層有任意數量的輸出單元,設爲n,對於這種情況此時的總誤差(損失函數)爲:

用z來代表某個輸出單元的總輸入,求出下面公式的值:

但是,g是關於z的函數,應用鏈式法則,把它重寫爲:

g作爲Logistic函數,z是它的輸入,所以可以表示爲:

進而得到:

設綠色單元的預測值爲g’,綠色層中的單元k與紅色層(輸出層)中的單元j之間的連接權重設爲:

圖中,黃色輸出單元對應的總輸入z。爲了計算這個總輸入,先獲得每個綠色單元的輸出值,在把其與連接綠色單元和黃色單元的紅色箭頭權重相乘,並將它們全部相加。

                                               

進行推廣,假如有任意數量的綠色單元,設爲n,這個n與上面定義的不同,可以表示爲:

推導還沒有完成,我們仍需要計算誤差相對於第一層和第二層連接權重的導數。接下來,計算誤差與第k個綠色單元輸出值的變化關係:

由於第k個單元有j個連接權重,我們也考慮在內:

推導到這裏結束,我們得到了總誤差相對於某個單元輸出值的導數。現在,我們可以忽略紅色輸出層,把綠色層作爲網絡的最後一層,並重覆上述所有步驟來計算總誤差E相對於輸入權重的導數。

 

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