非线性最小二乘问题的数值方法 —— 从高斯-牛顿法到列文伯格-马夸尔特法 (I)

Title: 非线性最小二乘问题的数值方法 —— 从高斯-牛顿法到列文伯格-马夸尔特法 (I)

文章目录

  • 前言
  • I. 从高斯-牛顿法
  • II. 到阻尼高斯-牛顿法
  • III. 再到列文伯格-马夸尔特法
    • 1. 列文伯格-马夸尔特法的由来
    • 2. 列文伯格-马夸尔特法的说明
      • 说明一. 迭代方向
      • 说明二. 近似于带权重的梯度下降法
      • 说明三. 近似于高斯-牛顿法
    • 3. 列文伯格-马夸尔特法的调参
      • 拟合程度评估
      • 以近似拟合视角调参
      • 以表现特性视角调参
      • 调参算法
    • 4. 列文伯格-马夸尔特法的停止条件
      • 条件一. 梯度不再下降
      • 条件二. 迭代点不更新
      • 条件三. 达到最大迭代数
    • 5. 列文伯格-马夸尔特法的算法流程
  • IV. 总结
  • 参考文献


前言

关联博客

非线性最小二乘问题的数值方法 —— 从牛顿迭代法到高斯-牛顿法 (I)

非线性最小二乘问题的数值方法 —— 从牛顿迭代法到高斯-牛顿法 (II)

非线性最小二乘问题的数值方法 —— 从牛顿迭代法到高斯-牛顿法 (III)

非线性最小二乘问题的数值方法 —— 从牛顿迭代法到高斯-牛顿法 (IV)

非线性最小二乘问题的数值方法 —— 从牛顿迭代法到高斯-牛顿法 (实例篇 V)

非线性最小二乘问题的数值方法 —— 狗腿法 Powell‘s Dog Leg Method (I - 原理与算法)


姊妹博文
非线性最小二乘问题的数值方法 —— 从高斯-牛顿法到列文伯格-马夸尔特法 (II, Python 简单实例)


I. 从高斯-牛顿法

在前面的博文中, 已知非线性最小二乘问题的高斯-牛顿法 (Gauss-Newton Method) 的迭代更新公式
x [ i + 1 ] = x [ i ] − H ~ ( x [ i ] ) − 1   ∇ g ( x [ i ] ) (I-1-1) \mathbf{x}_{[i+1]} = \mathbf{x}_{[i]} - \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) ^{-1} \,\nabla g(\mathbf{x}_{[i]}) \tag{I-1-1} x[i+1]=x[i]H (x[i])1g(x[i])(I-1-1)
其中
H ~ ( x ) = [ ∂ r ( x ) ∂ x ] T ∂ r ( x ) ∂ x (I-1-2) \widetilde{\mathbf{H}}(\mathbf{x}) = \left[ \frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}} \right]^{\rm\small T} \frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}} \tag{I-1-2} H (x)=[xr(x)]Txr(x)(I-1-2)

∇ g ( x ) = [ ∂ r ( x ) ∂ x ] T r ( x ) (I-1-3) \nabla g(\mathbf{x}) = \left[ \frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}} \right]^{\rm\small T} \mathbf{r}(\mathbf{x}) \tag{I-1-3} g(x)=[xr(x)]Tr(x)(I-1-3)

也知道了高斯-牛顿法的使用条件

(1) 误差函数 r i r_i ri ( i = 1 , 2 , ⋯   , m i=1,2, \cdots, m i=1,2,,m) 在包含最优参数 x ∗ \mathbf{x}^{\ast} x 的局部凸集合内部是二次连续可微的;

(2) 迭代初始点 x [ 0 ] \mathbf{x}_{[0]} x[0] 接近于局部极小点 x ∗ \mathbf{x}^{\ast} x;

(3) ∂ r ( x ) ∂ x ∣ x ∗ \left.\frac{\partial \mathbf{r}(\mathbf{x})}{\partial \mathbf{x}}\right|_{\mathbf{x}^{\ast}} xr(x) x 列满秩 (其实每一步都要求列满秩, 只是各迭代值接近于 x ∗ \mathbf{x}^{\ast} x 的缘故, 利用连续性, 故只要求 x ∗ \mathbf{x}^{\ast} x 上的列满秩);

(4) 局部极小值 ∣ g ( x ) ∣ |g(\mathbf{x})| g(x) 很小.

列文伯格 (K. Levenberg) 和马夸尔特 (D. W. Marquardt) 建议使用阻尼高斯-牛顿法 (Damped Gauss-Newton Method), 以优化高斯-牛顿法的性能和规避高斯-牛顿法对初始值的敏感度 (条件 2、4) 和列满秩 (条件 3) 要求.


II. 到阻尼高斯-牛顿法

