3. 策略评测基础
在 LeRobot 的工程实践中,训练出一个能跑通的策略只是起点,真正决定它能否上机部署的,是评测环节。策略评测不是“跑一遍看看效果”,而是用可复现的指标、固定的协议和可比较的基线,把“看起来还行”转化为“数据上可信”。本节围绕评测指标定义、成功率、轨迹误差、鲁棒性、泛化能力以及评测协议设计展开,帮助你建立一套可落地的评测体系。
一、核心原理:评测是把“表现”翻译成“指标”
策略评测的本质,是在受控条件下对策略行为进行采样,并把采样结果映射为可比较的数值。一个完整的评测体系包含四个要素:任务定义(做什么)、初始条件分布(从哪开始)、评价指标(怎么算好)、终止与判定规则(何时算结束)。缺少任何一项,评测结果都难以复现。
在 LeRobot 中,评测通常以 episode 为单位:每个 episode 从初始状态出发,策略输出动作序列,环境返回观测与奖励,直到任务完成、超时或失败。所有指标都建立在这些 episode 的统计之上。因此,评测协议的第一件事,是固定 episode 数量、随机种子、初始状态采样范围和最大步数。
1. 可复现——相同配置与种子应得到相同结果;
2. 可比较——不同策略在同一协议下评测;
3. 可解释——指标能对应到具体的失败模式。
二、评测指标定义:成功率、轨迹误差与过程指标
最常用的指标是成功率(Success Rate),即成功 episode 数除以总 episode 数。它直观、易比较,但信息量有限:两个成功率相同的策略,可能一个“稳扎稳打”,另一个“偶尔成功、经常崩溃”。因此需要配合过程指标。
轨迹误差衡量策略执行轨迹与参考轨迹(或专家轨迹)之间的偏差,常用指标包括:末端执行器位置误差(米)、关节角度误差(弧度)、轨迹 DTW 距离、以及动作序列的平滑度。轨迹误差适合评估模仿学习类策略,能反映“动作像不像”,但不能直接等价于任务成功。
此外还有过程指标:平均完成步数、平均奖励、碰撞次数、超时率、动作抖动幅度等。它们帮助定位失败原因,是调参与复盘的依据。
| 指标 | 定义 | 适用场景 | 局限 |
|---|---|---|---|
| 成功率 | 成功 episode / 总 episode | 任务级评估 | 忽略过程质量 |
| 末端位置误差 | 执行轨迹与参考轨迹的欧氏距离 | 抓取、放置 | 不反映任务语义 |
| 关节角度误差 | 各关节角度差的均值 | 关节空间模仿 | 受关节冗余影响 |
| 平均完成步数 | 成功 episode 的平均步数 | 效率评估 | 失败 episode 不计入 |
| 碰撞/超时率 | 异常终止 episode 占比 | 安全性评估 | 依赖判定规则 |
三、鲁棒性与泛化能力:从“能跑”到“扛得住”
鲁棒性指策略在扰动下维持性能的能力。常见扰动包括:观测噪声、动作噪声、初始位姿偏移、光照变化、物体位置随机化、执行延迟等。评测鲁棒性时,应逐项引入扰动并观察成功率下降幅度。例如,在初始位姿上加入 ±2cm 均匀噪声,若成功率从 90% 降到 40%,说明策略对初始条件高度敏感。
泛化能力指策略在训练分布之外的表现,包括新物体、新位置、新任务变体、新场景。泛化评测的关键是明确“训练分布”与“测试分布”的边界,避免测试集泄漏。在 LeRobot 中,可以通过修改环境配置中的物体颜色、尺寸、初始位置范围来构造泛化测试集。
四、评测协议设计:让结果可复现、可比较
评测协议是评测的“实验方案”。一个规范的协议应包含以下内容:
- 任务与场景:明确任务描述、环境版本、物体集合。
- 初始条件:初始状态采样范围、随机种子列表。
- episode 数量:建议每策略至少 50~100 个 episode,保证统计稳定性。
- 终止规则:成功判定、失败判定、最大步数。
- 指标集合:主指标(成功率)+ 辅助指标(轨迹误差、步数、碰撞率)。
- 基线:至少一个随机策略或专家策略作为参照。
- 记录格式:统一保存 episode 元数据、指标与失败原因。
在 LeRobot 中,评测通常通过配置文件驱动。下面是一个评测配置的示例结构:
eval:
task: "pick_place"
episodes: 100
seeds: [0, 1, 2, 3, 4]
max_steps: 300
success_metric: "object_in_target"
perturbations:
init_pose_noise: 0.02
obs_noise: 0.01
metrics:
- success_rate
- eef_position_error
- avg_steps
- collision_rate
baseline: "expert_policy"
评测执行后,建议输出结构化日志,便于聚合分析:
episode_id=17 seed=2 success=true steps=142
eef_error=0.013 collision=false
episode_id=18 seed=2 success=false steps=300
eef_error=0.087 collision=true reason=timeout
五、案例与误区复盘
假设你在 LeRobot 上训练了一个抓取策略,初次评测成功率 78%。若只看这个数字,很容易误判为“可用”。但拆解后发现:在初始位姿偏移 ±1cm 时成功率骤降到 35%,且失败 episode 中 60% 是碰撞。这说明策略对初始条件敏感、安全性不足。此时应优先做域随机化训练,而不是继续调大网络。
常见误区包括:
- 只报成功率:忽略失败模式,无法指导改进。
- episode 太少:20 个 episode 的成功率波动可达 ±15%,结论不可靠。
- 测试集泄漏:泛化测试用了训练时见过的物体或位置。
- 协议不一致:不同策略用不同初始条件,结果无法比较。
- 忽略随机种子:同一策略换种子后结果差异大,说明评测不稳定。
总结来说,策略评测的核心不是“跑一次”,而是建立一套指标清晰、协议固定、扰动可控、结果可复现的工程流程。成功率回答“行不行”,轨迹误差回答“像不像”,鲁棒性回答“稳不稳”,泛化能力回答“广不广”,而评测协议则保证这些回答可信。只有把这五者结合起来,LeRobot 策略的评测结果才能真正支撑部署决策。