最近看了一下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反向傳播演算法要解決的問題,也就是說,什麼時候我們需要這個反向...