- 最小二乘基本思想
- Ceres庫與最小二乘優化
給定一組觀測數據,使構建的模型的輸出值與觀測值的殘差的平方最小
殘差指的是一個,代價函數指的是一系列的殘差之和。
不同殘差正負可能抵消,使用絕對值計算不方便,採用平方可以更好地計算
損失函數中有觀測值和損失的計算方式
- 最優化步長的選擇方法
進行擬合時一般會先構建對應的數學模型
信任區域法:定區間,取極值
信賴域方法利用一個模型函數(通常是二次的)在被稱爲信賴域的搜索空間的子集上近似目標函數。如果模型函數成功地使真實目標函數最小化,則信任域被擴展;反之,則信任域被收縮
利用信賴域算法求解無約束的非線性最小二乘問題_含matlab代碼
% 流程圖中的f爲原始函數,對應代碼中的Diff
% 流程圖F指的是殘差,對應代碼中的f
a.信賴域算法是在一個球形區域搜索,在這個球形區域的中心點進行二階泰勒近似
最優化的目標是使得fai(x(k))-f(x(k))最小
b.二階泰勒近似其實就是一個二次規劃問題,可以直接求取極值,得到了子問題的最優解
matlab中進行二次規劃的代碼
線性搜索法:定方向,定步長
首先找到一個下降方向,目標函數將沿該下降方向減少,然後計算一個步長,該步長決定沿該方向移動多遠。下降方向可以用多種方法計算,如梯度下降法、牛頓法和擬牛頓法。步長可以精確或不精確地確定。 - 最優化方法
最速下降法:收斂速度慢
牛頓法:移動方向不一定是下降方向
L-M法(Levenberg-Marquardt法)萊文伯格·馬夸特:全局優化,收斂速度快,相比牛頓法,公式中多了一個阻尼係數(大於1),在迭代過程中對阻尼係數進行更新。
LM算法流程圖爲:
其中,fk爲原始函數,F(x(k+1))爲殘差值
- 總結
信賴域法中計算hessian的嚴格數學表達式,LM算法中用雅可比的轉置乘上雅可比來近似hessian矩陣
信賴域設定區域,通過二次規劃求極值,通過該極值判斷損失增長還是減少,更新區域大小,當殘差變化小於閾值,得到最優值。
LM算法通過正規方程計算出的d,判斷對損失增長還是減少情況,更新阻尼係數,當步長變化滿足小於閾值,則認爲收斂,得到最優值
信賴域方法在姿勢估計中得到的精度和Levenberg_Marquardt算法不相上下,但是收斂速度卻不如LM - 參考文獻
LM算法的matlab代碼及流程圖
Levenberg-Marquardt算法淺談