非线性最小二乘问题的代价函数 g ( x ) g(\mathbf{x}) g(x) x [ i ] \mathbf{x}_{[i]} x[i] 处取二阶泰勒近似为
g ( x ) ≈ g ( x [ i ] ) + ( ∇ g ( x [ i ] ) ) T ( x − x [ i ] ) + 1 2 ( x − x [ i ] ) T H ( x [ i ] ) ( x − x [ i ] ) (II-1-1) g(\mathbf{x}) \approx g(\mathbf{x}_{[i]}) + {\left(\nabla g(\mathbf{x}_{[i]})\right)^{\small\rm T}}(\mathbf{x} - \mathbf{x}_{[i]}) + \frac{1}{2} (\mathbf{x} - \mathbf{x}_{[i]})^{\small\rm T} \mathbf{H}(\mathbf{x}_{[i]}) (\mathbf{x} - \mathbf{x}_{[i]}) \tag{II-1-1} g(x)g(x[i])+(g(x[i]))T(xx[i])+21(xx[i])TH(x[i])(xx[i])(II-1-1)
将代价函数在 x [ i ] \mathbf{x}_{[i]} x[i] 附近的二阶泰勒近似定义为代价函数的模型 (model)
L ( h [ i ] ) ≜ g ( x [ i ] ) + ( ∇ g ( x [ i ] ) ) T h [ i ] + 1 2 h [ i ] T H ( x [ i ] ) h [ i ] (II-1-2) L(\mathbf{h}_{[i]}) \triangleq g(\mathbf{x}_{[i]}) + {\left(\nabla g(\mathbf{x}_{[i]})\right)^{\small\rm T}} \mathbf{h}_{[i]} + \frac{1}{2} \mathbf{h}_{[i]}^{\small\rm T} \mathbf{H}(\mathbf{x}_{[i]}) \mathbf{h}_{[i]} \tag{II-1-2} L(h[i])g(x[i])+(g(x[i]))Th[i]+21h[i]TH(x[i])h[i](II-1-2)
其中 h [ i ] = x − x [ i ] \mathbf{h}_{[i]} = \mathbf{x} - \mathbf{x}_{[i]} h[i]=xx[i] 为阻尼高斯-牛顿法更新步长.

阻尼高斯-牛顿法首先利用阻尼特性以及原代价函数的二阶泰勒近似构建的新代价函数
G ( h [ i ] ) ≜ L ( h [ i ] ) + 1 2 μ   h [ i ] T   h [ i ] (II-1-3) G(\mathbf{h}_{[i]}) \triangleq L(\mathbf{h}_{[i]}) + \frac{1}{2} \mu \, {\mathbf{h}_{[i]}}^{\small\rm T} \,{\mathbf{h}_{[i]}} \tag{II-1-3} G(h[i])L(h[i])+21μh[i]Th[i](II-1-3)
其中

μ \mu μ阻尼参数 (Damping Parameter), 并且 μ ≥ 0 \mu \geq 0 μ0;

1 2 μ   h [ i ] T   h [ i ] \frac{1}{2} \mu \, {\mathbf{h}_{[i]}}^{\small\rm T} \,{\mathbf{h}_{[i]}} 21μh[i]Th[i] 称为阻尼项.

阻尼项作为步长的惩罚项引入代价函数, 用以惩罚大步长.

直观解释就是既要获得代价函数极小值, 又要使得步长尽量短.

如果把代价函数视作系统能量, 迭代步长就是为寻找系统能量极小值时的 “作用力”, 阻尼项就是 “做功消耗”. —— 这是最优控制的观点

而这里的阻尼参数 μ \mu μ 也可以看做是代价函数 L L L 与 做功 1 2 h T h \frac{1}{2} \mathbf{h}^{\small\rm T} \mathbf{h} 21hTh 之间的权重.

