bp是back propagation
bp神經網路主要的演算法在於誤差反向傳播error backpropagation
有三層:輸入層(input)、隱含層(hidden)、輸出層(output)
輸入層:n個神經元
隱含層:p個神經元
輸出層:q個神經元
輸入向量:x=
(x1,
x2,.
..,x
n)隱含層輸入向量:hi
=(hi
1,hi
2,..
.,hi
p)隱含層輸出向量:ho
=(ho
1,ho
2,..
.,ho
p)輸出層輸入向量:yi
=(yi
1,yi
2,..
.,yi
q)輸出層輸出向量:yo
=(yo
1,yo
2,..
.,yo
q)期望輸出向量:do
=(d1
,d2,
...,
dq)
輸入層與隱含層的連線權值:wi
h 隱含層到輸出層的連線權值:wh
o 隱含層閾值:bh
輸出層閾值:bo
樣本資料個數:k=
1,2,
...,
m 啟用函式:f(
.)誤差函式:e=
12∑o
=1q(
do(k
)−yo
o(k)
)2
網路初始化
給各個權值賦予隨機初值在(-1, -1)
設定誤差函式e,給定計算精度值ε
給定計算學習次數m
隨機選取第k個樣本及對應期望輸出x(
k)=(
x1(k
),x2
(k),
...,
xn(k
))
do(k
)=(d
1(k)
,d2(
k),.
..,d
q(k)
) 計算各個神經元的輸入和輸出hi
h(k)
=∑i=
1nwi
hxi(
k)−b
hh=1
,2,.
..,p
hoh(k)
=f(h
ih(k
))h=
1,2,
...,
p y
io(k
)=∑h
=1pw
hoho
h(k)
−boo
=1,2
,...
,q
yoo(
k)=f
(yio
(k))
o=1,
2,..
.,q
求誤差對wh
o 偏導
用到鏈導法則∂e
∂who
=∂e∂
yio∂
yio∂
who
把這個式子分成兩部分來求:∂e
∂yio
=∂(1
2∑o=
1q(d
o(k)
−yoo
(k))
2)∂y
io=−
(do(
k)−y
oo(k
))yo
′o(k
)=−(
do(k
)−yo
o(k)
)f′(
yio(
k))=
−δo(
k)
∂yio
∂who
=hoh
(k) 這個等式很明顯
求誤差對wi
h 偏導 ∂
e∂wi
h=∂e
∂hih
(k)∂
hih(
k)∂w
ih
這個也分兩部分來求,後一部分是:∂h
ih(k
)∂wi
h=xi
(k)
∂e∂hih(
k)=−
(∑o=
1qδo
(k)w
ho)f
′(hi
h(k)
)=δh
(k)
如何理解上式:
主要思想就是鏈導
誤差對隱含層輸入的偏導 = 誤差對輸出層輸入的偏導
× 輸出層輸入對隱含層輸出的偏導
× 隱含層輸出對隱含層輸入的偏導
其中:
誤差對輸出層輸入的偏導就是δo
(k)
輸出層輸入對隱含層輸出的偏導就是wh
o 隱含層輸出對隱含層輸入的偏導就是f′
(hih
(k))
所以就有了上式
更新權值δw
ho(k
)=−μ
∂e∂w
ho=μ
δo(k
)hoh
(k)
wn+1
ho=w
nho+
δwho
(k)
δwih(k)
=−μ∂
e∂wi
h=δh
(k)x
i(k)
wn+1ih=
wnih
+δwi
h(k)
BP神經網路
基本bp神經網路演算法包括 訊號的前向傳播 誤差的反向傳播 也即計算實際輸出時按照輸入到輸出的方向進行,權值閾值調整則相反。bp是一種多層前饋神經網路,由輸入層 隱含層和輸出層組成。層與層之間有兩種訊號在流動 一種是從輸入流向輸出的工作訊號,是輸入和權值的函式 另一種是輸入流向輸出的訊號,即誤差。隱...
BP神經網路
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 此時系統...
BP神經網路
神經網路 nn多層前向神經網路 輸入層 特徵向量值 神經元數量由特徵值確定,特徵值有多少就有多少 隱藏層 可以有很多層 層數和每層神經元數量不定 輸出層 標記分類 神經元數量由目標集確定 每個神經元存的數字由上乙個神經元傳的值,自己的值和偏置值決定 權重 w 偏置 b 除了輸入層,每一層神經元都有偏...