操作的长尾:决定部署成败的稀有情形

操作数据集的头部示范得很漂亮,长尾却决定部署成败。为什么多数数据集略过的稀有边缘情形,才是让机器人崩溃的那一部分。

阅读约 6 分钟

一个在实验室里达到 99% 成功率的分拣策略,并不是一个 99% 的策略。让它连续运行一整个班次,你感受到的会是另一个数字。那百分之一的糟糕抓取,就是侧躺着的洗发水瓶、把深度相机反射成一片噪声的真空包装袋、被漏出的酱料粘连在一起的两件商品。示范数据从未展示过这些情况,而货架上到处都是。

操作(manipulation)存在一个分布问题,而且并不是大多数数据集所要解决的那个问题。少数几种情形几乎占据了你能低成本采集到的全部示范。一条极长、极细的稀有情形长尾,则几乎占据了你在部署中遇到的全部失败。头部很容易,也被过度采样。长尾才是试点项目悄然失败的地方。

这就是操作长尾(long tail)的算术,它把停留在演示视频里的机器人,与真正走上现实场地的机器人区分开来。

任务分布的形状

任选一个真实任务,数一数它的变体。「装载洗碗机」并不是单一技能。它包括十几种直径的盘子、可以叠套的碗、放不进下层架的锅、缠在一起的餐具,以及偶尔一只被自信的抓取捏碎的酒杯。这些频率接近一条 Zipf 曲线:少数配置反复出现,而不同稀有配置的数量却在不断增长,没有明显的上限。

这里的算术毫不留情。假设头部覆盖了 80% 的情形,你的策略以 95% 的成功率处理它们,而剩下的 20% 落在长尾里,成功率只有 60%。加权后的总成功率是 88%,而客户注意到的失败几乎全部来自那 20%。把头部推到 99%,这个数字几乎不动,因为此刻剩下要修的部分已由长尾主导。你无法靠打磨头部来摆脱一个长尾问题。

数据是头部优先采集的,因为头部正是操作员自然会做的部分。让十个人装载洗碗机,你会得到一百个盘子,也许三只酒杯。那些别扭的、会诱发失败的情形依然稀少,因此朴素的采集流程最后才会捕捉到它们,甚至根本捕捉不到。头部的覆盖率在几小时内就饱和了,而长尾的覆盖率连续几天几乎不动。

为什么长尾很昂贵

长尾之所以昂贵,是因为多重原因叠加。稀有事件需要很长的采集时段才会出现哪怕一次,因此你越往外推,每条有用示范的成本就越高。许多长尾情形只有在失败之后才能被识别,这意味着你必须在真实世界里运行一个称职的策略,才能知道它还不懂什么。而且长尾并不是单一分布。每一个新环境、新夹爪、新灯光布置或新物体集合,都会长出属于自己的一条新长尾。

这里还有一个更隐蔽的陷阱。把多个来源聚合起来,这个为了规模而采取的标准做法,只是把若干头部分布混合在一起,却很少填补任何一方的长尾。你最终得到的数据集,在简单情形上很宽,但恰恰在部署真正发生的地方依然很薄。而且一个稀有情形通常要先由人工发现并分段,才能用于训练,于是能分辨出真正边缘情形与拍砸镜头的那批人,就成了瓶颈。

表 1:操作数据集中头部与长尾情形的差异
属性头部情形长尾情形
占示范的比例大部分少数
占部署失败的比例少数大部分
每条有用示范的成本高且上升
在公开语料中的覆盖尚可稀疏
如何发现它们询问操作员运行策略,挖掘失败

公开语料实际覆盖了什么

这些共享数据集确实有用,而且天然偏重头部。Open X-Embodiment 汇集了众多实验室的示范,换来了跨本体的广度,但每个贡献任务仍然围绕自己的常见情形展开,桌面抓取放置在混合数据中占据主导。DROID 深入到真实场景,增加了真实的场景多样性,但它仍受限于一组固定操作员选择去示范的内容。RH20T 覆盖了许多富接触任务,比大多数数据集更深入长尾,但它依然是一个快照,而不是一条持续的数据流。

被动的人类视频则是另一回事。Ego4D 规模庞大,捕捉了各种各样的真实活动,因此它的长尾可以说比任何机器人数据集都更丰富。问题在于它没有动作标签,也没有闭环,所以稀有事件虽然可见,却无法直接作为策略来训练。像素的广度,并不等于你能据以行动的行为覆盖。

你部署时面对的不是平均情形。你部署进的是长尾,而长尾恰恰是数据集在构造上就欠采样的那一部分。

真正能撼动长尾的策略

有四种做法有帮助,但没有一种是免费的。定向采集把采集点对准当前策略不确定或会失败的情形,从而把操作员的时间花在关键处,而不是花在第一百个干净的盘子上。失败挖掘把部署变成数据来源,也就是 Physical Intelligence 等公司所依赖的飞轮,不过这以你已经有机器人在现场为前提。数据增强能扩展灯光、背景等干扰因素的变化,却无法凭空造出传感器从未见过的接触模式。而结构化分段,也就是把任务拆解为可复用的基元,让一个稀有的整任务可以通过组合各自被频繁见到的技能来触及。

注意它们的共同点。它们都把精力从原始体量转向刻意的覆盖。当最后 5% 的情形驱动了大部分失败时,统计采集了多少小时就是错误的记分牌。

对于一个还没有部署机队的团队来说,诚实的选择是从一开始就把覆盖构建进去。这意味着有意地脚本化各种变化,轮换物体、杂物、灯光和抓取几何,并记录空间中的哪些切片已经见过、哪些还没有。这样做每小时更慢,却也是唯一一种刻意生长长尾、而非听天由命的方式。

头部是示范,长尾才是产品

构建一个看起来很大、示范效果漂亮的数据集很容易,因为头部很上镜。构建一个能经受真实环境考验的数据集则难得多,因为能否存活是在曲线细长的那一端决定的。那些把长尾当作主戏、并据此安排采集预算的团队,才是那些在关掉摄像机之后策略仍然管用的团队。其他人交付的是平均值,然后在生产中撞上长尾。

long-tailedge-casesdatasetsmanipulation

来源