1. 程式人生 > >BP神經網路演算法之matlab具體實現

BP神經網路演算法之matlab具體實現

之前的幾篇部落格的一個共同點就是梯度下降法,梯度下降法是用來求解無約束最優化問題的一個數值方法,簡單實用,幾乎是大部分演算法的基礎,下面來利用梯度下降法優化BP神經網路。
[TOC]

梯度公式

下面的BP神經網路結構為最簡單的三層網路,各層的神經元數量分別為B1,B2,B3。其中X,H,b2,O,b3均為行向量,W12,W23大小分別為(B1,B2)和(B2,B3)
這裡寫圖片描述
BP神經網路的基本原理,通過輸入X,經過非線性對映到輸出O(樣本大小為m),誤差為:

J=i=1m12k=1B3(OkYik)2
顯然,我們想要的是J越小越好。
根據上面的網路結構可得H、O的計算公式:
H
=f(XW12+b2)

f函式為:f(x)=1(1+ex),f函式導數為:f1=f(1f)
O=HW23+b3

下面採用梯度下降法求解J的最小值時對應的網路的權閾值:

Jb3l=i=1mk=1B3(OkYik)Okb3l.........l=1,2,...B3=i=1mk=1B3(OkYik)((HW23)k+b3k)b3l=i=1mk=1B3(OkYik)b3kb3l=i=1m(OlYil).........l=1,2,...B3
如果資料集較小時,採用上述公式還可以,但是,當資料集特別大時,也就是m很大,那麼梯度的計算將耗費大量時間,所以我們採用單樣本誤差來調整網路的權閾值。即,每使用一個樣本就調整權閾值,那麼J函式的形式更改如下:

J損失函式

J=12k=1B3(OkYik)2

權閾值梯度公式

下面就新的J函式來推導梯度公式:

Jb3l=OlYl.........l=1,2,...,B3

J(b3)=Jb3=OY
JW23pl=k=1B3(Ok