1. 程式人生 > >對反向傳播演算法(Back-Propagation)的推導與一點理解

對反向傳播演算法(Back-Propagation)的推導與一點理解

最近在對卷積神經網路(CNN)進行學習的過程中,發現自己之前對反向傳播演算法的理解不夠透徹,所以今天專門寫篇部落格記錄一下反向傳播演算法的推導過程,算是一份備忘錄吧,有需要的朋友也可以看一下這篇文章,寫的挺不錯的:http://www.cnblogs.com/lancelod/p/4164231.html,本文也大量參考了這篇文章。本文在推導過程中忽略了偏置的存在,這樣做是為了更簡單明晰的闡述BP演算法的操作過程,並不是說偏置不重要,希望不會引起誤會。

        我們知道,神經網路大多采取正向傳播預測,反向傳播誤差的結構。反向傳播演算法是運用在神經網路中進行網路權重等最優值計算演算法,其核心就是梯度下降 + 鏈式法則求偏導

,下面就對反向傳播演算法進行一下簡單的推導:

        在下面的推導過程中,表示連線前一層神經元 和後一層神經元 的權值。

                              

        對於輸出層神經元 ,它的輸入 按下式進行計算(忽略偏置):

    

        可以看到它的輸入等於前一層所有神經元的輸出和對應連線的加權和, 如上圖,而的輸出按下式計算:

      

        對於有監督訓練, 期望輸出即樣本類標籤d和實際輸出y都是已知的, 可以定義誤差或者loss function為:

      

        前期的準備工作已經完成了,下面開始正式的推導過程:
     

        這樣,我們就可以根據最後求出的誤差來對權重進行更新,這種誤差反向傳遞的方式就是反向傳播演算法的精髓所在。

        處理完輸出層神經元,我們再來看一下輸出層之前的一層神經元的權值更新,我們定義表示連線前一層神經元和後一層神經元的權值。


        相信大家已經看出誤差反向傳導的內涵了,每一層所產生的誤差會逐漸向之前的層次傳播,而各層的權重根據梯度下降演算法不斷地優化。總之,反向傳播演算法的核心就是梯度下降 + 鏈式法則求偏導,雖然看起來很繁瑣並且計算複雜度有點高,但是實際上BP演算法的精確性易用性是很難被其他演算法替代的,這也是現在比如CNN等很火的深度學習演算法普遍採用BP演算法的原因。