非线性优化整理-3.Levenberg-Marquardt法(LM法)

    • 基础
    • LM法
    • mu的计算
    • 收敛条件
    • 算法流程
    • 结论
    • 信赖域法

注意到关于LM法网上大部份资料内容比较混乱,主要是因为LM法是可以从两个不同的视角看的。一种是看作介于高斯牛顿和梯度下降法之间的一种算法,另一种是作为一种信赖域的算法来看,而两种视角下虽然最后结论比较相似,但公式推导的思路差别会比较大。
从历史上讲,LM法最初作为高斯牛顿法的改良而被提出,随后才有了信赖域法上应用。这里先从高斯牛顿法/梯度下降法混合的视角下来进行推导。

基础

先来回顾一下高斯牛顿法的几个关键点(可参照非线性优化整理-2.高斯-牛顿法)

高斯牛顿法的迭代公式为

xn+1=xn[JTfJf]1JTff(xn) x n + 1 = x n − [ J f T J f ] − 1 J f T f ( x n )

这是根据目标函数 F(x) F ( x ) 按以下二阶近似所得到的:
F(x+h)F(x)+F(x)h+12hTHFhF(x)+JTffh+12hTJTfJfh F ( x + h ) ≈ F ( x ) + ∇ F ( x ) h + 1 2 h T H F h ≈ F ( x ) + J f T f h + 1 2 h T J f T J f h

我们可以定义以该种方式近似 F(x+h) F ( x + h ) 的结果为 L(h) L ( h )
L(h)F(x)+JTffh+12hTJTfJfh L ( h ) ≡ F ( x ) + J f T f h + 1 2 h T J f T J f h

LM法

高斯牛顿法具有收敛快速但对初始点位置敏感的特点,梯度下降法则相反。
而LM法,也称作阻尼最小二乘法(Damped Least-squares),则结合了二者的特点,引入了阻尼因子 μ μ 来调节算法的特性。
原始版LM法的迭代公式为

xn+1=xn[JTfJf+μI]1JTff(xn) x n + 1 = x n − [ J f T J f + μ I ] − 1 J f T f ( x n )
或写作
[JTfJf+μI]h=JTff(xn) [ J f T J f + μ I ] h = − J f T f ( x n )

该因子的作用有

  • μ>0 μ > 0 能保证系数矩阵正定,从而确保迭代的下降方向
  • μ μ 很大时,退化为梯度下降法:
    xn+1=xn1μJTff(xn) x n + 1 = x n − 1 μ J f T f ( x n )
  • μ μ 很小时,退化为高斯牛顿法,从而使得接近解时快速收敛。

上面的版本中,当 μ μ 很大时矩阵 JTfJf J f T J f 几乎没有使用。而 JTfJf J f T J f 来自于反应梯度的Hessian矩阵的近似。我们可以利用这一特性,在梯度较小即较为平坦的方向让迭代进行较大的移动。这就是后来Marquardt提出的改进版LM法,将单位矩阵替换为Jacobian矩阵二乘的对角阵

xn+1=xn[JTfJf+μdiag[H]]1JTff(xn) x n + 1 = x n − [ J f T J f + μ d i a g [ H ] ] − 1 J f T f ( x n )

μ μ 的计算

μ μ 初始值 μ0 μ 0 的选取,应该与 J(x0)TJ(x0) J ( x 0 ) T J ( x 0 ) 矩阵的元素个数有关,例如

μ0=τmaxi{a(0)ii} μ 0 = τ ∗ m a x i { a i i ( 0 ) }

μ μ 的更新可以由系数 ϱ ϱ 来控制,这里
ϱ=F(x)F(x+h)L(0)L(h) ϱ = F ( x ) − F ( x + h ) L ( 0 ) − L ( h )

分子为目标函数在步长 h h 下的实际变化,分母为目标函数二阶近似的变化
L(0)L(h)=(F(x))(F(x)+hTJTf+12hTJTJh)=hTJTf12hTJTJh L ( 0 ) − L ( h ) = ( F ( x ) ) − ( F ( x ) + h T J T f + 1 2 h T J T J h ) = − h T J T f − 1 2 h T J T J h
可以看出
- ϱ ϱ 越大,表明 L L F F 的近似效果越好,所以可以缩小 μ μ 以使得LM法接近高斯牛顿法
- 相反, ϱ ϱ 越小,表明 L L 的近似越差,所以应该增大μ μ 以使得迭代公式接近梯度下降法并减少步长。

收敛条件

1.g过小
2.x的变化过小
3.达到最大迭代次数

算法流程

