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

news2024/9/29 13:18:11

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


文章目录

  • I. 前言
  • II. 线搜索类型和信赖域类型
    • 1. 线搜索类型 —— 最速下降法
    • 2. 信赖域类型
    • 3. 柯西点
  • III. 狗腿法的原理
    • 1. 狗腿法的构建
    • 2. 狗腿法的优化说明
    • 3. 狗腿法的插值权重
  • IV. 狗腿法的流程
    • 1. 狗腿法的信赖域控制
    • 2. 狗腿法的停止条件
      • 条件一. 梯度不再下降
      • 条件二. 迭代点不更新
      • 条件三. 残差足够小
      • 条件四. 达到最大迭代数
    • 3. 狗腿法的实现流程
  • IV. 总结
  • 参考文献


关联博客文章

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

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

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

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

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

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

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


I. 前言

之前的博文涉及到最速下降法 (Steepest Descent Method, 也被称为梯度下降法)、高斯-牛顿法 (Gauss-Newton Method) 和列文伯格-马夸尔特法 (Levenberg-Marquardt Method).

列文伯格-马夸尔特法比起高斯-牛顿法法比较明显的一项优势不需要初始点靠近极小值点没有 Hessian 矩阵的正定性要求.

但是列文伯格-马夸尔特法也有其缺点, 比如计算过程中大量的 “不合格” 计算步被舍弃而作无用功.

下面要介绍的狗腿法 (Dog Leg Method 或 Powell’s Dog Leg Method) 正是要克服列文伯格-马夸尔特法低效计算问题, 不去弃置其中的复杂计算.

由之前博文中的介绍可以知道:

- 最速下降法可以获得稳定地收敛效果, 对初值不敏感;

- 高斯-牛顿法在极小值附近可以快速收敛到极小值, 即二阶局部收敛.

利用两种方法的特点, 取长补短可能获得更好地计算性能.

事实上, 列文伯格-马夸尔特法和狗腿法都融合了最速下降法和高斯-牛顿法.

列文伯格-马夸尔特法通过调节控制阻尼参数 μ \mu μ, 让该方法表现出最速下降法特性或/和高斯-牛顿法特性.

而下面的狗腿法通过控制信赖域 (Trust Region) 的大小来显式地调节最速下降法和高斯-牛顿法在狗腿法结果中的比重.

列文伯格-马夸尔特法隐性地平衡最速下降法与高斯-牛顿法; 而狗腿法显式地控制最速下降法与高斯-牛顿法.


II. 线搜索类型和信赖域类型

在求解如下无约束的非线性最小二乘问题时,
m i n i m i z e g ( x ) = 1 2 ∥ r ( x ) ∥ 2 2 = 1 2 ∑ i = 1 m r i ( x ) 2 (II-1) {\rm minimize}\quad {g}(\mathbf{x}) = \frac{1}{2}\|\mathbf{r}(\mathbf{x})\|_2^2 = \frac{1}{2}\sum_{i=1}^{m} r_i(\mathbf{x})^2 \tag{II-1} minimizeg(x)=21r(x)22=21i=1mri(x)2(II-1)
可能遇到各种各样的方法、改进和变种, 这些方法一般都可以被归类为线搜索类型和信赖域类型[1].

线搜索类型的算法都需要先确定搜索的方向 (比如梯度等), 再沿着这个搜索方向寻找下一迭代点. 最速下降法、高斯-牛顿法就属于线搜索类型.

信赖域类型的算法在一个给定的区域内, 使用二阶模型近似原问题, 通过不断利用二阶近似模型的最小值来迭代地逼近原问题的极小值点. 列文伯格-马夸尔特法、狗腿法就属于信赖域类型.


1. 线搜索类型 —— 最速下降法

线搜索类型算法中最典型的就是最速下降法. 利用最速下降法寻找代价函数/目标函数 g ( x ) g(\mathbf{x}) g(x) 最小值的过程, 就像是下山的过程. 先确定往哪个方向走可以下山, 即 g ( x ) g(\mathbf{x}) g(x) 下降方向. 再确定这一步走多远可以最快下山, g ( x ) g(\mathbf{x}) g(x) 下降最大的步长. 到了新的点继续寻找下山方向和最优步长, 周而复始直到到达极小值点.

最速下降法中, 当前迭代点记为 x [ i ] \mathbf{x}_{[i]} x[i], 当前步的搜索方向记为 s d h [ i ] ^{sd}\mathbf{h}_{[i]} sdh[i], 当前步的步长记为 α [ i ] ≥ 0 \alpha_{[i]}\geq 0 α[i]0, 则下一迭代点为
x [ i + 1 ] = x [ i ] + α [ i ] s d h [ i ] (II-1-1) \mathbf{x}_{[i+1]} = \mathbf{x}_{[i]} + \alpha_{[i]} {^{sd}\mathbf{h}_{[i]}} \tag{II-1-1} x[i+1]=x[i]+α[i]sdh[i](II-1-1)
α [ i ] s d h [ i ] \alpha_{[i]} {^{sd}\mathbf{h}_{[i]}} α[i]sdh[i] 为最速下降步.

定义 r ( x ) \mathbf{r}(\mathbf{x}) r(x) 相对于 x \mathbf{x} x 在迭代点 x [ i ] \mathbf{x}_{[i]} x[i] 的 Jacobian 矩阵
J r ( x [ i ] ) ≜ ∂ r ( x ) ∂ x ∣ x [ i ] (II-1-2) \mathbf{J}_r(\mathbf{x}_{[i]}) \triangleq \left.\frac{\partial\mathbf{r}(\mathbf{x})}{\partial \mathbf{x}} \right|_{\mathbf{x}_{[i]}} \tag{II-1-2} Jr(x[i])xr(x) x[i](II-1-2)
最速下降法的**搜索方向**是 g ( x ) g(\mathbf{x}) g(x) 的梯度下降最快的方向, 即为梯度向量的反向.
s d h [ i ] = − ∇ g ( x ) ∣ x [ i ] = − J r ( x [ i ] ) T   r ( x [ i ] ) (II-1-3) ^{sd}\mathbf{h}_{[i]} =- \left. \nabla {g}(\mathbf{x}) \right|_{\mathbf{x}_{[i]}} = - \mathbf{J}_r(\mathbf{x}_{[i]}) ^{\rm\small T}\, \mathbf{r}(\mathbf{x}_{[i]}) \tag{II-1-3} sdh[i]=g(x)x[i]=Jr(x[i])Tr(x[i])(II-1-3)
上式只是找到了下山的最优方向, 在这个最优方向上设置多长的步长才可以可让目标函数下降最多呢?

下面需要求**最优步长** α [ i ] \alpha_{[i]} α[i], 使得下一迭代步上的代价函数最小, 即下山最快.

