L-M方法全称Levenberg-Marquardt方法,是非线性回归中回归参数最小二乘估计的一种估计方法。由D.W.Marquardt于1963年提出,他是根据1944年K.Levenbevg的一篇论文发展的。这种方法是把最速下降法和线性化方法(泰勒级数)加以综合的一种方法。因为最速下降法适用于迭代的开始阶段参数估计值远离最优值的情况,而线性化方法,即高斯牛顿法适用于迭代的后期,参数估计值接近最优值的范围内。两种方法结合起来可以较快地找到最优值1。
基本介绍Gauss-Newton算法(1809)是一个古老的处理非线性最小二乘问题的方法,该方法在迭代过程中要求矩阵 列满秩;而这一条件限制了它的应用。为克服这个困难,Levenberg(1944)提出了一个新的方法,但未受到重视。后来,Marquardt(1963) 又重新提出,并在理论上进行了探讨,得到了Levenberg-Marquardt方法,简称L-M方法。再后来,Fletcher(1971) 对其实现策略进行了改进,得到了Levenberg- Marquardt-Fletcher方法。实际上,若将L-M方法与信赖域方法结合,效果可能更好2。
L-M方法通过求解下述优化模型来获取搜索方向:
其中,μk> 0,由最优性条件知
满足
即
实际上,利用约束优化问题的最优性条件,L-M方法可以看作是Gause-Newton方法受信赖域方法的启发产生的,因为dk可视为下述约束优化问题的最优解
这里,
。
下面讨论dk的下降性质,若,则对任意,
所以dk是f(x) 在
点的下降方向。引入线搜索,我们便得到非线性最小二乘问题的L-M方法:
由于dk的取值与
有关,所以从严格意义上讲,
应记为
。
L-M方法与Gauss-Newton方法的区别在于前者的搜索方向里面引入了参数μk2。
相关结论根据线性代数的知识,矩阵对向量
的作用无非是改变后者的长度和方向,为此,对de(1k),我们有下述结论。
性质1 关于μ> 0单调不增,且当μ→∞时,
→0。
(文中性质的证明请见参考书)
从几何直观来看,当矩阵接近奇异时,由Gauss-Newton算法得到的搜索方向的模
相当地大,而在L-M方法中,通过引入正参数μ就避免了这种情形出现。
下面看参数μ对搜索方向角度的影响,
性质2 与
的夹角θ关于μ> 0单调不增。
根据性质1和2,当μ=0时,就是Gauss-Newton方向
。当μ> 0逐渐增大时,
的长度逐渐缩短,方向则逐渐偏向最速下降方向,可以设想,当参数μ充分大时,
的方向与目标函数的负梯度方向一致,不但如此,下面的结果表明,我们引入参数μk可以使得搜索方向的求解更加趋于稳定,从而我们有理由相信L-M方法的数值效果应该比Gauss-Newon方法好一些。
性质3的条件数关于μ单调不增。
基于以上讨论,在具体的算法中,我们采用类似于调整信赖域半径的策略来调整参数μ,这就得到Levenberg-Marquardt-Fletcher方法2。
应用范围Levenberg-Marquardt算法是最优化算法中的一种。最优化是寻找使得函数值最小的参数向量。它的应用领域非常广泛,如:经济学、管理优化、网络分析 、最优设计、机械或电子设计等等。
根据求导数的方法,可分为2大类。第一类,若f具有解析函数形式,知道x后求导数速度快。第二类,使用数值差分来求导数。根据使用模型不同,分为非约束最优化、约束最优化、最小二乘最优化。
Levenberg-Marquardt算法是使用最广泛的非线性最小二乘算法,中文为列文伯格-马夸尔特法。它是利用梯度求最大(小)值的算法,形象的说,属于“爬山”法的一种。它同时具有梯度法和牛顿法的优点。当λ很小时,步长等于牛顿法步长,当λ很大时,步长约等于梯度下降法的步长。图1显示了算法从起点,根据函数梯度信息,不断爬升直到最高点(最大值)的迭代过程。共进行了12步。(备注:图1中绿色线条为迭代过程)。
LM算法的实现并不算难,它的关键是用模型函数 f 对待估参数向量p在其领域内做线性近似,忽略掉二阶以上的导数项,从而转化为线性最小二乘问题,它具有收敛速度快等优点。LM算法属于一种“信赖域法”,所谓的信赖域法,即是:在最优化算法中,都是要求一个函数的极小值,每一步迭代中,都要求目标函数值是下降的,而信赖域法,顾名思义,就是从初始点开始,先假设一个可以信赖的最大位移s,然后再以当前点为中心,以s为半径的区域内,通过寻找目标函数的一个近似函数(二次的)的最优点,来求解得到真正的位移。在得到了位移之后,再计算目标函数值,如果其使目标函数值的下降满足了一定条件,那么就说明这个位移是可靠的,则继续按此规则迭代计算下去;如果其不能使目标函数值的下降满足一定的条件,则应减小信赖域的范围,再重新求解。
LM算法需要对每一个待估参数求偏导,所以,如果你的拟合函数 f 非常复杂,或者待估参数相当地多,那么可能不适合使用LM算法,而可以选择Powell算法(Powell算法不需要求导)。
本词条内容贡献者为:
杜强 - 高级工程师 - 中国科学院工程热物理研究所