可以总结经典LM算法的迭代流程为

  1. 初始化参数
    k=0;v=2;x=x0;A=JTJ;g=JTf; k = 0 ; v = 2 ; x = x 0 ; A = J T J ; g = J T f ;
  2. 根据迭代公式 (A+μI)h=g ( A + μ I ) h = − g ,求解 h h
  3. if h<ϵ2(||x||+ϵ2) h < ϵ 2 ( | | x | | + ϵ 2 ) then 结束循环
  4. 计算
    xnew=x+h x n e w = x + h
    ϱ=F(x)F(xnew)L(0)L(h) ϱ = F ( x ) − F ( x n e w ) L ( 0 ) − L ( h )
  5. if ϱ>0 ϱ > 0 then
    x=xnew x = x n e w
    A=JTJ;g=JTf; A = J T J ; g = J T f ;
    if gϵ1 g ≤ ϵ 1 then 结束循环
    μ=μmax{13,1(2ϱ1)3};v=2 μ = μ ∗ m a x { 1 3 , 1 − ( 2 ϱ − 1 ) 3 } ; v = 2
  6. if ϱ0 ϱ ≤ 0 then μ=μv;v=2v μ = μ ∗ v ; v = 2 ∗ v
  7. goto 2

μ μ 的迭代策略最初在Marquardt(1963)中为

if(ϱ<0.25)μ=2μelseif(ϱ>0.75)μ=μ/3 i f ( ϱ < 0.25 ) μ = 2 ∗ μ e l s e i f ( ϱ > 0.75 ) μ = μ / 3
在阈值0.25和0.75的不连续变化会导致实际使用中的收敛减慢。
后来有了上面流程中所用的更为有效的Nielsen(1999)策略
ifϱ>0μ=μmax{13,1(2ϱ1)3}elseμ=μv;v=2 i f ϱ > 0 μ = μ ∗ m a x { 1 3 , 1 − ( 2 ϱ − 1 ) 3 } e l s e μ = μ ∗ v ; v = 2

结论

  • LM法是一种非常高效的迭代算法,能适用于大多数的case
  • 该算法的许多变量决定了迭代的效率和结果的收敛性,而这些参数的理想值往往依目标函数不同而不同
  • 因为存在矩阵求逆这一运算,所以对于大型数据求解需要用一些特殊技巧。

信赖域法

这里再补充一下信頼域法。
求解非线性优化的方法可以主要分为线性搜索和信赖域法(Trust Region Method)。
线性搜索核心思想是先确定搜索方向,然后确定步长进行迭代
信赖域法核心思想则是先确定最大距离,再确定方向。具体为每次迭代都会给出一个半径为 Δ Δ 的信赖域使得模型在该信頼域内足够精确。在该领域内求解问题得到一个步长 h h ,接着通过某一评价标准判断该步长的好坏来决定是否要接受该步长。如果接受则更新当前位置,否则则当前位置不变。而新信赖域的半径大小则依照判断预测的好坏,来增大或减小。
信赖域法的基本流程如下

  1. 设定初始点x x 和信赖域半径 μ μ

    • 构造如下子问题求解
      argminh12||J(x)h+F(x)||2 a r g m i n h 1 2 | | J ( x ) h + F ( x ) | | 2
      并且
      ||D(x)h||2μ | | D ( x ) h | | 2 ≤ μ
    • ϱ=||F(x+h)||2||F(x)||2||J(x)h+F(x)||2||F(x)||2 ϱ = | | F ( x + h ) | | 2 − | | F ( x ) | | 2 | | J ( x ) h + F ( x ) | | 2 − | | F ( x ) | | 2
    • if ϱ>ϵ ϱ > ϵ then
      x=x+h x = x + h
    • if ϱ>η1 ϱ > η 1 then
      μ=2μ μ = 2 μ
    • else if ϱ<η2 ϱ < η 2 then
      μ=0.5μ μ = 0.5 μ
    • goto 2
    • 在该流程当中,我们通过 ϱ ϱ 来表征步长 h h 对下降预测的好坏,越接近1表明模型与目标函数的逼近程度越高。所以采取了如 4- 6的策略,即(1)ϱ ϱ 接近1则增大信赖域半径 μ μ (2) ϱ ϱ 介于0和1之间则 μ μ 保持不变(3) ϱ ϱ 接近0则缩小 μ μ
      μ μ 也可以看作是信赖域法当中的信赖域半径,LM法可以说是采用了信赖域法的高斯牛顿法。

      一些参考链接

      1. The Levenberg-Marquardt method for nonlinear least squares curve-fitting problems
      2. The Levenberg-Marquardt Algorithm
      3. Methods for Non-linear Least Squares Problems

你可能感兴趣的:(算法,boksic的非线性优化专题,非线性优化,LM,LM法)