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