对二次连续可微的函数 r ( x [ i ] + α [ i ] s d h [ i ] ) \mathbf{r}(\mathbf{x}_{[i]} + \alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}) r(x[i]+α[i]sdh[i]) 作一阶泰勒近似为
r ( x [ i ] + α [ i ] s d h [ i ] ) ≈ r ( x [ i ] ) + α [ i ]   J r ( x [ i ] )   s d h [ i ] (II-1-4) \mathbf{r}(\mathbf{x}_{[i]} + \alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}) \approx \mathbf{r}(\mathbf{x}_{[i]}) + \alpha_{[i]}\, \mathbf{J}_{r}(\mathbf{x}_{[i]})\, {^{sd}\mathbf{h}_{[i]}} \tag{II-1-4} r(x[i]+α[i]sdh[i])r(x[i])+α[i]Jr(x[i])sdh[i](II-1-4)
其对应的目标函数的二阶近似为
g ( x [ i ] + α [ i ] s d h [ i ] ) ≈ 1 2 ∥ r ( x [ i ] + α [ i ] s d h [ i ] ) ∥ 2 = 1 2 [ r ( x [ i ] ) + α [ i ]   J r ( x [ i ] )   s d h [ i ] ] T [ r ( x [ i ] ) + α [ i ]   J r ( x [ i ] )   s d h [ i ] ] = g ( x [ i ] ) + α [ i ] s d h [ i ] T J r ( x [ i ] ) T r ( x [ i ] ) + 1 2 α [ i ] 2 ∥ J r ( x [ i ] ) s d h [ i ] ∥ 2 ≜ L ( α [ i ] s d h [ i ] ) (II-1-5) \begin{aligned} g(\mathbf{x}_{[i]} + \alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}) &\approx \frac{1}{2}\|\mathbf{r}(\mathbf{x}_{[i]} + \alpha_{[i]} {^{sd}\mathbf{h}_{[i]}})\|^2\\ &= \frac{1}{2} \left[ \mathbf{r}(\mathbf{x}_{[i]}) + \alpha_{[i]}\, \mathbf{J}_{r}(\mathbf{x}_{[i]})\, {^{sd}\mathbf{h}_{[i]}} \right]^{\small\rm T} \left[ \mathbf{r}(\mathbf{x}_{[i]}) + \alpha_{[i]}\, \mathbf{J}_{r}(\mathbf{x}_{[i]})\, {^{sd}\mathbf{h}_{[i]}} \right]\\ &= g(\mathbf{x}_{[i]}) + \alpha_{[i]} {^{sd}\mathbf{h}_{[i]}^{\small\rm T}} \mathbf{J}_r(\mathbf{x}_{[i]})^{\small\rm T} \mathbf{r}(\mathbf{x}_{[i]}) + \frac{1}{2} \alpha_{[i]}^2 \left\|{\mathbf{J}_r(\mathbf{x}_{[i]}){^{sd}\mathbf{h}_{[i]}}}\right\|^2 \\ &\triangleq L(\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}) \end{aligned}\tag{II-1-5} g(x[i]+α[i]sdh[i])21r(x[i]+α[i]sdh[i])2=21[r(x[i])+α[i]Jr(x[i])sdh[i]]T[r(x[i])+α[i]Jr(x[i])sdh[i]]=g(x[i])+α[i]sdh[i]TJr(x[i])Tr(x[i])+21α[i]2 Jr(x[i])sdh[i] 2L(α[i]sdh[i])(II-1-5)
上式看作是以 α [ i ] \alpha_{[i]} α[i] 为自变量的一元二次函数, 该函数一阶导数为零时可求得最优的步长.
α [ i ] = − s d h [ i ] T J r ( x [ i ] ) T r ( x [ i ] ) ∥ J r ( x [ i ] ) s d h [ i ] ∥ 2 = ∥ s d h [ i ] ∥ 2 ∥ J r ( x [ i ] )   s d h [ i ] ∥ 2 (II-1-6) \begin{aligned} \alpha_{[i]} & = - \frac{{^{sd}\mathbf{h}_{[i]}^{\small\rm T}} \mathbf{J}_r(\mathbf{x}_{[i]})^{\small\rm T} \mathbf{r}(\mathbf{x}_{[i]}) } {\left\|{\mathbf{J}_r(\mathbf{x}_{[i]}) {^{sd}\mathbf{h}_{[i]}}}\right\|^2 }\\ &=\frac{\left\| {^{sd}\mathbf{h}_{[i]}} \right\|^2}{\left\|{\mathbf{J}_r(\mathbf{x}_{[i]}) \,{^{sd}\mathbf{h}_{[i]}}}\right\|^2} \end{aligned} \tag{II-1-6} α[i]= Jr(x[i])sdh[i] 2sdh[i]TJr(x[i])Tr(x[i])= Jr(x[i])sdh[i] 2 sdh[i] 2(II-1-6)
式 (II-1-3) 和式 (II-1-6) 就构成了最速下降法的搜索方向和步长, 可通过式 (II-1-1) 得到下一迭代点[2].

注意此处的 α [ i ] \alpha_{[i]} α[i] 可称为无约束 α [ i ] \alpha_{[i]} α[i], 区别于后面将要介绍的信赖域约束下的对应值.


2. 信赖域类型

线搜索类型方法中将每一步迭代计算分成两部分, 搜索方向 s d h [ i ] ^{sd}\mathbf{h}_{[i]} sdh[i] 的计算和最优步长 α [ i ] \alpha_{[i]} α[i] 的计算. 而信赖域类型方法中, 直接在给定的有界区域 (信赖区域) Δ [ i ] \Delta_{[i]} Δ[i] 内优化计算迭代步 t r h [ i ] ^{tr}\mathbf{h}_{[i]} trh[i]. 有对应关系
α [ i ] s d h [ i ]      ⇔      t r h [ i ] (II-2-1) \alpha_{[i]} {^{sd}\mathbf{h}_{[i]}} \;\;\Leftrightarrow \;\; {^{tr}\mathbf{h}_{[i]}} \tag{II-2-1} α[i]sdh[i]trh[i](II-2-1)
也就是说 t r h [ i ] ^{tr}\mathbf{h}_{[i]} trh[i] 既包含迭代步的方向又包含迭代步的步长.

类比式 (II-1-5) 可知, 信赖域类型的目标函数的二阶近似为
g ( x [ i ] + t r h [ i ] ) ≈ 1 2 ∥ r ( x [ i ] + t r h [ i ] ) ∥ 2 = 1 2 [ r ( x [ i ] ) + J r ( x [ i ] )   t r h [ i ] ] T [ r ( x [ i ] ) + J r ( x [ i ] )   t r h [ i ] ] = g ( x [ i ] ) + r ( x [ i ] ) T   J r ( x [ i ] )   t r h [ i ] + 1 2 t r h [ i ] T   J r ( x [ i ] ) T J r ( x [ i ] )   t r h [ i ] ≜ L ( t r h [ i ] ) (II-2-2) \begin{aligned} g(\mathbf{x}_{[i]} + {^{tr}\mathbf{h}_{[i]}}) &\approx \frac{1}{2}\|\mathbf{r}(\mathbf{x}_{[i]} + {^{tr}\mathbf{h}_{[i]}})\|^2\\ &= \frac{1}{2} \left[ \mathbf{r}(\mathbf{x}_{[i]}) + \mathbf{J}_{r}(\mathbf{x}_{[i]})\, {^{tr}\mathbf{h}_{[i]}} \right]^{\small\rm T} \left[ \mathbf{r}(\mathbf{x}_{[i]}) + \mathbf{J}_{r}(\mathbf{x}_{[i]})\, {^{tr}\mathbf{h}_{[i]}} \right]\\ &= g(\mathbf{x}_{[i]}) + \mathbf{r}(\mathbf{x}_{[i]})^{\small\rm T} \, \mathbf{J}_r(\mathbf{x}_{[i]})\, {^{tr}\mathbf{h}_{[i]}} + \frac{1}{2} {^{tr}\mathbf{h}_{[i]}^{\small\rm T}} \,{\mathbf{J}_r(\mathbf{x}_{[i]})^{\rm\small T} \mathbf{J}_r(\mathbf{x}_{[i]}) \,{^{tr}\mathbf{h}_{[i]}}}\\ & \triangleq L(^{tr}\mathbf{h}_{[i]}) \end{aligned}\tag{II-2-2} g(x[i]+trh[i])21r(x[i]+trh[i])2=21[r(x[i])+Jr(x[i])trh[i]]T[r(x[i])+Jr(x[i])trh[i]]=g(x[i])+r(x[i])TJr(x[i])trh[i]+21trh[i]TJr(x[i])TJr(x[i])trh[i]L(trh[i])(II-2-2)
上式作为目标函数 g ( x [ i ] + t r h [ i ] ) g(\mathbf{x}_{[i]} + {^{tr}\mathbf{h}_{[i]}}) g(x[i]+trh[i]) 的在迭代点 x [ i ] \mathbf{x}_{[i]} x[i] 附近的二阶近似模型, 其实受到近似区域的限制. 只有较小的范围该二阶近似模型 L ( h [ i ] ) L(\mathbf{h}_{[i]}) L(h[i]) 才相对准确地描述 g ( x [ i ] + t r h [ i ] ) g(\mathbf{x}_{[i]} + {^{tr}\mathbf{h}_{[i]}}) g(x[i]+trh[i]). 即对近似模型增加的约束条件为
∥ t r h [ i ] ∥ ≤ Δ [ i ] (II-2-3) \left\| {^{tr}\mathbf{h}_{[i]}} \right\| \leq \Delta_{[i]} \tag{II-2-3} trh[i] Δ[i](II-2-3)
其中 Δ [ i ] \Delta_{[i]} Δ[i] 就被称为信赖域半径. 这样信赖域类型的方法就转变为每一步求解如下子问题[1]
min ⁡ t r h [ i ] L ( t r h [ i ] ) s.t. ∥ t r h [ i ] ∥ ≤ Δ [ i ] (II-2-4) \begin{aligned} {\min_{^{tr}\mathbf{h}_{[i]}}} &\quad L(^{tr}\mathbf{h}_{[i]})\\ \text{s.t.} &\quad \left\| {^{tr}\mathbf{h}_{[i]}} \right\| \leq \Delta_{[i]} \end{aligned}\tag{II-2-4} trh[i]mins.t.L(trh[i]) trh[i] Δ[i](II-2-4)

