BP神经网络
本次推导采用Sigmoid函数作为激活函数,记作:
f
(
x
)
=
1
1
+
e
−
x
f(x)=\frac{1}{1+e^{-x}}
f(x)=1+e−x1
做以下设定:
输入层有n个神经元,输入变量为:
x
i
=
(
x
1
,
x
2
,
x
3
.
.
.
x
i
)
i
=
1
,
2
,
3...
n
x_i=(x_1,x_2,x_3...x_i)\quad i=1,2,3...n
xi=(x1,x2,x3...xi)i=1,2,3...n
隐含层有p个神经元,输出变量为:
h
j
=
(
h
1
,
h
2
,
h
3
.
.
.
,
h
j
)
j
=
1
,
2
,
3...
,
q
h_j=(h_1,h_2,h_3...,h_j)\quad j=1,2,3...,q
hj=(h1,h2,h3...,hj)j=1,2,3...,q
输出层有q个神经元,输出结果为:
y
k
=
(
y
1
,
y
2
,
y
3
,
.
.
.
y
k
)
=
f
(
∑
j
=
1
p
h
j
w
j
k
+
b
k
)
k
=
1
,
2
,
3...
q
y_k=(y_1,y_2,y_3,...y_k)=f(\sum_{j=1}^{p}h_jw_jk+b_k)\quad k=1,2,3...q
yk=(y1,y2,y3,...yk)=f(j=1∑phjwjk+bk)k=1,2,3...q
期望结果为
d
k
=
(
d
1
,
d
2
,
d
3
.
.
.
d
k
)
d_k=(d_1,d_2,d_3...d_k)
dk=(d1,d2,d3...dk)
误差函数为:
E
=
∑
1
k
(
d
k
−
y
k
)
2
E=\sum_{1}^{k}(d_k-y_k)^2
E=1∑k(dk−yk)2
则有
权值更新公式为:
{
w
j
k
=
w
j
k
+
η
(
d
k
−
y
k
)
(
1
−
y
k
)
y
k
h
j
w
i
j
=
w
i
j
+
η
y
k
x
i
h
j
(
1
−
y
k
)
(
1
−
h
j
)
∑
k
=
1
q
(
d
k
−
y
k
)
\begin{cases} \begin{aligned} &w_{jk}=w_{jk}+\eta(d_k-y_k)(1-y_k)y_kh_j\\ &w_{ij}=w{ij}+\eta y_kx_ih_j(1-y_k)(1-h_j) \sum_{k=1}^q(d_k-y_k) \end{aligned} \end{cases}
⎩⎪⎪⎨⎪⎪⎧wjk=wjk+η(dk−yk)(1−yk)ykhjwij=wij+ηykxihj(1−yk)(1−hj)k=1∑q(dk−yk)
偏置更新公式为:
{
b
k
=
b
k
+
η
y
k
(
d
k
−
y
k
)
a
j
=
a
j
+
η
y
k
w
j
k
h
j
(
1
−
y
k
)
∑
i
=
1
q
(
d
k
−
y
k
)
\begin{cases} \begin{aligned} &b_k=b_k+\eta y_k(d_k-y_k)\\ &a_j=a_j+\eta y_kw_{jk}h_j(1-y_k)\sum_{i=1}^q(d_k-y_k) \end{aligned} \end{cases}
⎩⎪⎪⎨⎪⎪⎧bk=bk+ηyk(dk−yk)aj=aj+ηykwjkhj(1−yk)i=1∑q(dk−yk)
其中,η为学习速率,输入层与隐含层的偏置和权值为aj和wij,隐含层与输出层的偏置和权值为bk和wjk。