基于该新的代价函数去寻找最优的迭代步[1]
h d m = arg ⁡ min ⁡ h [ i ] { L ( h [ i ] ) + 1 2 μ   h [ i ] T   h [ i ] } (II-1-4) \mathbf{h}_{\rm dm} = \underset{\mathbf{h}_{[i]}}{\arg\min}\left\{ L(\mathbf{h}_{[i]})+\frac{1}{2} \mu \, {\mathbf{h}_{[i]}}^{\small\rm T} \,{\mathbf{h}_{[i]}} \right\} \tag{II-1-4} hdm=h[i]argmin{L(h[i])+21μh[i]Th[i]}(II-1-4)
有了阻尼形式的新代价函数, 那么就知道得到最优步长的必要条件是
∇ G ( h [ i ] ) = ∇ g ( x [ i ] ) + H ( x [ i ] ) h [ i ] + μ h [ i ] = 0 (II-1-5) \nabla G(\mathbf{h}_{[i]}) = \nabla g(\mathbf{x}_{[i]}) + \mathbf{H}(\mathbf{x}_{[i]}) \mathbf{h}_{[i]} + \mu \mathbf{h}_{[i]} = 0 \tag{II-1-5} G(h[i])=g(x[i])+H(x[i])h[i]+μh[i]=0(II-1-5)
整理得到
− ∇ g ( x [ i ] ) = ( H ( x [ i ] ) + μ I ) h [ i ] (II-1-6) -\nabla g(\mathbf{x}_{[i]}) = \left( \mathbf{H}(\mathbf{x}_{[i]}) + \mu \mathbf{I} \right) \mathbf{h}_{[i]} \tag{II-1-6} g(x[i])=(H(x[i])+μI)h[i](II-1-6)
利用高斯-牛顿法中简化 Hessian 矩阵 H ~ ( x [ i ] ) \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) H (x[i])
H ~ ( x [ i ] ) ≜ [ ∂ r ( x ) ∂ x ] T ∂ r ( x ) ∂ x ∣ x [ i ] (II-1-7) \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) \triangleq \left.\left[ \frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}} \right]^{\rm\small T} \frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}}\right|_{\mathbf{x}_{[i]}} \tag{II-1-7} H (x[i])[xr(x)]Txr(x) x[i](II-1-7)
代替式 (II-1-6) 中的完整 Hessian 矩阵 H ( x [ i ] ) \mathbf{H}(\mathbf{x}_{[i]}) H(x[i]), 得到
− ∇ g ( x [ i ] ) = ( H ~ ( x [ i ] ) + μ I ) h [ i ] (II-1-8) -\nabla g(\mathbf{x}_{[i]}) = \left( \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) + \mu \mathbf{I} \right) \mathbf{h}_{[i]} \tag{II-1-8} g(x[i])=(H (x[i])+μI)h[i](II-1-8)
因为简化 Hessian 矩阵是对阵矩阵, 故是半正定的. 那么只要取阻尼参数 μ > 0 \mu > 0 μ>0, 就可以得到 H ~ ( x [ i ] ) + μ I \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) + \mu \mathbf{I} H (x[i])+μI 为正定矩阵, 故此时 H ~ ( x [ i ] ) + μ I \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) + \mu \mathbf{I} H (x[i])+μI 可逆.

那么可以得到迭代步长公式
h [ i ] = − ( H ~ ( x [ i ] ) + μ I ) − 1   ∇ g ( x [ i ] ) (II-1-9) \mathbf{h}_{[i]} = - \left( \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) + \mu \mathbf{I} \right)^{-1}\, \nabla g(\mathbf{x}_{[i]}) \tag{II-1-9} h[i]=(H (x[i])+μI)1g(x[i])(II-1-9)
因为这里用到了阻尼参数构建的新代价函数并基于高斯-牛顿法进行计算, 所以该方法称为阻尼高斯-牛顿法. 阻尼高斯-牛顿法的迭代更新公式为
x [ i + 1 ] = x [ i ] − ( H ~ ( x [ i ] ) + μ I ) − 1   ∇ g ( x [ i ] ) (II-1-10) \mathbf{x}_{[i+1]} = \mathbf{x}_{[i]} - \left( \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) + \mu \mathbf{I} \right)^{-1}\, \nabla g(\mathbf{x}_{[i]}) \tag{II-1-10} x[i+1]=x[i](H (x[i])+μI)1g(x[i])(II-1-10)
形式上和高斯-牛顿法只相差了 μ I \mu \mathbf{I} μI 项.


III. 再到列文伯格-马夸尔特法

1. 列文伯格-马夸尔特法的由来

列文伯格-马夸尔特法 (Levenberg-Marquardt Method) 在阻尼高斯-牛顿法的基础上进一步优化得来, 由马夸尔特首次提出.

事实上, 许多文献把上一节中的阻尼高斯-牛顿法也称为列文伯格-马夸尔特法.

那么, 此处的列文伯格-马夸尔特法可以说是 “更优化的列文伯格-马夸尔特法”, 而阻尼高斯-牛顿法可以视作为 “原始的列文伯格-马夸尔特法”.

从阻尼高斯-牛顿法的迭代更新式 (II-1-10) 可知, 当阻尼参数 μ \mu μ 较大的时候, Hessian 矩阵 H ~ ( x [ i ] ) \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) H (x[i]) 基本不起作用, 退化为
h [ i ] ≈ − 1 μ ∇ g ( x [ i ] ) (III-1-1) \mathbf{h}_{[i]} \approx - \frac{1}{\mu} \nabla g(\mathbf{x}_{[i]}) \tag{III-1-1} h[i]μ1g(x[i])(III-1-1)
这其实是另一种常用的数值优化方法 —— 梯度下降法 (Gradient Descent Method) 或最速下降法 (Steepest Descent Method).

