the Levenberg–Marquardt algorithm (LMA)[1]provides a numerical
solution to the problem of minimizing a function, generally nonlinear, over a space of parameters of the function. These minimization problems arise especially in least squares curve fitting and nonlinear programming.
The LMA interpolates between the Gauss–Newton algorithm (GNA就是最小二乘) and the method of gradient descent.The LMA is more robust than the GNA, which means that in many cases it finds a solution even if it starts very far off the final minimum. For well-behaved functions and reasonable starting parameters, the LMA tends to be a bit slower than the GNA. LMA can also be viewed as Gauss–Newton using a trust region approach.
However, the LMA finds only a local minimum, not a global minimum.这和最小二乘一样。这是所有线性反演的通病。
The problem
The primary application of the Levenberg–Marquardt algorithm is in the least squares curve fitting problem: given a set of m empirical datum pairs ofindependent and dependent variables, (xi, yi), optimize the parameters β of the model curve f(x,β) so that the sum of the squares of the deviations
becomes minimal.
The solution
Like other numeric minimization algorithms, the Levenberg–Marquardt algorithm is an iterative procedure. To start a minimization, the user has to provide an initial guess for the parameter vector, β. In cases with only one minimum, an uninformed standard guess like βT=(1,1,...,1)
will work fine; in cases with multiple minima, the algorithm converges only if the initial guess is already somewhat close to the final solution. In each iteration step, the parameter vector,β, is replaced by a new estimate,β+δ. To determineδ, the functionsapproximated by their linearizations
where
are
is the gradient (row-vector in this case) of f with respect to β.
At its minimum, the sum of squares, S(β), the gradient of S with respect to δ will be zero. The above first-order approximation of gives
.
Or in vector notation,
.
Taking the derivative with respect to δ and setting the result to zero gives:
where J is the Jacobian matrixwhoseithrow equalsJi,and where and are vectors with ith component
and yi, respectively. This is a set of
linear equations which can be solved forδ. 上面是传统的最小二乘法的线性方程。
Levenberg's contribution is to replace this equation by a \"damped version\
where I is the identity matrix, giving as the increment, δ, to the estimated parameter vector, β.
The (non-negative) damping factor, λ, is adjusted at each iteration. If reduction of S is rapid, a smaller value can be used, bringing the algorithm closer to the Gauss–Newton algorithm, whereas if an iteration gives insufficient reduction in the residual, λ can be increased, giving a step closer to the gradient descent direction. Note that the gradient of S with respect to β equals
. Therefore, for large
values of λ, the step will be taken approximately in the direction of the gradient.If either the length of the calculated step, δ, or the reduction of sum of squares from the latest parameter vector, β + δ, fall below predefined limits, iteration stops and the last parameter vector, β, is considered to be the solution.
Levenberg's algorithm has the disadvantagethat if the value of damping factor, λ, is large,JTJ + λI is not used at all. Marquardt provided the insight that we can scale each component of the gradient according to the curvature so that there is larger movement along the directions where the gradient is smaller. This avoids slow convergence in the direction of small gradient. Therefore, Marquardt replaced the identity matrix,I, with the diagonal matrix consisting of the diagonal elements ofJTJ, resulting in the Levenberg–Marquardt algorithm:
.
Choice of damping parameter
Various more-or-less heuristic arguments have been put forward for the best choice for the damping parameter λ. Theoretical arguments exist showing why some of these choices guaranteed local convergence of the algorithm; however these choices can make the global convergence of the algorithm suffer from the undesirable properties of steepest-descent, in particular very slow convergence close to the optimum.
The absolute values of any choice depends on how well-scaled the initial
problem is. Marquardt recommended starting with a value λ0 and afactor ν>1. Initially setting λ=λ0 and computing the residual sum of squares S(β) after one step from the starting point with the damping factor of λ=λ0 and secondly with λ0/ν. If both of these are worse than the initial point then the damping is increased by successive multiplication by ν until a better point is found with a new damping factor of λ0νk for some k.
If use of the damping factor λ/ν results in a reduction in squared residual then this is taken as the new value of λ (and the new optimum location is taken as that obtained with this damping factor) and the process continues; if using λ/ν resulted in a worse residual, but using λ resulted in a better residual then λ is left unchanged and the new optimum is taken as the value obtained with λ as damping factor.
Example
In this example we try to fit the function y = acos(bX) + bsin(aX) using the Levenberg–Marquardt algorithm implemented in GNU Octave as the leasqr function.The 3 graphs Fig 1,2,3 show progressively better fitting for the parameters a=100, b=102 used in the initial curve. Only when the parameters in Fig 3 are chosen closest to the original, are the curves fitting exactly. This equation isan example of very sensitive initial conditions for the Levenberg–Marquardt algorithm. One reason for this sensitivity is the existence of multiple minima — the function cos(βx) has minima at parameter value
阻尼最小二乘法(即Levenberg-Marquarat算法,是Gauss-Newton算法的一种修正法。)算法描述:
1、选取β∈(0,1),初始参数μ0,增长因子V>1; 2、给定初始点X0,置K=0;
3、计算Fk=F(Xk),Sk=S(Xk)=Fk‘Fk;
and
4、计算Ak=DF(Xk),Qk=Ak’Ak; 5、计算gk=AkFk;
6、解方程(Qk+μk*I)pk=-gk;
7、计算X =Xk+pk(μk),Fk+1=F(Xk+1),S =FF 8、执行H-收敛准则,满足则输出X ,S
9、检验S 因篇幅问题不能全部显示,请点此查看更多更全内容