2021-05-12 14:32:11
BP神經網路
神經網路理論
BP神經網路(Back Propagation Neural Network)為多層前饋神經網路用得比較廣泛,該神經網路先通過前向傳播取得估計值,後再使用誤差進行反向傳播通過梯度下降來不斷地更新權重從而取得最小誤差從中學習得最佳權重係數;從BP神經網路的名字也知道該演算法的核心為反向傳播演算法,神經網路由多個神經元組成神經元結構如下:
如上圖每個神經元結構由輸入、權重、閾值、啟用函數、輸出組成;
輸入:接受上層的輸出作為該神經元的輸入
權重:連線上層神經元與該神經元
閾值:現在通常把該閾值獨立為每層的一個偏置神經元參與權重與輸入的加權和運算
輸出:輸入與權重加權和並通過啟用函數產生的結果,並且該輸出為下層神經元的輸入
啟用函數:作用為神經網路新增非線性因素,解決線性不可分問題,使神經網路能夠處理更複雜的問題;
下圖為兩層神經網路,該網路的結構為:輸入層、隱含層、輸出層,稱為兩層神經網路是因為去掉輸入層就只有兩層,圓圈中為1的為偏置神經元,輸入層節點資料屬性並非神經元;神經網路可以有一個或多個隱含層,超過兩個隱含層通過就可以稱作深度神經網路,BP神經網路通常隱含層不會超過兩個;
BP神經網路結構:
訓練
一個BP神經網路流程主要以下幾個步驟:正向傳播、反向傳播、計算誤差、更新權重;下面通過一個範例來說明 BP神經網路的整個訓練過程; 資料集:D={(x_1,y_1 ),(x_2,y_2 )},x_1∈R^2,y_1∈R^2,資料集包含2兩個屬性,2維輸出向量;根據該資料集構建了神經網路結構如下圖,兩層神經網路擁有兩個輸入屬性、兩個輸出神經元、兩個隱含神經元、兩個偏置神經元,總共2 x 2 x 2 = 8條權重; BP神經網路為疊代演算法,我們通過不斷的反向傳播疊代更新權重w,從而神經元的輸出也會隨著調整,直到輸出層得到的值與資料集的真實值誤差總和最小或達到了疊代次數,此時終止模型訓練,這些得到的權重w便是該神經網路的最佳引數;
符號定義:
1、x1、x2...為輸入層屬性
2、h1、h2...為隱含層神經元
3、o1、o2...為輸出層神經元
4、輸入層節點中的數位為該輸入屬性值
5、v_xh為輸入層第x個節點與隱含層第h個神經元的權重
6、w_ho為隱含層第h個神經元與輸出層第o個神經元的權重
由於使用實數運算描述會有所複雜並且在程式碼層面實現時會存在大量的迴圈操作,所以這裡會在有些地方使用向量來代替,下面看到加粗大寫字母均為向量;如X表示為該神經網路的輸入向量;
正向傳播
通過從輸入層、隱含層、輸出層逐層計算每層神經元輸出值;
1、輸入層——》隱含層
計算隱含層h1、h2神經元的輸入加權和:
神經元h1輸出:
2、隱含層——》輸出層
計算輸出層o1的輸入加權和
神經元o1輸出:
此時求得的輸出為:[0.79751046、0.83401102]
反向傳播
上一步在正向傳播時已經求得初步的估計值,現在先求出O1、O2的誤差、總誤差:
1、隱含層到輸出層權重更新
通過求出總誤差關於輸出層權重的偏導,可以得到每個權重對總誤差的影響,便可用於更新輸出層權重;
從上圖可以看出總誤差關於權重的偏導數可以應用微積分的鏈式法則,可分解為:總誤差關於輸出的偏導、輸出關於加權和的偏導、加權和關於權重的偏導,三者的乘積;
總誤差關於權重w11的偏導:
總誤差關於輸出的偏導:
輸出關於加權和的偏導:
加權和關於權重的偏導:
總誤差關於權重的偏導數:
同理,連線隱含層與輸出層其他權重更新如下:
2、輸入層到隱含層權重更新
與上面求隱含層到輸出層權重的更新一樣,這裡也是求總誤差關於權重的偏導;
從上圖可以看出隱含層h1神經元的輸出有來自輸出層O1、O2神經元傳來的誤差; 總誤差關於h1輸出的偏導數=O1誤差關於h1輸出的偏導數+ O2s誤差關於h1輸出的偏導數:
輸出層O1神經元誤差關於隱含層h1神經元輸出的偏導:
輸出層O2神經元誤差關於隱含層h1神經元輸出的偏導:
總誤差關於h1輸出的偏導數
隱含層輸出關於加權和的偏導:
加權和關於權重的偏導:
總誤差關於權重的偏導數:
w_11權重更新(ε為學習率):
同理輸入層與隱含層其他權重更新:
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-10/147898.htm
相關文章