L~M方法:
L~M(Levenberg-Marquardt)方法有些让人摸不清头脑。玉米觉得L~M让人困扰的主要原因有两点:一是L~M从何而来、二是L~M怎么样用?因为玉米也不是研究最优化理论的,所以玉米在这里用较为通俗的观点,为大家分析一下L~M方法。在数学上的不严谨之处,期望大家海涵。
一、L~M从何而来
首先,L~M方法首先是一种非线性规划方法;其次其主要用于无约束的多维非线性规划问题;最后,它是一阶牛顿法的一种改进,改进的目的是为了更快的收敛。
既然如此,那么让我们先来了解一下L~M方法的“前辈”一阶牛顿法吧。对一阶牛顿法的理解会帮助我们了解L~M方法的总体思路。
对于无约束的多维非线性规划问题,起码我们需要一个可以令人接受的参数估计的初始解,我们设其为:Xk。(举个例子,这就是张正友标定法中通过纯粹的几何推导得出的摄像机参数)。在Xk的基础上,我们去寻找比Xk更“靠谱”的估计值。既然我们已经认为Xk可以令人接受,那么更好更精确的估计值应该在Xk的附近,在距离Xk长度为Δk的地方。那么,现在我们用一点点高等数学的知识:泰勒展开式。对于一阶牛顿法,我们用一阶泰勒展式逼近Xk附近点的f(Xk+Δk)估计值。(这里提到的量都是矩阵形式哦比如,在张正友标定法中f(Xk+Δk)由u和v组成)如下
假设ε=Xk+1-Xk在某时以变化的缓慢到我们认为算法以收敛。我们称ε为终止条件。
那么,我们就这样迭代下去,总会得到符合我们预期的Xk+1。
以上就是一阶牛顿法,说白了就是一个不断向着有利方向迭代的过程。
L~M方法是在一阶牛顿法基础上的改进。为加快收敛,L~M把上面的正规化方程改成了增量正规化方程。如下:
λ就是增量方程中所谓的增量。
L~M方法中,取增量的规则如下:
最初,设λ=0.0001,如果增量方程的解Δk导致ek减小,我们就接受这个λ,并在下一次迭代中使用λ/10代换λ。如果λ值对应的增量方程的解Δk导致ek增大,我们就舍弃这个λ,并将其代换为10λ重解增量方程。循环往复直到ek下降为止。λk+1=10λk
L~M也是迭代循环,直到总会得到符合我们预期的Xk+1为止。
以上就是L~M方法的原理与出处。大家一定觉得昏昏欲睡了。那么下一部分,应该是大家喜闻乐见的。玉米,将L~M算法的过程总结成算法流程图,与大家分享。||Δk||<ε
二、L~M这样用:
该流程图就是L-M算法的算法流程。玉米就不多说什么了,流程图更清晰一些。
玉米才疏学浅,文章中如有纰漏,请大家批评指正!