Ceres中tr_ratio的理解
tr_ratio 是 Trust Region Ratio 的缩写,直译是「信赖域比率」,是 Ceres 中信赖域(LM)算法判定步长是否有效的核心指标,本质是 **「实际代价下降量」和「预测代价下降量」的比值 **,用来判断本次迭代尝试的步长是否靠谱、是否能让优化更接近最优值,这个值的大小直接决定了步长是否被采纳,以及后续信赖域半径的调整策略。
一、先搞懂 tr_ratio 的核心计算公式
Ceres 在每次迭代中,会先「预测」步长的效果,再执行步长并「实际」验证效果,最终计算两者的比值,公式超简单:tr_ratio= 预测代价下降量(Predicted)/实际代价下降量(Actual)
预测代价下降量:计算步长后,通过近似模型(二次泰勒展开)预估的代价函数下降量(理论值,一定是正数,因为模型会往代价减小的方向找步长);
实际代价下降量:把该步长实际应用到参数后,重新计算得到的真实代价下降量(实际值,可能正 / 负 / 0)。
二、tr_ratio 的核心判定规则(直接决定步长是否有效,对应日志里的成功 / 无效步长)
Ceres 根据tr_ratio的大小,制定了明确的步长判定和后续策略,这也是日志里成功 / 无效步长的判定依据,记住这 3 个区间,就能看懂所有迭代的 tr_ratio 含义:
| tr_ratio 范围 | 步长状态 | 代价变化特征 | Ceres 的核心操作 |
|---|---|---|---|
| tr_ratio > 0 | 有效步长 | 实际代价下降(Actual>0) | 1. 采纳该步长,更新相机 / 路标点参数;2.扩大信赖域半径(下次尝试更大步长,加速优化) |
| tr_ratio ≤ 0 | 无效步长 | 实际代价上升 / 无变化(Actual≤0) | 1.舍弃该步长,不更新任何参数;2.缩小信赖域半径(下次尝试更小步长,防止发散) |
| tr_ratio ≈ 1 | 最优有效步长 | 实际下降量≈预测下降量 | 大幅扩大信赖域半径,最优步长,加速收敛 |
总结
- tr_ratio = 实际代价下降量 / 预测代价下降量,是步长有效性的唯一判定标准;
- tr_ratio>0 → 有效步长(采纳 + 调整信赖域),tr_ratio≤0 → 无效步长(舍弃 + 缩小信赖域);
- tr_ratio 的核心作用:让 LM 算法动态调整步长,兼顾收敛速度和稳定性,防止优化发散。

浙公网安备 33010602011771号