BP神经网络预测理论及程序-学习

上传人:woxinch****an2018 文档编号:39309515 上传时间:2018-05-14 格式:DOCX 页数:12 大小:507.34KB
返回 下载 相关 举报
BP神经网络预测理论及程序-学习_第1页
第1页 / 共12页
BP神经网络预测理论及程序-学习_第2页
第2页 / 共12页
BP神经网络预测理论及程序-学习_第3页
第3页 / 共12页
BP神经网络预测理论及程序-学习_第4页
第4页 / 共12页
BP神经网络预测理论及程序-学习_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《BP神经网络预测理论及程序-学习》由会员分享,可在线阅读,更多相关《BP神经网络预测理论及程序-学习(12页珍藏版)》请在金锄头文库上搜索。

1、 12、智能算法 12.1 人工神经网络 1、人工神经网络的原理 假如我们只知道一些输入和相应的输出,但是不清楚这些输入和输出之间的具体关 系是什么,我们可以把输入和输出之间的未知过程看成是一个“网络”,通过不断的网络 输入和相应的输出进行“训练” (学习) ,网络根据输入和对应输出不断调整连接网络的 权值,直到满足我们的目标要求,这样就训练好了一个神经网络,当我们给定一个输入,网络就会计算出一个相应的输出。2、网络结构 神经网络一般有一个输入层,多个隐层,和一个输出层。隐层并非越多越好。 如下图所示:12.2 Matlab 神经网络工具箱 MATLAB 神经网络工具箱几乎涵盖了所有的神经网络

2、的基本常用模型,如感知器、 BP 网络和 RBFNN 等。它由 nftool,nctool,nprtool,nntraintool 和 nntool 组成。主要应用于 函数逼近和数据拟合、信息处理和预测、神经网络控制和故障诊断等领域。 在实际应用中,针对具体的问题,首先需要分析利用神经网络来解决问题的性质, 然后依据问题的特点,提取训练和测试数据样本,确定网络模型,最后通过对网络进行训练、仿真等检验网络的性能是否满足要求。具体过程如下:(1)确定信息表达的方式,主要包括数据样本已知;数据样本之间相互关系不明确; 输入/输出模式为连续的或离散的;数据样本的预处理;将数据样本分成训练样本和测试 样

3、本。 (2)网络模型的确定。 确定选择何种神经网络以及网络层数。 (3)网络参数的选择,如输入输出神经元个数的确定,隐层神经元的个数等 。(4)训练模式的确定,包括选择合理的训练算法、确定合适的训练步数、指定适当的训练目标误差等(5)网络测试,选择合理的样本对网络进行测试。简单来讲就是三个步骤:建立网络(newXX)训练网络(trainXX)仿真网络(sim)12.3 BP 神经网络的 Matlab 相关函数BP 算法的基本思想:学习过程由信号的正向传播与误差的反向传播两个过程组成。 正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的 实际输出与期望输出(教师信号)不

4、符,则转入误差的反向传播阶段。误差反传是将输 出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而 获得各层单元的误差信号,此误差信号作为修正各单元权值的依据。权值不断调整的过 程就是神经网络的学习训练过程。BP 神经网络的设计内容: (1)网络层数的确定。模式样本较少时,选用较少的隐层节点,一般采用两层 BP 网络;当模式样本较多时,减少网络规模,可以增加一个隐层。 (2)输入层节点数的确定。输入层起到缓冲存储器的作用,其节点个数取决于输 入矢量的维数。 (3)输出层节点数的确定。取决于两个方面,输出数据类型和表示该类型所需的 数据大小。当 BP 网络用语模式分类时,

5、以二进制形式来表示不同模式的输出结果,则 输出层的节点数可根据分类模式数来确定。若待分类模式的总数为 m,则有两种方法确 定输出层的节点数: 1)节点数即待分类模式总数 m,输出为对应的第 j 个分量为 1,其余为 0; 2)节点数取经验值 log2 m ,对应 m 种输出模式的二进制编码。(4)隐层节点数的确定。一般通过反复测试获取较好的节点数。对于模式识别/分类的 BP 网络,根据经验公式 +a,n1 n =n1+ n0为输入节点数,n0 为输出节点数,a 取 110 之间的常数。 (5)传输函数。一般采用 S 型函数训练方法及其参()=11 + 数选择。Matlab 工具箱提供了多种训练

6、函数可供选择。6)训练方法及其参数选择。Matlab 工具箱提供了多种训练函数可供选择。 Matlab 工具箱中与 BP 神经网络相关的函数: (1)创建一个 BP 网络的函数 newff,调用形式为: net=newff();在对话框中创建一个 BP 网络 net=newff(PR,S1 S2 . SN,TF1 TF2.TFN,BTF,BLF,PF); PR:由每组输入(共 R 组)元素的最大值和最小值组成的 R2 维德矩阵;Si:第 i 层的 长度,共有 N 层;TFi:第 i 层的传递函数,默认为 tansig;BTF:BP 网络的训练函数,默认 为 trainlm;BLF:权值和阈值的

