1. 程式人生 > >BP演算法總結+從輸入-隱層-輸出的逐步手推

BP演算法總結+從輸入-隱層-輸出的逐步手推

1 BP演算法總結

  BP演算法:bp演算法實際上是在神經網路中尋找在合適條件下的最佳權重和bais。實際上是利用輸出後的誤差來估計輸出層前一層的誤差,再用這層誤差來估計更前一層誤差,如此獲取所有各層誤差估計。然後再來來調整各層的連線權值+bais,再用調整後的連線權值+bais重新計算輸出誤差。直到輸出的誤差達到符合的要求或者迭代次數溢位設定值。(注:更新權值的過程實際上最重要的是對誤差應用鏈式法則求導,等總結完後面會有詳細的手推,但你必須理解BP演算法的過程,我這塊只做懂原理但中間計算有問題的講解)。

2 BP演算法的流程

     1) 正向傳播FP(求損失).在這個過程中,我們根據輸入的樣本,給定的初始化權重值W和偏置項的值b, 計算最終輸出值以及輸出值與實際值之間的損失值.如果損失值不在給定的範圍內則進行反向傳播的過程; 否則停止W,b的更新。

    2) 反向傳播BP(回傳誤差).將輸出以某種形式通過隱層向輸入層逐層反傳,並將誤差分攤給各層的所有單元,從而獲得各層單元的誤差訊號,此誤差訊號即作為修正各單元權值的依據。

3 BP演算法手推過程

 下面以一個簡單的神經網為例,輸入為i1,i2;權重為w1-w8,bais為b1-b4;中間的隱層啟用函式為sigmoid函式。以通用的變數代替數值,具體計算值可以引入數值。計算完之後可以從這個簡單的神經網路擴充套件到多個隱層,推到過程如是(為了大家看的清楚我將自己當初筆記中的推導截圖共享出來)。

  

正向傳播的過程:

    從輸入--->隱層

   

隱層--->輸出層

   

  例子的正向傳播以求解完成,在看反向傳播前看一下sigmoid的求導(注:反向求導過程sigmoid求解就可以直接寫)

  

   反向傳播:(在以平方損失函式作為損失函式)

   輸出--->隱層

   

  

  

       

 通過上述的計算可以類似的計算出更新的w6-w8,和bb3,b4其中的α為學習率;

從隱層-->輸出層

 

 

   

   

  總結w1的更新

   

    

    通過上述的公式可以求解出w2-w4和b1,b2的更新值。

   完成上述過程等於是走了一遍更新權值和bais的過程,在計算機中這個過程多執行幾次可以達到學習的過程。如果有更深的網路或者節點個數,推導的過程類似不變。