"天之道也"
- 0. 引入
- 1. 最速下降法
- 2. 牛顿法
- 3. (实用)G-N法
- 4. (实用)L-M方法
- 5. 总结
注意: 上一节得到的最小二乘问题,本节来讨论---- 求解非线性最小二乘问题 \color {red}求解非线性最小二乘问题 求解非线性最小二乘问题
0. 引入
求解这个简单的最小二乘问题:
min
x
1
2
∣
∣
f
(
x
)
∣
∣
2
2
(
1
)
\min\limits_{x} \frac{1}{2}||f(x)||_2^2\qquad\qquad\qquad\qquad\qquad (1)
xmin21∣∣f(x)∣∣22(1)
- 最优条件法:当函数存在解析形式,能够通过最优性条件求解出显式最优解,类似求导之类的;
- 迭代法:从初始值出发,不断更新当前的优化变量,使目标函数下降。
一个简单的迭代法步骤:
很少有函数能满足存在解析形式,迭代法的研究是首选,后边要做的就是如何确定增量
Δ
x
k
\Delta x_k
Δxk,也引出了一些方法。
1. 最速下降法
也叫一阶梯度法,首先将目标函数泰勒展开至一阶:
∣
∣
f
(
x
+
Δ
x
)
∣
∣
2
2
≈
∣
∣
f
(
x
)
∣
∣
2
2
+
J
(
x
)
Δ
x
⇓
其中
J
是
∣
∣
f
(
x
)
∣
∣
2
2
关于
x
的导数
(
雅克比矩阵
)
⇓
增量方向为
Δ
x
∗
=
−
J
T
(
x
)
||f(x+\Delta x)||_2^2 \approx ||f(x)||_2^2 + J(x)\Delta x\\\; \\ \Downarrow 其中J是||f(x)||_2^2关于x的导数(雅克比矩阵)\\\;\\ \\ \Downarrow增量方向为\\\; \\ \color {red}\Delta x^* = -J^T(x)
∣∣f(x+Δx)∣∣22≈∣∣f(x)∣∣22+J(x)Δx⇓其中J是∣∣f(x)∣∣22关于x的导数(雅克比矩阵)⇓增量方向为Δx∗=−JT(x)
- 优点:直观,避免了求导的困难。
- 缺点:贪心,下降路线锯齿状,迭代次数多。
2. 牛顿法
也叫二阶梯度法,首先将目标函数泰勒展开至二阶:
∣
∣
f
(
x
+
Δ
x
)
∣
∣
2
2
≈
∣
∣
f
(
x
)
∣
∣
2
2
+
J
(
x
)
Δ
x
+
1
2
Δ
x
T
H
Δ
x
⇓
其中
H
是
∣
∣
f
(
x
)
∣
∣
2
2
关于
x
的二阶导数
(
海森矩阵
)
⇓
求右侧关于
Δ
x
的导数令其等于
0
,则增量的解为
H
Δ
x
=
−
J
T
||f(x+\Delta x)||_2^2 \approx ||f(x)||_2^2 + J(x)\Delta x + \frac{1}{2}\Delta x^TH\Delta x\\\; \\ \Downarrow 其中H是||f(x)||_2^2关于x的二阶导数(海森矩阵)\\\;\\ \\ \Downarrow求右侧关于\Delta x 的导数令其等于0,则增量的解为\\\; \\ \color {red}H\Delta x = -J^T
∣∣f(x+Δx)∣∣22≈∣∣f(x)∣∣22+J(x)Δx+21ΔxTHΔx⇓其中H是∣∣f(x)∣∣22关于x的二阶导数(海森矩阵)⇓求右侧关于Δx的导数令其等于0,则增量的解为HΔx=−JT
- 优点:直观,避免了求导的困难。
- 缺点:海森矩阵的计算运算量大。
3. (实用)G-N法
Gauss Newton 简单,它是将
f
(
x
)
f(x)
f(x) 展开:
f
(
x
+
Δ
x
)
≈
f
(
x
)
+
J
(
x
)
Δ
x
f(x+\Delta x) \approx f(x) + J(x)\Delta x
f(x+Δx)≈f(x)+J(x)Δx
这里的
J
J
J是
f
(
x
)
f(x)
f(x)关于
x
x
x的导数,将上式带入(1)式中,按照平方展开可得:
1
2
∣
∣
f
(
x
)
+
J
(
x
)
Δ
x
∣
∣
2
=
1
2
(
∣
∣
f
(
x
)
∣
∣
2
2
+
2
f
(
x
)
T
J
(
x
)
Δ
x
+
Δ
x
T
J
(
x
)
T
J
(
x
)
Δ
x
)
⇓
求关于
Δ
x
的导数,并令其
=
0
,可得增量方程
J
(
x
)
T
J
(
x
)
Δ
x
=
−
J
(
x
)
T
f
(
x
)
⇓
令
H
=
J
J
T
,其实就是牛顿法中海森矩阵的近似
⇓
令
g
=
−
J
(
x
)
T
f
(
x
)
H
Δ
x
=
g
\frac{1}{2}||f(x)+J(x)\Delta x||^2 =\frac{1}{2} (||f(x)||^2_2+2f(x)^TJ(x)\Delta x+\Delta x^TJ(x)^TJ(x)\Delta x) \\\;\\\Downarrow 求关于\Delta x的导数,并令其=0,可得增量方程 \\\; \\ \color {red}J(x)^TJ(x)\Delta x = - J(x)^Tf(x) \color{b} \\\;\\\Downarrow 令H = JJ^T,其实就是牛顿法中海森矩阵的近似 \\\Downarrow 令g=-J(x)^Tf(x) \\\; \\H\Delta x = g
21∣∣f(x)+J(x)Δx∣∣2=21(∣∣f(x)∣∣22+2f(x)TJ(x)Δx+ΔxTJ(x)TJ(x)Δx)⇓求关于Δx的导数,并令其=0,可得增量方程J(x)TJ(x)Δx=−J(x)Tf(x)⇓令H=JJT,其实就是牛顿法中海森矩阵的近似⇓令g=−J(x)Tf(x)HΔx=g
通过以上推导,我们可以将G-N(Gauss-Newton)迭代法步骤列出:
- 缺点: 用 J T J J^TJ JTJ近似 H H H,但是 H H H可逆且正定,而 J T J J^TJ JTJ实际上半正定,还有可能奇异或者病态,稳定性差。
- 优点: 很多算法和一些线搜索算法是它的变种,都借助了G-N的思想。
4. (实用)L-M方法
Levenberg-Marquadt(列文博格-马夸尔特)也叫阻尼牛顿法。是一种信赖域方法(为
Δ
x
\Delta x
Δx添加一个信赖域,不因太大而不准确),在区域内近似是有效的。
确定信赖域范围:
ρ
=
f
(
x
+
Δ
x
)
−
f
(
x
)
J
(
x
)
Δ
x
\rho = \frac{f(x+\Delta x) - f(x)}{J(x)\Delta x}
ρ=J(x)Δxf(x+Δx)−f(x)
- 分子是实际函数的下降值
- 分母是近似模型的下降值
- 两个的比值 ρ \rho ρ接近1,是好的。
由是,我们可以写出L-M的迭代过程:
- 在上式中,将 D D D 取 I I I,相当于把 Δ x \Delta x Δx 约束在一个半径为 μ \mu μ球中。也可以自定义为椭球,对梯度小的维度约束更大
上述步骤2中的两个式子,含有不等式,用拉格朗日乘子 λ \lambda λ将其转化为无约束问题:
min
Δ
x
k
1
2
∣
∣
f
(
x
k
)
+
J
(
x
k
)
Δ
x
k
∣
∣
2
+
λ
2
∣
∣
D
Δ
x
∣
∣
2
⇓
展开,核心还是计算增量的线性方程,取简化
D
=
I
(
H
+
λ
I
)
Δ
x
=
g
\min\limits_{\Delta {x_k}} \frac{1}{2}||f(x_k)+J(x_k)\Delta x_k||^2 + \frac{\lambda}{2}||D \Delta x||^2 \\\;\\\Downarrow 展开,核心还是计算增量的线性方程,取简化D=I \\\; \\ (H + \lambda I)\Delta x = g
Δxkmin21∣∣f(xk)+J(xk)Δxk∣∣2+2λ∣∣DΔx∣∣2⇓展开,核心还是计算增量的线性方程,取简化D=I(H+λI)Δx=g
不难看出,
λ
\lambda
λ 小的时候H占据主导地位算法接近G-N,较大的时候算法接近最速下降法。
5. 总结
非线性优化的框架:
- 线搜索: 固定搜索方向,然后寻找步长。含G-N, 最速下降法
- 信赖域:固定搜索区域,寻找区域内的最优点,L-M法。
所有理论来自《数值优化》,只介绍了两种简单的。
- 初始值的选取:不可随意,在视觉SLAM中用 ICP, PnP
- Δ x \Delta x Δx 是多维的,几百上千几十万等,求解时要用矩阵论知识,QR,Cholesky分解等,它的系数形式确保了实时性