缺少了二阶导数的作用 (即 Hessian 矩阵的作用) 使得整个向极小值迭代过程中的收敛速度非常地慢.

Hessian 矩阵 (二阶导数) 其实反映了整个代价函数的曲率变化情况.

二次导数是对梯度的求导, 曲率可视作为对梯度的预测.

故 Hessian 矩阵视作为对代价函数的梯度的预测.

缺少了预测项的收敛速度就会受到影响.

更直观地, 由式 (III-1-1) 可以看出, μ \mu μ 较大时则迭代步长 h [ i ] \mathbf{h}_{[i]} h[i] 较小, 小步慢行.

经验上, 我们需要当梯度变化大 (曲率大) 的时候, 更新步长小一点; 而当梯度变化小的时候 (曲率小), 更新步长大一点.

基于以上近似地/经验地分析, 在阻尼高斯-牛顿法的迭代公式上优化, 得到列文伯格-马夸尔特法的迭代公式
x [ i + 1 ] = x [ i ] − ( H ~ ( x [ i ] ) + μ   d i a g [ H ~ ( x [ i ] ) ] ) − 1   ∇ g ( x [ i ] ) (III-1-2) \mathbf{x}_{[i+1]} = \mathbf{x}_{[i]} - \left( \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) + \mu \,{\rm diag}\left[\widetilde{\mathbf{H}}(\mathbf{x}_{[i]})\right] \right)^{-1}\, \nabla g(\mathbf{x}_{[i]}) \tag{III-1-2} x[i+1]=x[i](H (x[i])+μdiag[H (x[i])])1g(x[i])(III-1-2)
等价地写成
h [ i ] = − ( H ~ ( x [ i ] ) + μ   d i a g [ H ~ ( x [ i ] ) ] ) − 1   ∇ g ( x [ i ] ) (III-1-3) \mathbf{h}_{[i]} = - \left( \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) + \mu \,{\rm diag}\left[\widetilde{\mathbf{H}}(\mathbf{x}_{[i]})\right] \right)^{-1}\, \nabla g(\mathbf{x}_{[i]}) \tag{III-1-3} h[i]=(H (x[i])+μdiag[H (x[i])])1g(x[i])(III-1-3)
H ~ ( x ) \widetilde{\mathbf{H}}(\mathbf{x}) H (x) 的对角元素也记作 h ~ k k \tilde{h}_{kk} h~kk, 即对应 k k k k k k 列位置上的元素.

阻尼高斯-牛顿法向列文伯格-马夸尔特法改进, 更多的是基于马夸尔特等计算数学家的经验, 没有最优化上的推导, 但是实际效果却比较好且广泛应用[2].


2. 列文伯格-马夸尔特法的说明

说明一. 迭代方向

简化的 Hessian 矩阵的半正定特性, 保证迭代步沿着正确的代价函数下降的方向进行.

由简化 Hessian 矩阵的定义可知 H ~ ( x [ i ] ) \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) H (x[i]) 是半正定, 即
∇ g ( x [ i ] ) T   H ~ ( x [ i ] )   ∇ g ( x [ i ] ) = ∇ g ( x [ i ] ) T [ ∂ r ( x ) ∂ x ∣ x [ i ] ] T ∂ r ( x ) ∂ x ∣ x [ i ] ∇ g ( x [ i ] ) = [ ∂ r ( x ) ∂ x ∣ x [ i ] ∇ g ( x [ i ] ) ] T ∂ r ( x ) ∂ x ∣ x [ i ] ∇ g ( x [ i ] ) ≥ 0 (III-2-1) \begin{aligned} {\nabla g(\mathbf{x}_{[i]})}^{\rm\small T}\, \widetilde{\mathbf{H}}(\mathbf{x}_{[i]})\, \nabla g(\mathbf{x}_{[i]}) & = {\nabla g(\mathbf{x}_{[i]})}^{\rm\small T} \left.\left[ \frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}} \right|_{\mathbf{x}_{[i]}}\right]^{\rm\small T} \left.\frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}}\right|_{\mathbf{x}_{[i]}} \nabla g(\mathbf{x}_{[i]})\\ &= \left[ \left.\frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}}\right|_{\mathbf{x}_{[i]}} \nabla g(\mathbf{x}_{[i]})\right]^{\small \rm T} \left.\frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}}\right|_{\mathbf{x}_{[i]}} \nabla g(\mathbf{x}_{[i]})\\ & \geq 0 \end{aligned} \tag{III-2-1} g(x[i])TH (x[i])g(x[i])=g(x[i])T[xr(x) x[i]]Txr(x) x[i]g(x[i])=[xr(x) x[i]g(x[i])]Txr(x) x[i]g(x[i])0(III-2-1)
由矩阵正半定的定义可知, 其对应对角矩阵 d i a g [ H ~ ( x [ i ] ) ] {\rm diag}\left[\widetilde{\mathbf{H}}(\mathbf{x}_{[i]})\right] diag[H (x[i])] 的每个对角元素也都是大于等于零的. 我们实际计算应用中, 在 μ > 0 \mu > 0 μ>0 (人为设定就行) 情况下, 出现 Hessian 矩阵对角元素全为零的情况微乎其微. 即使出现这种极端事件, 数值上特殊处理就可以解决问题 (如给个轻微的数值扰动, 或者退回到阻尼高斯-牛顿法).

