[关闭]
@wuqi0616 2017-05-24T16:07:09.000000Z 字数 22194 阅读 1509

非线性模型参数估计的理论知识补充

三轴运动平台


1.背景知识

什么是参数估计?
参数估计是指对有一定统计分布的观测子样建立起某种函数模型,在某一准则函数约束下采用一定的数值计算方法来估计参数的过程。
测量领域中参数估计的过程大概分为三步
1、在观测子样和估计参数间建立起符合统计规律的函数模型
2、根据评估目标选择合适的估计准则
3、采用适当的数值解算方法,确保估计参数解的精确性和稳定性。

非线性最小二乘算法的应用大约于上世纪80年代初,非线性最小二乘法除可直接用于估计静态非线性模型的参数外,在时间序列建模、连续动态模型的参数估计中,也往往遇到求解非线性最小二乘问题。其算法主要有两类:一类是搜索算法,另一类是迭代算法
搜索算法的思路是:按一定的规则选择若干组参数值,分别计算它们的目标函数值并比较大小;选出使目标函数值最小的参数值,同时舍弃其他的参数值;然后按规则补充新的参数值,再与原来留下的参数值进行比较,选出使目标函数达到最小的参数值。如此继续进行,直到选不出更好的参数值为止。以不同的规则选择参数值,即可构成不同的搜索算法。常用的方法有单纯形搜索法、复合形搜索法、随机搜索法等。
迭代算法是从参数的某一初始猜测值出发,然后产生一系列的参数点,如果这个参数序列收敛到使目标函数极小的参数点娈,那么对充分大的就可用作为娈。迭代算法的一般步骤是:
1、给出初始猜测值,并置迭代步数
2、确定一个向量作为第步的迭代方向
3、用寻优的方法决定一个标量步长
4、检查停机规则是否满足,如果不满足,则将加1再从2开始重复;如果满足,则取为值

2.非线性最小二乘估计的定义和存在性定理

非线性模型响应的误差方程为:

残差平方和为:
根据等价观测理论,所有观测值都可以变换为独立观测值,可以采用同精度观测讨论。

---定义
非线性模型中参数的一个估计量,如果满足关系:


则称的一个非线性最小二乘估计,用表示。这个定义与线性模型最小二乘估计的定义是完全一致的,在几何意义上就是观测空间至解空间的距离最短,或者说是解轨迹上离观测值最近的点,L到的距离就是
此处输入图片的描述

上式定义了非线性最小二乘的估计量,而在参数空间是否存在这样的量?

定理 假设参数空间上的紧子集,关于在参数空间上连续,则必存在上的可测函数,使得:

由于上关于都是连续函数,又因为为紧子集,所以对于任意的,在参数空间上必存在极小值

3.非线性最小二乘估计的近似解法[1][2]

3.1.线性近似

当非线性模型的非线性强度较弱时,可以将非线性模型在处线性化,并用线性模型的求解理论来解算非线性模型式,得误差方程:


根据最小二乘原理可以解得:

于是参数的最小二乘估计量为:

当然还需要考虑线性近似所引起的模型误差对最小二乘估计量的影响,只有当其小于等于观测误差对参数估值的影响时可以忽略不计。

3.2.数值迭代解法

对于非线性强度很强的非线性模型,由于线性近似将产生大于观测误差的模型误差,所以一般采用迭代的方法求解。


由于是一常量,所以上式等价于目标函数为:

此问题转化为非线性无约束最优化问题。
因为的非线性函数,所以对上式求一阶偏导数,并令其为零,并不能得到的显式表达式,所以求不出的解析解,因此,只能设法寻找某一近似解使得:
成立,一般这个过程只有采用迭代的方法。


---常见的迭代方法有:

3.2.1 - 牛顿法

可以假设的极小值的一个近似值为,在附近将泰勒展开,取至二次项得:


式中:


称为处的矩阵

处的梯度方向。
由于的一个已知的近似值,所以式(16)只是的函数,为了求得使得式(16)成立的,将该式对求偏导,并令其为0,得:

非奇异时,由上式可以解得使式(16)成立的,即:

由假设知当充分小时,能够使得式(16)成立,但由于未知,故不能充分小,需不断地迭代,直至充分小,其迭代公式为:


上式就是牛顿迭代的基本公式,其终止迭代条件就是

