17.1 基础简介
17.1.1 BP 神经网络概述
BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递,误差反向传播。在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层。每一层的神经元状态只影响下一层的神经元状态。如果输出层得不到期望输出,则转入反向传播,根据预测误差调整网络权值和阁值,从而使BP神经网络预测输出不断逼近期望输出。BP神经网络的拓扑结构如图17-1所示。

XI,X2,…,Xn是BP神经网络的输入值,Y1,Y2,…,Ym是BP神经网络的预测值,ωij和ωjk为BP神经网络的权值。从图17-1中可以看出,BP神经网络可以看成一个非线性函数,网络输入值和预测值分别为该函数的自变量和因变量。当输入节点数为N、输出节点数为M时,BP神经网络就表达了从N个自变量到M个因变量的函数映射关系。
BP神经网络在使用前要训练网络,通过训练可以使网络具有联想记忆和预测能力。BP神经网络的训练过程包括以下几个步骤。
网络初始化。根据系统输入输出序列(X,Y)确定网络输入层节点数N、隐含层节点数L、输出层节点数M,初始化输入层、隐含层和输出层神经元之间的连接权值ωij、ωjk初始化隐含层阑值α、输出层阔值b,给定学习速率和神经元激励函数。
固隐含层输出计算。根据输入向量X,输入层和隐含层间的连接权值的及隐含层阔值α,计算隐含层输出H。

其中,L为隐含层节点数;f为激励函数,该函数有多种表达形式,诸如logsig、tansig、purelin等形式。

固输出层输出计算。根据隐含层输出H、连接权值ωjk和阈值b,计算BP神经网络预测输出0。

误差计算。根据网络预测输出0和期望输出y,计算网络预测误差e。

权值更新。根据网络预测误差e更新网络连接权值的和ωjk。

阈值更新。根据网络预测误差e更新网络节点阔值a、b。

回判断算法迭代是否结束,若没有结束,则返回
。
因此,基于BP神经网络的算法建模包括BP神经网络构建、BP神经网络训练和BP神经网络分类三步,算法流程如图17-2所示。

1. BP神经网络的具体实现
BP神经网络首先需要将样本进行归一化,转换为[-1,1]区间内的数字,目的是取消各维数据间的数量级差别,避免因为输入/输出数据数量级差别较大而造成网络预测误差较大。其次要随机化初始权重,经过训练权重和阈值就可以拟合样本数据和检验预测数据。BP神经网络的具体实现可见BPNetWorkFun.m,其中Samplex是自变量训练数据,Sampley是因变量训练数据,Sampleout是自变量输入预测数据,MM是隐藏层和输出层的激励函数选择,其中l、2、3分别代表logsig、tansig、purelin的选择,Options包括最大训练数Maxlter、均方误跟踪图选择isPlot、训练步长Eta的选择。





2. 改进的BP神经网络
BP神经网络是采用梯度修正法作为权值和阈值的学习算法,从网络预测误差的负梯度方向修正权值和阐值,没有考虑以前经验的积累,学习过程收敛缓慢。对于这个问题,可以采用附加动量方法来解决。附加动量方法见下式,其中,ω(k)、ω(k-l)、ω(k-2)分别为k、k-1、k-2时刻的权值,α为动量学习率。
ω(k)=ω(k-1)+ △ω(k) +α(ω(k -1)-ω(k - 2))
如果将归一化函数改造成0.l ~0.9之间,则可以使收敛效果更佳,具体见如下代码:


17.1.2 基于MATLAB的BP神经网络的非线性系统建模
这里拟合的非线性函数为:

其中,x是M维数据(M=3),y是N维数据(N=2)。隐藏层数目H设定为Cround为四舍五入):

输入自变量数据、输入因变量数据、预测的自变量数据、预测的因变量数据如下:

BP神经网络和改进的BP神经网络的拟合与预测代码如下,具体可见TestBPNetWorkl.m,其中隐藏层的激励函数选择为logsig,输出层的激励函数选择为tansig。

最终结果(均方误跟踪和数据)如图17-3~图17-5所示。从BP神经网络的预测结果来看,BP神经网络可以较为准确地预测非线性函数的输出。


另一个BP神经网络非线性系统建模的例子可见TestBPNetWork2.m,具体效果如图17-6和图17-7所示。
