这里记录一下BP神经网络的误差逆向传播算法:
1.针对特殊的一种激活函数:
sigmoid(x)=11+e−x
s
i
g
m
o
i
d
(
x
)
=
1
1
+
e
−
x
来推导BP神经网络的权值和阈值更新公式:
给定训练集:
D={(x1,y1),(x2,y2)...,(xm,ym)},xi∈Rd,yi∈Rl
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
.
.
.
,
(
x
m
,
y
m
)
}
,
x
i
∈
R
d
,
y
i
∈
R
l
,即输入属性序列由
d
d
个属性描述,输出
l
l
维实值向量。为了方便讨论,图1给出了拥有
d
d
个输入神经元,
l
l
个输出神经元,
q
q
个隐层神经元的多层前馈网络结构,其中输出层为第
j
j
个神经元的阈值用
θ
θ
表示,隐层第
h
h
个神经元用
φh
φ
h
表示。输入层第
i
i
个神经元与隐层第
h
h
个神经元之间的连接权为
vih
v
i
h
,隐层第
h
h
个神经元与输出层第
j
j
个神经元之间的连接权为
ωhj
ω
h
j
。
图1 BP神经网络即算法中的符号变量
记隐层第
h
h
个神经元接收到的输入为
αh=∑di=1vihxi
α
h
=
∑
i
=
1
d
v
i
h
x
i
,输出层的第
j
j
个神经元接收到的输入为:
βj=∑qh=1ωhjbh
β
j
=
∑
h
=
1
q
ω
h
j
b
h
,其中
bh
b
h
为隐层第
h
h
个神经元的输出。现在假设隐层和输出层都使用Sigmoid函数:
对训练例
(xk,yk)
(
x
k
,
y
k
)
,假定神经网络的输出为:
ykˆ=(y1ˆ,y2ˆ,......ylˆ)
y
k
^
=
(
y
1
^
,
y
2
^
,
.
.
.
.
.
.
y
l
^
)
,即:
ykˆ=(βj−θj)
y
k
^
=
(
β
j
−
θ
j
)
(1)
则网络在
(xk,yk)
(
x
k
,
y
k
)
上的均方误差为:
Ek=12∑lj=1(ykjˆ−ykj)
E
k
=
1
2
∑
j
=
1
l
(
y
j
k
^
−
y
j
k
)
(2)
图1中的网络中有
(d+l+1)q+l
(
d
+
l
+
1
)
q
+
l
个参数需要确定。BP是一个迭代学习算法,在迭代的每一轮采用广义的感知机学习规则对参数进行更新估计。下面我们以图1中的隐层到输出层的连接权值
ωhj
ω
h
j
为例来进行推导:
BP算法基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整,对公式2中的误差
Ek
E
k
,给定学习率
η
η
,有:
Δwhj=−η∂Ek∂whj
Δ
w
h
j
=
−
η
∂
E
k
∂
w
h
j
(3)
注意到
whj
w
h
j
先影响到第
j
j
个输出神经元的输入值,再影响到其输出值
ykjˆ
y
j
k
^
,然后影响到
Ek
E
k
,有:
∂Ek∂whj=∂Ek∂ykjˆ⋅∂ykjˆ∂βj⋅∂βj∂whj
∂
E
k
∂
w
h
j
=
∂
E
k
∂
y
j
k
^
⋅
∂
y
j
k
^
∂
β
j
⋅
∂
β
j
∂
w
h
j
(4)
根据
βj
β
j
的定义有:
∂βj∂whj=bh
∂
β
j
∂
w
h
j
=
b
h
,并且Sigmoid函数有一个很好的性质:
f(x)′=f(x)(1−f(x)
f
(
x
)
′
=
f
(
x
)
(
1
−
f
(
x
)
,于是根据公式(1)和(2),有:
gj=∂Ek∂ykjˆ⋅∂ykjˆ∂βj=−(ykjˆ−ykj)f′(βj−αj)=(ykj−ykjˆ)ykjˆ(1−ykjˆ)
g
j
=
∂
E
k
∂
y
j
k
^
⋅
∂
y
j
k
^
∂
β
j
=
−
(
y
j
k
^
−
y
j
k
)
f
′
(
β
j
−
α
j
)
=
(
y
j
k
−
y
j
k
^
)
y
j
k
^
(
1
−
y
j
k
^
)
(5)
将公式(5)带入到公式(4),再带入到公式(3)中,就得到了BP算法中关于
whj
w
h
j
的更新公式:
Δwhj=ηgjbh
Δ
w
h
j
=
η
g
j
b
h
(6)
而
Δθj
Δ
θ
j
的更新公式为:
Δθj=−η∂Ek∂θj=−η∂Ek∂ykjˆ⋅∂ykjˆ∂θj=−η(ykj−ykjˆ)⋅ykjˆ⋅(1−ykjˆ)=−ηgj
Δ
θ
j
=
−
η
∂
E
k
∂
θ
j
=
−
η
∂
E
k
∂
y
j
k
^
⋅
∂
y
j
k
^
∂
θ
j
=
−
η
(
y
j
k
−
y
j
k
^
)
⋅
y
j
k
^
⋅
(
1
−
y
j
k
^
)
=
−
η
g
j
(7)
BP神经网络的输出层到隐层的连接权值
Δvih
Δ
v
i
h
的更新估计式为:
Δvih=−η∂Ek∂vih=−η∂Ek∂bh⋅∂bh∂αh⋅∂αh∂vih
Δ
v
i
h
=
−
η
∂
E
k
∂
v
i
h
=
−
η
∂
E
k
∂
b
h
⋅
∂
b
h
∂
α
h
⋅
∂
α
h
∂
v
i
h
=−η∑lj=1∂Ek∂βj⋅∂βj∂bhf′(αh−γh)xi=ηbh(1−bh))∑lj=1ωhjgj
=
−
η
∑
j
=
1
l
∂
E
k
∂
β
j
⋅
∂
β
j
∂
b
h
f
′
(
α
h
−
γ
h
)
x
i
=
η
b
h
(
1
−
b
h
)
)
∑
j
=
1
l
ω
h
j
g
j
=ηehxi
=
η
e
h
x
i
BP神经网络的隐层第
h
h
个神经元的阈值的更新公式为:
Δγh=−η∂Ek∂γh=−η∑lj=i∂Ek∂βi⋅∂βi∂bh⋅∂bh∂γh=−ηeh
Δ
γ
h
=
−
η
∂
E
k
∂
γ
h
=
−
η
∑
j
=
i
l
∂
E
k
∂
β
i
⋅
∂
β
i
∂
b
h
⋅
∂
b
h
∂
γ
h
=
−
η
e
h
学习率
η∈(0,1)
η
∈
(
0
,
1
)
控制着算法每一轮迭代中的更新步长;
BP神经网络权值、阈值更新公式推导
最新推荐文章于 2024-09-15 05:30:26 发布