非线性最小二乘问题:
minx⃗ 12‖f(x⃗ )‖22
min
x
→
1
2
‖
f
(
x
→
)
‖
2
2
其 迭代解步骤为:
1) 给定初值 x⃗ 0 x → 0 ;
2) 对 k k 次迭代,寻找增量, 使得 ‖f(x⃗ k+△x⃗ k)‖22 ‖ f ( x → k + △ x → k ) ‖ 2 2 ;
3) 若 △x⃗ k △ x → k 足够小,则停止迭代;
4) 否则令 x⃗ k+1=x⃗ k+△x⃗ k x → k + 1 = x → k + △ x → k ,返回2).
牛顿法
为方便讨论,将最小问题在
x
x
附近泰勒展开:
式中 J J 为Jacobi矩阵,而 H H 为Hessian矩阵。
如果只保留一阶梯度,而增量方向为:
△x⃗ ∗=−J⊤(x⃗ )
△
x
→
∗
=
−
J
⊤
(
x
→
)
上式若加上一个步长 λ λ , 则为最速下降算法.
若保留到二阶梯度,则增量方程为:
△x⃗ ∗=argmin‖f(x⃗ )‖22+J(x⃗ )△x⃗ +12△x⃗ ⊤H△x⃗
△
x
→
∗
=
arg
min
‖
f
(
x
→
)
‖
2
2
+
J
(
x
→
)
△
x
→
+
1
2
△
x
→
⊤
H
△
x
→
对上式求导并令其为0,则增量的解为:
H△x⃗ =−J⊤
H
△
x
→
=
−
J
⊤
上试称为
牛顿法
。牛顿法需要求解二阶Hessian矩阵,在求解规模较大时非常困难。
Gauss-Newton
Gauss-Newton
的思想是将
f(x⃗ )
f
(
x
→
)
进行一阶泰勒展开:
f(x⃗ +△x⃗ )≈f(x⃗ )+J(x⃗ )△x⃗
f
(
x
→
+
△
x
→
)
≈
f
(
x
→
)
+
J
(
x
→
)
△
x
→
Gauss-Newton的目标是寻找一个 △x⃗ △ x → ,使得 ‖f(x⃗ +△x⃗ )‖2 ‖ f ( x → + △ x → ) ‖ 2 最小。所以需要解一个线性最小二乘问题:
△x⃗ ∗=argmin△x⃗ 12‖f(x⃗ +J△x⃗ )‖2
△
x
→
∗
=
arg
min
△
x
→
1
2
‖
f
(
x
→
+
J
△
x
→
)
‖
2
将右边平方项展开并令其导数为0,则可得到:
2J⊤f(x⃗ )+2J(x⃗ )⊤J(x⃗ )△x⃗ =0⃗
2
J
⊤
f
(
x
→
)
+
2
J
(
x
→
)
⊤
J
(
x
→
)
△
x
→
=
0
→
解得方程组为:
J(x⃗ )⊤J(x⃗ )△x⃗ =−J(x⃗ )⊤f(x⃗ )
J
(
x
→
)
⊤
J
(
x
→
)
△
x
→
=
−
J
(
x
→
)
⊤
f
(
x
→
)
此为Gauss-Newton方程。左边系数记为 H H ,右边记为 g⃗ g → ,变换为:
H△x⃗ =g⃗
H
△
x
→
=
g
→
可见 Gauss-Newton用 J(x⃗ )⊤J(x⃗ ) J ( x → ) ⊤ J ( x → ) 作为二阶Hessian矩阵的近似。
Levenberg-Marquadt法
Levenberg-Marquadt
方法:给
△x⃗
△
x
→
添加信赖区域(trust region),信赖区域通过下式确定:
ρ=f(x⃗ +△x⃗ )−f(x⃗ )J(x⃗ )△x⃗
ρ
=
f
(
x
→
+
△
x
→
)
−
f
(
x
→
)
J
(
x
→
)
△
x
→
于是第 k k 次迭代公式变为:
其中 μ μ 为信赖区域的半径, D D 若为单位矩阵 I I ,则 △x⃗ △ x → 将约束在一个球中; 实际上常将 D D 取成一个非负数对角阵。
为解L-M问题,用Lagrange乘子转化为无约束问题:
min△x⃗ k12‖f(x⃗ k)+J(xk)△xk‖2+12λ‖D△x⃗ ‖2
min
△
x
→
k
1
2
‖
f
(
x
→
k
)
+
J
(
x
k
)
△
x
k
‖
2
+
1
2
λ
‖
D
△
x
→
‖
2
类似于Gauss-Newton展开可得:
(H+λD⊤D)△x⃗ =g
(
H
+
λ
D
⊤
D
)
△
x
→
=
g