即使是线搜索类型中的最速下降法, 在最优计算过程中也利用了原目标函数的一阶或者二阶近似, 故也存在范围过大而使得近似程度降低, 最终影响最优计算结果的情况. 所以说信赖域的引入, 保证了近似模型对原目标函数的近似程度, 是有必要的.


3. 柯西点

根据信赖域的思想, 在无约束的最速下降法中增加截断步长限制, 即
∥ α ˉ [ i ] s d h [ i ] ∥ ≤ Δ [ i ] (II-3-1) \left \| {{\bar\alpha}_{[i]} {^{sd}\mathbf{h}_{[i]}}} \right \| \leq \Delta_{[i]} \tag{II-3-1} αˉ[i]sdh[i] Δ[i](II-3-1)
就可以得到柯西点的定义.

柯西点[1]

L ( α ˉ [ i ] s d h [ i ] ) L({\bar\alpha}_{[i]} {^{sd}\mathbf{h}_{[i]}}) L(αˉ[i]sdh[i]) g ( x ) g(\mathbf{x}) g(x) 在点 x [ i ] \mathbf{x}_{[i]} x[i] 处的二阶近似. 常数 α ˉ [ i ] \bar\alpha_{[i]} αˉ[i] 为如下优化问题的解
min ⁡ L ( α ˉ [ i ] s d h [ i ] ) s.t. ∥ α ˉ [ i ] s d h [ i ] ∥ ≤ Δ [ i ] α ˉ [ i ] ≥ 0 \begin{aligned} \min\quad& L({\bar\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}})\\ \text{s.t.}\quad & \left \| {\bar\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}} \right \| \leq \Delta_{[i]}\\ &{\bar\alpha_{[i]}\geq 0} \end{aligned} mins.t.L(αˉ[i]sdh[i]) αˉ[i]sdh[i] Δ[i]αˉ[i]0
则称 c x [ i ] = x [ i ] + α ˉ [ i ] s d h [ i ] ^{c}\mathbf{x}_{[i]} = \mathbf{x}_{[i]} + {\bar\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}} cx[i]=x[i]+αˉ[i]sdh[i] 为柯西点. (其中 α ˉ [ i ] s d h [ i ] {\bar\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}} αˉ[i]sdh[i] 为柯西点对应的迭代步 —— 柯西步)

由式 (II-1-5) 可知
L ( α ˉ [ i ] s d h [ i ] ) = g ( x [ i ] ) ⏟ 常数项 + [ − α ˉ [ i ] s d h [ i ] T s d h [ i ] ] ⏟ 第二项   ≤   0 + 1 2 α ˉ [ i ] 2 s d h [ i ] T J r ( x [ i ] ) T J r ( x [ i ] ) s d h [ i ] ⏟ 第三项 (II-3-2) L(\bar\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}) = \underbrace{g(\mathbf{x}_{[i]})}_{常数项} + \underbrace{ \left[-\bar \alpha_{[i]} {^{sd}\mathbf{h}_{[i]}^{\small\rm T}} {^{sd}\mathbf{h}_{[i]}}\right]}_{\color{green}第二项 \,\leq\, 0} + \underbrace{\frac{1}{2} {\bar\alpha}_{[i]}^2 {^{sd}\mathbf{h}_{[i]}^{\small\rm T}} \mathbf{J}_r(\mathbf{x}_{[i]})^{\small\rm T} {\mathbf{J}_r(\mathbf{x}_{[i]}){^{sd}\mathbf{h}_{[i]}}}}_{\color{blue}第三项} \tag{II-3-2} L(αˉ[i]sdh[i])=常数项 g(x[i])+第二项0 [αˉ[i]sdh[i]Tsdh[i]]+第三项 21αˉ[i]2sdh[i]TJr(x[i])TJr(x[i])sdh[i](II-3-2)
如果 J r ( x [ i ] ) T J r ( x [ i ] ) \mathbf{J}_r(\mathbf{x}_{[i]})^{\rm\small T} \mathbf{J}_r(\mathbf{x}_{[i]}) Jr(x[i])TJr(x[i]) 半负定的情况:

首先其中第二项 ≤ 0 \leq 0 0. 然后因为负半定, 故第三项 ≤ 0 \leq 0 0. 则可知 ∥ α ˉ [ i ] s d h [ i ] ∥ \|{\bar\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}}\| αˉ[i]sdh[i] 越大, L ( α ˉ [ i ] s d h [ i ] ) L(\bar\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}) L(αˉ[i]sdh[i]) 越小. 故此时约束情况下的极小值在信赖域边界上取得, 即 ∥ α ˉ [ i ] s d h [ i ] ∥ = Δ [ i ] \left \| {\bar\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}} \right \| = \Delta_{[i]} αˉ[i]sdh[i] =Δ[i], 所以
α ˉ [ i ] = Δ [ i ] ∥ s d h [ i ] ∥ (II-3-3) \bar \alpha_{[i]} = \frac{\Delta_{[i]}}{\|^{sd}\mathbf{h}_{[i]}\|} \tag{II-3-3} αˉ[i]=sdh[i]Δ[i](II-3-3)
需要说明形如 J r ( x [ i ] ) T J r ( x [ i ] ) \mathbf{J}_r(\mathbf{x}_{[i]})^{\rm\small T} \mathbf{J}_r(\mathbf{x}_{[i]}) Jr(x[i])TJr(x[i]) 的对称矩阵, 不可能负定. 当 J r ( x [ i ] ) T J r ( x [ i ] ) = 0 \mathbf{J}_r(\mathbf{x}_{[i]})^{\rm\small T} \mathbf{J}_r(\mathbf{x}_{[i]}) = \mathbf{0} Jr(x[i])TJr(x[i])=0 时, 式 (II-3-3) 结论仍然成立.

如果 J r ( x [ i ] ) T J r ( x [ i ] ) \mathbf{J}_r(\mathbf{x}_{[i]})^{\rm\small T} \mathbf{J}_r(\mathbf{x}_{[i]}) Jr(x[i])TJr(x[i]) 正定的情况:

进一步假设, 如果 L ( α ˉ [ i ] s d h [ i ] ) L(\bar\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}) L(αˉ[i]sdh[i]) 的极小值点在信赖域内, 此时没有触发约束作用, 则有约束 α ˉ [ i ] \bar\alpha_{[i]} αˉ[i] 值和无约束 α [ i ] \alpha_{[i]} α[i] 值一致, 即式 (II-1-6) 所示.

进一步假设, 如果 L ( α ˉ [ i ] s d h [ i ] ) L(\bar\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}) L(αˉ[i]sdh[i]) 的极值点在信赖域外, 因为 L ( α ˉ [ i ] s d h [ i ] ) L(\bar\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}) L(αˉ[i]sdh[i]) 为凸函数的缘故, 此时约束域 (信赖域) 内的极小值也在信赖域边界上取得, 如式 (II-3-3).

也就是说, 如果 J r ( x [ i ] ) T J r ( x [ i ] ) \mathbf{J}_r(\mathbf{x}_{[i]})^{\rm\small T} \mathbf{J}_r(\mathbf{x}_{[i]}) Jr(x[i])TJr(x[i]) 正定, 有约束 α ˉ [ i ] \bar\alpha_{[i]} αˉ[i] 值为
α ˉ [ i ] = min ⁡ { ∥ s d h [ i ] ∥ 2 ∥ J r ( x [ i ] )   s d h [ i ] ∥ 2 , Δ [ i ] ∥ s d h [ i ] ∥ } (II-3-4) \bar\alpha_{[i]} = \min \left\{ \frac{\left\| {^{sd}\mathbf{h}_{[i]}} \right\|^2}{\left\|{\mathbf{J}_r(\mathbf{x}_{[i]}) \,{^{sd}\mathbf{h}_{[i]}}}\right\|^2} ,\frac{\Delta_{[i]}}{\|^{sd}\mathbf{h}_{[i]}\|} \right\} \tag{II-3-4} αˉ[i]=min{ Jr(x[i])sdh[i] 2 sdh[i] 2,sdh[i]Δ[i]}(II-3-4)
以上计算柯西点或对应迭代步的示意图如下.