所以我们可以假定 d i a g [ H ~ ( x [ i ] ) ] {\rm diag}\left[\widetilde{\mathbf{H}}(\mathbf{x}_{[i]})\right] diag[H (x[i])] 正定. 因为正定矩阵、正定矩阵的对角矩阵、正定矩阵的逆都是正定的, 这样就有
g ( x [ i + 1 ] ) = g ( x [ i ] − ( H ~ ( x [ i ] ) + μ   d i a g [ H ~ ( x [ i ] ) ] ) − 1   ∇ g ( x [ i ] ) ) = g ( x [ i ] ) − ∇ g ( x [ i ] ) T ( H ~ ( x [ i ] ) + μ   d i a g [ H ~ ( x [ i ] ) ] ) − 1   ∇ g ( x [ i ] ) ⏟ > 0 (III-2-2) \begin{aligned} g(\mathbf{x}_{[i+1]}) &= g\left(\mathbf{x}_{[i]} - \left( \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) + \mu \,{\rm diag}\left[\widetilde{\mathbf{H}}(\mathbf{x}_{[i]})\right] \right)^{-1}\, \nabla g(\mathbf{x}_{[i]})\right)\\ &= g(\mathbf{x}_{[i]}) - \underbrace{\nabla g(\mathbf{x}_{[i]})^{\rm\small T} \left( \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) + \mu \,{\rm diag}\left[\widetilde{\mathbf{H}}(\mathbf{x}_{[i]})\right] \right)^{-1}\, \nabla g(\mathbf{x}_{[i]})}_{> 0} \end{aligned} \tag{III-2-2} g(x[i+1])=g(x[i](H (x[i])+μdiag[H (x[i])])1g(x[i]))=g(x[i])>0 g(x[i])T(H (x[i])+μdiag[H (x[i])])1g(x[i])(III-2-2)

保证了每一步迭代都向着代价函数降低的方向进行, 即 g ( x [ i + 1 ] ) < g ( x [ i ] ) g(\mathbf{x}_{[i+1]}) < g(\mathbf{x}_{[i]}) g(x[i+1])<g(x[i]).

另外, 因为 H ~ ( x [ i ] ) + μ   I \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) + \mu \,\mathbf{I} H (x[i])+μI 是正定的, 作为 “原始的列文伯格-马夸尔特法” 的阻尼高斯-牛顿法直接能够保证下降方向的迭代更新.

说明二. 近似于带权重的梯度下降法

如果阻尼参数 μ \mu μ 取得较大时, 迭代步长公式近似为
h [ i ] ≈ − ( μ   d i a g [ H ~ ( x [ i ] ) ] ) − 1 ∇ g ( x [ i ] ) (III-2-3) \mathbf{h}_{[i]} \approx - \left( { \mu \,{\rm diag}\left[\widetilde{\mathbf{H}}(\mathbf{x}_{[i]})\right]}\right)^{-1} \nabla g(\mathbf{x}_{[i]}) \tag{III-2-3} h[i](μdiag[H (x[i])])1g(x[i])(III-2-3)
这其实近似为带权重的梯度下降法 (Weighted-Gradient Descent Method).

梯度下降法适用于初始点 (当前迭代点) 远离极小值的情况. 也就是说在远离极值点进行迭代时, 高斯-牛顿法无法满足其严格的使用条件. 此时通过设定较大的阻尼参数 μ \mu μ, 将迭代方法变成梯度下降法来执行. 当 μ \mu μ 较大时, 需要克服普通梯度下降法 (如式 (III-1-1)) 的一些缺点

- 收敛速度慢

- 梯度小 (缓) 的迭代步也小, 梯度大 (陡) 的时候迭代步反而大

- 多维代价函数在不同方向上具有不同梯度变化情况, 但是迭代步计算却各向同性

我们希望即使是退化为梯度下降法情况下, 仍能实现以下特性

- 梯度变化小 (曲率小) 的方向上迭代步大 (激进), 而梯度变化大 (曲率大) 的方向上迭代步小 (谨慎), 以防止 "预测不准而冲过头"

