BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号的向前传递,误差反向传播。在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层。每一层的神经网络状态只影响下一层的神经元的状态。如果输出层得不到想要的输出,则转入反向传播,根据预测误差调整网络的权值和阀值,从而使BP神经网络预测输出不断的逼近期望输出。BP神经网络的拓扑结构如图:
!
图中,
X1,X2...
是BP神经网络的输入值,
Y1,Y2...
是BP神经网络的预测值,
ωij,ωjk
是神经网络的权值。从图中可以看出,BP神经网络可以看作一个非线性函数,网络输入值和预测值分别是该函数的自变量和因变量。当输入节点数为n
,输出接点为m
时,BP神经网络就表达了从n
个自变量到m
个自变量的函数映射关系。
BP神经网络预测首先要训练网络,通过训练使网络具有联想记忆和预测能力。BP神经网络的训练过程包括如下的步骤:
- 网络初始化。根据系统输入输出序列
(X,Y)
确定网络输入层节点数
n
,隐含层节点数
l ,输出层节点数 m ,初始化输入层,隐含层和输出层神经元之间的连接权值ωij , ωjk ,初始化隐含层阈值a,输出层阈值b,给定学习速率和神经元激励函数。 - 隐含层输出计算。 根据输入向量
X
,输入层和隐含层间的连接权值
ωij 以及隐含层阈值a,计算隐含层输出 H 。Hj=f(∑i=1nωijxi−aj)j=1,2,...l
式中, l 为隐含层节点数;f 为隐含层激励函数,该函数有多种表达形式,比如:f(x)=11+e−x - 输出层输出计算。根据隐含层输出
H
,连接权值
ωjk 和阈值 b ,计算BP神经网络预测输出O 。Ok=∑j=1lHjωij−bkk=1,2,...,m - 误差计算。根据网络预测输出
O
和期望输出
Y ,计算网络预测树杈e。ek=Yk−Okk=1,2,...,m - 权值更新。根据网络预测误差
e
更新网络连接权值
wij , wjk 。wij=wij+ηHj(1−Hj)x(i)∑k=1mωjkeki=1,2,...,n;j=1,2,...,l;ωjk=ωjk+ηHjekj=1,2,...,l;k=1,2,...,m;式中 η 为学习速率。 - 阈值更新。根据网络预测误差
e
更新网络节点的阈值
a,b 。aj=aj+ηHj(1−Hj)∑k=1mωjkekj=1,2,...,lbk=bk+ekk=1,2,...m - 迭代。判断算法迭代是否结束,若没有结束,返回步骤2.