您好,欢迎访问三七文档
数学建模系列讲座基于神经网络的预测与分类万敏理学院一、有导师学习神经网络的原理;matlab实现;BP、RBF在预测、分类中的应用;PNN在分类中的应用二、无导师学习神经网络的原理;matlab实现;竞争神经网络、SOFM在分类、聚类中的应用人工神经网络产生背景机器智能研究怎样用机器(计算机)模仿人脑从事推理、设计、思考、学习等思维活动,以解决和处理较复杂的问题。人工神经网络是机器智能的一部分,它模拟大脑的神经系统,更简单的说,就是人脑神经系统的一个数学模型大脑神经系统大脑内约含1000亿个神经元神经系统是由这些神经元经过高度的组织与相互作用而构成的复杂的网络特征:神经元+相互作用神经元模型a神经元模型1w1xnw2w2xnx神经元与神经元之间如何相互作用(传递信息)?依赖于突触的联接!突触的联接会受外界信息的影响或自身生长过程的影响而变化。正是通过神经元及其突触联接的可变性,使得大脑具有学习、记忆和认知等各种智能。突触突触突触突触突触是可变的连接权值w对应于突触突触1wa1xnw2wnx2xfn输入-输出关系多输入权值单输出阈值)()(1xwfnfaxwxwnTTniii激活函数121nnxxxx21其中,连接权值求和单元激活函数净输入完成输入-输出的非线性映射,有三个关键常见的几类激活函数这些非线性函数具有两个显著的特征,一是突变性,二是饱和性,这正是为了模拟神经细胞兴奋过程中所产生的神经冲动以及疲劳等特性人工神经网络=神经元+连接神经元神经元连接人工神经网络神经网络分类•无反馈网络:前馈神经网络•有反馈网络:递归神经网络神经网络的结构前馈神经网络递归神经网络特点:神经元之间有反馈连接输入--输出关系?1wa1xnw2wnx2xfn输入-输出关系多输入权值单输出)()(1xwfnfaxwxwnTTniii121nnxxxx21其中,净输入单个神经元单层前馈神经网络RjjijiRjjijiipwnpwfa11pWfaT输入-输出关系:1p21w13w12w11wsa2a1aRp2p22w23w1Rw2Rw3Rw1f2fsfsn2n1n多层前馈神经网络1x21w13w12w11wRx2x22w23w1Rw2Rw3Rw12f11sf11sn12n11f11n22sf22sn22f22n21f21n31f31n32f32n33sf33sn11sa12a11a22sa22a21a22sa22a21apWfa,输入层隐含层隐含层输入-输出关系:权值,求和,激活函数输出层pa神经网络),(pWfa一、网络结构1、输入神经元数,输出神经元个数2、隐层数,每个隐层中神经元个数3、每个神经元的激活函数f输入-输出关系人工神经网络二、前馈神经网络的学习这类网络模型怎样实现分类、识别、预测等智能行为?通过学习!改变连接权值W!通过样本更新权值和阈值pa神经网络),(pWfapshapetextureweight=以识别苹果和香蕉为例关键:调整权值期望输出t=1---苹果t=0---香蕉输入:苹果或香蕉训练样本:p1t1{,}p2t2{,}pQtQ{,}期望输出输入训练样本:有导师的学习p1t1{,}p2t2{,}pQtQ{,}期望输出(向量)输入(向量)对样本对(输入和期望输出)进行学习;将样本的输入送至神经网络,计算得到实际输出;若实际输出与期望输出之间的误差不满足精度要求,则调整权值W和阈值b,逐渐减小误差,直至满足精度要求。基本思想:pa神经网络),(pWfa训练样本学习过程:通过样本更新权值和阈值p1t1{,}p2t2{,}pQtQ{,}输出目标输入W(old)W(new)学习网络的学习:通过样本不断调整权值学习好以后的网络:权值不再改变,所学的知识存储在权值中学习好以后的网络进行预测、分类等等下面将给出三种典型的有导师学习的神经网络:BP,RBF,PNNBP(反向传播)神经网络原理一、结构2、输入输出关系:激活函数通常采用S形函数,如logsig,tansig函数;输出层激活函数多采用purelin函数。3、理论上,具有一个隐含层的BP网络可以以任意精度逼近任意非线性函数。x1x2xnwij输入层输出层隐含层jik+-wki信息流误差反向传播(学习算法)MqL1、多层前馈网络:前、后层之间各神经元实现全联接;同一层的神经元之间无联接。xWfa,二、BP网络的学习算法学习过程:信号前向传播+误差反向传播BP网络的学习算法是典型的有导师学习算法:将样本输入神经网络,得到网络的实际输出,若输出值与期望输出之间的误差不满足精度要求,则从输出层反向传播该误差,从而调整权值及阈值,使得网络的输出和期望输出间的误差逐渐减小,直至满足精度要求。训练样本p1t1{,}p2t2{,}pQtQ{,}am1+fm1+Wm1+ambm1++=m02M1–=a0p=aaM=ForwardPropagationpaBP神经网络),(pWfa1、信号前向传播二、BP网络的学习2、误差反向传播p1t1{,}p2t2{,}pQtQ{,}训练样本:FxEe2=Eta–2=均方误差(单输出)FxEeTe=Eta–Tta–=均方误差(多输出)wFkwkw)()1(梯度下降法:权值阈值的调整沿着误差函数下降最快的方向——负梯度方向Wmk1+Wmksmam1–T–=bmk1+bmksm–=WeightUpdateBP网络的学习算法(梯度下降法)wFkwkw)()1(mM1–21=误差反向传播11)(mTmmMmsWnFs))((2atnFsMMM第m层的灵敏度BP学习过程Step1•选定样本,p=1,…,P,随机确定初始权矩阵W(0)Step2•利用误差反向计算每一层的sensitivty,更新权值和阈值。直到误差满足精度要求。•利用样本计算网络输出,得到误差Step3BP网络学习算法的改进BP算法缺点小结易形成局部极小而得不到全局最优;训练次数多使得学习效率低,收敛速度慢;隐节点的选取缺乏理论指导;训练时学习新样本有遗忘旧样本的趋势。针对上述问题,国内外已提出不少有效的改进算法,其中基于LM的改进算法是较常用的一种方法。基于Levenberg-Marquardt法的BP改进算法Levenberg-Marquardt法实际上是梯度下降法和牛顿法的结合,它的优点在于网络权值数目较少时收敛非常迅速。应用Levenberg-Marquardt优化算法比传统的BP及其它改进算法(如共轭梯度法,附加动量法、自适应调整法及拟牛顿法等)迭代次数少,收敛速度快,精确度高。但对于复杂问题,需要更大的存储空间MATLAB中的工具函数trainlm()即对应Levenberg-Marquardt法的改进算法。BP网络的Matlab工具箱函数1、BP神经网络创建函数:函数newff用于创建一个BP神经网络,其调用格式为:net=newff(P,T,[S1S2...SN],{TF1TF2...TFN},BTF,BLF,PF)p1t1{,}p2t2{,}pQtQ{,}P:输入矩阵,每行对应于一个样本的输入向量T:输出矩阵,每行对应于该样本的期望输出Si:第i个隐含层的神经元个数,最后一个为输出层神经元个数TFi:第i个隐含层的激活函数(隐含层默认值为tansig,输出层默认值为purelin)BTF:网络训练函数(默认值为trainlm)BLF:权值/阈值学习函数(默认值为learngdm)PF:性能函数(默认值为mse均方误差函数)训练函数确定算法的框架(全局),学习函数确定权值的调整(局部)样本:{p1,t1},{p2,t2},…,{p50,t50}p1=[0.1,0.2],t1=0.7;p2=[0.98,0.75],t2=0.8;……p50=[0.87,0.6],t50=0.2如何创建一个三层BP神经网络学习样本?设隐含层神经元个数为6.例P=[0.1,0.2;0.98,0.75;…0.87,0.6;]%每行为一样本的输入T=[0.7;0.8;…0.2;]%每行为对应样本的期望输出Net=newff(P,T,6,{tansig,purelin},trainlm,lerangdm,mse)网络结构:2-6-1net=newff(P,T,6)BP神经网络的Matlab工具箱函数2、BP神经网络训练函数:函数train用于训练已经创建好的BP神经网络,其调用格式为:[net,tr,Y,E]=train(net,P,T)P:输入矩阵,每行对应于一个样本的输入向量T:输出矩阵,每行对应于该样本的期望输出tr:训练记录,包括迭代次数和性能Y:网络输出矩阵E:网络误差向量训练前的网络,newff产生的BP网络训练好的BP神经网络,权值不再改变BP神经网络的Matlab工具箱函数3、BP神经网络的仿真函数:函数sim用于利用训练好的BP网络进行仿真预测,其调用格式为:[Y,E,Perf]=sim(net,P)Net:训练好的BP神经网络,train得到的网络P:输入向量/矩阵,每行对应于一个样本的输入向量Y:网络输出向量/矩阵,每行对应于该样本的预测输出E:网络误差向量Perf:网络的性能BP神经网络用于预测,分类产生训练集/测试集创建/训练BP网络创建/训练RBF网络创建/训练PNN网络仿真测试性能评价1、产生训练集/测试集:(P_tain,T_train),(P_test,T_test)将样本分为训练集和测试集,训练样本用于网络训练(学习),测试样本用于测试网络的泛化能力。一般,训练集样本数量占总样本数量的2/3-3/4为宜,剩余的1/4-1/3作为测试集。p1t1{,}p2t2{,}pQtQ{,}训练集和测试集随机产生要分析网络模型的泛化能力,应该也必须用非训练样本(称为测试样本)误差的大小来表示和评价,这也是将总样本分成训练样本和非训练样本主要原因之一。最直接和客观的指标是从总样本中随机抽取的非训练样本(测试样本)误差是否和训练样本的误差一样小或稍大。非训练样本误差很接近训练样本误差或比其小,一般可认为建立的网络模型已有效逼近训练样本所蕴含的规律,否则,若相差很多(如几倍、几十倍甚至上千倍)就说明建立的网络模型并没有有效逼近训练样本所蕴含的规律,而只是在这些训练样本点上逼近而已。2、创建/训练BP神经网络:newff,train创建前需要确定网络的结构:隐层数含一个隐层的MLP网络能够以任意精度逼近任何有理函数。在设计BP网络时,应优先考虑3层BP网络(即有1个隐层),靠增加隐层节点数来获得较低的误差。隐层节点数确定隐层节点数的最基本原则:在满足精度要求的前提下取尽可能少的隐层节点数。最佳隐层神经元个数可参考如下公式:其中n为输入层神经元个数;l为隐藏层神经元个数;a为0-10之间的常数anmlnl2log1nl3、仿真测试:T_sim=sim(net,P_test)网络创建并训练完成以后,将测试集的输入变量送入网络,网络的输出即为预测结果训练神经网络的根本任务是确保训练好的网络模型对非训练样本具有好的泛化能力(推广性),即有效逼近样本蕴含的内在规律,而不是看网络模型对训练样本的拟合能力。因此,仅给出训练样本误差的大小而不给出测试样本误差的大小是没有任何意义的。4、性能评价:通过计算测试集的预测值与真实值间的误差,对网络的性能(即:泛化能力)进行评价。相对误差:erro决定系数:R2相对误差越小,说明模型的性能越好。决定系数越接近于1,说明模型的性能越好;越接近于0,表明越差。BP神经网络做预测/分类的步骤样本采集、
本文标题:神经网络预测法
链接地址:https://www.777doc.com/doc-7405306 .html