- 迭代步长不因 μ \mu μ 值取大而过分变小

这样就有了带权重的梯度下降法 (式 (III-2-3)). 其中简化 Hessian 矩阵代表代价函数的曲率, 作为不同方向上迭代步的权重步长缩放比例而引入, 以实现上述特性.

说明三. 近似于高斯-牛顿法

如果阻尼参数 μ \mu μ 取得较小时, 迭代步长公式近似为
h [ i ] ≈ − H ~ ( x [ i ] ) − 1   ∇ g ( x [ i ] ) (III-2-4) \mathbf{h}_{[i]} \approx - \widetilde{\mathbf{H}}(\mathbf{x}_{[i]})^{-1}\, \nabla g(\mathbf{x}_{[i]}) \tag{III-2-4} h[i]H (x[i])1g(x[i])(III-2-4)
这样列文伯格-马夸尔特法就近似退化为高斯-牛顿法.

我们已经知道高斯-牛顿法每一迭代步都能够得到代价函数对应的二阶泰勒近似的极小值 (参考高斯-牛顿法的解读优化观点).

这也是高斯-牛顿法比起梯度下降法具有更快收敛速度的原因 (关于收敛速度的数学证明, 本篇博文不展开).

甚至如果代价函数在全局上就是严格的式 (II-1-1) 描述的二次形式, 那么高斯-牛顿法只要一步迭代就可以到达极小值点.

综合一下就是,

- 阻尼参数 μ \mu μ 取较小时, 可以以近似高斯-牛顿法快速迭代并向极小值收敛, 追求收敛速度;

- 阻尼参数 μ \mu μ 取较大时, 可以以近似带权重的梯度下降法进行迭代, 防止 “迭代过冲” 或 “迭代振荡”, 也能保证计算的可实现性.


3. 列文伯格-马夸尔特法的调参

拟合程度评估

由式 (II-1-2), 阻尼高斯-牛顿法中的阻尼参数 μ \mu μ 可以视作为新构建的代价函数中原代价函数与 “做功消耗” 之间的权重.

由式 (III-2-3) 和式 (III-2-4) 可知, 列文伯格-马夸尔特法中的阻尼参数 μ \mu μ 的相对大小决定了, 列文伯格-马夸尔特法表现出梯度下降法特性还是表现出高斯-牛顿法特性.

因为我们二阶泰勒展开形式的多元函数研究得比较透彻, 所以也常以代价函数的二阶泰勒近似局部的替代原代价函数.
而所谓的调参, 就是根据代价函数 g ( x ) g(\mathbf{x}) g(x) x [ i ] \mathbf{x}_{[i]} x[i] 附近的二阶泰勒近似定义的模型 L L L 相对于代价函数 g g g 的近似程度, 来调整迭代算法中每一步的阻尼参数 μ \mu μ 的值.

定义增益比率 (Gain Ratio) [1]
ϱ [ i ] = g ( x [ i ] ) − g ( x [ i ] + h [ i ] ) L ( 0 ) − L ( h [ i ] ) (III-3-1) \varrho_{[i]} = \frac{g(\mathbf{x}_{[i]}) - g(\mathbf{x}_{[i]}+\mathbf{h}_{[i]})}{L(\mathbf{0}) - L(\mathbf{h}_{[i]})} \tag{III-3-1} ϱ[i]=L(0)L(h[i])g(x[i])g(x[i]+h[i])(III-3-1)
用来衡量模型 L L L 对代价函数 g g g 的近似拟合程度.

以近似拟合视角调参

之前分析了列文伯格-马夸尔特法以及阻尼高斯-牛顿法都是向代价函数下降的方向进行的. 所以当前迭代的模型 (近似代价函数) L ( 0 ) L(\mathbf{0}) L(0) 必然大于下一步迭代的模型 (近似代价函数) L ( h ) L(\mathbf{h}) L(h), 故上式分母大于零.

如果分子小于零 (即增益比率小) 或者数值比较小 (小于且不接近于 1 的小数), 说明真实的代价函数 g g g 在向增大的方向迭代了, 进一步说明当前衡量模型 L L L 对代价函数的 g g g 的拟合程度不高. 由泰勒近似展开原理可知, 这是因为迭代步 h [ i ] \mathbf{h}_{[i]} h[i] 太长了, 需要缩小迭代步. 由式 (III-1-3) 可知, 增加 μ \mu μ 的值可以减小步长.

相反地, 如果分子比较大 (大于零且接近于 1), 说明当前模型 L L L 对代价函数 g g g 的拟合程度较高, 可以进一步增加迭代步长 h \mathbf{h} h, 来加快迭代收敛的速度. 由式 (III-1-3) 可知, 减小 μ \mu μ 的值可以增加步长, 故此时要减小 μ \mu μ.

