一:BP算法程序流程图
二.变量归一化
X=(X-minX)/(maxX-minX),对每一组样本中的每个变量都要进行归一化。
三.数学过程
输出层中M=14,隐含层中q=9,学习率?=0.01,L=1,ε=1e-10,最大训练次数为5000次.这个神经网络就只有一个输出神经元,所以每组样本值输出一个值 一般取初始权值在(-1,1)之间的随机数,初始阈值取(0,1)之间的随机数
表示隐含层第i 个节点到输入层第j 个节点之间的权值;
表示隐含层第i 个节点的阈值;
表示隐含层的激励函数;=1/(1+e -x )
表示输出层第个节点到隐含层第i 个节点之间的权值,i =1,…,q ; 表示输出层第k 个节点的阈值,k =1,…,L ; 表示输出层的激励函数,=x ;
表示输出层第个节点的输出,k=1。
(1)信号的前向传播过程 隐含层第i 个节点的输入net i :
(3-1)
隐含层第i 个节点的输出y i :
(3-2)
输出层第k 个节点的输入net k ,k=1:
(3-3)
ij
w i θ()x φ()x φki w k k
a ()
x ψ()x ψk
o k 1M
i ij j i
j net w x θ==+∑1()()
M
i i ij j i j y net w x φφθ===+∑1
1
1
()q
q
M
k ki i k ki ij j i k
i i j net w y a w w x a φθ====+=++∑∑∑
输出层第k 个节点的输出o k ,k=1:
(3-4)
(2)误差的反向传播过程
误差的反向传播,即首先由输出层开始逐层计算各层神经元的输出误差,然后根据误差梯度下降法来调节各层的权值和阈值,使修改后的网络的最终输出能接近期望值。T k 为预期输出
对于每一个样本p 的二次型误差准则函数为E p :
(3-5)
系统对P 个训练样本的总误差准则函数为:
(3-6)
根据误差梯度下降法依次修正输出层权值的修正量Δw ki ,输出层阈值的修正量Δa k ,隐含层权值的修正量Δw ij ,隐含层阈值的修正量
。
;;
;(3-7)
输出层权值调整公式:
(3-8)
输出层阈值调整公式:
(3-9)
隐含层权值调整公式:
(3-10)
隐含层阈值调整公式:
(3-11)
又因为:
(3-12)
111()()()q
q M k k ki i k ki ij j i k i i j o net w y a w w x a ψψψφθ===??
==+=++ ?
??∑∑∑2
1
1()2L
p k k k E T o ==-∑2
11
1()2P L
p p k k p k E T o ===-∑∑i
θ?ki
ki w E
w ??-=?η
k k
E
a a η
??=-?ij ij
E w w η
??=-?i i
E θη
θ??=-?ki
k
k k k ki k k ki ki w net net o o E w net net E w E w ??????-=????-=??-=?ηηη
k k k
k k k k k k k
net o net E E E a a net a o net a η
ηη???????=-=-=-??????i i i
ij ij i ij i i ij
net y net E E E w w net w y net w η
ηη???????=-=-=-??????i i i
i i i i i i i
net y net E E E net y net θη
ηηθθθ???????=-=-=-??????11
()P L
p p k k p k k E
T o o ==?=--?∑∑
,
,
,
(3-13)
(3-14)
(3-15)
(3-16)
所以最后得到以下公式:
(3-17)
(3-18)
(3-19)
(3-20)
生成新的权值
(1)()()ki ki ki w k w k w k +=+? (1)()()ij ij ij w k w k w k +=+?
(1)()()k k k k k k ααα+=+? (1)()()i i i k w k k θθ+=+?
然后进入下一步的循环,
计算误差,直到误差ε<1e-10时为止,然后程序结束 当满足下列条件时候采用动量法调整权值 训练程序设计中采用动量法的判断条件为:
??
?
??=mc mc 95.00其它)1()(04.1*)1()(-<->k E k E k E k E , E (k )为第k 步误差平方和。
i
ki
k
y w net =??1k
k
net a ?=?i
j
ij
net x w ?=?1i
i
net θ?=?11
()'()P L
p p k k k ki p k i E
T o net w y ψ==?=--???∑∑)(i i
i
net net y φ'=??'()k
k k
o net net ψ?=?()11
()'P
L
p p ki k k k i
p k w T o net y ηψ==?=-??∑∑()
11
()'P L
p p k k k k p k a T o net ηψ==?=-?∑∑()11
()'()P L
p p ij k k k ki i j
p k w T o net w net x ηψφ=='?=-????∑∑()11
()'()
P L
p p i k k k ki i p k T o net w net θηψφ=='?=-???∑∑
权值调整采用如下公式
(1)'(1)(1)()ki ki ki w k mc w k mc w k ?+=-?++?
(1)'(1)(1)()ij ij ij w k mc w k mc w k η?+=-?++?
(1)'(1)(1)()i i i k mc k mc k αηαα?+=-?++? (1)'(1)(1)()i i i k mc k mc k θηθθ?+=-?++?
其中k 为训练次数,mc 为动量因子,一般取0.9左右。