神經網路中的BP演算法(原理和推導)
BP演算法介紹
BP演算法(Background Propagation Alogorithm), 即誤差逆傳播演算法,是訓練多層前饋神經網路的一種最經典的演算法,通過BP演算法可以學得網路的權重和閾值,且具有可靠的收斂性。
網路結構
首先對所用的符號和變數做約定,這裡採用《機器學習》中的命名
訓練集:
即輸入的x有d個屬性,輸出y有l個屬性,均以向量表示
輸入層到隱層的權重以
隱層神經元輸入和輸出層神經元輸入如圖所示
基本思想
通過前向傳播確定誤差,再利用反向傳播減少誤差
優化基於梯度下降法(gradient decenet)進行,對引數的更新方式為(其中
η 為學習率)ω=ω−η∂Ek∂ωhj - 將輸入確定為常量1,網路的閾值學習可以等效為權重的學習,本文僅作權重的討論
前向傳播過程:
將輸入值傳入神經網路,逐層將訊號前傳,計算輸出層的結果
計算輸出值
反向傳播過程:
輸入層神經元
根據優化策略,減小輸出誤差需要計算誤差關於其輸入權的梯度,即
利用求導的鏈式法則(Chain Rule),可以將其展開為
這個表示式初看上去有點複雜,我們可以一步一步來計算它。
第一項∂Ek∂yˆkj
這一項是誤差對輸出求偏導,由上文提到的均方誤差公式可以直接求導計算,結果為
第二項∂yˆkj∂βj
這一項是輸出對輸入求偏導,即對輸出層的激勵函式求偏導,在這裡選用sigmoid函式作為激勵函式
sigmoid函式:
因此,該項導數可直接寫出,為
第三項∂βj∂ωhj
這一項是輸入對權重求偏導,由圖中
綜上,輸出層神經元的誤差為