目标函数的极小值点在信赖域 J r ( x [ i ] ) T J r ( x [ i ] ) = 0 \mathbf{J}_r(\mathbf{x}_{[i]})^{\rm\small T} \mathbf{J}_r(\mathbf{x}_{[i]})=\mathbf{0} Jr(x[i])TJr(x[i])=0 或目标函数的极小值点在信赖域
cauchy_point_1cauchy_point_2

III. 狗腿法的原理

1. 狗腿法的构建

有了上面的铺垫, 我们可以正式引入狗腿法了.

狗腿法是高斯-牛顿法和最速下降法的融合, 重点在于信赖域对融合结果的影响, 基本原理可用如下三张图说明.

分类情况与说明示意图
Case I: 高斯-牛顿法的目标函数的极小值在信赖域
如果高斯-牛顿法获得的下一迭代步在信赖域内部, 则狗腿法的当前步直接采用高斯-牛顿法的结果 g n h [ i ] ^{gn}\mathbf{h}_{[i]} gnh[i], 以取得更快的收敛效果.
DC-motor-1
Case II: 无约束最速下降法的目标函数的极小值在信赖域
排除高斯-牛顿法获得在信赖域内的迭代步的情况下 (即排除 Case I 之后), 如果无约束最速下降法的迭代步在信赖域之外, 那么柯西点只能在梯度相反方向与信赖域边界的交点上取得.
这种情况下, 使用柯西点结果 α ˉ [ i ] s d h [ i ] {\bar\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}} αˉ[i]sdh[i] 作为狗腿法的当前步.
DC-motor-1
Case III: 其他 (高斯-牛顿法迭代步目标函数的极小值在信赖域, 而无约束最速下降法迭代步目标函数的极小值在信赖域)
这种情况下的柯西点就是无约束最速下降法的迭代步. 此时狗腿法的路径是先沿着梯度反方向到达柯西点, 然后折向在信赖域外的高斯-牛顿步, 交于信赖域边缘, 这个交点就是该情况下的狗腿步.
也就是说, 该情况下的狗腿法结果是最速下降法和高斯-牛顿法之间的线性插值, 这个线性插值的权重分配决定于信赖域,
α [ i ] s d h [ i ] + β [ i ] ( g n h [ i ] − α [ i ] s d h [ i ] ) {\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}} + \beta_{[i]} ( ^{gn}\mathbf{h}_{[i]} -{\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}} ) α[i]sdh[i]+β[i](gnh[i]α[i]sdh[i])
其中 β [ i ] \beta_{[i]} β[i] 即为两类结果线性插值的权重.
信赖域较大的话, 高斯-牛顿步权重较大;
信赖域大到包含高斯-牛顿步的话, 就是 Case I;
信赖域较小的话, 最速下降步权重较大;
信赖域小到无法包含无约束最速下降步的话, 就是 Case II.
DC-motor-1

先把狗腿法原理介绍中基于信赖域的分类条件写成数学形式
Case I ⇔ ∥ g n h [ i ] ∥ ≤ Δ [ i ] Case II ⇔ ∥ α [ i ] s d h [ i ] ∥ ≥ Δ [ i ] Case III ⇔ ∥ g n h [ i ] ∥ > Δ [ i ] & ∥ α [ i ] s d h [ i ] ∥ < Δ [ i ] (III-1-1) \begin{aligned} \text{Case I} \quad &\Leftrightarrow \quad \|{^{gn}\mathbf{h}_{[i]}}\| \leq \Delta_{[i]}\\ \text{Case II} \quad &\Leftrightarrow \quad \| {\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}}\| \geq \Delta_{[i]}\\ \text{Case III} \quad &\Leftrightarrow \quad \|{^{gn}\mathbf{h}_{[i]}}\| > \Delta_{[i]} \quad \& \quad \| {\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}}\| < \Delta_{[i]} \end{aligned} \tag{III-1-1} Case ICase IICase IIIgnh[i]Δ[i]α[i]sdh[i]Δ[i]gnh[i]>Δ[i]&α[i]sdh[i]<Δ[i](III-1-1)
再由上面的原理介绍, 我们可知狗腿法的迭代步
d l h [ i ] = { g n h [ i ] , Case I Δ [ i ] ∥ s d h [ i ] ∥ s d h [ i ] , Case II α [ i ] s d h [ i ] + β [ i ] ( g n h [ i ] − α [ i ] s d h [ i ] ) , Case III (III-1-2) {^{dl}\mathbf{h}_{[i]}} = \left\{ {\begin{array}{ll} {^{gn}\mathbf{h}_{[i]}}, & \text{Case I}\\ {\frac{\Delta_{[i]}}{\|^{sd}\mathbf{h}_{[i]}\|} {^{sd}\mathbf{h}_{[i]}}}, & \text{Case II}\\ {\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}} + \beta_{[i]} ( ^{gn}\mathbf{h}_{[i]} -{\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}} ), & \text{Case III} \end{array}} \right.\tag{III-1-2} dlh[i]= gnh[i],sdh[i]Δ[i]sdh[i],α[i]sdh[i]+β[i](gnh[i]α[i]sdh[i]),Case ICase IICase III(III-1-2)
其中高斯-牛顿法的迭代步 g n h [ i ] {^{gn}\mathbf{h}_{[i]}} gnh[i] 的计算
g n h [ i ] = − ( H ~ ( x [ i ] ) ) − 1   ∇ g ( x [ i ] ) = − ( [ ∂ r ( x ) ∂ x ] T ∂ r ( x ) ∂ x ∣ x [ i ] ) − 1   ∇ g ( x [ i ] ) = − [ J r ( x [ i ] ) T J r ( x [ i ] ) ] − 1   ∇ g ( x [ i ] ) (III-1-3) \begin{aligned} {^{gn}\mathbf{h}_{[i]}} &= - \left( \widetilde{\mathbf{H}}(\mathbf{x}_{[i]}) \right)^{-1}\, \nabla g(\mathbf{x}_{[i]})\\ &= - \left(\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]}}\right)^{-1} \, \nabla g(\mathbf{x}_{[i]})\\ &= - \left[ \mathbf{J}_r(\mathbf{x}_{[i]})^{\small\rm T} \mathbf{J}_r(\mathbf{x}_{[i]}) \right]^{-1} \, \nabla g(\mathbf{x}_{[i]})\\ \end{aligned}\tag{III-1-3} gnh[i]=(H (x[i]))1g(x[i])= [xr(x)]Txr(x) x[i] 1g(x[i])=[Jr(x[i])TJr(x[i])]1g(x[i])(III-1-3)
因为需要计算高斯-牛顿法的迭代步, 由该方法的使用条件可知, 在狗腿法中也要求 J r ( x [ i ] ) T J r ( x [ i ] ) \mathbf{J}_r(\mathbf{x}_{[i]})^{\rm\small T} \mathbf{J}_r(\mathbf{x}_{[i]}) Jr(x[i])TJr(x[i])正定.


2. 狗腿法的优化说明

[1] Case I 和 Case II 的优化特性

狗腿法中 Case I 和 Case II 各自的最优化特性我们已经在 “高斯-牛顿法的优化观点” 和上面的 “柯西点” 中进行了说明.

再考虑到下面的结论 (结论 1)

- 高斯-牛顿步长度总是大于等于柯西步长度;

比较自然可以得到 Case I 和 Case II.

[2] Case III 的优化特性

但是 Case III 呢?

Case III “线性插值” 结构应该是构建性的, 基于这些历史留名的数学家的直觉.

那为什么也要到信赖域的边缘上才取得最优性能呢?

如果考虑到下面的引理 (本篇博文不展开讨论和证明)

