数学建模_BP神经网络算法模板
- 格式:doc
- 大小:105.50 KB
- 文档页数:2
BP神经网络算法预测模型
BP神经网络(Back Propagation Neural Network,BPNN)是一种常
用的人工神经网络,它是1986年由Rumelhart和McClelland首次提出的,主要用于处理有结构的或无结构的、离散的或连续的输入和输出的信息。
它属于多层前馈神经网络,各层之间存在权值关系,其中权值是由算法本
身计算出来的。
BP神经网络借助“反向传播”(Back Propagation)来
实现权值的更新,其核心思想是根据网络的输出,将错误信息以“反馈”
的方式传递到前面的每一层,通过现行的误差迭代传播至输入层,用来更
新每一层的权值,以达到错误最小的网络。
BP神经网络的框架,可以有输入层、隐含层和输出层等组成。
其中
输入层的节点数即为输入数据的维数,输出层的节点个数就是可以输出的
维数,而隐含层的节点数可以由设计者自由设定。
每一层之间的权值是
BP神经网络算法预测模型中最重要的参数,它决定了神经网络的预测精度。
BP神经网络的训练步骤主要有以下几步:首先,规定模型的参数,
包括节点数,层数,权值,学习率等;其次,以训练数据为输入,初始化
权值,通过计算决定输出层的输出及误差;然后,使用反向传播算法,从
输出层向前,层层地将误差反馈到前一层。
针对问题三,本文首先对主要风险因子进行了灰色预测,计算出未来几年水资源总量、降水量、平均气温、生活用水量、工业用水量。
然后采用问题二中的BP神经网络预测每年的缺水量。
最后通过整合往年的数据,运用问题二中的熵值取权的模糊评价模型预测出未来几年内水资源短缺的风险等级。
由于考虑到降水量和地下储水相关系数高,我们依据历年的降水量估测出平水年,偏枯年,枯水年三种不同年份的水资源总量,并应用问题二的风险评价模型进行评估,得到三种不同年份水资源短缺风险等级依次为高,较高,较低。
最后我们分析了南水北调工程对北京市未来两年水资源短缺的风险等级影响,风险等级依次变为低,偏低,无。
针对问题四,我们从北京市水资源现状及分析、北京市严重缺水的原因探究、北京市水资源开发利用对策三个层面向相关行政主管部门提交建议报告,以求帮助其合理规避水资源短缺风险。
关键字:水资源短缺风险、灰色关联度分析、主成分分析,模糊综合评价、BP 神经网络、熵值取权一、问题重述1.1 问题背景水是生命之源,万物之本,是人类生存和发展不可或缺的物质,是地球上最普遍、最常见同时也是最珍贵的自然资源。
水是人类一切生产活动的基础,有水的地方欣欣向荣,水资源枯竭的地方则文明消失。
长期以来,我们注重经济社会发展,却忽略了水资源的承载能力,注重水资源开发利用,却没有同等重视节约和保护。
随着经济社会发展,1.2 问题重述水资源短缺危险泛指在特定的时空环境下,由于来水和用水的不确定性,室区域水资源系统发生供水短缺的可能性以及有此产生的损失。
近年来我国水资源短缺问题日趋严重,以北京市为例,北京是世界上水资源严重缺乏的大都市之一,属严重缺水地区。
虽然政府采取了一些列措施,如南水北调工程建设, 建立污水处理厂,产业结构调整等。
但是,气候变化和经济社会不断发展,水资源短缺风险始终存在。
如何对水资源风险的主要因子进行识别,对风险造成的危害等级进行划分,对不同风险因子采取相应的有效措施规避风险或减少其造成的危害,这对社会经济的稳定、可持续发展战略的实施具有重要的意义。
BP神经网络模型第1节基本原理简介近年来全球性的神经网络研究热潮的再度兴起,不仅仅是因为神经科学本身取得了巨大的进展.更主要的原因在于发展新型计算机和人工智能新途径的迫切需要.迄今为止在需要人工智能解决的许多问题中,人脑远比计算机聪明的多,要开创具有智能的新一代计算机,就必须了解人脑,研究人脑神经网络系统信息处理的机制.另一方面,基于神经科学研究成果基础上发展出来的人工神经网络模型,反映了人脑功能的若干基本特性,开拓了神经网络用于计算机的新途径.它对传统的计算机结构和人工智能是一个有力的挑战,引起了各方面专家的极大关注.目前,已发展了几十种神经网络,例如Hopficld模型,Feldmann等的连接型网络模型,Hinton等的玻尔茨曼机模型,以及Rumelhart等的多层感知机模型和Kohonen的自组织网络模型等等。
在这众多神经网络模型中,应用最广泛的是多层感知机神经网络。
多层感知机神经网络的研究始于50年代,但一直进展不大。
直到1985年,Rumelhart等人提出了误差反向传递学习算法(即BP算),实现了Minsky的多层网络设想,如图34-1所示。
BP 算法不仅有输入层节点、输出层节点,还可有1个或多个隐含层节点。
对于输入信号,要先向前传播到隐含层节点,经作用函数后,再把隐节点的输出信号传播到输出节点,最后给出输出结果。
节点的作用的激励函数通常选取S 型函数,如Qx e x f /11)(-+=式中Q 为调整激励函数形式的Sigmoid 参数。
该算法的学习过程由正向传播和反向传播组成。
在正向传播过程中,输入信息从输入层经隐含层逐层处理,并传向输出层。
每一层神经元的状态只影响下一层神经输入层 中间层 输出层 图34-1 BP 神经网络模型元的状态。
如果输出层得不到期望的输出,则转入反向传播,将误差信号沿原来的连接通道返回,通过修改各层神经元的权值,使得误差信号最小。
社含有n 个节点的任意网络,各节点之特性为Sigmoid 型。
只需模仿即可。
就能轻松掌握。
1、BP网络构建(1)生成BP网络net newff PR S S SNl TF TF TFNl BTF BLF PF=(,[1 2...],{ 1 2...},,,)R⨯维矩阵。
PR:由R维的输入样本最小最大值构成的2S S SNl:各层的神经元个数。
[1 2...]TF TF TFNl:各层的神经元传递函数。
{ 1 2...}BTF:训练用函数的名称。
(2)网络训练net tr Y E Pf Af train net P T Pi Ai VV TV=[,,,,,] (,,,,,,)(3)网络仿真=[,,,,] (,,,,)Y Pf Af E perf sim net P Pi Ai TBP网络的训练函数训练方法训练函数梯度下降法traingd有动量的梯度下降法traingdm自适应lr梯度下降法traingda自适应lr动量梯度下降法traingdx弹性梯度下降法trainrpFletcher-Reeves共轭梯度法traincgfPloak-Ribiere共轭梯度法traincgpPowell-Beale共轭梯度法traincgb量化共轭梯度法trainscg拟牛顿算法trainbfg一步正割算法trainossLevenberg-Marquardt trainlmBP网络训练参数训练参数参数介绍训练函数net.trainParam.epochs最大训练次数(缺省为10)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm net.trainParam.goal训练要求精度(缺省为0)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm net.trainParam.lr学习率(缺省为0.01)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm net.trainParam.max_fail 最大失败次数(缺省为5)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlmnet.trainParam.min_grad 最小梯度要求(缺省为1e-10)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlmnet.trainParam.show显示训练迭代过程(NaN表示不显示,缺省为25)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlmnet.trainParam.time 最大训练时间(缺省为inf)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm net.trainParam.mc 动量因子(缺省0.9)traingdm、traingdxnet.trainParam.lr_inc 学习率lr增长比(缺省为1.05)traingda、traingdxnet.trainParam.lr_dec 学习率lr下降比(缺省为0.7)traingda、traingdxnet.trainParam.max_perf_inc 表现函数增加最大比(缺省为1.04)traingda、traingdxnet.trainParam.delt_inc 权值变化增加量(缺省为1.2)trainrpnet.trainParam.delt_dec 权值变化减小量(缺省为0.5)trainrpnet.trainParam.delt0 初始权值变化(缺省为0.07)trainrpnet.trainParam.deltamax 权值变化最大值(缺省为50.0)trainrpnet.trainParam.searchFcn 一维线性搜索方法(缺省为srchcha)traincgf、traincgp、traincgb、trainbfg、trainossnet.trainParam.sigma 因为二次求导对权值调整的影响参数(缺省值5.0e-5)trainscg mbda Hessian矩阵不确定性调节参数(缺省为5.0e-7)trainscg net.trainParam.men_reduc 控制计算机内存/速度的参量,内存较大设为1,否则设为2(缺省为1)trainlmnet.trainParam.mu μ的初始值(缺省为0.001)trainlm net.trainParam.mu_dec μ的减小率(缺省为0.1)trainlm net.trainParam.mu_inc μ的增长率(缺省为10)trainlmnet.trainParam.mu_maxμ的最大值(缺省为1e10) trainlm2、BP 网络举例 举例1、%traingd clear; clc;P=[-1 -1 2 2 4;0 5 0 5 7]; T=[-1 -1 1 1 -1];%利用minmax 函数求输入样本范围net = newff(minmax(P),[5,1],{'tansig','purelin'},'trainrp');net.trainParam.show=50;% net.trainParam.lr=0.05; net.trainParam.epochs=300; net.trainParam.goal=1e-5; [net,tr]=train(net,P,T);net.iw{1,1}%隐层权值 net.b{1}%隐层阈值net.lw{2,1}%输出层权值 net.b{2}%输出层阈值sim(net,P)举例2、利用三层BP 神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。
bp算法适应度公式
BP(Back Propagation)算法是一种常用的神经网络训练算法,用于调整神经网络中的权重,以使得网络的输出尽可能地接近期望
的输出。
在BP算法中,适应度公式通常用于衡量神经网络的输出与
期望输出之间的差异,从而指导权重的调整。
适应度公式通常使用
均方误差(MSE)来衡量输出与期望输出之间的差异,其数学表达式
如下:
MSE = 1/n Σ(yi ti)^2。
其中,MSE表示均方误差,n表示样本数量,yi表示神经网络
的输出,ti表示期望的输出。
Σ表示求和符号。
这个公式的含义是,计算神经网络在所有样本上输出与期望输出之间的差异的平方和,
然后取平均值作为适应度值。
除了均方误差外,有时候也会使用交叉熵作为适应度公式,特
别是在处理分类问题时。
交叉熵的数学表达式如下:
Cross Entropy = -Σ(ti log(yi) + (1 ti) log(1 yi))。
其中,Cross Entropy表示交叉熵,ti表示期望的输出,yi表示神经网络的输出。
Σ表示求和符号。
这个公式的含义是,计算神经网络在所有样本上输出与期望输出之间的交叉熵,然后取负数作为适应度值。
总之,适应度公式在BP算法中扮演着重要的角色,它帮助我们衡量神经网络的输出与期望输出之间的差异,指导权重的调整,从而使神经网络逐渐收敛到期望的状态。
在实际应用中,根据具体的问题和数据特点,我们可以选择合适的适应度公式来指导神经网络的训练。
p=p1';t=t1';[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始数据归一化net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');%设置网络,建立相应的BP网络net.trainParam.show=2000; % 训练网络net.trainParam.lr=0.01;net.trainParam.epochs=100000;net.trainParam.goal=1e-5;[net,tr]=train(net ,pn,tn); %调用TRAINGDM算法训练BP 网络pnew=pnew1';pnewn=tramnmx(pnew,minp,maxp);anewn=sim(net,pnewn); %对BP网络进行仿真anew=postmnmx(anewn,mint,maxt); %还原数据y=anew';1、BP网络构建(1)生成BP网络=net newff PR S S SNl TF TF TFNl BTF BLF PF(,[1 2...],{ 1 2...},,,)PR:由R维的输入样本最小最大值构成的2R⨯维矩阵。
S S SNl:各层的神经元个数。
[ 1 2...]{ 1 2...}TF TF TFNl:各层的神经元传递函数。
BTF:训练用函数的名称。
(2)网络训练[,,,,,] (,,,,,,)=net tr Y E Pf Af train net P T Pi Ai VV TV(3)网络仿真=[,,,,] (,,,,)Y Pf Af E perf sim net P Pi Ai T{'tansig','purelin'},'trainrp'2、BP网络举例举例1、%traingdclear;clc;P=[-1 -1 2 2 4;0 5 0 5 7];T=[-1 -1 1 1 -1];%利用minmax函数求输入样本范围net = newff(minmax(P),T,[5,1],{'tansig','purelin'},'trainrp');net.trainParam.show=50;%net.trainParam.lr=0.05;net.trainParam.epochs=300;net.trainParam.goal=1e-5;[net,tr]=train(net,P,T);net.iw{1,1}%隐层权值net.b{1}%隐层阈值net.lw{2,1}%输出层权值net.b{2}%输出层阈值sim(net,P)举例2、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。
1.1 BP 神经网络原理简介
BP 神经网络是一种多层前馈神经网络,由输入、输出、隐藏层组成。
该网络的主要特点是信号前向传递,误差反向传播。
在前向传递中,输入信号从输入层经隐藏层逐层处理,直至输出层。
每一层的神经元状态只影响下一层神经元状态。
如果输出层得不到期望输出则转入反向传播,根据预测误差调整网络权值和阈值,从而使BP 神经网络预测输出不断逼近期望输出。
结构图如下:
隐藏层传输函数选择Sigmoid 函数(也可以选择值域在(-1,1)的双曲正切函数,函数‘tansig ’),其数学表达式如下:
x
e 11)x (
f α-+=,其中α为常数 输出层传输函数选择线性函数:x )x (f =
1.隐藏层节点的选择
隐藏层神经元个数对BP 神经网络预测精度有显著的影响,如果隐藏层节点数目太少,则网络从样本中获取信息的能力不足,网络容易陷入局部极小值,有时可能训练不出来;如果隐藏层节点数目太多,则学习样本的非规律性信息会出现“过度吻合”的现象,从而导致学习时间延长,误差也不一定最佳,为此我们参照以下经验公式:
12+=I H
]10,1[ ,∈++=a a O I H
I H 2log =
其中H 为隐含层节点数,I 为输入层节点数,O 为输出层节点数,a 为常数。
输入层和输出层节点的确定:
2.输入层节点和输出层节点的选择
输入层是外界信号与BP 神经网络衔接的纽带。
其节点数取决于数据源的维数和输入特征向量的维数。
选择特征向量时,要考虑是否能完全描述事物的本质特征,如果特征向量不能有效地表达这些特征,网络经训练后的输出可能与实际有较大的差异。
因此在网络训练前,应全面收集被仿真系统的样本特性数据,并在数据处理时进行必要的相关性分析,剔除那些边沿和不可靠的数据,最终确定出数据源特征向量的维度。
对于输出层节点的数目,往往需要根据实际应用情况灵活地制定。
当BP 神经网络用于模式识别时,模式的自身特性就决定了输出的结果数。
当网络作为一个分类器时,输出层节点数等于所需信息类别数。
(可有可无)
训练好的BP 神经网络还只能输出归一化后的浓度数据,为了得到真实的数据
值,我们还必须对输出数据进行反归一化。
反归一化过程可以利用归一化过程中的信息,通过函数“mapminmax”来实现。
具体如下:
BPoutput=mapminmax('reverse',an,outputps);
其中,BPoutput为反归一化后的数据,an为神经网络预测输出,outputpa为原始输出数据集信息。
2BP神经网络结果分析
以Cu元素为例,训练结束的神经网络性能图(MSE和Epochs的函数图象)下:结果分析:
如图4,训练在第222次迭代过程达到均方误差最小,MSE=***。
此时,
训练结束。
学习速度同样对BP神经网络具有重要影响作用,学习速度太小,网络学习缓慢,需要增加训练次数;学习速度太大,网络学习迅速,但是容易导致网络不收敛,影响训练的精度。
我们最终决定学习速度为0.01,训练次数为300。
1.1.1 数据的预处理
BP 神经网络构建在多层前馈网络的基础
BP神经网络的缺陷:
随着BP神经网络在多领域的广泛应用,BP 算法自身存在的诸多缺陷逐渐被人们发现,这些缺陷在应用实例中表现为如下几方面:误差收敛速度慢,学习时间过长;学习过程易陷入局部极小值;网络泛化能力差;构建网络结构缺乏统一原则等。
缺陷产生的直接原因是BP神经网络自身算法的不完善。
产生的直接后果是制约 BP 算法的学习精度,影响网络的学习速度,限制网络的广泛应用。
BP 算法被提出以后,国内外学者对它的改进工作就从未停止。
人们希望通过对 BP 算法的改进,使其满足更多状态下的应用要求。
改进BP神经网络属于此领域的研究热点,有着重要的理论意义和应用价值。
本文针对 BP 算法的不足,立足于前人的改进经验,提出进一步改进 BP 算法的新思路,期望对理论研究和实际应用有所帮助。