由于是一个绝对值较大的数,而的各元素的绝对值都很小,因此,由于计算机有效数字的限制,以第一终止迭代条件作为迭代收敛条件的收敛速度要比第二终止迭代条件作为迭代收敛条件快。
牛顿法的迭代步骤:

  1. 选取初值,并且令
  2. 按式(18)计算梯度方向
  3. 计算矩阵
  4. 求解线性方程组式(22),得到
  5. 按式(24)计算新的近似值
  6. 计算目标函数值,若则转至2继续迭代。
  7. 终止迭代,输出,结束

总结:牛顿法虽然有很快的收敛速度,但是它总是局部收敛,而且对初值十分敏感。


3.2.2 - 信赖域法

综上,可以发现牛顿法的基本思想是用二次函数:


去逼近。只有当充分小时,才能很好的逼近
既然只有当充分小时,才能很好的逼近,那么可以对加限制,然后再限制条件下寻求的极小值,将无约束最优化问题转换为约束最优化问题:
目标函数:

约束条件:

式中,是一个随迭代而变化的正数。

约束条件限制了,使得不大于,这样总在一个给定的小区域内活动,这个区域是可信赖的,称该方法为信赖域法。
常数取决于的逼近程度:


越接近1,的逼近程度越好:

信赖域法的迭代步骤:

  1. 选取初值

  2. 按照式(17)和式(18)计算梯度方向和矩阵,若,则停止迭代

  3. 按式(20)计算,并检查是否满足约束条件,若不满足,则采取适当的方法对予以压缩,然后再区域内求使得

  4. 计算的新的近似值
  5. 按式(28)计算,并按式(29)确定
  6. 检查是否成立,若不成立,则继续迭代
  7. 终止迭代,输出,结束

    总结:信赖域法也与初值有关,但仍然是局部收敛,并不像想象的那样全局收敛。


3.2.3 - 拟牛顿法

拟牛顿法是在牛顿法的基础之上,用一个仅包含一阶偏导数信息的对称矩阵去逼近二阶偏导数矩阵(Hessian)矩阵,然后再按牛顿法予以迭代。其中有一种数值方法可以确定阵:


根据多元函数偏导数的定义:

令:


去掉极限后,就可以得到的近似矩阵:

用上式定义的对称矩阵能够较为准确地逼近,又只包含的一阶偏导数信息,不需要求二阶Hessian矩阵,有了之后,一切迭代均按照牛顿法进行,由于拟牛顿法一开始就要计算阵,所以计算前除了给定的初值之外,还必须给定的初值。这里可以这样确定:当给定之后,将减去一个很接近的的向量,则差值就是,即:

总结:拟牛顿法也与初值有关,仍然是局部收敛,只是相对于牛顿法而言降低的计算量但计算复杂度依旧很高。


3.2.4 - 最速下降法

综上三种方法,都需要计算的二阶偏导数矩阵,而最速下降法只假定在解附近具有二阶连续偏导数,且此二阶偏导数矩阵的行列式大于、等于0,并不涉及到具体的Hessian矩阵计算。
最速下降法的基本思想是基于这样的事实:目标函数在沿着处的梯度方向上数值增加最快。既然我们现在是要求目标函数的最小值,因此,若是在寻找的最小值点的过程中,采用的是沿着处的负梯度方向上寻找,势必使的数值下降最快,所以称按负梯度方向搜寻的方法为最速下降法,即:


式中:为实数,称步长;梯度方向仍按式(17)计算

目标函数:


处泰勒展开,取至二次项,但略去的二阶偏导数

式中:

为了确定满足条件的,将式(44)对求导数,令其为0,得:

最速下降法的迭代步骤如下:

  1. 选取初值
  2. 按照式(17)计算梯度方向,如果,则终止迭代
  3. 按照式(46)和式(47)计算矩阵
  4. 按照式(48)计算
  5. 按照式(36)计算新的近似值,并且计算
  6. 终止迭代,输出,结束

总结:一般来说,最速下降法对任意初值都能收敛,但收敛速度并不像该方法的名称那样是最速的,相反它是最慢的,这是因为最速下降法在接近最小值点时会产生拉锯现象。


3.2.5 - 高斯-牛顿法

前面一些方法都是求目标函数最小化的非线性最优化算法,与我们测量平差中已掌握的方法相差很多。因此,测量平差中的一些软件都不能直接应用。而高斯-牛顿法则不同,几乎可以完全不改变原测量平差程序。

