求解非线性最小二乘问题
min
x
F
(
x
)
=
1
2
∥
f
(
x
)
∥
\min_{x} F(x) = \frac{1}{2}\left \| f(x)\right \|
xminF(x)=21∥f(x)∥
首先获得
F
(
x
k
+
Δ
x
k
)
F(x_k+\Delta x_k)
F(xk+Δxk)的具体数值,方法是在
x
k
x_k
xk的位置进行泰勒展开,二阶一般就足够近似了。
F
(
x
k
+
Δ
x
k
)
≈
F
(
x
k
)
+
J
T
(
x
k
)
Δ
x
k
+
1
2
Δ
x
k
T
H
(
x
k
)
Δ
x
k
F(x_k+\Delta x_k) \approx F(x_k) + J^T(x_k)\Delta x_k + \frac{1}{2}\Delta x_k^TH(x_k)\Delta x_k
F(xk+Δxk)≈F(xk)+JT(xk)Δxk+21ΔxkTH(xk)Δxk
- J ( x k ) J(x_k) J(xk) 雅可比矩阵Jacobian(梯度、一阶导数),表格中用 J J J表示。
- H ( x k ) H(x_k) H(xk) 海森矩阵hessian(二阶、导数),表格中用 H H H表示。
- x k x_k xk 已知,,表格中用 x x x表示。
- Δ x k \Delta x_k Δxk 带求量已知,表格中用 Δ x \Delta x Δx表示。
优化算法 | 主要思路 | 更新公式 | 优势 | 缺点 |
---|---|---|---|---|
最速下降法 | 梯度方向是上升方向,所以沿着负梯度方向 − J -J −J更新 x x x,可以使 F ( x ) F(x) F(x)逐步获得最小值。更新的步长为 − λ -\lambda −λ | Δ x = − λ J \Delta x=-\lambda J Δx=−λJ | 是下降算法 | 容易出现锯齿现象,增加迭代的次数 |
牛顿法 | 二阶泰勒展开的数值最小,一般是对 Δ x \Delta x Δx求导导数为0的极值点 | J + H Δ = 0 J+H\Delta = 0 J+HΔ=0 | 是下降算法 | 需要计算H矩阵,计算量大 |
高斯牛顿法 | 使用 f ( x ) f(x) f(x)的雅可比矩阵 J ( x ) J T ( x ) J(x)J^T(x) J(x)JT(x)近似 H H H矩阵, f ( x + Δ x ) = f ( x ) + J ( x ) T Δ x f(x +\Delta x) = f(x) + J(x)^T \Delta x f(x+Δx)=f(x)+J(x)TΔx | J ( x ) J T ( x ) Δ x = − J ( x ) f ( x ) ⇒ H ( x ) Δ x = g ( x ) J(x)J^T(x) \Delta x = - J(x)f(x) \Rightarrow H(x)\Delta x = g(x) J(x)JT(x)Δx=−J(x)f(x)⇒H(x)Δx=g(x) | 避免了计算 H H H导致的计算量过大的问题 | 使用 J ( x ) J T ( x ) J(x)J^T(x) J(x)JT(x)近似的 H ( x ) H(x) H(x)半正定肯出现奇异病态;近似的 H ( x ) H(x) H(x)只在 x x x附近效果不错,可能出现求解得到的 Δ x \Delta x Δx的步长过大,局部的近似不准确的问题。 |
LM优化算法 | 考虑到高斯牛顿法近似不准确,给定一个近似的信赖区间半径 μ \mu μ,并根据 ρ = f ( x + Δ x ) − f ( x ) J T ( x ) Δ x \rho = \frac{f(x + \Delta x)-f(x)}{J^T(x)\Delta x} ρ=JT(x)Δxf(x+Δx)−f(x)指标判断 μ \mu μ的好坏, ρ \rho ρ大于一定值可以增加 μ \mu μ半径,反之亦然。 | ( H ( x ) + λ D T D ) Δ x = g ( x ) (H(x) + \lambda D^TD) \Delta x= g(x) (H(x)+λDTD)Δx=g(x),相比于高斯牛顿法多了 λ D T D \lambda D^TD λDTD,可以将$ D^TD$近似为单位矩阵 I I I进行简化 | λ \lambda λ比较小时,近似于高斯牛顿法; | λ \lambda λ比较大的时候, λ I \lambda I λI占主要地位,近似于最速度下降法 |