




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第3讲BP网络及其算法2345678910111213141516TheideaBadnessofFitBadnessofFit202122232425262728实例1函数逼近目标矢量相对于输入矢量的图形初始网络的输出曲线训练1000次2000次训练3000次5000次基于BP神经网络的研究生教育发展规模预测随着社会经济的发展,研究生教育发展问题越来越受到人们的关注。要促进研究生教育的健康可持续发展,必须结合社会发展过程中对高级人才的需求实际和国家的整体发展建设规划做好研究生教育发展规模的科学预测。常用的统计学预测方法较多,如线性回归模型、回归自回归混合模型等,这些方法简单、便于操作。但由于我国研究生教育正处于由过去的计划逐步向市场需求调节过度的转轨时期,不确定性的政策和社会因素也较多,这些因素相互作用,往往构成一个非线性系统,导致基于这些常规方法的预测结果与实际的偏差较大、精度不高,难以得到满意的结果。BP神经网络是介于灰箱和黑箱之间的系统,对非典型数据有着良好的适应性,且在处理缺失值和非线性问题时有着明显的优越性。因此,在预测上更具有普遍适应性。本文通过建立BP神经网络模型,借助Matlab7.0软件对我国的研究生教育发展规模进行模拟,以期获得更加科学的预测结果。1BP神经网络BP神经网络采用的是并行网络结构,包括输入层、隐含层和输出层,经作用函数后,再把隐节点的输出信号传递到输出节点,最后给出输出结果。该算法的学习过程由信息的前向传播和误差的反向传播组成。在前向传播的过程中,输入信息从输入层经隐含层逐层处理,并传向输出层。第一层神经元的状态只影响下一层神经元的状态。如果在输出层得不到期望的输出结果,则转入反向传播,将误差信号(目标值与网络输出之差)沿原来的连接通道返回,通过修改各层神经元权值,使得误差均方最小。神经网络理论已经证明BP网络具有强大的非线性映射能力和泛化功能,任一连续函数或映射均可采用三层网络加以实现[1],其网络结构见图1。402基于BP网络的研究生教育规模预测模型的建立这里,我们考虑了全国人均GDP、投入人年、投入经费、导师数、财政预算内教育支出及国家财政科技拨款等6个因素。为了缩小网络输入值(p)和目标值(t),对样本数据进行标准化处理。在Matlab中,可用prestd函数来完成,即[pn,meanp,stdp,tn,meant,stdt]=prestd(p,t);。这一过程标准化输入值和目标值,以使它们具有零均值和统一的标准差[2]。2.2网络结构的确定神经网络理论定理Kolmogorov定理已经证明,经充分学习的三层BP网络可以逼近任何函数,因此选择三层BP网络,即只有一个隐含层的BP网络,如图1所示。该网络输入层的节点数由输入向量的维数决定,输入向量的维数是6,所以输入层节点数确定为6个。输出层节点数由输出向量的维数决定,这里输出节点数为1。隐层节点数的选择在所有BP网络中目前还没有理论上的指导,过多的网络节点会增加训练网络的时间,也会使网络的泛化能力减弱,网络的预测能力下降。但是网络节点过少则不能反映后续值与前驱值的相关关系,建模不充分。隐含层节点数可参考下式:m=(p+q)0.5+a,其中m为隐层节点数,p为输入层节点数,q为输出层节点数,a为1-10之间的常数[3]。经反复训练,隐含层节点数定为9。这样就形成了一个6-9-1神经网络。多种快速学习算法,一类是采用启发式学习方法,如引入动量因子的traingdm算法、变速率学习算法traingda、“弹性”学习算法trainrp;另一类采用数值优化方法,如共轭梯度学习算法traincgf等、Quasi-Newton算法trainbgf等、Levenberg-Marguardt算法trainlm。其中Levenberg-Marguardt数值优化算法适用于中小型网络,并且学习速率最快,所以本文选择trainlm算法。2.4Matlab7.0中BP网络的学习、训练与模拟(1)建立网络net=newff(minmax(pn),[9,1],{'tansig','purelin'},'trainlm');newff()为建立BP神经网络的函数,minmax(pn)表示样本数据经预处理后的网络输入pn的取值范围,[9,1]表示隐层节点数是9,输出层节点数是1,{'tansig','purelin'}表示隐含层中的神经元采用tansig转换函数,输出层采用purelin函数,'trainlm'表示选择的学习算法。(2)权重和阈值初始化net=init(net);给各连接权重IW{1,1}、LW{2,1}及阈值b{1}、b{2}赋予(-1,+1)间的随机值。(3)学习[net,tr]=train(net,pn,tn);tn为目标向量,根据网络学习误差逆传

你相****光吗
实名认证
内容提供者


最近下载