天天看點

Ceres中Analytic Derivatives、 Numeric Derivatives、Automatic Derivatives差別

與所有基于梯度的優化算法一樣,Ceres Solver依賴于能夠在其域中的任意點評估目标函數及其導數。實際上,定義目标函數及其雅可比矩陣是使用者在使用Ceres Solver求解優化問題時需要執行的主要任務。正确有效地計算雅可比矩陣是獲得良好性能的關鍵。

Ceres Solver在使用者如何為求解器提供導數方面提供了相當大的靈活性。可以用:

    Analytic Derivatives:使用者自己手工或使用Maple或Mathematica等工具來求導,并在CostFunction中實作它們。

    Numeric Derivatives:Ceres使用有限差分在數值上計算導數。

    Automatic Derivatives:Ceres使用C ++模闆和運算符重載自動計算分析導數。

建議

Analytic Derivatives實作CostFunction對象有點單調乏味。除非你能夠自己計算好雅可比矩陣。

Numeric Derivatives代價較大,導緻收斂速度變慢。

Automatic Derivatives已經能夠滿足絕大多數的使用場景,建議使用該法。

應該使用這三種方法中的哪一種(單獨或組合)取決于使用者面對的情況和作出的權衡。