1. 程式人生 > >BP神經網路演算法原理推導(數學建模進階演算法/機器學習)

BP神經網路演算法原理推導(數學建模進階演算法/機器學習)

       BP神經網路(Back-Propagation Network)演算法原理推導

  • 簡介

       反向傳播網路(Back-Propagation Network)簡稱BP網路,基於誤差反向傳播演算法(BP演算法)的一種多層網路。

       以2-3-2BP網路模型為例:

  • 演算法虛擬碼:

       輸入:訓練集D

                  學習率η

                  1:資料歸一化(此處需根據資料實際情況以及演算法要求進行資料預處理,“歸一化”只是一方面)

                  2:建立網路

                  3:訓練網路

                        repeat for D

                        3.1:正向傳播

                        3.2:反向傳播

                         until for 達到結束條件

                  4:使用網路

                  5:資料反歸一化

        輸出:訓練完成的BP神經網路

  • 演算法詳解

     網路結構

       如2-3-2層神經網路:

    符號說明

       訓練樣本:

       輸入層到隱含層權值:

       隱含層輸入:

                                                                                                                                                (p為隱含層神經元個數)

       隱含層輸出:

       隱含層到輸出層權值:

       輸出層輸入:

                                                                                                                                                    (q為輸出層神經元個數)

       輸出層輸出:

       期望輸出:

       樣本資料個數:                                                            k=1,2,...,m

       各層神經元個數:                                                          n,p,q

       啟用函式:                                                                         f(·)

       誤差函式:

演算法詳解

     1.資料歸一化(“歸一化”術語參考自《MATLAB30個經典案例分析》,筆者認為此叫法在數學上其並不嚴謹)

       ·最大最小法:

       ·平均數方差法:

                                                                                                                                                (mean為均值,var為方差)

      2.建立網路

      2.1:確定網路層數與每層神經元數量

           層數:根據經驗,一般層數等於(輸入+輸出)/2,然後慢慢進行調整。一般使用 三層。

           隱含層結點數:節點數太少, 網路不能很好的學習,需要增加訓練次數;節 點數過多,訓練時間會加長,網路容易過擬合。

           參考以下公式:

       2.2:初始化網路中所有權值

              (0,1)內隨機賦值。(有的資料賦(-1,1))

       2.3:確定隱含層、輸出層啟用函式

                選取S型函式,在網路層數少時,一般選擇sigmoid函式或tanh函式

       2.4:設定訓練引數

               根據經驗賦值

       3.訓練網路

       3.1:隨機選取某個輸入樣本

                                                                                                                                                     (圖1模型中n=2)

       3.2:計算當前樣本隱藏層輸入和輸出

               隱藏層輸入:    

                                                                                                                                                      (圖1模型中p=3)

               隱藏層輸出:    

       3.3:計算當前樣本輸出層輸入和輸出

               輸出層輸入:    

               輸出層輸出:     

       3.4:計算誤差函式

       3.5:計算誤差函式對輸出層和隱含層之間引數的偏導數

       3.6:計算誤差函式對隱含層和輸入層之間引數的偏導數

        3.7:修正引數

                 輸出層和隱含層之間引數:

                 隱含層和輸入層之間引數:

        3.8:計算全域性誤差

        3.9:判斷網路誤差是否滿足要求。當誤差達到預設精度或學習次數大於設定的最 大次數,則結束演算法。否則回到3.1

        4.使用網路

           輸入所要進行處理的資料。

        5.資料反歸一化

           直接使用MATLAB反歸一化函式即可

  • gif動態圖

  • 應用

           BP網路主要用於:

           ·函式逼近:用輸入向量和相應的輸出向量訓練一個網路逼近—個函式;

           ·模式識別:用一個特定的輸出向量將它與輸入向量聯絡起來;

           ·分類:把輸入向量以所定義的合適方式進行分類;

           ·資料壓縮:減少輸出向量維數以便於傳輸或儲存。

  • 參考文獻

Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. Learning representations by back-propagating errors. Nature. 8 October 1986, 323 (6088): 533–536. doi:10.1038/323533a0