Levenberg-Marquardt LM算法 的理解
1. convex optimization
先簡單介紹一下凸優化的內容
First quickly introduction the convex optimization concepts.
1.1 convex set
Definition:
for , we say is a convex set if and only if the following holds for any :
凸函數的定義如上,不過可以通過下面的圖簡單理解。可以直覺得說,如果兩點集合內的點的“連線“上的點都在集合內,那麼它就是一個凸集合。
We can quickly understand it by the following graph. If all the elements between and are in the set , we could say it is a convex set.
1.2 convex function
Definition:
we say with domain is a convex function, if and only if , the following conditions holds for any :
1.3 optimization problem
General form:
is the objective function, and are inequality constraints, are equality constraints.
是優化的目標函數, 是不等式優化條件, 是等式優化條件。
for examples:
上面有幾個簡單的優化例子,可以發現SLAM問題(優化殘差)也是其中之一。
1.4 convex optimization
, and are all convex functions, then the problem is a convex optimization problem.
如果 , 和 都是凸函數的話,那麼問題就變成了凸優化問題。
爲什麼要引入凸優化問題呢?問題我們可以證明在凸優化問題中,局部最小值就是全局最小值!而且凸優化是一個成熟的技術,有非常成熟快速高效和完善的解決算法。
也就是說,如果我們證明一個問題是凸優化問題,我們就可以保證它有快速高效的精確解!
1.5 Duality
2. SLAM Bundle Adjustment
SLAM的後端Bundle Adjustment其實是一個無約束的最小二乘範數下的優化問題(但是它不一定是凸的,或許是,我也不知道有沒有人去證明過,這應該是一個很好的研究課題!)。
2.1 Gauss Newton’s method
我們常用的有牛頓法,是直接對目標函數 (下圖中的)進行處理的。
另外有高斯牛頓法,是對殘差函數進行處理,我們簡單寫出了它的求導過程:
2.2 LM法
LM法則是在GN的基礎上增加了一個阻尼因子。對於這個阻尼因子,不同的人有很多種解釋方式(比如對x增加了一個阻尼,阻尼因子很大時接近最速下降法,阻尼因子比較小時,則更加接近高斯牛頓)。
但是我個人比較傾向於通過regularization來解讀它。
2.3 Regularizaion in optimization
我們考慮這樣一個問題:
在優化原本的目標函數的同時,增加了一個對x的regularization限制。對於這一個增加的regularization項,同樣有很多解讀方式,在這裏我介紹一下其中一種:
引入regularization是由於A的誤差:
在我們的SLAM問題中,A其實是殘差函數的雅各比,b則是在線性化位置的殘差函數的值()。很明顯,由於在附近進行了線性化,其實在這裏是存在誤差的。我們假設誤差爲的話:
這樣的話,如果我們限制的大小,則可以限制整個線性化中引入的誤差。
- 其實從泰勒展開的角度看,我們是在附近做的泰勒展開,如果偏離過多,那麼我們的線性化近似就失效了!所以必須保證在附近活動。
- 而且我們可以發現,的選取是和相關的!
2.4 的選取
其實是和hessian矩陣相關的。
而在GN算法中,其實是使用來近似hessian矩陣的,所以我們會在LM算法中見到的初試化: