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已經能夠滿足絕大多數的使用場景,建議使用該法。

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

 

 

 

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