以表现特性视角调参

另外, 也可从让列文伯格-马夸尔特法在不同条件下表现出梯度下降法特性还是高斯-牛顿法特性的角度来调整参数 μ \mu μ.

如果增益比率较大, 说明模型 L L L (近似代价函数) 在当前迭代中较好地拟合了代价函数, 也就是说代价函数近似于如式 (II-1-2) 描述的二次形式, 此种情况下高斯-牛顿法就特别适合, 能够非常快地收敛到极小值点附近.

也就是说, 增益比率较大时, 希望列文伯格-马夸尔特法表现出高斯-牛顿法的特质, 此时需要将阻尼参数 μ \mu μ 减小.

如果增益比率较小, 说明模型 L L L (近似代价函数) 在当前迭代中无法较好地拟合表示代价函数, 这可能是由于当前迭代点还远离最小值点.

根据高斯-牛顿法的使用条件, 这种情况下不适合采用高斯-牛顿法, 而宜采用相对保守的带权重的梯度下降法.

也就是说, 增益比率较小时, 希望列文伯格-马夸尔特法表现出梯度下降法的特质, 此时需要将阻尼参数 μ \mu μ 加大.

可以看出不管是以近似拟合视角调参还是以表现特性视角调参, 得到的调参方法是一致的.

调参算法

if      ϱ > 0 μ : = μ ∗ max ⁡ { 1 3 , 1 − ( 2 ϱ − 1 ) 3 } ν : = 2 else μ : = μ ∗ ν ν : = 2 ∗ ν \begin{aligned} \textbf{if} \;\; &\varrho > 0\\ &\mu := \mu * \max\{\frac{1}{3}, 1-(2\varrho -1)^3 \}\\ & \nu := 2\\ \textbf{else}\\ &\mu := \mu * \nu\\ & \nu := 2*\nu \end{aligned} ifelseϱ>0μ:=μmax{31,1(2ϱ1)3}ν:=2μ:=μνν:=2ν


4. 列文伯格-马夸尔特法的停止条件

条件一. 梯度不再下降

∥ ∇ g ( x [ i ] ) ∥ ∞ ≤ ε 1 (III-4-1) \| \nabla g(\mathbf{x}_{[i]}) \|_{\infin} \leq \varepsilon_1 \tag{III-4-1} ∥∇g(x[i])ε1(III-4-1)

其中 ε 1 \varepsilon_1 ε1 为一小量.

条件二. 迭代点不更新

∥ x [ i + 1 ] − x [ i ] ∥ ≤ ε 2 ( ∥ x [ i ] ∥ + ε 2 ) (III-4-2) \|\mathbf{x}_{[i+1]} - \mathbf{x}_{[i]}\| \leq \varepsilon_2(\|\mathbf{x}_{[i]}\|+\varepsilon_2) \tag{III-4-2} x[i+1]x[i]ε2(x[i]+ε2)(III-4-2)

其中 ε 2 \varepsilon_2 ε2 为一小量. 当 ∥ x [ i ] ∥ = 0 \|\mathbf{x}_{[i]}\|=0 x[i]=0 时, 上式右手边为 ε 2 2 \varepsilon_2^2 ε22.

条件三. 达到最大迭代数

i ≥ i max ⁡ (III-4-3) i \geq i_{\max} \tag{III-4-3} iimax(III-4-3)

其中 i max ⁡ i_{\max} imax 为最大迭代步数, 防止程序无限循环.

以上三个停止条件任意一个得到满足, 算法程序就终止运行并返回运算结果.


5. 列文伯格-马夸尔特法的算法流程

列文伯格-马夸尔特法的算法流程[1]如下:

