天天看点

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已经能够满足绝大多数的使用场景,建议使用该法。

应该使用这三种方法中的哪一种(单独或组合)取决于用户面对的情况和作出的权衡。