BP神经网络的预测理论的及程序 学习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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],{TF1
TF2...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],[5
net=newff([-1
>>
1;-1
1],{'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.5
a2 =
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([-1
1],[5
1;-1
1],{'logsig','logsig'},'traingd');