测量平差:
由于测量仪器的精度不完善和人为因素及外界条件的影响,测量误差总是不可避免的。为了提高成果的质量,处理好这些测量中存在的误差问题,观测值的个数往往要多于确定未知量所必须观测的个数,也就是要进行多余观测。有了多余观测,势必在观测结果之间产生矛盾,测量平差的目的就在于消除这些矛盾而求得观测量的最可靠结果并评定测量成果的精度。测量平差采用的原理就是“最小二乘法”。

-
高斯-牛顿法的基本出发点就是在初值处对非线性模型进行线性近似,并按照传统的平差方法求出一次近似值,然后反复迭代,直到前后两次值相等,迭代步骤如下:
假设非线性模型存在一阶连续偏导数,且参数之间相互独立,则在近似值处线性化,得误差方程:


根据最小二乘原理,有:

求得之后,再以为近似值迭代,其迭代公式为:

终止迭代条件为:

高斯-牛顿法具有一定的合理性,因为若是线性模型,则有,,于是:

上式表明:若是线性模型,则由高斯-牛顿法从任意初值出发,经一次迭代就可以得到最小二乘估计的精确解。当非线性模型的非线性强度较弱时,高斯-牛顿法就是较好的方法

总结:虽然高斯-牛顿法有一定的合理性,但在具体执行时,可能会产生一些问题。首先是对初值的依赖性较大,当初值较差时,会出现迭代发散现象,使迭代无法进行下去,好在我们在实际计算时,总是用观测值算出,很接近,故一般可迭代收敛。


3.2.6 - 改进的高斯-牛顿法

高斯-牛顿法对初值的依赖性较强,当初值较差时,会出现迭代发散现象。为了克服这个缺点,需要对高斯-牛顿法进行下列改进:

定理 设的近似值,则一定不能达到最小,于是有:


,那么必存在,使时,有

-
此定理说明,当我们用高斯-牛顿法求出后,若适当选取,使:


则一定有:,这样就能保证逐步向的极小值靠近,避免迭代过程的波动性,从而保证得到收敛的非线性最小二乘估计。根据这个思想,可构成如下得迭代算法:


3.2.7 - 阻尼最小二乘法

高斯-牛顿法和改进的高斯-牛顿法有解的必要条件是矩阵列满秩,但在非线性秩亏自由网平差中,由于缺少基准,矩阵总是列降秩的。在这种情况下,高斯-牛顿法和改进的高斯-牛顿法都不能使用。另外,当非线性模型中存在复共线关系时,尽管矩阵列满秩,但的条件数很大,使得呈病态。这时候高斯-牛顿法和改进的高斯-牛顿法也无法使用。为了克服这个缺点,可以采用增大的主对角线元素的办法:


式中:为大于等于0的任意常数,称为阻尼因子。因此称上式迭代的算法为阻尼最小二乘法,又称Levenberg - Marquardt(LM)算法,后来又有学者Fletcher对之前的LM算法进行改进称LMF算法。显然引进阻尼因子后,矩阵对任何正数,总具有对称正定的性质,因为此时矩阵的所有特征值均为正。
如果在上式的基础上再引入步长因子,则:

至于的确定,对于非线性秩亏自由网平差问题,一般取:

然后根据来调整

适用于非线性秩亏自由网平差的阻尼最小二乘法的具体算法如下:
1.选取初值(此时),计算
2.将非线性模型在处线性化。
3.按一般间接平差组成法方程。若,则计算
4.按照式(59)计算
5.按照式(60)计算,并计算,若,则停止迭代。
6.按照式(62)计算。继续从2开始迭代
7.输出,,结束

4、平台应用

此处输入图片的描述
建立速度输入()速度输出()的数学模型:


因此,需要的辨识的模型可以为:

得到的仍为高阶系统模型,在系统速度处于1/20 ~ 1/5额定转速时机电一体化伺服系统可以近似用二阶模型近似:
此处输入图片的描述
因此可以建立输入输出降阶模型为:

记录输入量(给定目标速度)、输出量(实际瞬间转速,实际电机位置),可以通过辨识实际输出转速(物理量)与输入量(数字量)之间的输入输出模型进而获得实际输出电机位置(物理量)与输入量(数字量)之间的输入输出模型,即:


这里的为伺服器反馈信息时间差。

5.应用MATLAB工具箱辨识平台电机模型参数

什么是过程模型?
过程模型的结构是简单连续时间传递函数描述了动态线性系统中的一项或者多项元素:

5.1使用system identification app辨识过程模型[3]

