Levenberg-Marquardt算法

LM算法结合了最速下降法和Gauss-Newton法,通过调节阻尼项实现自适应迭代求解最小二乘问题。在远离最优解时,算法保证下降但速度较慢;接近最优解时,快速收敛。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LM算法是一种可以用于求解最小二乘问题的迭代算法.它可以看成是最速下降法和Gauss-Newton法的结合(通过调节阻尼μ\muμ切换).当当前解距离最优解较远时,算法更接近最速下降法:慢却保证下降;当当前解接近最优解,算法接近GN,快速收敛.
fff为将参数向量p∈Rmp\in\Bbb R^mpRm映射为估计观测向量x^=f(P),x^∈Rn\hat{x}=f(P),\hat{x}\in\Bbb R^nx^=f(P),x^Rn的函数.
输入: 初始的估计量P0P_0P0,观测向量xxx
寻找最优参数P+P^+P+
P+=argmin⁡pϵTϵ,ϵ=x−x^,x^=f(P)P^+=arg\min_{p} \epsilon^T\epsilon,\epsilon=x-\hat{x},\hat{x}=f(P)P+=argpminϵTϵ,ϵ=xx^,x^=f(P)在邻域泰勒展开f(P+δP)≈f(P)+JδP f(P+\delta_P)\approx f(P)+J\delta_Pf(P+δP)f(P)+JδP其中JJJ是雅克比矩阵∂f(P)∂P\frac{\partial f(P)}{\partial P}Pf(P).
寻找迭代每一步的步长δP\delta_PδP使得最小化∣∣x−f(P+δP)∣∣≈∣∣x−f(P)−JδP∣∣=∣∣ϵ−JδP∣∣||x-f(P+\delta_P)||\approx||x-f(P)-J\delta_P||=||\epsilon-J\delta_P||xf(P+δP)xf(P)JδP=ϵJδP,可以证明最小二乘的最优解存在于当JδP−ϵJ\delta_P-\epsilonJδPϵ正交于JJJ(展开使导数为零).
JT(JδP−ϵ)=0J^T(J\delta_P-\epsilon)=0JT(JδPϵ)=0,得到:
JTJδP=JTϵJ^TJ\delta_P=J^T\epsilonJTJδP=JTϵ此即为GN方法的增量正规方程.
LM在此基础上引入了阻尼项μ\muμ,增量正规方程变为(JTJ+μI)δP=JTϵ(J^TJ+\mu I)\delta_P=J^T\epsilon(JTJ+μI)δP=JTϵ,若当前求得的δP\delta_PδP使得误差减小,则接受该更新且减小阻尼项μ\muμ;反之,若当前增量使得函数值增大,则增大阻尼项,重新求解正规方程直到一个能使函数值减小的增量被求得.
LM算法每一步都将调整阻尼项μ\muμ以确保误差下降.当μ\muμ很大时,算法接近最速下降法,并且,步长会变小(1μ\frac{1}{\mu}μ1),另外,还加强了JTJJ^TJJTJ的正定性;反之,接近GN.综上,LM是一种自适应的算法,当当前解远离最优解时慢速但下降,在最优解邻域快速收敛.
终止条件:

  1. 梯度大小,如JTϵJ^T\epsilonJTϵ低于阈值ε1\varepsilon_1ε1
  2. 步长的变化量δP\delta_PδP低于阈值ε2\varepsilon_2ε2
  3. 达到最大迭代次数kmaxk_{max}kmax

如果观测向量xxx的协方差矩阵Σx\Sigma_xΣx可以获得,问题修正为JTΣx−1JδP=JTΣX−1ϵ J^T\Sigma_x^{-1}J\delta_P=J^T\Sigma_X^{-1}\epsilonJTΣx1JδP=JTΣX1ϵ该式为加权正规方程.

算法

kmax=100;
eta1=eta2=1e-15;
tau=1e-3;
k:=0;v:=2;p:=p0;
A:=J.T*J;epsilon:=x-f(p);g:=J.T*epsilon;
stop:=(max(g)<eta1);
mu=tau*max(diag(A));
while ( !stop ) and ( k<kmax ):
	k:=k+1;
	while ( !stop ) and ( rho<0 ):
		Solve (A+mu*I)*delta=g;
		if(delta.norm()<=eta2*p.norm())
			stop:=true;
		else
			pnew:=p+delta;
			rho:=(epsilon.norm()-(x-f(pnew)).norm())/(delta.T*(mu*delta+g));
			if rho>0
				p:=pnew;
				A:=J.T*J;epsilon:=x-f(p);g:=J.T*epsilon;
				stop:=(max(g)<eta1);
				mu:=mu*max(1/3,1-(2*rho-1)^3);v:=2;
			else
				mu:=mu*v;v:=2*v;
			endif
		endif
	endwhile
endwhile
LM算法,全称为Levenberg-Marquard算法,它可用于解决非线性最小二乘问题,多用于曲线拟合等场合。 LM算法的实现并不算难,它的关键是用模型函数 f 对待估参数向量 p 在其邻域内做线性近似,忽略掉二阶以上的导数项,从而转化为线性最小二乘问题,它具有收敛速度快等优点。LM算法属于一种“信赖域法”——所谓的信赖域法,此处稍微解释一下:在最优化算法中,都是要求一个函数的极小值,每一步迭代中,都要求目标函数值是下降的,而信赖域法,顾名思义,就是从初始点开始,先假设一个可以信赖的最大位移 s ,然后在以当前点为中心,以 s 为半径的区域内,通过寻找目标函数的一个近似函数(二次的)的最优点,来求解得到真正的位移。在得到了位移之后,再计算目标函数值,如果其使目标函数值的下降满足了一定条件,那么就说明这个位移是可靠的,则继续按此规则迭代计算下去;如果其不能使目标函数值的下降满足一定的条件,则应减小信赖域的范围,再重新求解。 事实上,你从所有可以找到的资料里看到的LM算法的说明,都可以找到类似于“如果目标函数值增大,则调整某系数再继续求解;如果目标函数值减小,则调整某系数再继续求解”的迭代过程,这种过程与上面所说的信赖域法是非常相似的,所以说LM算法是一种信赖域法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值