1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,BP神经网络的改进和MATLAB实现,*,BP神经网络的改进和MATLAB实现,1:BP神经网络的概述,2:BP神经网络的标准训练学习,3:在MATLAB软件上运行几个程序,4:基于Levenberg-Marquardt算法的学习优 化(阻尼最小二乘法),5:基于蚁群算法的初始权值优化,6:经过4 和 5 优化后的 仿真试验(发 动机性能趋势分析和故障诊断中的应用),7:总结,2,BP神经网络的改进和MATLAB实现,多元函数图示,一元函数,X,.,R,二元函数,x,y,o,R,.,f,D,.,f,.,三元
2、函数,x,y,z,o,.,R,.,f,X,X,I,矩形的面积,S=,x,y,长方体体积,V=,x,y,z,3,BP神经网络的改进和MATLAB实现,多元函数图示,x,R,.,.,4,BP神经网络的改进和MATLAB实现,多元函数及其图形,多元函数及其图形,5,BP神经网络的改进和MATLAB实现,6,BP神经网络的改进和MATLAB实现,BP神经网络模型,激活函数,必须处处可导,一般都使用S型函数,使用S型激活函数时BP网络输入与输出关系,输入,输出,7,BP神经网络的改进和MATLAB实现,BP神经网络模型,输出的导数,根据S型激活函数的图形可知,对神经网络进行训练,应该将net的值尽量控制
3、在收敛比较快的范围内,8,BP神经网络的改进和MATLAB实现,9,BP神经网络的改进和MATLAB实现,网络结构,输入层有n个神经元,隐含层有p个神经元,输出层有q个神经元,变量定义,输入向量;,隐含层输入向量;,隐含层输出向量;,输出层输入向量;,输出层输出向量;,期望输出向量;,10,BP神经网络的改进和MATLAB实现,输入层与中间层的连接权值:,隐含层与输出层的连接权值:,隐含层各神经元的阈值:,输出层各神经元的阈值:,样本数据个数:,激活函数:,误差函数:,11,BP神经网络的改进和MATLAB实现,第一步,网络初始化,给各连接权值分别赋一个区间(-1,1)内的随机数,设定误差函数
4、e,给定计算精度值 和最大学习次数M。,第二步,随机选取第 个输入样本及对应期望输出,12,BP神经网络的改进和MATLAB实现,第三步,计算隐含层各神经元的输入和输出,13,BP神经网络的改进和MATLAB实现,第四步,利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数 。,14,BP神经网络的改进和MATLAB实现,第五步,利用隐含层到输出层的连接权值、输出层的 和隐含层的输出计算误差函数对隐含层各神经元的偏导数,15,BP神经网络的改进和MATLAB实现,16,BP神经网络的改进和MATLAB实现,第六步,利用输出层各神经元的 和隐含层各神经元的输出来修正连接权值,17,
5、BP神经网络的改进和MATLAB实现,第七步,利用隐含层各神经元的 和输入层各神经元的输入修正连接权。,18,BP神经网络的改进和MATLAB实现,第八步,计算全局误差,第九步,判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到第三步,进入下一轮学习。,19,BP神经网络的改进和MATLAB实现,BP算法直观解释,情况1的直观表达,当误差对权值的偏,导数大于零时,权值,调整量为负,实际输,出大于期望输出,,权值向减少方向调整,,使得实际输出与期望,输出的差减少。,w,ho,e,0,此时w,ho,0,20,BP神
6、经网络的改进和MATLAB实现,BP算法直解释,情况2的直观表达,当误差对权值的偏导数,小于零时,权值调整量,为正,实际输出少于期,望输出,权值向增大方向,调整,使得实际输出与期,望输出的差减少。,e,0,w,ho,21,BP神经网络的改进和MATLAB实现,梯度下降法,22,BP神经网络的改进和MATLAB实现,一、无约束优化的古典分析法,无约束优化问题可表示为,min,f,(,x,1,x,2,x,n,),x,i,R,,,i,=1,2,n,如果令,x,=(,x,1,x,2,x,n,),T,,则无约束优化问题为,min,f,(,x,),x,R,n,23,BP神经网络的改进和MATLAB实现,关
7、于,f,(,x,):,当,x,=(,x,),时,,f,(,x,),是一条曲线;,当,x,=(,x,1,x,2,),T,时,,f,(,x,1,x,2,),是一个曲面;,当,x,=(,x,1,x,2,x,3,),T,时,,f,(,x,1,x,2,x,3,),是一个体密度,(或类位势函数),;,当,x,=(,x,1,x,2,x,n,),T,时,,f,(,x,1,x,2,x,n,),是一个超曲面。,24,BP神经网络的改进和MATLAB实现,设函数,f,(,x,)=,f,(,x,1,.,x,n,),对所有变元都有一阶与二阶连续偏导数,则,称,n,个一阶偏导数构成的,n,维列向量为,f,.,(,x,),
8、的,梯度,,记作,称满足,f,(,x,0,),=,0,的点,x,0,为函数,f,(,x,),的,驻点,或,临界点,。,25,BP神经网络的改进和MATLAB实现,称,n,2,个二阶偏导数构成的,n,阶对称矩阵为函数,f,(,x,),的,海森,(,Hessian,),矩阵,记为,H,(,x,)或,2,f,(,x,):,26,BP神经网络的改进和MATLAB实现,综上所述,多元函数,f,(,x,)=,f,(,x,1,x,2,x,n,),的一阶导数是它的梯度,f,.,(,x,),二阶导数是它的,Hessian,矩阵,2,f,(,x,)。,在最优化方法的讨论中这是两个常用的概念。,27,BP神经网络的
9、改进和MATLAB实现,定理,(最优性条件),设,n,元函数,y,=,f,(,x,),对所有变元具有一阶及二阶连续偏导数,则,x,0,是,f,(,x,),极小点的充分条件为,f,(,x,0,)=0,,,2,f,(,x,0,)0,(,正定,),而,x,0,是,f,(,x,),极大点的充分条件为,f,(,x,0,)=0,,,2,f,(,x,0,)0,(,负定,),事实上,,如果设,x,=(,x,1,x,n,),T,,则利用多元函数的泰勒展开式,我们有,28,BP神经网络的改进和MATLAB实现,其中,R,为,x,的高阶无穷小,即,R,=,o,|,x,|,2,。,于是,当,x,0,为函数,f,.,(
10、x,),的驻点时,可以得到,于是,当,x,i,(,i,=1,n,),足够小时,上式右端的正负号完全由二次型,x,T,2,f,(,x,0,),x,决定,从而完全由,Hessian,矩阵,2,f,(,x,)的正,(负),定性决定。,注记,:微积分中求一元函数和二元函数极值的方法,是这个定理的特例。,29,BP神经网络的改进和MATLAB实现,二、无约束优化的梯度下降法,对于无约束优化问题,min,f,(,x,)(1),x,=(,x,1,x,2,x,n,),T,R,n,如果,f,(,x,),可微,根据古典分析的方法,可利用,f,(,x,)=0 (2),求驻点,然后再利用,Hessian,矩阵,2,
11、f,.,(,x,),来判定这些驻点是否极小值点,从而求出无约束优化问题,(,1,),的最优解。,30,BP神经网络的改进和MATLAB实现,但是,,用古典分析的方法求解无约束优化问题,(,1,),实际上是行不通的,这是由于:,(1)实际应用中相当数量的函数,f,.,(,x,),不具有解析性,故非线性方程组,f,(,x,),=,0,无法形成;,(2)即使形成了方程组,f,(,x,),=,0,由于它是一个,n,元非线性方程组,因而求它的解与解决原问题一样地困难;,(3)即使求得了,f,(,x,),=,0,的解,x,*,但由于最优性条件不被满足或者难于验证,因此仍无法确定,x,*,是否为,(,1,)
12、的解。,31,BP神经网络的改进和MATLAB实现,例如,有些,曲面有许多甚至无穷多极大值和极小值,则无法验证最优性条件。,32,BP神经网络的改进和MATLAB实现,鉴于上述种种原因,对于,(,1,),的求解,通常采用一些比较切合实际、行之有效的数值算法。最常用的是迭代算法,(,搜索,算法),。,迭代算法,的基本思想是:从一个选定的初始点,x,0,R,n,出发,按照某一特定的迭代规则产生一个点列,x,k,,使得当,x,k,是有穷点列时,其最后一个点是,(,1,),的最优解;当,x,k,是无穷点列时,它有极限点,并且其极限点是,(,1,),的最优解。,33,BP神经网络的改进和MATLAB实
13、现,设,x,k,R,n,是某迭代算法的第,k,轮迭代点,而,x,k,+1,R,n,是第,k,+1,轮迭代点,记,x,k,+1,=,x,k,+,k,p,k,这里,k,R,称为,步长,,,p,k,R,n,称为,搜索方向,。在,k,和,p,k,确定之后,由,x,k,R,n,就可以确定,x,k,+1,R,n,。,各种不同迭代算法的差别,在于选择,k,和,p,k,(,特别是,p,k,),的方法不同。,34,BP神经网络的改进和MATLAB实现,使用最广泛的一类是,下降算法,,它每迭代一次都是目标函数值有所下降,即,f,(,x,k,+1,),0,并令,k,:=0;,2,计算,p,k,=,f,(,x,k,)
14、3,检验是否满足收敛性判别准则,:,|,p,k,|,若满足判别准则,则停止迭代,得到点,x,*,x,k,,否则进行,4,;,38,BP神经网络的改进和MATLAB实现,4,单变量极值问题的最优解,k,R,:,5,令,x,k,+1,=,x,k,+,k,p,k,;,k,:=,k,+1,返回,2,。,39,BP神经网络的改进和MATLAB实现,例,用梯度下降法求解 min,f,(,x,)=2,x,1,2,+,x,2,2,。,解,(1)取初始点,x,0,=,(1,1),T,,计算得,p,0,=,f,(,x,0,)=(4,x,0,1,2,x,0,2,),T,|,x,1,=1,x,2,=1,=,(4
15、2),T,由于,所以,f,(,x,0,+,p,0,)=2(1,4,),2,+(1,2,),2,。再,求解单变量极值问题:,40,BP神经网络的改进和MATLAB实现,得,0,=,5/18,,于是,x,1,=,x,0,+,0,p,0,=(1/9,4/9),T,(2)计算得,p,1,=,f,(,x,1,)=(4,x,1,1,2,x,1,2,)|,x,1,1,=1/9,x,1,2,=4/9,=(4/9,8/9),T,所以,41,BP神经网络的改进和MATLAB实现,故,再,求解单变量极值问题:,得,1,=5/12,,于是,x,2,=,x,1,+,1,p,1,=(2/27,2/27),T,(3)计算
16、得,p,2,=,f,(,x,2,)=(8/27,4/27),,,.,如此继续下去,直到满足收敛准则为止。,42,BP神经网络的改进和MATLAB实现,梯度下降法是求解无约束优化问题的最基本的算法,它在最优化方法中占有重要地位。,梯度下降法的优点是计算量小,存储变量少,对初始点要求不高。缺点是:,f,.,(,x,),仅仅反映了函数在点,x,处的局部性质,对局部来说是最速的下降方向,但对整体求解过程并不一定使函数值下降的最快;另外,梯度下降法收敛速度慢,特别是在极小值点附近。,梯度下降法适用于寻优过程的前期迭代或作为间插步骤,当接近极值点时宜选用其它收敛快的算法。,44,BP神经网络的改进和MAT
17、LAB实现,在MATLAB 上实现的几个例子,45,BP神经网络的改进和MATLAB实现,属于解析型的算法有:,梯度法:又称最速下降法。这是早期的解析法,收敛速度较慢。,牛顿法:收敛速度快,但不稳定,计算也较困难。,共轭梯度法:收敛较快,效果较好。,变尺度法:这是一类效率较高的方法。等等,46,BP神经网络的改进和MATLAB实现,BP网络的训练函数,训练方法,训练函数,梯度下降法,traingd,有动量的梯度下降法,traingdm,自适应lr梯度下降法,traingda,自适应lr动量梯度下降法,traingdx,弹性梯度下降法,trainrp,Fletcher-Reeves共轭梯度法,t
18、raincgf,Ploak-Ribiere共轭梯度法,traincgp,Powell-Beale共轭梯度法,traincgb,量化共轭梯度法,trainscg,拟牛顿算法,trainbfg,一步正割算法,trainoss,Levenberg-Marquardt,trainlm,47,BP神经网络的改进和MATLAB实现,例一:,利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。,样本数据:,输入X,输出D,输入X,输出D,输入X,输出D,-1.0000,-0.9602,-0.3000,0.1336,0.4000,0.3072,-0.9000,-0.5770,-0.200
19、0,-0.2013,0.5000,0.3960,-0.8000,-0.0729,-0.1000,-0.4344,0.6000,0.3449,-0.7000,0.3771,0,-0.5000,0.7000,0.1816,-0.6000,0.6405,0.1000,-0.3930,0.8000,-0.3120,-0.5000,0.6600,0.2000,-0.1647,0.9000,-0.2189,-0.4000,0.4609,0.3000,-0.0988,1.0000,-0.3201,48,BP神经网络的改进和MATLAB实现,例二,利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元
20、个数为五个。,样本数据:,输入X,输出D,输入X,输出D,输入X,输出D,0,0,4,4,8,2,1,1,5,3,9,3,2,2,6,2,10,4,3,3,7,1,49,BP神经网络的改进和MATLAB实现,些论文对BP神经网络的训练学习过程进行改进,用LM(,Levenberg-Marquardt,)算法对BP神经网络的训练学习进行改进。,它是使用最广泛的非线性最小二乘算法,它是利用梯度求最小(大)值的算法,形象的说,属于“爬山”法的一种。它同时具有梯度 法和牛顿法的优点。当很小时,步长等于牛顿法步长,当很大时,步长约等于梯度下降法的步长。,这个的变动有时候 像阻尼运动一样,所以LM算法又叫
21、阻尼最小二乘法,50,BP神经网络的改进和MATLAB实现,牛顿法的几何意义,x,y,x*,x,0,x,1,x,2,牛顿法也称为切线法,51,BP神经网络的改进和MATLAB实现,基本思想:,在极小点附近用,二阶Taylor多项式,近似目标函数,进而求出极小点的估计值。,52,BP神经网络的改进和MATLAB实现,53,BP神经网络的改进和MATLAB实现,雅克比矩阵,:,雅克比矩阵的定义很广泛,只要是向量间微积分运算过程中所涉及的包含偏微粉的行列式都可以叫雅克比矩阵。,如果说的更精确点的话,雅克比矩阵可以认为是两个向量空间中对应的映射关系。,想要了解雅克比矩阵首先要了解两个向量空间的关系。及
22、将初始向量空间的基矢量表示为末尾向量空间的基矢量的函数,然后通过求导既可以知道雅克比矩阵的具体形式了。,54,BP神经网络的改进和MATLAB实现,基于蚁群算法神经网络中权 值和阈值的初始化,55,BP神经网络的改进和MATLAB实现,仿真试验,56,BP神经网络的改进和MATLAB实现,收敛速度问题,局部极小点问题,逃离/避开局部极小点,:,修改,W,、,V,的初值并不是总有效。,逃离 统计方法;,Wasserman,,,1986,将,Cauchy,训练与,BP,算法结合起来,可以在保证训练速度不被降低的情况下,找到全局极小点。,10/18/2025,57,57,BP神经网络的改进和MATL
23、AB实现,网络瘫痪问题,在训练中,权可能变得很大,这会使神经元的网络输入变得很大,从而又使得其激活函数的导函数在此点上的取值很小。根据相应式子,此时的训练步长会变得非常小,进而将导致训练速度降得非常低,最终导致网络停止收敛,稳定性问题,用修改量的综合实施权的修改,连续变化的环境,它将变成无效的,58,BP神经网络的改进和MATLAB实现,步长问题,BP网络的收敛是基于无穷小的权修改量,步长太小,收敛就非常慢,步长太大,可能会导致网络的瘫痪和不稳定,自适应步长,使得权修改量能随着网络的训练而不断变化。1988年Wasserman,59,BP神经网络的改进和MATLAB实现,对BP神经网络的改进 思想,每次找到极小值时记录下此值的范围,检测一下是否为局部极小值,如果是就把权值和阈值随机打乱再训练学习,同时避免向记录下来的局部极小值的方向收敛。,蚁群算法的权值选择范围可以做一些优化,使供蚂蚁选择的权值能让误差和函数值小。,神经网络的预测 可以应用到好多地方,如汽车性能方面,60,BP神经网络的改进和MATLAB实现,






