如何真正衡量一个机器人策略

一个机器人策略能在基准上拿到 90%,却依然在现场失败。策略评估的那些陷阱,以及如何诚实地测一个策略。

阅读约 7 分钟

一个机器人策略在基准(benchmark)上拿到 90%,标题就自己写好了。可是,90% 的什么,怎么测的,测了多少次,用的又是哪些物体。排行榜上的一个数字,是对一整场实验的压缩,而你要信任它所需要的几乎一切,都在压缩中被丢掉了。

评估是机器人学习里那场无声的危机。几乎所有人都同意策略在变好,几乎没有人同意该如何证明这一点。操作策略不是一个语言模型,你没法在一个冻结的测试集上连夜给它打分。每一次试验都要花掉一台真实机器人、一次复位,以及一个把它再跑一遍的人,而这个世界拒绝在两次运行之间保持不动:光在变,物体滚开一厘米,夹爪在磨损。

所以本文有一个明确立场。多数被报告出来的机器人成功率,更接近轶事而非测量,而这道落差并非出于疏忽。诚实的评估昂贵、缓慢、又不讨喜,这恰恰是它被跳过的原因。那些策略能在真实世界里存活下来的团队,是把评估当作一等实验来对待的团队:足够多的试验,以撑起一个置信区间;策略从未训练过的条件;以及被如实报告、而非被掩埋的失败模式。

那个数字是一次压缩,它把误差棒丢掉了

先从统计说起,因为它冷酷无情,又常被无视。机器人评估报告的是一个二值结果,成功或失败,只跑寥寥几次。给一个策略打出 8/10,感觉像是稳稳的良好。可一旦算出二项置信区间,真实成功率完全可能落在大约 50% 到 95% 之间的任何位置。十次试验根本分辨不出差别。更糟的是,各跑十次,你无法可靠地区分一个打出 8/10 的策略和一个打出 6/10 的策略:两者的区间几乎完全重叠。

这不是吹毛求疵,而是一次漂亮展示与一次真实测量之间的分野。Toyota Research Institute 在其 Large Behavior Models 工作里对此格外直言:评估被当作一场正经的实验来做,跑很多次、采用盲测且随机化的 A/B 对比,好让操作员的期望不会渗进场景该如何复位,并在把一处改动宣布为改进之前先做统计检验。这一切都不光鲜,却正是把周二撞了大运的策略,和一个真正更好的策略区分开来的东西。

仿真基准奖励的是错误的东西

仿真器便宜、快、又完美可复现,这恰恰是它诱人的原因,也恰恰是它误导人的原因。一个策略可以靠拟合某一个物理引擎和某一个渲染器的怪癖、而不是靠拟合任务,来爬上一个仿真基准。接触模型是一种近似,把它过拟合了,你得到的就是一个为并不存在的世界调好的策略。

这道鸿沟并不均匀。对运动控制和全身控制,仿真迁移得不错:那里的刚体动力学被忠实建模,研究者也在域随机化上下了大力。而对人们最想要的富接触操作,它就迁移得很差:柔软、可形变或带关节的物体上,一个渲染不出折叠布料或打滑抓取的仿真器,会痛快地训练出一个自信、却在真实物体上失败的策略。Berkeley BAIR 上以及 cs.RO 预印本里的大量 sim2real 文献,绕来绕去都是同一句告诫:一个仿真分数是关于真实世界的假设,而不是对它的测量。一个从不触碰真实夹爪的基准,衡量的是你把物理引擎过拟合得有多好。

任务集干的活,比指标还多

在你争论指标之前,先看看它是在什么之上算出来的。任务集在悄悄决定结果。在策略训练时见过的同一批物体、同一批场景、同一种光照上评估,你测到的是记忆,而不是能力。它会一直看起来像是解决了,直到毛巾从蓝色换成红色,或者太阳挪过桌面。

共享基准是有帮助的,这个领域也建了一些好的。Open X-Embodiment 把跨越许多机器人与机构的评估汇集起来,正是为了让结果能在共同的地基上比较。但即便是共享基准,也能靠只报告那些友好的任务来钻空子,而单一的聚合成功率,会掩盖究竟是哪些条件撑起了这个分数。诚实的做法枯燥、又难以造假:留出策略从未见过的物体、场景与光照,事先固定试验次数,并按条件分别报告,而不是给出一个讨喜的平均值。如果留出(held-out)的数字远低于留入(held-in)的数字,那道落差就是结论本身,而不是一个脚注。

成功率掩盖了它是怎么成功的,也掩盖了它是怎么失败的

即便统计和任务集都诚实,二值成功率仍是一个有损的指标。一个靠笨拙的、险些够不着的抓取勉强过关的策略,和一个第一次就干净利落抓住物体的策略,得分完全相同,可只有其中一个能扛得住多出一毫米的杂乱。成功率记录了结果,却抹掉了余量。

更丰富的评估,报告的不止一个比特。给任务进度的部分分,把一个做到一半的策略和一个根本没起步的策略区分开来。稳健性余量,也就是策略在崩掉之前能容忍多大的扰动,比无尘室里的成功率能好得多地预测现场表现。最有价值也最被忽视的是恢复:策略会不会察觉一个错误并纠正它,还是一次打滑就连锁成一堆失败。像 Stanford IRIS 这样的团队在模仿学习上的工作,早就点明了这一点:能泛化的是稳健性与恢复,而不是完美无瑕的示范。报告失败模式不是在承认弱点,而是一次评估所能产出的最有用的信息。

评估机器人策略的几种常见做法,它们各自真正测量了什么,又如何误导人
评估做法它测量了什么它如何误导
仿真基准建模世界里的行为,便宜且可复现奖励对物理引擎与渲染器的过拟合;接触与可形变物体会撑破迁移
小规模真机试验真机上的实际成功率置信区间宽到无法区分两个策略
分布内任务套件在已训练物体与场景上的能力测的是记忆;物体、杂乱或光照一变就崩
二值成功率任务是否完成忽略余量、稳健性与恢复;险些失手和干净抓取打成平手
精挑细选或多次取最好的一次友好任务上的上限报告的是最好那一次,而非期望的那一次;是高光剪辑,不是平均值
一个基准数字告诉你的,是策略在它被打分的那件事上表现如何。它在真实世界里是否管用,是另一个问题,而只有诚实计数的留出试验才能回答它。

一个好的评估集本身就是被采集的数据,而不是一种感觉

这一切都汇聚到一个不方便的要求上。留出的物体、留出的场景、受控的光照、可重复的复位,都不会招之即来。要充当一个公平的测试,评估集必须像训练数据一样被采集、被仪器化、被记录,否则下个季度它无法复现,它的数字也无法在团队之间比较。一个你没法重跑的评估,是一个故事,而不是一个基准。令人不适的真相是:搭一个又难又诚实的测试集,和搭一个好的训练集是同一门手艺,成本也大致相当。

所以,下一次当一个机器人策略被报成 90%,去问那个数字埋掉的三个问题:它背后站着多少次真机试验、在哪些留出条件上、以及那些失败究竟长什么样。如果答案是在一个友好任务集上的一个孤零零的数字,你看的是一段高光剪辑。如果答案带着一个区间、一道留出落差、以及对失败的诚实交代,你看的才是一次测量,而这样的测量,远比排行榜所暗示的要稀有得多。

policy-evaluationrobot-benchmarkssim-vs-realrobot-learningevaluation

来源