神經網路及反向傳播(bp)演算法詳解
神經元和感知器的本質一樣神經元和感知器本質上是一樣的,只不過感知器的時候,它的啟用函式是階躍函式;而當我們說神經元時,啟用函式往往選擇為sigmoid函式或tanh函式。如下圖所示:
輸入節點
每一個輸入節點對應一個權值,輸入節點可以是任意數。
權重 W1,W2...Wn
偏置項 b
啟用函式
啟用函式在神經網路中尤為重要,通過啟用函式加入非線性因素,解決線性模型所不能解決的問題。計算啟用函式的梯度,反向傳播的誤差訊號以此來更新優化引數。
常見的普通神經網路,是一個全連線層。下圖為一個普通的全連線網路,層與層之間完全連線,同一個層內神經元之間無連線。當我們說N層神經網路時,通常除去輸入層,因此單層神經網路就是沒有隱層的神經網路(輸入到輸出)。下圖為一個2層的神經網路,隱藏層由4個神經元組成,輸出由2個神經元組成。
計算一個神經元的方法:
對輸入求加權和:其中f為啟用函式。
神經網路的學習也稱為訓練,主要使用有指導的學習,根據給定的訓練樣本,調整引數以使得網路接近已知樣本的類標記。神經網路的訓練主要包括兩個部分:正向傳播和反向傳播兩個過程。正向傳播得到損失值,反向傳播得到梯度。最後通過梯度值完成權值更新。所謂梯度其實就是一個偏導數向量,但是我們經常說的仍是‘x的梯度’而不是‘x的偏導數’。下面首先通過一個例子來說明神經網路訓練的過程。網路結構圖如下:
假設神經網路的輸入層次依次為i,j,k,第一層的輸出,即隱藏層的輸入, ,經過隱藏層的啟用函式g處理後,前往下一層的輸出值
尋找這個引數的方法採用梯度下降法,即計算所有引數的梯度(偏導數) 。
假設神經網路的結構圖如下:
輸入資料:i1=0.05, i2=0.1
輸出資料:k1=0.01, k2=0.99
偏置 bj=1,所對應的初始權重為0.45
bk=1,所對應的初始權重為0.85
啟用函式: sigmoid函式
初始權重為上述所標識的
一. 前向傳播
1 .輸入層到隱藏層:
神經元j1的輸出值為:
同理,可以計算
2.隱藏層到輸出層:
神經元k1的輸出值為: 同理,可以計算 至此,我們得到神經網路輸出值為【0.867,0.925】與實際值【0.01,0.99】相差甚遠 分別計算k1,k2的誤差,總誤差為兩者之和: 接下來進行反向傳播,通過求梯度,更新權值。二. 反向傳播
1. 計算權重矩陣的梯度
求權重的梯度,要分為輸出層和隱藏層兩種情況。根據上圖的兩層神經網路,下面寫出了具體的推導過程(下列所有標識都是矩陣形式)。
1.1 輸出層的權重矩陣
如果定義指代所有k層的因數,表示反向傳播經過輸出層啟用函式之後留下的誤差:
所以最終 所以輸出權重的更新公式為:其中a為學習率。