最小二乘问题使函数最小化f(x)是平方和。
|
(7) |
这类问题在实际应用中大量出现,特别是那些涉及模型函数与数据拟合的应用,如非线性参数估计。这种问题类型也出现在控制系统中,其中的目标是输出y(x t)来跟踪连续的模型轨迹φ(t)向量x和标量t.这个问题可以表示为
|
(8) |
在哪里y(x t),φ(t)为标量函数。
将积分离散以获得近似
|
(9) |
在哪里t<年代乌兰巴托>我是等间距的。在这个问题中,向量F(x)是
在这类问题中,残差<年代pan class="inlineequation">∥F(x)∥在最佳情况下可能很小,因为一般的做法是设置现实可行的目标轨迹。尽管你可以最小化函数方程7使用一般的,无约束的极小化技术,如无约束优化基础,通常可以利用问题的某些特性来提高求解过程的迭代效率。的梯度和Hessian矩阵方程7有一个特殊的结构。
表示的米——- - - - - -n雅可比矩阵的F(x),J(x),梯度向量f(x),G(x的Hessian矩阵f(x),H(x)和各自的Hessian矩阵F<年代乌兰巴托>我(x),D<年代乌兰巴托>我(x),
|
(10) |
在哪里
矩阵的一个性质问(x)就是那当余<年代pan class="inlineequation">∥F(x)∥趋近于零x<年代乌兰巴托>k接近解问(x)也趋于零。所以,当<年代pan class="inlineequation">∥F(x)∥在求解时较小,一种有效的方法是利用高斯-牛顿方向作为优化程序的基础。
在每个主要迭代中k,高斯-牛顿法得到一个搜索方向d<年代乌兰巴托>k这是线性最小二乘问题的一个解
|
(11) |
该方法推导出的方向等效于牛顿方向,当项<年代pan class="inlineequation">问(x) = 0.该算法可以使用搜索方向d<年代乌兰巴托>k作为行搜索策略的一部分,以确保功能f(x)在每次迭代时减小。
高斯-牛顿方法在二阶项时经常遇到问题问(x)是不可忽视的。Levenberg-Marquardt方法克服了这个问题。
Levenberg-Marquardt方法(见[25]和[27])使用的搜索方向是线性方程组的一个解
|
(12) |
或者是方程
|
(13) |
在标量λ<年代乌兰巴托>k控件的大小和方向d<年代乌兰巴托>k,诊断接头(A)表示中对角项的矩阵一个.设置选项ScaleProblem来“没有”选择方程12,或一组ScaleProblem来的雅可比矩阵选择方程13.
设置参数的初始值λ0使用InitDamping选择。偶尔,0.01此选项的默认值可能不合适。如果你发现Levenberg-Marquardt算法的初始进展不大,那就试试设置InitDamping更改为与默认值不同的值,例如1 e2.
当λ<年代乌兰巴托>k方向是零吗d<年代乌兰巴托>k与高斯-牛顿法相同。作为λ<年代乌兰巴托>k趋于无穷,d<年代乌兰巴托>k趋于最陡下降方向,幅度趋于零。因此,对于一些足够大的λ<年代乌兰巴托>k,这个术语<年代pan class="inlineequation">F(x<年代乌兰巴托>k+d<年代乌兰巴托>k) <F(x<年代乌兰巴托>k)适用。因此,您可以控制术语λ<年代乌兰巴托>k以保证算法即使遇到二阶项也能下降,这限制了高斯-牛顿法的效率。当步骤成功时(给出一个较低的函数值),算法设置λk+1=λ<年代乌兰巴托>k/ 10。当步骤不成功时,算法设置λk+1=λ<年代乌兰巴托>k* 10。
在内部,Levenberg-Marquardt算法使用了最优容限(停止标准)1的军医乘以功能容忍度。
因此,Levenberg-Marquardt方法使用了一个介于高斯-牛顿方向和最陡下降方向之间的搜索方向。
Levenberg-Marquardt方法的另一个优点是当雅可比矩阵Jrank-deficient。在这种情况下,高斯-牛顿方法可能会有数值问题,因为极小化问题方程11是不适定的。相反,Levenberg-Marquardt方法在每次迭代中都有满秩,因此避免了这些问题。
下图展示了最小化Rosenbrock函数时Levenberg-Marquardt方法的迭代过程,Rosenbrock函数是一个非常困难的最小化问题,它采用最小二乘形式。
有关此图的更完整描述,包括生成迭代点的脚本,请参见香蕉函数最小化.
Levenberg-Marquardt方法中的约束条件
当问题包含约束条件时,lsqcurvefit和lsqnonlin修改Levenberg-Marquardt迭代。如果是一个迭代点x在边界之外,算法将步长投影到最近的可行点上。换句话说,与P定义为投影算子将不可行点投影到可行区域,算法对所提出的点进行修改x来P