x 為輸入向量,
y為隱藏層的神經元,
z 為輸出層,
d為目標真實值, 本文預設
z 不經過sigmod處理。x-y的權重為
w,y-z的權重為
v 。yj
=∑ix
iwij
(1)oyi
=f(y
j)(2)
其中激勵函式f(
x)=1
1+e−
x f′
(x)=
f(x)
∗(1−
f(x)
)(3) z
k=∑j
f(yj
)vjk
此時系統的損失值為 e=
12∑k
(zk−
dk)2
(4) 則 ∂
e∂zk
=zk−
dk=δ
zk(5) ∂e
∂yj=
∑k∂e
∂zk∂
zk∂f
(yj)
∂f(y
j)∂y
j=∑k
δzkv
jkf′
(yj)
=δyj
(6) ∂e
∂vjk
=∂e∂
zk∂z
k∂vj
k=δz
k∗f(
yj)(7) ∂
e∂wi
j=∂e
∂yj∂
yj∂w
ij=δ
yj∗x
i(8)
從第(6)式可以看出y層的第j個節點(神經元)的殘差等與z層與其所連線的所有節點(神經元)的殘差與權值的乘值的和再乘以對該節點(y層的第j個節點)的導數。
從(7)(8)y層第j個節點到z層第k個節點的權值導數等於y層第j個節點的激勵值乘以z層第k個節點的殘差。
因為這是簡單的三層網路,(8)式中的xi
相當於前一層的激勵值,只不過這裡沒有前一層。
神經網路的求解過程中,需要求解神經元的殘差,權重的導數,偏值的導數(例子沒有這個值)。用o
li=f
(zli
) 表示第l層第i個節點的激勵值,即第l層的輸出值。
損失值e=1
2∥y−
f(zl
)∥2
設網路有l層,則第l層第i個節點的殘差為: δl
i=∂∂
zli1
2∥y−
f(zl
)∥2
δli=
∂∂zl
i12∥
y−f(
zl)∥
2=∂∂
zli1
2∑j=
1n(y
j−ol
j)2=
−(yi
−oli
)∗f′
(zli
)(9)
另倒數第二層為l,神經元個數為m;最後一層為大寫l, 神經元個數為n。
則易得: zl
j=∑m
k=1f
(zlk
)wlk
j(10) δ
li=∂
e∂zl
i=∂∂
zli1
2∥y−
f(zl
)∥2=
∂∂zl
i12∑
j=1n
(yj−
olj)
2=−∑
j=1n
(yj−
olj)
∗∂∂z
liol
j=−∑
j=1n
(yj−
olj)
∗f′(
zlj)
∗∂zl
j∂zl
i=∑j
=1nδ
lj∂z
lj∂z
li=∑
j=1n
δlj∂
∂zli
∑k=1
mf(z
lk)w
lkj=
(∑j=
1nδl
jwlk
j)f′
(zli
)(11)
其中ol
j=f(
zli)
這是倒數第二層和最後一層的殘差,
如果把倒數第二層看做最後一層,根據公式11可以推導出任意層的殘差: δl
i=(∑
nj=1
δl+1
jwlk
j)f′
(zli
)(12)
根據公示(6)(12)可以得出乙個普遍性的結論.
第l層的第i個節點(神經元)的殘差等於第l+1層與l層相連線的所有節點的權值和殘差的加權和乘以對l層第i個節點的導數。這個結論在之後的cnn推導有很重要的作用。
有了殘差就可以很容易推導出權重的導數 zl
+1j=
∑mk=
1f(z
lk)w
lkj(13) ∂
e∂wl
kj=∂
e∂zl
+1i∗
∂zl+
1i∂w
lkj=
δl+1
i∗f(
zlk)
(14)
同樣,從(7)(8)(14)可以得出乙個結論
第l層的第k個節點到第l+1層的第j個節點的權值導數等於第l層的第k個節點的激勵值與第l+1層第j個節點的殘差乘積求導方法與權重導數一樣, ∂e
∂bli
=∂e∂
zl+1
i∗∂z
l+1i
∂bli
=δl+
1i(15)
bp演算法與公式推導
BP神經網路
基本bp神經網路演算法包括 訊號的前向傳播 誤差的反向傳播 也即計算實際輸出時按照輸入到輸出的方向進行,權值閾值調整則相反。bp是一種多層前饋神經網路,由輸入層 隱含層和輸出層組成。層與層之間有兩種訊號在流動 一種是從輸入流向輸出的工作訊號,是輸入和權值的函式 另一種是輸入流向輸出的訊號,即誤差。隱...
BP神經網路
bp是back propagation bp神經網路主要的演算法在於誤差反向傳播error backpropagation 有三層 輸入層 input 隱含層 hidden 輸出層 output 輸入層 n個神經元 隱含層 p個神經元 輸出層 q個神經元 輸入向量 x x1,x2,x n 隱含層輸入...
BP神經網路
神經網路 nn多層前向神經網路 輸入層 特徵向量值 神經元數量由特徵值確定,特徵值有多少就有多少 隱藏層 可以有很多層 層數和每層神經元數量不定 輸出層 標記分類 神經元數量由目標集確定 每個神經元存的數字由上乙個神經元傳的值,自己的值和偏置值決定 權重 w 偏置 b 除了輸入層,每一層神經元都有偏...