BP神经网络的改进和MATLAB实现.ppt
改进BP神经网络与MATLAB实现江西师范大学2012.6.111:BP神经网络的概述2:BP神经网络的标准训练学习3:在MATLAB软件上运行几个程序4:基于Levenberg-Marquardt算法的学习优 化(阻尼最小二乘法)5:基于蚁群算法的初始权值优化6:经过4 和 5 优化后的 仿真试验(发 动机性能趋势分析和故障诊断中的应用)7:总结多元函数图示多元函数图示一元函数X.R二元函数xyoR.fD.f.三元函数xyzo.R.fXXI矩形的面积 S=xy长方体体积 V=xyz多元函数图示多元函数图示xR.多元函数及其图形多元函数及其图形多元函数及其图形多元函数及其图形BP神经网络模型激活函数必须处处可导必须处处可导一般都使用一般都使用S S型函数型函数 使用S型激活函数时BP网络输入与输出关系输入输入输出输出BP神经网络模型输出的导数输出的导数 根据根据根据根据S S型激活函数的图形可知型激活函数的图形可知型激活函数的图形可知型激活函数的图形可知,对神经网络进行训练,应该将对神经网络进行训练,应该将对神经网络进行训练,应该将对神经网络进行训练,应该将netnet的值尽量控的值尽量控的值尽量控的值尽量控制在收敛比较快的范围内制在收敛比较快的范围内制在收敛比较快的范围内制在收敛比较快的范围内 网络结构输入层有输入层有n n个神经元,隐含层有个神经元,隐含层有p p个神经元个神经元,输出层有输出层有q q个神经元个神经元变量定义输入向量输入向量;隐含层输入向量;隐含层输入向量;隐含层输出向量隐含层输出向量;输出层输入向量输出层输入向量;输出层输出向量输出层输出向量;期望输出向量期望输出向量;输入层与中间层的连接权值输入层与中间层的连接权值:隐含层与输出层的连接权值隐含层与输出层的连接权值:隐含层各神经元的阈值隐含层各神经元的阈值:输出层各神经元的阈值输出层各神经元的阈值:样本数据个数样本数据个数:激活函数激活函数:误差函数:误差函数:第一步,网络初始化 给各连接权值分别赋一个区间(给各连接权值分别赋一个区间(-1-1,1 1)内)内的随机数,设定误差函数的随机数,设定误差函数e e,给定计算精度,给定计算精度值值 和最大学习次数和最大学习次数MM。第二步,随机选取第 个输入样本及对应期望输出 第三步,计算隐含层各神经元的输入和输出第四步,利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数 。第五步,利用隐含层到输出层的连接权值、输出层的 和隐含层的输出计算误差函数对隐含层各神经元的偏导数 第六步,利用输出层各神经元的 和隐含层各神经元的输出来修正连接权值 第七步,利用隐含层各神经元的 和输入层各神经元的输入修正连接权。第八步,计算全局误差第九步,判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到第三步,进入下一轮学习。BP算法直观解释情况情况1 1的直观表达的直观表达 当误差对权值的偏当误差对权值的偏导数大于零时,权值导数大于零时,权值调整量为负,实际输调整量为负,实际输出大于期望输出,出大于期望输出,权值向减少方向调整,权值向减少方向调整,使得实际输出与期望使得实际输出与期望输出的差减少。输出的差减少。whoe0,此时此时who0BP算法直解释情况情况2 2的直观表达的直观表达当误差对权值的偏导数当误差对权值的偏导数小于零时,权值调整量小于零时,权值调整量为正,实际输出少于期为正,实际输出少于期望输出,权值向增大方向望输出,权值向增大方向调整,使得实际输出与期调整,使得实际输出与期望输出的差减少。望输出的差减少。e0who梯度下降法梯度下降法一、无约束优化的古典分析法一、无约束优化的古典分析法 无约束优化问题可表示为 min f(x1,x2,xn)xiR,i=1,2,n如果令 x=(x1,x2,xn)T,则无约束优化问题为 min f(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)的驻驻点点或临界点临界点。称 n2 个二阶偏导数构成的 n 阶对称矩阵为函数 f(x)的海海森森(Hessian)矩阵,记为 H(x)或2f(x):综上所述,多元函数 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,则利用多元函数的泰勒展开式,我们有其中 R 为 x 的高阶无穷小,即 R=o|x|2。于是,当 x0 为函数 f.(x)的驻点时可以得到于是,当 xi(i=1,n)足够小时,上式右端的正负号完全由二次型 xT2f(x0)x 决定,从而完全由 Hessian 矩阵 2f(x)的正(负)定性决定。注注记记:微积分中求一元函数和二元函数极值的方法,是这个定理的特例。二、无约束优化的梯度下降法二、无约束优化的梯度下降法 对于无约束优化问题min f(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+k pk这里 kR 称为步步长长,pkRn 称为搜搜索索方方向向。在 k 和 pk 确定之后,由 xkRn 就可以确定 xk+1Rn。各种不同迭代算法的差别,在于选择 k 和 pk(特别是 pk)的方法不同。使用最广泛的一类是下下降降算算法法,它每迭代一次都是目标函数值有所下降,即 f(xk+1)0,并令 k:=0;2 计算 pk=f(xk);3 检验是否满足收敛性判别准则:|pk|若满足判别准则,则停止迭代,得到点 x*xk,否则进行 4;4 单变量极值问题的最优解 kR:5 令xk+1=xk+k pk;k:=k+1返回 2。例例 用梯度下降法求解 min f(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(1 4)2+(1 2)2。再求解单变量极值问题:得 0=5/18,于是x1=x0+0 p0=(1/9,4/9)T (2)计算得 p1=f(x1)=(4x11 2x12)|x11=1/9,x12=4/9 =(4/9,8/9)T所以故再求解单变量极值问题:得 1=5/12,于是x2=x1+1 p1=(2/27,2/27)T (3)计算得 p2=f(x2)=(8/27,4/27),.如此继续下去,直到满足收敛准则为止。该问题的最优解为 x*=(0,1)T,f(x*)=0,如图所示。梯度下降法是求解无约束优化问题的最基本的算法,它在最优化方法中占有重要地位。梯度下降法的优点是计算量小,存储变量少,对初始点要求不高。缺点是:f.(x)仅仅反映了函数在点 x 处的局部性质,对局部来说是最速的下降方向,但对整体求解过程并不一定使函数值下降的最快;另外,梯度下降法收敛速度慢,特别是在极小值点附近。梯度下降法适用于寻优过程的前期迭代或作为间插步骤,当接近极值点时宜选用其它收敛快的算法。在MATLAB 上实现的几个例子属于解析型的算法有:梯度法:又称最速下降法。这是早期的解析法,收敛速度较慢。牛顿法:收敛速度快,但不稳定,计算也较困难。共轭梯度法:收敛较快,效果较好。变尺度法:这是一类效率较高的方法。等等BP网络的训练函数 训练方法训练函数梯度下降法traingd有动量的梯度下降法traingdm自适应lr梯度下降法traingda自适应lr动量梯度下降法traingdx弹性梯度下降法trainrpFletcher-Reeves共轭梯度法traincgfPloak-Ribiere共轭梯度法traincgpPowell-Beale共轭梯度法traincgb量化共轭梯度法trainscg拟牛顿算法trainbfg一步正割算法trainossLevenberg-Marquardttrainlm例一:利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。样本数据:输入X输出D输入X输出D输入X输出D-1.0000-0.9602-0.30000.13360.40000.3072-0.9000-0.5770-0.2000-0.20130.50000.3960-0.8000-0.0729-0.1000-0.43440.60000.3449-0.70000.37710-0.50000.70000.1816-0.60000.64050.1000-0.39300.8000-0.3120-0.50000.66000.2000-0.16470.9000-0.2189-0.40000.46090.3000-0.09881.0000-0.3201例二利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。样本数据:输入X输出D输入X输出D输入X输出D00448211539322621043371些论文对些论文对BPBP神经网络的训练学习过程进行改进神经网络的训练学习过程进行改进用用LMLM(Levenberg-MarquardtLevenberg-Marquardt )算法对)算法对BPBP神经网络的神经网络的训练学习进行改进。训练学习进行改进。它是使用最广泛的非线性最小二乘算法,它是利用梯度求它是使用最广泛的非线性最小二乘算法,它是利用梯度求最小(大)值的算法,形象的说,属于最小(大)值的算法,形象的说,属于“爬山爬山”法的一种。法的一种。它同时具有梯度它同时具有梯度 法和牛顿法的优点。当法和牛顿法的优点。当 很小时,步长等很小时,步长等于牛顿法步长,当于牛顿法步长,当 很大时,步长约等于梯度下降法的步很大时,步长约等于梯度下降法的步长。长。这个这个 的变动有时候的变动有时候 像阻尼运动一样,所以像阻尼运动一样,所以LMLM算法又叫阻算法又叫阻尼最小二乘法尼最小二乘法牛顿法的几何意义牛顿法的几何意义xyx*x0 x 1x 2牛顿法也称为切线法牛顿法也称为切线法基本思想:基本思想:在极小点附近用在极小点附近用二阶二阶Taylor多项式多项式近似近似目标函数,进而求出极小点的估计值。目标函数,进而求出极小点的估计值。雅克比矩阵雅克比矩阵:雅克比矩阵的定义很广泛,只要是向量间微积分运算过程中所涉及的包含偏微粉的行列式都可以叫雅克比矩阵。如果说的更精确点的话,雅克比矩阵可以认为是两个向量空间中对应的映射关系。想要了解雅克比矩阵首先要了解两个向量空间的关系。及将初始向量空间的基矢量表示为末尾向量空间的基矢量的函数,然后通过求导既可以知道雅克比矩阵的具体形式了。基于蚁群算法神经网络中权 值和阈值的初始化仿真试验收敛速度问题收敛速度问题 局部极小点问题局部极小点问题 逃逃逃逃离离离离/避避避避开开开开局局局局部部部部极极极极小小小小点点点点:修修修修改改改改WW、V V的的的的初初初初值值值值并并并并不不不不是是是是总有效。总有效。总有效。总有效。逃离逃离逃离逃离 统计方法;统计方法;统计方法;统计方法;WassermanWasserman,19861986将将将将CauchyCauchy训训训训练与练与练与练与BPBP算法结合起来,可以在保证训练速度不算法结合起来,可以在保证训练速度不算法结合起来,可以在保证训练速度不算法结合起来,可以在保证训练速度不被降低的情况下,找到全局极小点。被降低的情况下,找到全局极小点。被降低的情况下,找到全局极小点。被降低的情况下,找到全局极小点。12/12/202257网络瘫痪问题网络瘫痪问题 在训练中,权可能变得很大,这会使神经元在训练中,权可能变得很大,这会使神经元的网络输入变得很大,从而又使得其激活函的网络输入变得很大,从而又使得其激活函数的导函数在此点上的取值很小。根据相应数的导函数在此点上的取值很小。根据相应式子,此时的训练步长会变得非常小,进而式子,此时的训练步长会变得非常小,进而将导致训练速度降得非常低,最终导致网络将导致训练速度降得非常低,最终导致网络停止收敛停止收敛 稳定性问题稳定性问题 用修改量的综合实施权的修改用修改量的综合实施权的修改连续变化的环境,它将变成无效的连续变化的环境,它将变成无效的 步长问题步长问题 BP网络的收敛是基于无穷小的权修改量网络的收敛是基于无穷小的权修改量步长太小,收敛就非常慢步长太小,收敛就非常慢步长太大,可能会导致网络的瘫痪和不稳步长太大,可能会导致网络的瘫痪和不稳定定自适应步长,使得权修改量能随着网络的自适应步长,使得权修改量能随着网络的训练而不断变化。训练而不断变化。1988年年Wasserman 对对BPBP神经网络的改进神经网络的改进 思想思想每次找到极小值时记录下此值的范围,检测一下每次找到极小值时记录下此值的范围,检测一下是否为局部极小值,如果是就把权值和阈值随机是否为局部极小值,如果是就把权值和阈值随机打乱再训练学习,打乱再训练学习,同时避免向记录下来的局部极同时避免向记录下来的局部极小值的方向收敛。小值的方向收敛。蚁群算法的权值选择范围可以做一些优化,使供蚁群算法的权值选择范围可以做一些优化,使供蚂蚁选择的权值能让误差和函数值小。蚂蚁选择的权值能让误差和函数值小。神经网络的预测神经网络的预测 可以应用到好多地方,如汽车性可以应用到好多地方,如汽车性能方面能方面