Ceres-Solver 官方文档-其二

Ceres-Solver 官方文档-其二

Reference:

  1. Ceres Solver
  2. Ceres Example

系列文章:

  1. Ceres-Solver 官方文档-其一
  2. Ceres-Solver 官方文档-其二
  3. Ceres Manifolds/LocalParameterization 类

On Derivatives

像所有基于梯度的优化算法一样,Ceres Solver 依赖于能够评估目标函数及其在其域中任意点的导数。实际上,在使用 Ceres Solver 求解优化问题时,定义目标函数及其雅可比矩阵是用户需要执行的主要任务。正确、高效地计算雅可比矩阵是保证系统性能的关键。

Ceres Solver 在用户如何向求解器提供导数方面提供了相当大的灵活性。它可以使用:

  1. Analytic Derivatives:用户自己计算导数,可以手工计算,也可以使用 MapleMathematica 等工具,然后在 CostFunction 中实现它们。
    当导数存在闭合解析形式时使用,用于可基于SizedCostFunction基类自行编写,但由于需要自行管理残差和雅克比矩阵,除非闭合解具有具有明显的精度和效率优势,否则同样不建议使用。
  2. Numeric Derivatives:Ceres 用有限差分数值计算导数。
    即,当无法分析或使用自动微分计算导数时,使用数值微分,如:使用一个外部库或函数时,其精度和计算效率不如解析导数和自动导数,不到万不得已,并不建议使用该方法。
  3. Automatic Derivatives:Ceres 使用 C++ 模板和操作符重载自动计算解析导数。
    自己求导和自动求导理论上耗时是相同的,但是在自己求导的过程中,可以做一些合并删减,可能会比自动求导快一点。

应该使用这三种方法中的哪一种(单独使用还是组合使用)取决于情况和用户愿意做出的权衡。不幸的是,数值优化教科书很少详细讨论这些问题,用户只能自己摸索。

本文的目的是填补这一空白,并在 Ceres Solver 上下文中详细描述这三种方法中的每一种,以便用户能够做出明智的选择。

而对于没有耐心的人,这里有一些高层次建议:

  1. 首选使用自动衍生工具。
  2. 在某些情况下,可能需要用到解析导数。
  3. 避免数值导数。将其作为最后手段使用,主要用于与外部库进行交互。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泠山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值