背景
最优化方法,也是一种迭代求函数极值的方法
核心内容
- 雅可比矩阵
- 梯度下降法
- 高斯牛顿法
特点
针对一些非线性的代价函数求解用最小二乘法有难度,用LM算法会简单许多。本质算是一种带阻尼的高斯-牛顿法
Levenberg-Marquarelt法
回顾A:牛顿法求解极值问题 x k = x k − 1 − H ( x k − 1 − 1 ) ▽ f ( x k − 1 ) x_k=x_{k-1}-H(x_{k-1}^{-1})\triangledown f(x_{k-1}) xk=xk−1−H(xk−1−1)▽f(xk−1)
存在问题:
1.计算量大;
2.海森矩阵可能非正定难以求逆;
3.奇异矩阵,不能求逆;
4.不能保证目标函数是下降的;
5.不能保证收敛;
回顾B:梯度下降法求解极值问题
x
k
=
x
k
−
1
−
α
▽
f
(
x
)
x_k=x_{k-1}-\alpha \triangledown f(x)
xk=xk−1−α▽f(x)
其中,
α
\alpha
α是步长
LM法
x k = x k − 1 − ( H + α I ) − 1 ▽ f ( x k − 1 ) x_k=x_{k-1}-(H+\alpha I)^{-1}\triangledown f(x_{k-1}) xk=xk−1−(H+αI)−1▽f(xk−1)
当下降太快时使用较小的 α \alpha α,使整个公式接近高斯牛顿法;
当下降太慢时使用较大的 α \alpha α,使整个公式接近梯度下降法
引:最小二乘问题
对于一个非线性最小二乘问题:
x
=
a
r
g
m
i
n
x
F
(
x
)
=
a
r
g
m
i
n
x
1
2
∑
i
=
1
N
∣
∣
f
(
x
)
∣
∣
2
x=argmin_x F(x)=argmin_x\frac{1}{2}\sum_{i=1}^{N}||f(x)||^2
x=argminxF(x)=argminx21i=1∑N∣∣f(x)∣∣2
则可以令:
F
(
x
)
=
1
2
∑
i
=
1
N
∣
∣
f
(
x
)
∣
∣
2
=
1
2
∣
∣
f
(
x
)
∣
∣
2
=
1
2
f
(
x
)
T
f
(
x
)
F(x)=\frac{1}{2}\sum_{i=1}^{N}||f(x)||^2=\frac{1}{2}||\mathbf{f}(x)||^2=\frac{1}{2}\mathbf{f}(x)^T\mathbf{f}(x)
F(x)=21i=1∑N∣∣f(x)∣∣2=21∣∣f(x)∣∣2=21f(x)Tf(x)
给出
f
(
x
)
\mathbf{f}(x)
f(x)的一阶泰勒展开式:
f
(
x
+
h
)
=
f
(
x
)
+
J
′
(
x
)
h
+
o
(
h
T
h
)
\mathbf{f}(x+h)=\mathbf{f}(x)+\mathbf{J}'(x)h+o(h^Th)
f(x+h)=f(x)+J′(x)h+o(hTh)
去掉高阶项,代入到
F
(
x
)
F(x)
F(x):[了解向量函数运算]
F
(
x
+
h
)
≃
L
(
h
)
=
1
2
f
T
f
+
h
T
J
f
+
1
2
h
T
J
T
J
h
F(x+h)\simeq L(h)=\frac{1}{2}\mathbf{f}^T\mathbf{f}+h^T\mathbf{J}\mathbf{f}+\frac{1}{2}h^T\mathbf{J}^T\mathbf{J}h
F(x+h)≃L(h)=21fTf+hTJf+21hTJTJh到这里,如果是直接对
h
h
h求导,令其等于0,则是牛顿法的求解方法,难点在于
(
J
)
T
J
\mathbf(J)^T\mathbf{J}
(J)TJ的逆难求,因此LM方法是加一个阻尼项
1
2
μ
h
T
h
\frac{1}{2}\mu h^Th
21μhTh:
h
=
a
r
g
m
i
n
h
G
(
H
)
=
a
r
g
m
i
n
h
1
2
f
T
f
+
h
T
J
f
+
1
2
h
T
J
T
J
h
+
1
2
μ
h
T
h
h = argmin_h G(H)=argmin_h \frac{1}{2}\mathbf{f}^T\mathbf{f}+h^T\mathbf{J}\mathbf{f}+\frac{1}{2}h^T\mathbf{J}^T\mathbf{J}h+\frac{1}{2}\mu h^Th
h=argminhG(H)=argminh21fTf+hTJf+21hTJTJh+21μhTh
因此,上式对
h
h
h求偏导=0【Why?:微积分+泰勒展开式】,得到:
h
=
−
g
H
+
μ
I
h=-\frac{g}{\mathbf{H}+\mu\mathbf{I}}
h=−H+μIg
其中:
H
=
J
T
J
,
g
=
J
T
\mathbf{H}=\mathbf{J}^T\mathbf{J} , g=\mathbf{J}^T
H=JTJ,g=JT