1、在系统识别应用中,选择估值>过程模型打开过程模型对话框。
此处输入图片的描述
2、如果模型包含多个输入或多个输出,你可以指定是否估计相同的传递函数为所有输入 - 输出对,或各自具有不同的传递函数。选择输入和输出领域的输入和输出通道,字段只有当有多个输入或输出出现。
3、在模型传递函数区,可以使用下列选项指定模型的结构:

4、在Initial Guess区域,选择Auto-selected自动抉择来计算估计的初始参数值。在参数表中的Initial Guess则显示为Auto。如果没有较好的初始猜测值,自动工作要优于特设值。
此处输入图片的描述
5、如果我们大概知道参数的值,可以在initial Guess列中输入此值,估计算法就会使用该值作为我们的起始点。类似的,如果我们完全知道该参数值,就在initial Guess列中输入该值并勾选Known复选框来修正该值。如果我们知道该参数的可能值所在的范围,那么我们可以在相应的Bounds字段中输入此范围,使得算法的搜索范围缩小,加速算法估计。
6、在Disturbance Model列表,我们可以选择一个可用选项
此处输入图片的描述
7、在Focus列表,选择如何衡量不同频率下拟合的相对重要性
8、在初始状态列表中,指定算法如何处理初始状态。
9、在协方差列表中,如果希望算法计算参数不确定度,请选择估计。 这些不确定性的影响在图上显示为模型置信区域。如果要省略估计不确定度,请选择无。 跳过不确定性计算可能会减少复杂模型和大型数据集的计算时间。
10、在“Model Name”字段中,编辑模型的名称或保留默认值。模型的名称在模型板中应该是唯一的。此处输入图片的描述
11、要查看估计进度,请选中显示进度“Display progress”复选框。这将打开一个进度查看器窗口,其中报告估计进度。
12、点击“Regularization”正则化获得模型参数的正则化估计。在“正则化选项”对话框中指定正则化常量。
13、单击“Estimate”估计将此模型添加到系统识别应用程序中的模型板。
14、要在当前迭代完成后停止搜索并保存结果,请单击停止迭代“Stop Iterations”。要从当前模型继续迭代,请单击“Continue”继续按钮将当前参数值分配为下一次搜索的初始猜测。
得到模型参数估计后:
1、通过在“系统识别”应用程序的“Model Views模型视图”区域中选择相应的复选框来验证模型。
2、通过单击Value —> Initial Guess (值->初始猜测)按钮来优化模型,将当前参数值分配为下一次搜索的初始猜测,编辑名称字段,然后单击估计。
3、将模型导出到MATLAB工作区,以进一步分析,将其拖动到系统标识应用程序中的工作区矩形。

5.2使用system identification command line辨识过程模型

  1. clear all;close all;
  2. N=1000; %设置试验数据长度
  3. A=[1,-1.5, 0.7]; B=[0,1,0.5]; C=[1,0.5];D=[1,0.5]; %模型参数
  4. Model=idpoly(A,B); %理想系统模型
  5. % figure(1);step(Model); axis([0 100 0 10]);grid; %绘制阶跃响应曲线
  6. %产生输入输出数据
  7. Model_Wnoise=idpoly(A, B ,1); %模型中加入白噪声
  8. U=iddata([],idinput(N,'prbs')); %伪随机序列
  9. E=iddata([],idinput(N,'rgs')); %白噪声序列
  10. Y=sim(Model_Wnoise, [U,E]); %产生输出数据
  11. Model_Noise1=idpoly(A,B,C); %有色噪声模型 1
  12. Y1=sim(Model_Noise1, [U,E]);
  13. Model_Noise2=idpoly(A,B,1,D); %有色噪声模型 2
  14. Y2=sim(Model_Noise2, [U,E]);
  15. data=iddata(Y,U); %输入输出数据组
  16. opt = procestOptions;
  17. opt.Display='on';
  18. opt.DisturbanceModel='ARMA2';
  19. opt.SearchMethod='lm';
  20. %搜索方式有'lm','au','gr','gn'
  21. sys=procest(data,'p1d',opt);
  22. compare(data,sys);

该工具箱过程模型辨识模块中可以采用3种搜索方式:
‘lm’---Levenberg-Marquardt line search
‘gr’---Gradient-descent line search
‘gn’---Gauss-Netwon line search
‘au’---Nonlinear least squares with automatically chosen line search method




[1] 王新洲、非线性模型参数估计理论与应用武汉武汉大学出版社,
[2] 唐利民. 非线性最小二乘的不适定性及算法研究[D]. 中南大学, 2011.
[3] Ljung L. System Identification Toolbox User''s Guide[J]. Journal of Aircraft, 2002.
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注