改进BP神经网络与MATLAB实现江西师范大学2012.6.11•1:BP神经网络的概述•2:BP神经网络的标准训练学习•3:在MATLAB软件上运行几个程序•4:基于Levenberg-Marquardt算法的学习优化(阻尼最小二乘法)•5:基于蚁群算法的初始权值优化•6:经过4和5优化后的仿真试验(发动机性能趋势分析和故障诊断中的应用)•7:总结多元函数图示一元函数X.R二元函数xyoR.fD.f.三元函数xyzo.R.fXXI)(xfy),(yxfz矩形的面积S=x×y),,(zyxfu长方体体积V=x×y×z多元函数图示xRnR.XnnRxxxX),,,(21f.uRu),,()(1nxxfXfu多元函数及其图形多元函数及其图形BP神经网络模型•激活函数–必须处处可导•一般都使用S型函数•使用S型激活函数时BP网络输入与输出关系–输入–输出1122...nnnetxwxwxw1f()1enetynetBP神经网络模型–输出的导数211f'()(1)1e(1e)-netnetnetyy–根据S型激活函数的图形可知,对神经网络进行训练,应该将net的值尽量控制在收敛比较快的范围内•网络结构–输入层有n个神经元,隐含层有p个神经元,–输出层有q个神经元•变量定义–输入向量;–隐含层输入向量;–隐含层输出向量;–输出层输入向量;–输出层输出向量;–期望输出向量;12,,,nxxxx12,,,phihihihi12,,,phohohoho12,,,qyiyiyiyi12,,,qyoyoyoyo12,,,qdddod–输入层与中间层的连接权值:–隐含层与输出层的连接权值:–隐含层各神经元的阈值:–输出层各神经元的阈值:–样本数据个数:–激活函数:–误差函数:ihwf()howhb1,2,kmob211(()())2qoooedkyok•第一步,网络初始化–给各连接权值分别赋一个区间(-1,1)内的随机数,设定误差函数e,给定计算精度值和最大学习次数M。•第二步,随机选取第个输入样本及对应期望输出k12()(),(),,()nkxkxkxkx12()(),(),,()qkdkdkdkod•第三步,计算隐含层各神经元的输入和输出1()()1,2,,nhihihihikwxkbhp()f(())1,2,,hhhokhikhp1()()1,2,pohohohyikwhokboq()f(())1,2,ooyokyikoq•第四步,利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数。ohoohoeeyiwyiw(())()()phohoohhhohowhokbyikhokww211((()()))2(()())()(()())f(())()qoooooooooooodkyokedkyokyokyiyidkyokyikk()ok()()oohhoohoeeyikhokwyiw1()()(())()()hihhihnihihhiiihiheehikwhikwwxkbhikxkww•第五步,利用隐含层到输出层的连接权值、输出层的和隐含层的输出计算误差函数对隐含层各神经元的偏导数()hk()ok21212111((()()))()2()()()1((()f(())))()2()()1(((()f(())))()2()()qoohohhhqoohohhqpohohohohhhdkyokehokhikhokhikdkyikhokhokhikdkwhokbhokhokhik11()(()())f(())()(())f(())()qhooohoohqohohhohokdkyokyikwhikkwhikk•第六步,利用输出层各神经元的和隐含层各神经元的输出来修正连接权值1()()()()()hoohhoNNhohoohewkkhok()ok()howk•第七步,利用隐含层各神经元的和输入层各神经元的输入修正连接权。()hk1()()()()()()()hihhiihhihNNihihhieehikwkkxkwhik•第八步,计算全局误差•第九步,判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到第三步,进入下一轮学习。2111(()())2qmookoEdkykm•BP算法直观解释–情况1的直观表达•当误差对权值的偏•导数大于零时,权值•调整量为负,实际输•出大于期望输出,•权值向减少方向调整,•使得实际输出与期望•输出的差减少。whohoewe0,此时Δwho0•BP算法直解释–情况2的直观表达•当误差对权值的偏导数•小于零时,权值调整量•为正,实际输出少于期•望输出,权值向增大方向•调整,使得实际输出与期•望输出的差减少。hoewe0,此时Δwho0who梯度下降法一、无约束优化的古典分析法无约束优化问题可表示为minf(x1,x2,…,xn)xiR,i=1,2,…,n如果令x=(x1,x2,…,xn)T,则无约束优化问题为minf(x)xRn关于f(x):当x=(x)时,f(x)是一条曲线;当x=(x1,x2)T时,f(x1,x2)是一个曲面;当x=(x1,x2,x3)T时,f(x1,x2,x3)是一个体密度(或类位势函数);当x=(x1,x2,…,xn)T时,f(x1,x2,…,xn)是一个超曲面。设函数f(x)=f(x1,...,xn)对所有变元都有一阶与二阶连续偏导数,则①称n个一阶偏导数构成的n维列向量为f.(x)的梯度,记作②称满足f(x0)=0的点x0为函数f(x)的驻点或临界点。T1)(,,)()(nxxfxxfxf③称n2个二阶偏导数构成的n阶对称矩阵为函数f(x)的海森(Hessian)矩阵,记为H(x)或2f(x):222212122122122)()()()()()()()(nnnnxxfxxxfxxxfxxxfxxxfxxfxfxH综上所述,多元函数f(x)=f(x1,x2,…,xn)的一阶导数是它的梯度f.(x),二阶导数是它的Hessian矩阵2f(x)。在最优化方法的讨论中这是两个常用的概念。定理(最优性条件)设n元函数y=f(x)对所有变元具有一阶及二阶连续偏导数,则x0是f(x)极小点的充分条件为f(x0)=0,2f(x0)0(正定)而x0是f(x)极大点的充分条件为f(x0)=0,2f(x0)0(负定)事实上,如果设x=(x1,…,xn)T,则利用多元函数的泰勒展开式,我们有Rxxfxxxfxfxxf)(!21)()()(02TT000其中R为x的高阶无穷小,即R=o||x||2。于是,当x0为函数f.(x)的驻点时可以得到于是,当xi(i=1,…,n)足够小时,上式右端的正负号完全由二次型xT2f(x0)x决定,从而完全由Hessian矩阵2f(x)的正(负)定性决定。注记:微积分中求一元函数和二元函数极值的方法,是这个定理的特例。Rxxfxxfxxf)(!21)()(02T00二、无约束优化的梯度下降法对于无约束优化问题minf(x)(1)x=(x1,x2,…,xn)TRn如果f(x)可微,根据古典分析的方法,可利用f(x)=0(2)求驻点,然后再利用Hessian矩阵2f.(x)来判定这些驻点是否极小值点,从而求出无约束优化问题(1)的最优解。但是,用古典分析的方法求解无约束优化问题(1)实际上是行不通的,这是由于:(1)实际应用中相当数量的函数f.(x)不具有解析性,故非线性方程组f(x)=0无法形成;(2)即使形成了方程组f(x)=0,由于它是一个n元非线性方程组,因而求它的解与解决原问题一样地困难;(3)即使求得了f(x)=0的解x*,但由于最优性条件不被满足或者难于验证,因此仍无法确定x*是否为(1)的解。例如,有些曲面有许多甚至无穷多极大值和极小值,则无法验证最优性条件。鉴于上述种种原因,对于(1)的求解,通常采用一些比较切合实际、行之有效的数值算法。最常用的是迭代算法(搜索算法)。迭代算法的基本思想是:从一个选定的初始点x0Rn出发,按照某一特定的迭代规则产生一个点列{xk},使得当{xk}是有穷点列时,其最后一个点是(1)的最优解;当{xk}是无穷点列时,它有极限点,并且其极限点是(1)的最优解。设xkRn是某迭代算法的第k轮迭代点,而xk+1Rn是第k+1轮迭代点,记xk+1=xk+kpk这里kR称为步长,pkRn称为搜索方向。在k和pk确定之后,由xkRn就可以确定xk+1Rn。各种不同迭代算法的差别,在于选择k和pk(特别是pk)的方法不同。使用最广泛的一类是下降算法,它每迭代一次都是目标函数值有所下降,即f(xk+1)f(xk)。在下降算法中(1)搜索方向pk有多种选择方式,不同的选择形成不同的下降算法,如梯度下降法(也叫最速下降法),共轭梯度法,牛顿法,阻尼牛顿法,拟牛顿法等。但无论哪种下降法,pk的选择都有一个一般的原则:既要使它尽可能地指向极小值点,又不至于花费太大的使计算代价。(2)步长的选择也有多种不同方式,最常用的方式是寻找最优步长,即求单变量极值问题的最优解kR:)()(min0kkkkkpxfpxf梯度下降法(最速下降法)早在1847年,法国数学家Cauchy就曾提出这样的问题:从任一给定点x0Rn出发,沿着哪个方向f(x)的函数值下降最快?这个问题从理论上已经得到解决,就是沿着在该点的负梯度方向,f(x)的函数值下降最快。这就是梯度下降法的理论依据。梯度下降法的迭代步骤1给定初始点x0Rn,允许误差0,并令k:=0;2计算pk=f(xk);3检验是否满足收敛性判别准则:||pk||若满足判别准则,则停止迭代,得到点x*xk,否则进行4;4单变量极值问题的最优解kR:5令xk+1=xk+kpk;k:=k+1返回2。)()(min0kkkkkpxfpxf例用梯度下降法求解minf(x)=2x12+x22。解(1)取初始点x0=(1,1)T,计算得p0=f(x0)=(4x01,2x02)T|x1=1,x2=1=(4,2)T由于所以f(x0+p0)=2(14)2+(12)2。再求解单变量极值问题:214100px得0=5/18,于是x1=x0+0p0=(1/9,4/9)T(2)计算得p1=f(x1)=(4x112x12)|x11=1/9,x12=4/9=(4/9,8/9)T所以)(min000pxf84419111px故再求解单变量极值问题:得1=5/12,于是x2=x1+1p1=(2/27,2/27)T(3)计算得p2=f(x2)=(8/27,4/27),......如此继续下去,直到满足收敛准则为止。22119849412)(pxf)(min110pxf该问题的最优解为x*=(0,1)T,f(x*)=0,如图所示。-10-50510-10-50510050100150200250300梯度下降法是求解无约束优化问题的最基本的