- Case III 中, 迭代步长是插值权重参数 β \beta β 单调递增函数; (可以推出前面的 “结论 1”)

- Case III 中, 关于迭代步的近似模型函数是插值权重参数 β \beta β 的单调递减函数.

我们自然希望 Case III 中步长越长越好, 当然最大就是到达信赖域边缘.

以上作为对狗腿法优化特性的不严格说明. 下面分析插值权重参数 β \beta β 的具体计算.


3. 狗腿法的插值权重

下面需要进一步确定 Case III 中的插值权重系数 β [ i ] \beta_{[i]} β[i]​. 为了简化书写, 定义如下符号
a ≜ g n h [ i ] b ≜ α [ i ] s d h [ i ] c ≜ b T ( a − b ) β ≜ β [ i ] Δ ≜ Δ [ i ] (III-3-1) \begin{aligned} \mathbf{a} &\triangleq {^{gn}\mathbf{h}_{[i]}}\\ \mathbf{b} &\triangleq {\alpha_{[i]} {^{sd}\mathbf{h}_{[i]}}}\\ c & \triangleq \mathbf{b}^{\small\rm T} \left(\mathbf{a}- \mathbf{b}\right)\\ \beta & \triangleq \beta_{[i]} \\ \Delta & \triangleq \Delta_{[i]} \end{aligned} \tag{III-3-1} abcβΔgnh[i]α[i]sdh[i]bT(ab)β[i]Δ[i](III-3-1)
(参考了文献 [2], 但此处与文献中的 a \mathbf{a} a b \mathbf{b} b 的记号反过来了, 因为觉得高斯-牛顿法作用更大)

根据 Case III 中狗腿步在信赖域边缘上, 得到约束条件
∥ b + β ( a − b ) ∥ 2 = Δ 2 ⇒ ∥ a − b ∥ 2 β 2 + 2 c β + ∥ b ∥ 2 − Δ 2 = 0 (III-3-2) \| \mathbf{b} + \beta ( \mathbf{a} -\mathbf{b})\|^2 = \Delta^{2} \\ \Rightarrow \qquad \|\mathbf{a} - \mathbf{b}\|^2 {\color{blue}{\beta}^2} + 2 c {\color{blue}\beta} +\|\mathbf{b}\|^2 - \Delta^2 = 0 \tag{III-3-2} b+β(ab)2=Δ2ab2β2+2cβ+b2Δ2=0(III-3-2)
计算一元二次方程式 (III-3-2) 就能获得Case III 中的插值权重系数 β \beta β.

定义一元二次方程对应的一元二次函数
ψ ( β ) = ∥ a − b ∥ 2 β 2 + 2 c β + ∥ b ∥ 2 − Δ 2 (III-3-3) \psi(\beta) = \|\mathbf{a} - \mathbf{b}\|^2 {{\beta}^2} + 2 c {\beta} +\|\mathbf{b}\|^2 - \Delta^2 \tag{III-3-3} ψ(β)=ab2β2+2cβ+b2Δ2(III-3-3)
因为函数 ψ ( β ) \psi(\beta) ψ(β) 的二次项系数大于零 ( ∥ a − b ∥ 2 > 0 \|\mathbf{a} - \mathbf{b}\|^2 > 0 ab2>0), 故函数开口向上.

因为在 Case III 中 ∥ b ∥ 2 − Δ 2 < 0 \|\mathbf{b}\|^2-\Delta^2 < 0 b2Δ2<0, 故函数有两个根.

在 Case III 中,

β → − ∞ \beta \rightarrow -\infty β 时, ψ ( β ) → + ∞ \psi(\beta) \rightarrow +\infty ψ(β)+;

β = 0 \beta=0 β=0 时, ψ ( 0 ) < 0 \psi(0) < 0 ψ(0)<0;

β = 1 \beta = 1 β=1 时, ψ ( β ) = ∥ a ∥ 2 − Δ 2 > 0 \psi(\beta) = \|\mathbf{a}\|^2 - \Delta^2 > 0 ψ(β)=a2Δ2>0 (由式 (III-3-2) 中原始约束条件推到得到)

结合零点定理可知, ψ ( β ) \psi(\beta) ψ(β) 的两个根分布于 ( − ∞ , 0 ) (-\infty, 0) (,0) ( 0 , 1 ) (0,1) (0,1) 这两个区间内[2], 如下图所示.

函数示意
DC-motor-1

首先需要说明 0 < β < 1 0 < \beta < 1 0<β<1, 不然的话 Case III 中的狗腿步就不在柯西点和高斯-牛顿步的中间进行插值了, 即 0 < β < 1 0 < \beta < 1 0<β<1 这是由融合本身的要求决定的. 那么两个根中只要排除 ( − ∞ , 0 ) (-\infty,0) (,0) 区间内的根, 留下的另一就是可行解.

由一元二次方程求根公式
β = − c   ±   c 2 − ∥ a − b ∥ 2 ( ∥ b ∥ 2 − Δ 2 ) ∥ a − b ∥ 2 (III-3-4) \beta = \frac{-c \,{\color{red}\pm}\, \sqrt{c^2 - \|\mathbf{a}-\mathbf{b}\|^2 (\|\mathbf{b}\|^2-\Delta^2)} }{\|\mathbf{a}-\mathbf{b}\|^2} \tag{III-3-4} β=ab2c±c2ab2(b2Δ2) (III-3-4)
在 Case III 中 ∥ b ∥ 2 − Δ 2 < 0 \|\mathbf{b}\|^2-\Delta^2 < 0 b2Δ2<0, 故 c 2 − ∥ a − b ∥ 2 ( ∥ b ∥ 2 − Δ 2 ) > c 2 c^2 - \|\mathbf{a}-\mathbf{b}\|^2 (\|\mathbf{b}\|^2-\Delta^2) > c^2 c2ab2(b2Δ2)>c2, 则有 ∣ c ∣ < c 2 − ∥ a − b ∥ 2 ( ∥ b ∥ 2 − Δ 2 ) |c| < \sqrt{c^2 - \|\mathbf{a}-\mathbf{b}\|^2 (\|\mathbf{b}\|^2-\Delta^2)} c<c2ab2(b2Δ2) .

如果式 (III-3-4) 中的 “ ± \color{red}\pm ±” 符号取 “ − \color{blue}- ” 号, 此时必为负根, 需要排除.

所以式 (III-3-4) 中的 “ ± \color{red}\pm ±” 符号取 “ + \color{green}+ +” 号, 得到可行解. 即
β = − c   +   c 2 + ∥ a − b ∥ 2 ( Δ 2 − ∥ b ∥ 2 ) ∥ a − b ∥ 2 (III-3-5) \beta = \frac{-c \,{+}\, \sqrt{c^2 + \|\mathbf{a}-\mathbf{b}\|^2 (\Delta^2-\|\mathbf{b}\|^2)} }{\|\mathbf{a}-\mathbf{b}\|^2} \tag{III-3-5} β=ab2c+c2+ab2(Δ2b2) (III-3-5)

c < 0 c < 0 c<0 时, 分子部分是两部分正值相加, 即 − c > 0 -c> 0 c>0 c 2 + ∥ a − b ∥ 2 ( Δ 2 − ∥ b ∥ 2 ) > 0 \sqrt{c^2 + \|\mathbf{a}-\mathbf{b}\|^2 (\Delta^2-\|\mathbf{b}\|^2)} > 0 c2+ab2(Δ2b2) >0, 数值计算结果会比较稳定, 无需特殊处理.

c > 0 c > 0 c>0 时, 分子部分是一正一负相加, 即 − c < 0 -c< 0 c<0 c 2 + ∥ a − b ∥ 2 ( Δ 2 − ∥ b ∥ 2 ) > 0 \sqrt{c^2 + \|\mathbf{a}-\mathbf{b}\|^2 (\Delta^2- \|\mathbf{b}\|^2)} > 0 c2+ab2(Δ2b2) >0, 分子部分可能较接近于 0, 可能会使得数字计算的误差较大. 此时做一下分子有理化得到
β = Δ 2 − ∥ b ∥ 2 c   +   c 2 + ∥ a − b ∥ 2 ( Δ 2 − ∥ b ∥ 2 ) (III-3-6) \beta = \frac{\Delta^2 -\|\mathbf{b}\|^2}{c \,{+}\, \sqrt{c^2 + \|\mathbf{a}-\mathbf{b}\|^2 (\Delta^2-\|\mathbf{b}\|^2)}} \tag{III-3-6} β=c+c2+ab2(Δ2b2) Δ2b2(III-3-6)
使得分子和分母都是相对大一点的值, 以消除可能的数值计算病态问题.

