1. 程式人生 > >神經網路中的BP演算法(原理和推導)

神經網路中的BP演算法(原理和推導)

BP演算法介紹

BP演算法(Background Propagation Alogorithm), 即誤差逆傳播演算法,是訓練多層前饋神經網路的一種最經典的演算法,通過BP演算法可以學得網路的權重和閾值,且具有可靠的收斂性。

網路結構

首先對所用的符號和變數做約定,這裡採用《機器學習》中的命名

這裡寫圖片描述

訓練集:D={(x1,y1),(x2,y2),...,(xm,ym)},xiRd,yiRl
即輸入的x有d個屬性,輸出y有l個屬性,均以向量表示

輸入層到隱層的權重以υih表示,隱層到輸出層的權重以ωhj表示
隱層神經元輸入和輸出層神經元輸入如圖所示

基本思想

  • 通過前向傳播確定誤差,再利用反向傳播減少誤差

  • 優化基於梯度下降法(gradient decenet)進行,對引數的更新方式為(其中η為學習率)

    ω=ωηEkωhj

  • 將輸入確定為常量1,網路的閾值學習可以等效為權重的學習,本文僅作權重的討論

前向傳播過程:

將輸入值傳入神經網路,逐層將訊號前傳,計算輸出層的結果yˆ

計算輸出值yˆyj的誤差,通常採用均方誤差(mse)

Ek=12Σlj=1(yˆkjykj)2

反向傳播過程:

輸入層神經元

根據優化策略,減小輸出誤差需要計算誤差關於其輸入權的梯度,即Ekωhj

利用求導的鏈式法則(Chain Rule),可以將其展開為

Ekωhj = Ekyˆk

jyˆkjβjβjωhj

這個表示式初看上去有點複雜,我們可以一步一步來計算它。

第一項Ekyˆkj

這一項是誤差對輸出求偏導,由上文提到的均方誤差公式可以直接求導計算,結果為(yˆkjykj)

第二項yˆkjβj

這一項是輸出對輸入求偏導,即對輸出層的激勵函式求偏導,在這裡選用sigmoid函式作為激勵函式
sigmoid函式:11+ez 具有非常優秀的性質,其中包括導數可用自身表示,f(x)=f(x)(1f(x))

因此,該項導數可直接寫出,為=yˆkj(1yˆ)

第三項βjωhj

這一項是輸入對權重求偏導,由圖中βj的定義直接計算,結果為b

h

綜上,輸出層神經元的誤差為
δωhj=(yˆ