Levenberg-Marquardt(LM算法)的理解

1. convex optimization

先簡單介紹一下凸優化的內容
First quickly introduction the convex optimization concepts.

1.1 convex set

Definition:
for x1,x2Ax_{1}, x_{2} \in A, we say AA is a convex set if and only if the following holds for any θ[0,1]\theta \in [0,1]:
θx1+(1θ)x2A \theta x_{1} + (1- \theta)x_{2} \in A
Alt
凸函數的定義如上,不過可以通過下面的圖簡單理解。可以直覺得說,如果兩點集合內的點的“連線“上的點都在集合內,那麼它就是一個凸集合。
We can quickly understand it by the following graph. If all the elements between x1x_{1} and x2x_{2} are in the set AA, we could say it is a convex set.

在這裏插入圖片描述

1.2 convex function

Definition:
we say f(x)f(x) with domain dom(f)dom(f) is a convex function, if and only if , the following conditions holds for any θ[0,1]\theta \in [0,1]:
f(θx1+(1θ)x2)θf(x1)+(1θ)f(x2) f(\theta x_{1} + (1-\theta)x_{2}) \le \theta f(x_{1}) + (1-\theta) f(x_{2})

θx1+(1θ)x2,x1,x2dom(f) \theta x_{1} + (1-\theta)x_{2}, x_{1},x_{2} \in dom(f)
在這裏插入圖片描述
在這裏插入圖片描述

1.3 optimization problem

General form:

minimize:f0(x) minimize : \quad f_{0}(x)

subject to:fi(x)0, i1,2,...,n subject \ to : \quad f_{i}(x) \le 0, \ i \in {1,2,...,n}

hj(x)=0, j1,2,...,m \quad \quad \quad \quad h_{j}(x) = 0, \ j \in {1,2,...,m}

f0(x)f_{0}(x) is the objective function, and fi(x)f_{i}(x) are inequality constraints, hj(x)h_{j}(x) are equality constraints.
f0(x)f_{0}(x)是優化的目標函數, fi(x)f_{i}(x) 是不等式優化條件, hj(x)h_{j}(x) 是等式優化條件。

for examples:
在這裏插入圖片描述
上面有幾個簡單的優化例子,可以發現SLAM問題(優化殘差)也是其中之一。

1.4 convex optimization

f0(x)f_{0}(x) , fi(x)f_{i}(x) and hj(x)h_{j}(x) are all convex functions, then the problem is a convex optimization problem.
如果f0(x)f_{0}(x)fi(x)f_{i}(x)hj(x)h_{j}(x) 都是凸函數的話,那麼問題就變成了凸優化問題。

在這裏插入圖片描述
爲什麼要引入凸優化問題呢?問題我們可以證明在凸優化問題中,局部最小值就是全局最小值!而且凸優化是一個成熟的技術,有非常成熟快速高效和完善的解決算法。
也就是說,如果我們證明一個問題是凸優化問題,我們就可以保證它有快速高效的精確解!

1.5 Duality

在這裏插入圖片描述

2. SLAM Bundle Adjustment

SLAM的後端Bundle Adjustment其實是一個無約束的最小二乘範數下的優化問題(但是它不一定是凸的,或許是,我也不知道有沒有人去證明過,這應該是一個很好的研究課題!)。
在這裏插入圖片描述

2.1 Gauss Newton’s method

我們常用的有牛頓法,是直接對目標函數f0(x)f_{0}(x) (下圖中的F(x)F(x))進行處理的。
在這裏插入圖片描述
另外有高斯牛頓法,是對殘差函數進行處理,我們簡單寫出了它的求導過程:
在這裏插入圖片描述
在這裏插入圖片描述

2.2 LM法

在這裏插入圖片描述
LM法則是在GN的基礎上增加了一個阻尼因子。對於這個阻尼因子,不同的人有很多種解釋方式(比如對x增加了一個阻尼,阻尼因子很大時接近最速下降法,阻尼因子比較小時,則更加接近高斯牛頓)。
但是我個人比較傾向於通過regularization來解讀它。

2.3 Regularizaion in optimization

我們考慮這樣一個問題:

在這裏插入圖片描述
在優化原本的目標函數的同時,增加了一個對x的regularization限制。對於這一個增加的regularization項,同樣有很多解讀方式,在這裏我介紹一下其中一種:
引入regularization是由於A的誤差

在這裏插入圖片描述
在我們的SLAM問題中,A其實是殘差函數的雅各比,b則是在線性化位置的殘差函數的值(f(x0)f(x_{0}))。很明顯,由於在x0x_{0}附近進行了線性化,其實在這裏是存在誤差的。我們假設誤差爲Δ\Delta的話:

在這裏插入圖片描述

在這裏插入圖片描述
這樣的話,如果我們限制δx\delta x的大小,則可以限制整個線性化中引入的誤差。

  • 其實從泰勒展開的角度看,我們是在x0x_{0}附近做的泰勒展開,如果偏離x0x_{0}過多,那麼我們的線性化近似就失效了!所以必須保證x0+δxx_{0}+\delta xx0x_{0}附近活動。
  • 而且我們可以發現,μ\mu的選取是和Δ\Delta相關的!

2.4 μ\mu的選取

Δ\Delta其實是和hessian矩陣相關的。
在這裏插入圖片描述

而在GN算法中,其實是使用JTJJ^{T}J來近似hessian矩陣的,所以我們會在LM算法中見到μ\mu的初試化:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章