BP神經網路 誤差反向傳播公式的簡單推導

2021-07-25 21:17:26 字數 2999 閱讀 4109

最近看了一下bp神經網路(backpropagation neural networks),發現很多資料對於bp神經網路的講解注重原理,而對於反向傳播公式的推導介紹的比較簡略,故自己根據《pattern recognition and machine learning》這本書的思路推導了一下反向傳播的過程,記錄在這裡,以便以後看。對於bp神經網路的工作原理此處就不再贅述,周志華大牛的《機器學習》中介紹的很詳細。

ps: 本人第一次寫部落格,不足之處還請見諒。

正向傳播的思想比較直觀,最主要的是對於啟用函式的理解。對於網路中第

l層的第

j 個神經元,它會接受來自第l−

1層所有神經元的訊號,即:

z(l)

j=∑i

=1ml

−1wj

ia(l

−1)i

+a(l

−1)0

如果令wj0

=1,可以將公式簡寫為: z(

l)j=

∑i=0

ml−1

wjia

(l−1

)i則經過該神經元後的輸出值為: a(

l)j=

h(z(

l)j)

對於多分類問題,網路輸出層第

k 個神經元輸出可表示為: yk

=a(l

+1)k

=h(z

j)=h

(∑j=

0mlw

kja(

l)j)

這裡說明一下,bp神經網路中啟用函式通常會取si

gmoi

d 函式或ta

nh由2.1節公式可以得到bp網路在乙個樣本下的輸出值,我們定義平方和誤差函式(sum-of-square error function)如下:

ep=∑

k=1m

l+11

2(yk

−tk)

2

所有樣本輸入下,網路的總誤差為: en

=∑p=

1nep

這是bp神經網路最核心的部分,誤差從輸出層逐層反向傳播,各層權值通過梯度下降法(gradient descent algorithm)進行更新,即:

w:=w−

η▽ep

(w)

上式中,

η 是每次更新的步長,▽e

p(w)

是第p 個樣本輸入下的輸出偏差對某一層權值的偏導數,表示每輸入乙個樣本更新一次引數。

下面我們以w(

l)ji

為例推導梯度項: ∂e

p∂w(

l)ji

==∂e

p∂z(

l)j∂

z(l)

j∂w(

l)ji

∂ep∂

z(l)

ja(l

−1)i

這裡我們定義δ(

l)j=

∂ep∂

z(l)

j ,對於輸出層,可以得出δ(

l+1)

k=yk

−tk=

a(l+

1)k−

tk,則上式可表示為:

∂ep∂

w(l)

ji=δ

(l)j

a(l−

1)i

現在問題轉換為求解δ(

l+1)

k :

δ(l)

j==∂

ep∂z

(l)j

∑k=1

ml+1

∂ep∂

z(l+

1)k∂

z(l+

1)k∂

z(l)

j 根據δ

的定義可知∂e

p∂z(

l+1)

k=δ(

l+1)

k ,代入上式,則:

δ(l)

j==∑

k=1m

l+1δ

(l+1

)k∂z

(l+1

)k∂z

(l)j

∑k=1

ml+1

δ(l+

1)k∂

z(l+

1)k∂

a(l)

j∂a(

l)j∂

z(l)

j 根據z

(l+1

)k和al

j 的定義可知:

∂z(l

+1)k

∂a(l

)j=w

(l+1

)kj∂

a(l)

j∂z(

l)j=

h′(z

(l)j

)

代入上式得:

δ(l)

j==∑

k=1m

l+1δ

(l+1

)kw(

l+1)

kjh′

(z(l

)j)h

′(z(

l)j)

∑k=1

ml+1

w(l+

1)kj

δ(l+

1)k

由此我們得到了誤差從輸出層向低層反向傳播的遞推公式,進而可以求出誤差對於每一層權值的梯度▽e

p(w)

bp神經網路是應用最多的一種神經網路,其精髓在於誤差反向傳播。本人在學習這塊內容是為了給接下來學習和研究深度學習及caffe做準備,由於個人水平有限,在上述推導中可能存在不合理的地方,還請見諒,同時也歡迎指出內容的不足之處。

[1] 周志華,機器學習[m] , 清華大學出版社,2016.

[2] christopher m.bishop. pattern recognition and machine learning [m], 2006.

BP誤差反向傳播演算法

bp演算法通過將輸出誤差反向傳播,將誤差分配到每個權值上,利用梯度更新對所有引數進行調整以達到輸出累計誤差最小 來自andrew ng的machine learning課程 為了簡化概念,先不加上偏置單元 符號介紹 zl i 第 l 層第 i節點的誤差zl i 第 l 層第i節點的輸入值al i 第...

神經網路反向傳播(相關公式)

在文章最後,給了一篇pdf,這個pdf是劉大佬找的,也忘了從 看的了,這裡在文章最後給出鏈結,全文更加連貫,如果有知道出處的,務必告知,如果不介意引用,我一定給出原文軟鏈。csdn的latex是真的爛,沒有之一,之前還好好的,現在就不行了!看了網上的帖子,寫的很好,不過我還是想自己整理下,有的地方原...

深度神經網路(DNN)反向傳播演算法 BP

在深度神經網路 dnn 模型與前向傳播演算法中,我們對dnn的模型和前向傳播演算法做了總結,這裡我們更進一步,對dnn的反向傳播演算法 back propagation,bp 做乙個總結。在了解dnn的反向傳播演算法前,我們先要知道dnn反向傳播演算法要解決的問題,也就是說,什麼時候我們需要這個反向...