当前位置:文档之家› BP神经网络的预测理论的及程序 学习

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

12、智能算法12.1 人工神经网络 1、人工神经网络的原理假如我们只知道一些输入和相应的输出,但是不清楚这些输入和输出之间的具体关系是什么,我们可以把输入和输出之间的未知过程看成是一个“网络”,通过不断的网络输入和相应的输出进行“训练”(学习),网络根据输入和对应输出不断调整连接网络的权值,直到满足我们的目标要求,这样就训练好了一个神经网络,当我们给定一个输入,网络就会计算出一个相应的输出。

2、网络结构神经网络一般有一个输入层,多个隐层,和一个输出层。

隐层并非越多越好。

如下图所示:神经网络工具箱几乎 MATLAB 12.2 Matlab 神经网络工具箱 BP 网络和涵盖了所有的神经网络的基本常用模型,如感知器、nntool nftool,nctool,nprtool,nntraintool 和等。

它由RBFNN函数逼近和数据拟合、信息处理和预测、神经网组成。

主要应用于在实际应用中,针对具体的问题,首先络控制和故障诊断等领域。

.需要分析利用神经网络来解决问题的性质,然后依据问题的特点,提取训练和测试数据样本,确定网络模型,最后通过对网络进行训练、仿真等检验网络的性能是否满足要求。

具体过程如下:(1)确定信息表达的方式,主要包括数据样本已知;数据样本之间相互关系不明确;输入/输出模式为连续的或离散的;数据样本的预处理;将数据样本分成训练样本和测试样本。

(2)网络模型的确定。

确定选择何种神经网络以及网络层数。

(3)网络参数的选择,如输入输出神经元个数的确定,隐层神经元的个数等。

(4)训练模式的确定,包括选择合理的训练算法、确定合适的训练步数、指定适当的训练目标误差等(5)网络测试,选择合理的样本对网络进行测试。

简单来讲就是三个步骤:建立网络(newXX)—训练网络(trainXX)—仿真网络(sim)12.3 BP 神经网络的 Matlab 相关函数BP 算法的基本思想:学习过程由信号的正向传播与误差的反向传播两个过程组成。

正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。

若输出层的实际输出与期望输出(教师信号)不符,则转入误差的反向传播阶段。

误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号作为修正各单元权程就是神经网络的学习训练过程。

值的依据。

权值不断调整的过.BP 神经网络的设计内容:(1)网络层数的确定。

模式样本较少时,选用较少的隐层节点,一般采用两层 BP 网络;当模式样本较多时,减少网络规模,可以增加一个隐层。

(2)输入层节点数的确定。

输入层起到缓冲存储器的作用,其节点个数取决于输入矢量的维数。

(3)输出层节点数的确定。

取决于两个方面,输出数据类型和表示该类型所需的数据大小。

当 BP 网络用语模式分类时,以二进制形式来表示不同模式的输出结果,则输出层的节点数可根据分类模式数来确定。

若待分类模式的总数为 m,则有两种方法确定输出层的节点数:1)节点数即待分类模式总数 m,输出为对应的第 j 个分量为 1,其余为 0;2)节点数取经验值 log2 m ,对应 m 种输出模式的二进制编码。

(4)隐层节点数的确定。

一般通过反复测试获取较好的节点数。

对+??+a??,n1 为网络,于模式识别/分类的 BP 根据经验公式n=√01输入节点数,n0 为输出节点数,a 取1~10 之间的常数。

1)(训练方法及其参数f S 型函数=x传输函数。

(5)一般采用???1+??选择。

Matlab 工具箱提供了多种训练函数可供选择。

6)训练方法及其参数选择。

Matlab 工具箱提供了多种训练函数可供选择。

Matlab 工具箱中与 BP 神经网络相关的函数: (1)创建一个在对话框中创建 net=newff();调用形式为: newff,网络的函数BP 一个 BP 网络 net=newff(PR,[S1 S2 ... SN],{TF1TF2...TFN},BTF,BLF,PF); PR:由每组输入(共 R 组)元素的最大值和最小值组成的 R×2 维德矩阵;Si:第 i 层的长度,共有 N 层;TFi:第 i 层的传递函数,默认为 tansig;BTF:BP 网络的训练函数,默认为 trainlm;BLF:权值和阈值的学习算法,默认为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 2;-1 1;-2 1;-4 0]';>> t=[0.2 0.8 0.8 0.2];1],[5net=newff([-1>>1;-11],{'logsig','logsig'},'traingd');>> 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=a2>0.5a2 =0 1 1 0另一新版本程序:>> p=[1 2;-1 1;-2 1;-4 0]';>> t=[0.2 0.8 0.8 0.2];>> feedforwardnet(5,'traingd'); >>>>net=newff([-11],[51;-11],{'logsig','logsig'},'traingd');>> 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=a2>0.5a2 =1 1 1 0程序解释:1;-2 p=[1 2;-1 Matlab 程序如下: %定义输入向量和目标向量网络并定义训练函数创建 BP 1;-4 0]'; t=[0.2 0.8 0.80.2]; %1],[5net=newff([-11;-1数及参1],{'logsig','logsig'},'traingd');训%net.trainParam.goal=0.001; net.trainParam.epochs=5000; [net,tr]=train(net,p,t);练神经网络load 仿真网络BPnet1 save net;%保存网络 %1250]'; 1;-2 1;-4 加BPnet1 net; %载网络 p1=[1 2;-1中,创建前注:在新版本的 Matlab a2=sim(net,p1); a2=a2>0.5 为函络的数已经更新经馈 BP神网定 %feedforwardnet(hiddenSizes,trainFcn),相应的程序修改为: p=[1 2;-1 1;-2 1;-4 0]'; t=[0.2 0.8 0.8 义输入向量和目标向量及参数数义网建 BP 络并定训练函创0.2]; % 络网训%练神经feedforwardnet(5,'traingd');[net,tr]=train(net,p,t); save BPnet1 net;%保存网络。

网络用于曲线拟合BP : 2例>> 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] t =Columns 1 through 8-0.8320 -0.4230 -0.0240 0.3440 1.28203.45604.0200 3.2320Columns 9 through 162.3440 2.1020 1.5040 0.2480 1.24203.2620 2.0520 1.6840Columns 17 through 201.02202.22403.0220 1.9840>> net=feedforwardnet(15);>> 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*');>> load BPnet2 net;>> r=sim(net,p);>> plot(p,r);>> perf=perform(net,t,r)perf =0.6447>> hold off;Matlab 相关函数12.4 RBF 神经网络的神经网络只有一个隐层,结构)RBF 神经网络的主要特点有:(1RBF神经网络的隐层神经元和输出层神经元的模型不同, RBF (简单;2)神经网络的隐层是非线RBF 3)(在网络中起到的作用也是不同的;数计算的是输入神经网络的基函)性的,输出层是线性的;(4RBF 神经网络使用局RBF )向量和中心的欧式距离,以此作为自变量;(5指数衰减的非线性函数对非线性输入输出映射进行局部逼近。

相关主题