机器人伸手去抓右边的积木,转向转错了,没搭上目标堆。这一回合被记了一次失败。

打开网易新闻 查看精彩图片

但这次失败标记说明不了问题出在哪:是机器人选错了指令,还是它执行了一条本来有用的指令却没做成?分层机器人同时具备两层——高层规划器负责挑选下一个技能和目标,低层控制器负责驱动机械臂。

Ai2 新发布的 ToyBlocks 让这个分层拆分变得可测试:在仿真世界里评估任务时,任意一层策略都可以被一个参考组件替换,这个参考组件被称为 oracle(神谕)。真正有价值的思路是这种受控替换,而不只是又一个总体成功率数字。

同一个分数,可能来自不同的流水线

先看一个刻意简化的模型:任务只有在规划器产出有效计划、且控制器成功执行该计划时才算成功。

写成概率就是:P(成功) = P(有效计划) × P(有效计划下执行成功)。在这个构造里,无效计划一律失败。系统 A 的有效计划概率是 0.9,给定有效计划时的执行概率是 0.6;系统 B 把这两个数字对调。

两者最终都停在 0.54。只看最终分数,无法判断哪一层更弱。

再设想把其中一层换成完美版本、另一层概率保持不变:替换 A 的规划器得到 0.6,替换它的控制器得到 0.9;对 B 来说,效果正好反过来。

这些只是对一个虚构流水线做出的假设。在真实系统里,换掉规划器也可能改变控制器遇到的指令或状态,剩下那一层的行为同样可能变化。

把替换变成真正的测试

ToyBlocks 提供了走下一步所需的更多机制。它的评估可以从一段已录制回合的场景和任务定义出发,包括机器人位姿、积木位姿、几何结构和目标。它支持学习到的高层指令搭配学习到的低层策略,也支持符号化高层规划器,或数据生成时使用的参考低层技能。

这里的 oracle 是一个具体的参考实现。不能因为玩具算术里用了一个完美阶段,就假定它在物理上不会出错。

任务的成信号同样重要。文档描述的是检查逻辑目标、已稳定的目标积木以及张开的夹爪,部分进展由目标谓词推导得出。训练奖励和完成任务是两种不同的度量。

做 oracle 替换时,应当固定回合定义和成功判定规则,把完整系统与每一种替换分别对比,并且除了汇总数据,还要检查失败的回合。替换之后结果变好,只能说明所测试的那套设置,并不能自动把每一次失败都归到某个组件头上。

评估文档明确追求统计意义上的可复现,而非逐比特复现。即便回合输入和随机种子固定,共享物理、GPU 求解和调度也可能改变单条轨迹。因此,保存下来的初始场景、评分配置和逐回合记录,比一张成功堆叠的截图更有用。

Scchy 关于 MicroDuck 训练的记述强调要检查真实的技能 rollout。ToyBlocks 为分层系统补上了一个互补的问题:当任务定义不变、只替换其中一个部分时,什么发生了变化?

这套已发布的框架和评估设计值得细读,但其中的示例只是理解诊断逻辑的一种方式——在解读任何机器人分数之前,先弄清分数背后是哪一层在拖后腿。