最后, 插值权重参数 β \beta β 的具体计算整理为
β = { − c   +   c 2 + ∥ a − b ∥ 2 ( Δ 2 − ∥ b ∥ 2 ) ∥ a − b ∥ 2 , c ≤ 0 Δ 2 − ∥ b ∥ 2 c   +   c 2 + ∥ a − b ∥ 2 ( Δ 2 − ∥ b ∥ 2 ) , c > 0 (III-3-7) \beta = \left\{ \begin{array}{ll} \frac{-c \,{+}\, \sqrt{c^2 + \|\mathbf{a}-\mathbf{b}\|^2 (\Delta^2-\|\mathbf{b}\|^2)} }{\|\mathbf{a}-\mathbf{b}\|^2} , & c \leq 0\\ \frac{\Delta^2 -\|\mathbf{b}\|^2}{c \,{+}\, \sqrt{c^2 + \|\mathbf{a}-\mathbf{b}\|^2 (\Delta^2-\|\mathbf{b}\|^2)}}, & c> 0 \end{array} \right. \tag{III-3-7} β= ab2c+c2+ab2(Δ2b2) ,c+c2+ab2(Δ2b2) Δ2b2,c0c>0(III-3-7)


IV. 狗腿法的流程

1. 狗腿法的信赖域控制

在列文伯格-马夸尔特法中, 定义了增益比率来控制该方法中阻尼参数, 从而获得不同的迭代方法特性. 狗腿法如法炮制, 定义增益比率 (Gain Ratio),
ϱ [ i ] = g ( x [ i ] ) − g ( x [ i ] + d l h [ i ] ) L ( 0 ) − L ( d l h [ i ] ) (IV-1-1) \varrho_{[i]} = \frac{g(\mathbf{x}_{[i]})-g(\mathbf{x}_{[i]} + {^{dl}\mathbf{h}_{[i]})}}{L(\mathbf{0}) - L({^{dl}\mathbf{h}_{[i]}})} \tag{IV-1-1} ϱ[i]=L(0)L(dlh[i])g(x[i])g(x[i]+dlh[i])(IV-1-1)
通过增益比率 ϱ [ i ] \varrho_{[i]} ϱ[i] 来评估近似模型 L L L 对目标函数 g g g 的近似程度, 进而控制信赖域半径大小. 信赖域半径大小决定了狗腿法迭代步的优化性能.

如果信赖域半径太大, 近似模型和实际目标函数相差很远, 利用近似模型预测的最小值点 (迭代步到达点) 与实际目标函数最小值点相差很远, 迭代步无法以最优的方式到达更小目标值.

如果信赖域半径太小, 虽然在这个小小的信赖域内近似模型对实际目标函数拟合得很好, 但是通过狗腿法获得的是仅限于这个小小收敛域的优化解, 那么每一步的更新步长都很小, 无法实现快速迭代收敛.

增益比率 ϱ [ i ] \varrho_{[i]} ϱ[i] 的出现就是要解决上述问题.

如果增益比率 ϱ [ i ] \varrho_{[i]} ϱ[i] 为负数或者虽为正数但接近于 0 (数值比较小), 说明在当前的信赖域内近似模型 L L L 无法较好地拟合目标函数 g g g. 此时说明信赖域半径过大, 需要减小信赖域半径.

如果增益比率 ϱ [ i ] \varrho_{[i]} ϱ[i] 接近于 1 (数值比较大), 说明在当前信赖域内近似模型 L L L 非常好地拟合了目标函数 g g g. 此时为了更快地达到收敛, 可以在迭代步长上更加激进, 即可以增加信赖域半径.

得到如下信赖域半径控制算法[2]:
if      ϱ > 0.75 Δ : = max ⁡ { Δ ,   3 ∗ ∥ d l h ∥ } elseif      ϱ < 0.25 Δ : = Δ / 2 \begin{aligned} \textbf{if}\;\; &\varrho > 0.75\\ &\Delta := \max\{\Delta, \,3 *\|^{dl}\mathbf{h}\| \} \\ \textbf{elseif} \;\; &\varrho < 0.25\\ &\Delta := \Delta/2 \\ \end{aligned} ifelseifϱ>0.75Δ:=max{Δ,3dlh}ϱ<0.25Δ:=Δ/2


2. 狗腿法的停止条件

狗腿法的算法终止条件和列文伯格-马夸尔特法中的基本一致.

条件一. 梯度不再下降

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

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

条件二. 迭代点不更新

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

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

条件三. 残差足够小

∥ r ( x [ i ] ) ∥ ∞ ≤ ε 3 (IV-2-3) \|\mathbf{r}(\mathbf{x}_{[i]})\|_{\infty} \leq \varepsilon_3 \tag{IV-2-3} r(x[i])ε3(IV-2-3)

其中 ε 3 \varepsilon_3 ε3 为一小量. 其实条件三能够被条件一涵盖, 参见式 (II-1-3).

条件四. 达到最大迭代数

i ≥ i max ⁡ (IV-2-4) i \geq i_{\max} \tag{IV-2-4} iimax(IV-2-4)

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

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


3. 狗腿法的实现流程

狗腿法的算法流程[2]如下:

Powell’s   Dog   Leg   Method begin i : = 0 x : = x 0 Δ : = Δ 0 ∇ g ( x ) : = J r ( x ) T   r ( x ) f o u n d : = ( ∥ r ( x ) ∥ ∞ ≤ ε 3 )    or    ( ∥ ∇ g ( x ) ∥ ∞ ≤ ε 1 ) while      ( not    f o u n d )    and    ( i < i max ⁡ ) i : = i + 1 s d h : = − ∇ g ( x ) α : = ∥ s d h ∥ 2 ∥ J r ( x )   s d h ∥ 2 c p h : = α   s d h    {Steepest descent step} g n h : = − [ J r ( x ) T J r ( x ) ] − 1   ∇ g ( x ) {Gauss-Newton step} ϱ : = − 1 while      ( ϱ < 0 )    and    ( not    f o u n d )      {Until step acceptable} if      ∥ g n h ∥ ≤ Δ d l h : = g n h elseif      ∥ c p h ∥ ≥ Δ d l h : = Δ [ i ] ∥ s d h [ i ] ∥ s d h [ i ] else      c : = c p h T ( g n h − c p h ) if      c ≤ 0 β : = − c   +   c 2 + ∥ g n h − c p h ∥ 2 ( Δ 2 − ∥ c p h ∥ 2 ) ∥ g n h − c p h ∥ 2 else β : = Δ 2 − ∥ c p h ∥ 2 c   +   c 2 + ∥ g n h − c p h ∥ 2 ( Δ 2 − ∥ c p h ∥ 2 ) d l h : = c p h + β ( g n h − c p h ) if      ∥ d l h ∥ ≤ ε 2 ( ∥ x ∥ + ε 2 ) f o u n d : = true else x new : = x + d l h ϱ : = g ( x ) − g ( x new ) L ( 0 ) − L ( d l h ) if      ϱ > 0 {Step acceptable} x : = x new ∇ g ( x ) : = J r ( x ) T   r ( x ) f o u n d : = ( ∥ r ( x ) ∥ ∞ ≤ ε 3 )    or    ( ∥ ∇ g ( x ) ∥ ∞ ≤ ε 1 ) if      ϱ > 0.75      {Expanding trust region} Δ : = max ⁡ { Δ ,   3 ∗ ∥ d l h ∥ } elseif      ϱ < 0.25      {Shrinking trust region} Δ : = Δ / 2 f o u n d : = ( Δ ≤ ε 2 ( ∥ x ∥ + ε 2 ) ) end \begin{array}{ll} \textbf{Powell's Dog Leg Method}\\ \textbf{begin}\\ \qquad i:=0\\ \qquad \mathbf{x}:=\mathbf{x}_0\\ \qquad \Delta:=\Delta_0\\ \qquad \nabla {g}(\mathbf{x}) := \mathbf{J}_r(\mathbf{x}) ^{\rm\small T}\, \mathbf{r}(\mathbf{x})\\ \qquad found:= (\|\mathbf{r}(\mathbf{x})\|_{\infty} \leq \varepsilon_3) \; \textbf{or}\; \left(\| \nabla {g}(\mathbf{x}) \|_{\infin} \leq \varepsilon_1\right)\\ \textbf{while} \;\;(\textbf{not} \;found) \; \textbf{and}\; (i<i_{\max})\\ \qquad i:= i+1\\ \qquad {^{sd}\mathbf{h}} := - \nabla {g}(\mathbf{x}) \\ \qquad \alpha :=\frac{\left\| {^{sd}\mathbf{h}} \right\|^2}{\left\|{\mathbf{J}_r(\mathbf{x}) \,{^{sd}\mathbf{h}}}\right\|^2}\\ \qquad {^{cp}\mathbf{h}} := {\alpha\, {^{sd}\mathbf{h}}} \;\quad\qquad\qquad\qquad\qquad\qquad\qquad\quad \text{\color{grey}\{Steepest descent step\}}\\ \qquad {^{gn}\mathbf{h}} := - \left[ \mathbf{J}_r(\mathbf{x})^{\small\rm T} \mathbf{J}_r(\mathbf{x}) \right]^{-1} \, \nabla g(\mathbf{x}) \qquad\qquad\quad \text{\color{grey}\{Gauss-Newton step\}}\\ \qquad \varrho := -1\\ \qquad \textbf{while} \;\; (\varrho<0)\;\textbf{and}\; (\textbf{not}\; found)\,\quad \qquad\qquad\; \text{\color{grey}\{Until step acceptable\}}\\ \qquad\qquad \textbf{if}\;\; \|{^{gn}\mathbf{h}}\| \leq \Delta\\ \qquad\qquad\qquad {^{dl}\mathbf{h}}:= {^{gn}\mathbf{h}}\\ \qquad\qquad \textbf{elseif}\;\; \| {^{cp}\mathbf{h}} \| \geq \Delta\\ \qquad\qquad\qquad {^{dl}\mathbf{h}}:= {\frac{\Delta_{[i]}}{\|^{sd}\mathbf{h}_{[i]}\|} {^{sd}\mathbf{h}_{[i]}}}\\ \qquad\qquad \textbf{else}\;\; \\ \qquad\qquad\qquad c:= {^{cp}\mathbf{h}}^{\small\rm T} \left({^{gn}\mathbf{h}} - {^{cp}\mathbf{h}}\right)\\ \qquad\qquad\qquad \textbf{if} \;\; c \leq 0\\ \qquad\qquad\qquad\qquad \beta:=\frac{-c \,{+}\, \sqrt{c^2 + \|{^{gn}\mathbf{h}}-{^{cp}\mathbf{h}}\|^2 (\Delta^2-\|{^{cp}\mathbf{h}}\|^2)} }{\|{^{gn}\mathbf{h}} -{^{cp}\mathbf{h}}\|^2} \\ \qquad\qquad\qquad \textbf{else}\\ \qquad\qquad\qquad\qquad \beta:=\frac{\Delta^2 -\|{^{cp}\mathbf{h}}\|^2}{c \,{+}\, \sqrt{c^2 + \|{^{gn}\mathbf{h}}-{^{cp}\mathbf{h}}\|^2 (\Delta^2-\|{^{cp}\mathbf{h}}\|^2)}}\\ \qquad\qquad\qquad {^{dl}\mathbf{h}}:= {^{cp}\mathbf{h}} + \beta ( ^{gn}\mathbf{h} - {^{cp}\mathbf{h}} )\\ \qquad\qquad \textbf{if} \;\; \|{^{dl}\mathbf{h}}\| \leq \varepsilon_{2} (\|\mathbf{x}\|+\varepsilon_2)\\ \qquad\qquad\qquad found:= \textbf{true}\\ \qquad\qquad \textbf{else} \\ \qquad\qquad\qquad \mathbf{x}_{\text{new}} := \mathbf{x} + {^{dl}\mathbf{h}}\\ \qquad\qquad\qquad \varrho := \frac{g(\mathbf{x})-g(\mathbf{x}_{\text{new}})}{L(\mathbf{0}) - L({^{dl}\mathbf{h}})}\\ \qquad\qquad\qquad \textbf{if} \;\; \varrho>0 \qquad\qquad \qquad\qquad \qquad\qquad \text{\color{grey}\{Step acceptable\}}\\ \qquad\qquad\qquad\qquad \mathbf{x} := \mathbf{x}_{\text{new}} \\ \qquad\qquad\qquad\qquad \nabla {g}(\mathbf{x}) := \mathbf{J}_r(\mathbf{x}) ^{\rm\small T}\, \mathbf{r}(\mathbf{x})\\ \qquad\qquad\qquad \qquad found:= (\|\mathbf{r}(\mathbf{x})\|_{\infty} \leq \varepsilon_3) \; \textbf{or}\; \left(\| \nabla {g}(\mathbf{x}) \|_{\infin} \leq \varepsilon_1\right)\\ \qquad\qquad\qquad \textbf{if}\;\; \varrho > 0.75 \;\; \qquad\qquad\qquad \qquad\qquad \text{\color{grey}\{Expanding trust region\}} \\ \qquad\qquad\qquad\qquad \Delta := \max\{\Delta, \,3 *\|^{dl}\mathbf{h}\| \}\\ \qquad\qquad\qquad \textbf{elseif}\;\; \varrho < 0.25 \;\;\qquad\qquad \qquad\qquad \text{\color{grey}\{Shrinking trust region\}} \\ \qquad\qquad\qquad\qquad \Delta := \Delta/2 \\ \qquad\qquad\qquad\qquad found:=(\Delta \leq \varepsilon_{2} (\|\mathbf{x}\|+\varepsilon_2))\\ \textbf{end} \end{array} Powell’s Dog Leg Methodbegini:=0x:=x0Δ:=Δ0g(x):=Jr(x)Tr(x)found:=(r(x)ε3)or(∥∇g(x)ε1)while(notfound)and(i<imax)i:=i+1sdh:=g(x)α:=Jr(x)sdh2sdh2cph:=αsdh{Steepest descent step}gnh:=[Jr(x)TJr(x)]1g(x){Gauss-Newton step}ϱ:=1while(ϱ<0)and(notfound){Until step acceptable}ifgnhΔdlh:=gnhelseifcphΔdlh:=sdh[i]Δ[i]sdh[i]elsec:=cphT(gnhcph)ifc0β:=gnhcph2c+c2+gnhcph2(Δ2cph2) elseβ:=c+c2+gnhcph2(Δ2cph2) Δ2cph2dlh:=cph+β(gnhcph)ifdlhε2(x+ε2)found:=trueelsexnew:=x+dlhϱ:=L(0)L(dlh)g(x)g(xnew)ifϱ>0{Step acceptable}x:=xnewg(x):=Jr(x)Tr(x)found:=(r(x)ε3)or(∥∇g(x)ε1)ifϱ>0.75{Expanding trust region}Δ:=max{Δ,3dlh}elseifϱ<0.25{Shrinking trust region}Δ:=Δ/2found:=(Δε2(x+ε2))end


IV. 总结

本篇博文中, 我们先分析了列文伯格-马夸尔特法的特点, 引出我们要分析的狗腿法.

然后介绍了狗腿法涉及的两个基础算法类别, 线搜索类型和信赖域类型.

接着结合线搜索和信赖域介绍了柯西点.

有了以上的理论基础作铺垫, 我们开始介绍狗腿法的基本原理, 包括该方法的构建、优化性质的说明、插值权重参数的计算.

最后介绍狗腿法的算法流程, 分别是信赖域的控制、算法停止条件, 以及完整的狗腿算法流程.


在完整的狗腿算法流程中, 我们可以发现

- 每一迭代步只要完成一次高斯-牛顿步这类大计算工作即可;

- 即使遇到迭代步不获认可的情况, 也只需更新信赖域并重新组合迭代步, 而不需要重复计算如高斯-牛顿步等大工作.

在算法计算量/效率上明显区别于列文伯格-马夸尔特法的地方.

在列文伯格-马夸尔特法中, 如果遇到迭代步不获认可, 需要针对修改后的阻尼参数重新计算整个阻尼高斯-牛顿步.

所以说狗腿法的计算效率更高, 节省了大量计算消耗.


针对狗腿法的变化与改进也有很多, 比如狗腿法的二维子空间算法、双重狗腿法等, 本篇博文不再展开.


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


参考文献

[1] 刘浩洋, 户将, 李勇锋, 文再文, “最优化: 建模、算法与理论”, 高教出版社, 2020

[2] 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1396125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Security 优化鉴权注解:自定义鉴权注解的崭新征程

文章目录 1. 引言2. Spring Security基础2.1 Spring Security概述2.2 PreAuthorize注解 3. 自定义鉴权注解的优势3.1 业务语义更明确3.2 参数化鉴权更灵活3.3 可维护性更好 4. 实现自定义鉴权注解4.1 创建自定义注解4.2 实现鉴权逻辑4.3 注册自定义注解和逻辑4.4 使用自定义注解…

去掉element-ui的el-table的所有边框+表头+背景颜色

实例: 1.去掉table表头(加上:show-header"false") <el-table:data"tableData":show-header"false"style"width: 100%"> </el-table> 2.去掉table所有边框 ::v-deep .el-table--border th.el-table__cell, ::v-deep .el…

.NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接

Flurl.Http-3.2.4 升级到 4.0.0 版本后&#xff0c;https请求异常&#xff1a;Call failed. The SSL connection could not be established. 如下图&#xff1a; Flurl.Http-3.2.4版本绕过https的代码&#xff0c;对于 Flurl.Http-4.0.0 版本来说方法不再适用&#xff0c;3.2.…

如何定义眼图测试模板

设计眼图模板时所需的参数列举如下&#xff1a; TCLK clock period&#xff0c;时钟周期&#xff1b;TSKEW the difference between the clock and data propagation time&#xff0c;时钟和数据之间的偏斜&#xff0c;默认为0&#xff1b;TJITTER clock data jitter (pea…

代码随想录 Leetcode459. 重复的子字符串(KMP算法)

题目&#xff1a; 代码&#xff08;首刷看解析 KMP算法 2024年1月18日&#xff09;&#xff1a; class Solution { public:void getNext(string& s,vector<int>& next) {int j 0;next[0] j;for (int i 1; i < s.size(); i) {while (j > 0 && s…

leetcode:1736. 替换隐藏数字得到的最晚时间(python3解法)

难度&#xff1a;简单 给你一个字符串 time &#xff0c;格式为 hh:mm&#xff08;小时&#xff1a;分钟&#xff09;&#xff0c;其中某几位数字被隐藏&#xff08;用 ? 表示&#xff09;。 有效的时间为 00:00 到 23:59 之间的所有时间&#xff0c;包括 00:00 和 23:59 。 …

【Qt】安装及环境搭建

概述&#xff1a;1. 搭建《QtCreator快速入门》一书中所使用的Qt版本qt6.2.3 文章目录 1 安装2 环境变量设置 1 安装 先下载下载器&#xff0c;然后在下载器中选择自己需要的版本下载并安装&#xff0c;有点像 LOL 下载器&#xff0c;先下个小的&#xff0c;然后再在这个下载器…

芯品荟 | 酒精测试仪市场调研报告

产品简介 酒精检测仪是一种可以测量人体酒精浓度的电子设备。 它可以通过呼气或血液等方式来检测酒精浓度&#xff0c;被广泛应用于交通安全、职业健康等领域。 酒精检测仪的工作原理&#xff1a; 1、酒精检测仪分为2种&#xff0c;基于化学传感器与基于光学传感器&#xff…

RDMA Scatter Gather List详解

1. 前言 在使用RDMA操作之前&#xff0c;我们需要了解一些RDMA API中的一些需要的值。其中在ibv_send_wr我们需要一个sg_list的数组&#xff0c;sg_list是用来存放ibv_sge元素&#xff0c;那么什么是SGL以及什么是sge呢&#xff1f;对于一个使用RDMA进行开发的程序员来说&#…

Docker(三)使用 Docker 镜像:从仓库获取镜像;管理本地主机上的镜像;介绍镜像实现的基本原理

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 使用 Docker 镜像 在之前的介绍中&#xff0c;我们知道镜像是 Docker 的三大组件之一。 Docker 运行容器前需要本地存在对应的镜像&#x…

牛客周赛 Round 15 解题报告 | 珂学家 | 状态DP构造 + 树形DP

前言 整体评价 这场T3挺有意思的&#xff0c;只会3维状态DP进行构造。不过这题其实是脑筋急转弯&#xff0c;有规律可循。 T4是经典的树形DP&#xff0c;从比赛来看&#xff0c;T3难于T4. A. 游游的整数切割 枚举遍历就行&#xff0c;需要满足前后两段其末尾的元素奇偶一致 …

Docker 与 Linux Cgroups:资源隔离的魔法之旅

这篇文章主要介绍了 Docker 如何利用 Linux 的 Control Groups&#xff08;cgroups&#xff09;实现容器的资源隔离和管理。 最后通过简单 Demo 演示了如何使用 Go 和 cgroups 交互。 如果你对云原生技术充满好奇&#xff0c;想要深入了解更多相关的文章和资讯&#xff0c;欢迎…

Python OpenCV 影像处理:影像二值化

► 前言 本篇将介绍使用OpenCV Python对于图像上的二值化操作&#xff0c;二值化主要用途包括图像分割、物体侦测、文字识别等。这种转换可以帮助检测图像中的物体或特定特征&#xff0c;并提取有用的信息。透过程式码的说明&#xff0c;让各位了解OpenCV Python于图像处理上的…

mysql安装及部署

1.在/usr/local下创建mysql目录 cd /usr/local mkdir /mysql 2.在mysql目录中下载 cd mysql/ wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.34-1.el9.x86_64.rpm-bundle.tar 3.解压 tar xvf mysql-8.0.34-1.el9.x86_64.rpm-bundle.tar 4.安装 dnf localinst…

JS-WebAPIs-元素尺寸与位置(三)

使用场景&#xff1a; 前面案例滚动多少距离&#xff0c;都是我们自己算的&#xff0c;最好是页面滚动到某个元素&#xff0c;就可以做某些事。简单说&#xff0c;就是通过js的方式&#xff0c;得到元素在页面中的位置这样我们可以做&#xff0c;页面滚动到这个位置&#xff0…

137基于matlab的面和线接触的滑块润滑

基于matlab的面和线接触的滑块润滑&#xff0c;基于有限差分法求解面接触滑块润滑的油膜厚度、油膜压力&#xff0c;输出三维可视化结果。程序已调通&#xff0c;可直接运行。 137 matlab油膜压力油膜厚度 (xiaohongshu.com)

商用软件方案的多种交付方式有什么优势?

商用软件方案在交付上&#xff0c;往往存在多种模式&#xff0c;包括SaaS模式、私有化部署、SDK嵌入式等等&#xff0c;SaaS模式讲究一个标准化&#xff0c;旨在最大限度的降低部署成本&#xff0c;但对于一些定制化程度比较高的需求&#xff0c;往往企业仍然需要采用私有化部署…

暴雨信息与英特尔联合发布全球首个全液冷冷板服务器参考设计

科技之家 1 月 19 日消息&#xff0c;据暴雨服务器官方消息&#xff0c;1 月 18 日&#xff0c;暴雨信息与英特尔联合发布全球首个全液冷冷板服务器参考设计&#xff0c;并面向业界开放&#xff0c;推动全液冷冷板解决方案在全球数据中心的大规模部署应用。 基于该参考设计&am…

10个常考的前端手写题,你全都会吗?

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 今天来分享一下10个常见的JavaScript手写功能。 目录 1.实现new 2.call、apply、…

区域入侵检测AI边缘计算智能分析网关V4如何通过ssh进行服务器远程运维

智能分析网关V4是一款高性能、低功耗的AI边缘计算硬件设备&#xff0c;它采用了BM1684芯片&#xff0c;集成高性能8核ARM A53&#xff0c;主频高达2.3GHz&#xff0c;并且INT8峰值算力高达17.6Tops&#xff0c;FB32高精度算力达到2.2T&#xff0c;每个摄像头可同时配置3种算法&…