Levenberg-Marquardt   Method begin i : = 0 ν : = 2 x : = x 0 H ~ ( x ) : = [ ∂ r ( x ) ∂ x ] T ∂ r ( x ) ∂ x ∇ g ( x ) : = [ ∂ r ( x ) ∂ x ] T r ( x ) f o u n d : = ( ∥ ∇ g ( x ) ∥ ∞ ≤ ε 1 ) μ : = τ ∗ max ⁡ { h ~ k k } whlie      ( not    f o u n d )    and    ( i < i m a x ) i : = i + 1 h : = − ( H ~ ( x ) + μ   d i a g [ H ~ ( x ) ] ) − 1   ∇ g ( x ) if      ∥ h ∥ ≤ ε 2 ( ∥ x ∥ + ε 2 ) f o u n d : = t r u e e l s e x n e w : = x + h ϱ : = ( g ( x ) − g ( x n e w ) ) / ( L ( 0 ) − L ( h ) ) if    ϱ > 0 { s t e p    a c c e p t a b l e } x : = x n e w H ~ ( x ) : = [ ∂ r ( x ) ∂ x ] T ∂ r ( x ) ∂ x ∇ g ( x ) : = [ ∂ r ( x ) ∂ x ] T r ( x ) f o u n d : = ( ∥ ∇ g ( x ) ∥ ∞ ≤ ε 1 ) μ : = μ ∗ max ⁡ { 1 3 , 1 − ( 2 ϱ − 1 ) 3 } ν : = 2 else { s t e p    u n a c c e p t a b l e } μ : = μ ∗ ν ν : = 2 ∗ ν end \begin{array}{ll} \textbf{Levenberg-Marquardt Method}\\ \textbf{begin}\\ \qquad i:=0\\ \qquad \nu:=2\\ \qquad \mathbf{x}:=\mathbf{x}_0\\ \qquad \widetilde{\mathbf{H}}(\mathbf{x}) := \left[ \frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}} \right]^{\rm\small T} \frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}} \\ \qquad \nabla g(\mathbf{x}) := \left[ \frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}} \right]^{\rm\small T} \mathbf{r}(\mathbf{x}) \\ \qquad found:= \left(\| \nabla g(\mathbf{x}) \|_{\infin} \leq \varepsilon_1\right)\\ \qquad \mu:= \tau * \max\{\tilde{h}_{kk}\}\\ \textbf{whlie}\;\; (\textbf{not}\; found)\; \textbf{and}\; (i 0 \qquad\qquad\qquad\qquad\qquad{\rm \{step\; acceptable\}}\\ \qquad\qquad\qquad \mathbf{x}:=\mathbf{x}_{\rm new}\\ \qquad \qquad\qquad \widetilde{\mathbf{H}}(\mathbf{x}) := \left[ \frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}} \right]^{\rm\small T} \frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}} \\ \qquad \qquad\qquad \nabla g(\mathbf{x}) := \left[ \frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}} \right]^{\rm\small T} \mathbf{r}(\mathbf{x}) \\ \qquad\qquad\qquad found:= \left(\| \nabla g(\mathbf{x}) \|_{\infin} \leq \varepsilon_1\right)\\ \qquad\qquad\qquad \mu := \mu * \max\{\frac{1}{3}, 1-(2\varrho -1)^3 \}\\ \qquad\qquad\qquad \nu := 2\\ \qquad\qquad \textbf{else} \qquad\qquad\qquad\qquad\qquad{\rm \{step\; unacceptable\}}\\ \qquad\qquad\qquad \mu := \mu * \nu\\ \qquad\qquad\qquad \nu := 2*\nu \\ \textbf{end} \end{array} Levenberg-Marquardt Methodbegini:=0ν:=2x:=x0H (x):=[xr(x)]Txr(x)g(x):=[xr(x)]Tr(x)found:=(∥∇g(x)ε1)μ:=τmax{h~kk}whlie(notfound)and(i<imax)i:=i+1h:=(H (x)+μdiag[H (x)])1g(x)ifhε2(x+ε2)found:=trueelsexnew:=x+hϱ:=(g(x)g(xnew))/(L(0)L(h))ifϱ>0{stepacceptable}x:=xnewH (x):=[xr(x)]Txr(x)g(x):=[xr(x)]Tr(x)found:=(∥∇g(x)ε1)μ:=μmax{31,1(2ϱ1)3}ν:=2else{stepunacceptable}μ:=μνν:=2νend


IV. 总结

本篇博客从高斯-牛顿法开始, 引入阻尼高斯-牛顿法. 阻尼高斯-牛顿法视作为 “初级/原始” 的列文伯格-马夸尔特法.

然后在阻尼高斯-牛顿法的基础上进行优化得到列文伯格-马夸尔特法.

对列文伯格-马夸尔特法的性质进行了详细说明与分析.

阻尼参数作为该算法中的重要参数, 故说明了如何在算法过程中调整阻尼参数以获得优化的性能.

最后给出了完整的列文伯格-马夸尔特法流程.

(如有问题, 请指出, 谢谢!)


参考文献

[1] K. Madsen, H.B. Nielsen, O. Tingleff, METHODS FOR NON-LINEAR LEAST SQUARES PROBLEMS, 2nd Edition, Informatics and Mathematical Modelling Technical University of Denmark, http://www2.imm.dtu.dk/pubdb/edoc/imm3215.pdf, 2004

[2] Ananth Ranganathan, The Levenberg-Marquardt Algorithm, in CS290I Multiple View Geometry in Computer Vision and Computer Graphics, https://sites.cs.ucsb.edu/~yfwang/courses/cs290i_mvg/pdf/LMA.pdf, 2004

你可能感兴趣的:(数值计算方法,算法,机器学习,机器人)