7、学习算法,默认为 learngdm;PF 网络的性能函数,默认为 mse. (2)传递函数 有 logsig,dlogsig(导函数),tansig(双曲正切),dtansgi,purelin,dpurelin 等 (3)学习函数 有 learngd(梯度下降权值/阈值学习函数),learngdm(梯度下降动量学习 函数)等 (4)训练函数 有 trainbfg(BFGS 准牛顿算法),traingd,traingdm 等; (5)性能函数 有 mse,msereg,mae 等 (6)显示函数 有 plotperf,plotes(误差曲面),plotep,errsurf 等.举例 1: p=1

8、 2;-1 1;-2 1;-4 0; t=0.2 0.8 0.8 0.2; net=newff(-1 1;-1 1,5 1,logsig,logsig,traingd); net.trainParam.goal=0.001; net.trainParam.epochs=5000; net,tr=train(net,p,t); save BPnet1 net; load BPnet1 net; p1=1 2;-1 1;-2 1;-4 0; a2=sim(net,p1); a2=a20.5a2 =0 1 1 0另一新版本程序: p=1 2;-1 1;-2 1;-4 0; t=0.2 0.8 0.8

9、 0.2; feedforwardnet(5,traingd); net=newff(-1 1;-1 1,5 1,logsig,logsig,traingd); net.trainParam.goal=0.001; net.trainParam.epochs=5000; net,tr=train(net,p,t); save BPnet1 net; load BPnet1 net; p1=1 2;-1 1;-2 1;-4 0; a2=sim(net,p1); a2=a20.5a2 =1 1 1 0程序解释:Matlab 程序如下: %定义输入向量和目标向量 p=1 2;-1 1;-2 1;-4

10、 0; t=0.2 0.8 0.8 0.2; %创建 BP 网络并定义训练函数及参数 net=newff(-1 1;-1 1,5 1,logsig,logsig,traingd); net.trainParam.goal=0.001; net.trainParam.epochs=5000; %训练神经网络 net,tr=train(net,p,t); 125 save BPnet1 net;%保存网络 %仿真网络 load BPnet1 net; %加载网络 p1=1 2;-1 1;-2 1;-4 0; a2=sim(net,p1); a2=a20.5 注:在新版本的 Matlab 中,创建前

11、馈 BP 神经网络的函数已经更新为 feedforwardnet(hiddenSizes,trainFcn),相应的程序修改为: %定义输入向量和目标向量 p=1 2;-1 1;-2 1;-4 0; t=0.2 0.8 0.8 0.2; %创建 BP 网络并定义训练函数及参数 feedforwardnet(5,traingd); %训练神经网络 net,tr=train(net,p,t); save BPnet1 net;%保存网络。例 2:BP 网络用于曲线拟合 p=-1:0.1:0.9; t=-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232

12、 2.102 1.504 .0.248 1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984t =Columns 1 through 8-0.8320 -0.4230 -0.0240 0.3440 1.2820 3.4560 4.0200 3.2320Columns 9 through 162.1020 1.5040 0.2480 1.2420 2.3440 3.2620 2.0520 1.6840Columns 17 through 201.0220 2.2240 3.0220 1.9840 net=feedforwardnet(15);

13、 net.trainParam.epochs=2500; net.trainParam.goal=0.001; net.trainParam.show=10; net.trainParam.lr=0.005; net=train(net,p,t); save BPnet2 net; p=-1:0.1:0.9;t=-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 .0.248 1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984; hold on plot(p,t,r*

14、); load BPnet2 net; r=sim(net,p); plot(p,r); perf=perform(net,t,r)perf =0.6447 hold off;12.4 RBF 神经网络的 Matlab 相关函数RBF 神经网络的主要特点有:(1)RBF 神经网络只有一个隐层,结构简单;(2) RBF 神经网络的隐层神经元和输出层神经元的模型不同,在网络中起到的作用也是不同 的;(3)RBF 神经网络的隐层是非线性的,输出层是线性的;(4)RBF 神经网络的基函 数计算的是输入向量和中心的欧式距离,以此作为自变量;(5)RBF 神经网络使用局部 指数衰减的非线性函数对非线性输入

15、输出映射进行局部逼近。它的优点有:(1)具有全 局的非线性逼近能力;(2)相比其他神经网络具有更简单的结构;(3)因为神经元的局 部调整而具有更快的学习速率。它在非线性函数逼近、时间序列分析、模式识别、信息 处理、数据分类、图像处理、系统建模等方面具有广泛的应用.Matlab 工具箱中与 RBF 神经网络相关的函数:newrb: 新建一个 RBF 神经网络,逐个增加隐层神经元的个数,使误差满足要求。 net = newrb(P,T,goal,spread,MN,DF) P: R-by-Q matrix of Q input vectors T:S-by-Q matrix of Q target class vectors goal:Mean squared error goal (default = 0.0) spread:Spread of radial basis functions (default = 1.0) MN:Maximum number of neurons (default is Q) DF:Number of neurons

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号