正在翻开……

RT-1:用笨功夫喂大的机器人

Brohan, Brown, Carbajal, Chebotar, Finn, Hausman, Ichter et al. · Robotics at Google / Everyday Robots · 2022 · arXiv:2212.06817

这篇论文的作者名单排了整整一页,方法部分堆着 FiLM、EfficientNet、TokenLearner 一串名字——你一个都不用记。真正要回答的问题只有一个:想让机器人听懂「拿个苹果」这种话,靠更聪明的模型,还是靠更笨的功夫?Google 用 17 个月、13 台机器人、13 万次真人手把手的演示,押了后者。押对没有,接下来你亲手验证。全文的颜色只有一套规矩:指令是蓝的,视觉是紫的,动作是琥珀的;红色是麻烦,绿色是解法。

先当 30 秒演示员

2022 年的机器学习圈有一条隐形鄙视链:聪明人发明算法,采数据是「脏活」。这篇论文反着来——它最贵的资产不是模型,是 13 万条人类一条一条录出来的演示。演示到底长什么样?与其解释,不如你先录一条。

按住机械爪,拖着它走:碰到苹果会自动抓起,把苹果送进右边的碗里就算完成。就是玩,不用想。

按住机械爪拖动 · 目标:苹果 → 碗
744 个任务都是些什么?(论文 Table 1)

任务 = 动词 + 名词的组合,按动词归成技能。别背,感受一下密度就行:

技能任务数例句(原文 + 直译)
拿起物体130pick iced tea can「拿起冰茶罐」
把 A 挪到 B 旁边337move pepsi can near rxbar blueberry「把百事罐挪到蓝莓能量棒旁」
把倒着的物体立正8place water bottle upright「把水瓶立起来」
把物体推倒8knock redbull can over「把红牛罐推倒」
开抽屉 / 关抽屉3 + 3open the top drawer「打开最上层抽屉」
把物体放进容器84place brown chip bag into white bowl「把薯片袋放进白碗」
从容器里拿出、放到台面162pick green jalapeno chip bag from paper bowl and place on counter
写实长任务用的补充技能9pull napkin out of dispenser「从纸巾盒抽一张纸」
合计744另评测了 3000+ 次真实机器人试验

采集流程也自动化到了「工厂」程度:每台机器人自己走到工位,向操作员播报这一条该演示什么、场景怎么随机摆。

然而数据齐了只是开局。744 个任务的经验要装进同一个脑子,模型必须够大;可真实厨房给大模型判了一条死线——不在显卡上,在钟表上。

一百毫秒的死线

骑自行车的时候,你不能每蹬一圈闭眼想两秒——车会倒。机器人操作也一样:人做这些厨房动作,一步 2~4 秒,机器人要跟上这个节奏,论文把控制频率定在 3 赫兹——每 333 毫秒,看一眼,出一个动作。这 333 毫秒里,相机、通信、执行还要分走一大块,真正留给神经网络推理的预算:不到 100 毫秒

点下面的候选模型,看谁能在一拍之内把动作交出来:

上:一次决策的时间线 · 下:五个候选的推理耗时对照(虚线 = 100ms 预算)

Gato 原版 12 亿参数,一次推理 1.9 秒——它输出的每个动作都在响应 6 拍之前的世界,苹果早就不在原来的位置了。为了上真机把它砍到 3700 万参数,还是要 129 毫秒,照样拍拍迟到。BC-Z 那种 ResNet 前馈网络 5.3 毫秒轻松过线——记住这个快枪手,第 6 节它还会出场,你会看到快的代价。RT-1 自己:3500 万参数,15 毫秒。推理预算不是优化目标,是准入门槛——接下来 RT-1 的每一个架构选择,都是被这条死线逼出来的。

然而 Transformer 天生是吞吐大户:一张 300×300 的画面进了视觉编码器,出来就是 81 个视觉 token,再带上 6 帧历史就是 486 个,而自注意力的账单按 token 数的平方增长。想挤进 100 毫秒,第一刀是:少看。可少看什么、留什么?——让指令说了算。

带着问题看:FiLM 早融合

你去冰箱找酱油的时候,视野里的可乐、剩菜会自动变暗——带着问题看,和先把冰箱看完再想,是两种完全不同的成本。常规做法(Gato 式)是「先看后想」:图像自顾自编码成 token,语言最后才来碰头,这叫晚融合。RT-1 反过来:先把指令压成一个句向量(Universal Sentence Encoder「通用句子编码器」),然后注入图像编码器 EfficientNet 的每一层卷积之间(这层小开关叫 FiLM)——图像从第一层起就知道自己是为「拿苹果」服务的。这叫早融合

在两种融合方式之间切换,再换一条指令,看哪些格子亮着(紫色亮度 = 这块画面能带进后续计算的信息量):

指令:
9×9 = 81 个视觉 token · 紫色越亮 = 信息量越大

晚融合时,可乐罐、海绵、抽屉全都亮着——它们和任务无关,却结结实实占着 token。切到早融合,同一张画面,「拿起苹果」只剩苹果和爪子亮;换成「打开抽屉」,亮点立刻搬家到抽屉沿。论文附录里的真实注意力图(图 13)就是这个样子:抓零食的注意力头盯着零食袋,开抽屉的头盯着抽屉。这个差别最后直接兑现成了成绩:在满桌杂物的干扰物测试里,早融合的 RT-1 成功 83%,晚融合的 Gato 只有 43%。先带着问题看,杂物就进不了脑子。

FiLM 插进预训练网络,为什么没把它搞坏?

EfficientNet 是在 ImageNet 上预训练好的,中途插层通常会毁掉预训练的特征。RT-1 的解法:把 FiLM 产生缩放和平移的那两个小全连接层初始化为零——刚开始 FiLM 等于「不存在」(恒等映射),预训练网络原样工作,语言的影响再从零慢慢学出来。整个图像+指令 token 化模块共 26 层 MBConv 与 FiLM 交错,1600 万参数。ImageNet 预训练有多重要?第 9 节的拆解台上,你可以亲手把它拆掉看看。

过滤完,EfficientNet 交出来的仍然是 81 个 token。对一个只有 8 层的 Transformer 来说还是太多——好在其中大部分格子,现在已经是黑的了。

81 双眼睛,并成 8 束目光

自注意力要让每个 token 和每个 token 两两对质——81 个证人的庭审,再带上 6 帧历史,就是 486 个证人、二十多万次对质,庭审开不完。TokenLearner「token 学习器」是个只有 3.4 万参数的书记员:它按信息量给 81 份证词打分,软组合成 8 份摘要,只把摘要递给 Transformer。

拖动滑块,决定每帧留下几个 token,看看代价和收益:

左:保留的格子(按信息量排序) · 右:Transformer 的对质账单

从 81 拖到 8:注意力要处理的配对从 23.6 万降到 2300 出头,论文实测整机推理提速 2.4 倍——而亮着的格子(苹果、爪子)一个都没丢。敢压缩到这么狠,底气恰恰来自上一节:信息量已经被指令校准过了,书记员知道什么该留。再往下拖到 2 试试:快是更快,但连「手在哪」都被扔掉了——这段崩坏是我们的示意,论文停在了 8。压缩的底气来自过滤——先知道什么重要,才敢只看八眼。

眼睛造好了。剩下的主脑反而朴素:一个 8 层、1900 万参数的仅解码器 Transformer,吃 48 个 token(8 × 6 帧历史),吐出 11 个数。零件全齐——组装。

组装时刻:3 赫兹的闭环

指令还是那句「pick apple and place in bowl(把苹果放进碗里)」。看整条流水线自己跑,或者点「走一拍」接管节奏——每一拍就是真实世界里的 333 毫秒:

上:流水线 · 左下:世界 · 右下:本拍输出的 11 维动作

注意两件事。第一,它没有计划——没有先想好十步棋。每一拍都是新画面进来,整条流水线从头重算,历史缓冲里永远只有最近 6 帧。第二,看最后一拍:模型输出的不是动作,是「终止」——连收工都是它自己决定的。RT-1 不做长远打算:每 333 毫秒,重新看一次世界。还有一件事你可能已经发现了:这条轨迹和你在第 1 节亲手录的那条,格式一模一样——它就是从 13 万条「你录的那种东西」里学出来的。

11 维动作到底是哪 11 个数?

手臂 7 维(x、y、z、滚转、俯仰、偏航、爪子开合)+底盘 3 维(x、y、转向)+模式 1 维(控制手臂 / 控制底盘 / 终止本条任务)。每一维被切成 256 个离散档位,模型做的是 256 选 1 的分类题,用交叉熵损失训练(纯行为克隆,没有强化学习)。「动作当 token」的手感,总图第 4 节的离散化滑块你已经拨过,这里不再重复。为什么非要离散、不能直接回归一个连续数?第 9 节拆给你看——那是全场掉分最惨的一刀。

机器建成了:3500 万参数,15 毫秒一拍,在训练过的 700 多条指令上成功率 97%。然而「训练题答得好」只能说明背功扎实。真正的问题从现在才开始:没见过的呢?

泛化的四级台阶

论文把「没见过」拆成一级比一级狠的四级台阶:①见过的任务——但物品摆放、时间、光线都在变;②没见过的指令——训练时故意藏起来 53 条组合,比如苹果见过、挪到碗边也见过,但「把苹果挪到纸碗边」这句话从没出现过;③干扰物——桌上堆 9 件无关杂物,目标甚至被半遮住;④换厨房——新台面、新灯光、新背景。

先别看答案。押一注:RT-1 在第②级——从没见过的指令上,成功率大概多少?

先押注 · 再逐级爬台阶(数据:论文 Table 2,3000+ 次真机试验)
更狠的考场:真实办公室厨房 + 长任务(Table 3 / Table 6)

论文还把机器人拉进真实办公室厨房连考三级:L1 只换台面和灯光,L2 加新杂物,L3 加新物体、新位置(比如水槽边)。RT-1:88 / 75 / 50,Gato 到 L3 归零。挂上 SayCan 规划器(总图第 7 节你玩过的那套「说-做」分工)跑长任务:一条指令平均 9.6 步,RT-1 在两个厨房的执行成功率都是 67%,而 Gato 在新厨房一个长任务都没跑完;最长的一条串了约 50 步。

真实厨房综合L1L2L3
RT-170887550
Gato(缩小版)3063250
BC-Z45385050
BC-Z XL55637538

但这就带出全文最核心的悬念:RT-1 的领先,多少来自架构,多少来自那 13 万条数据?论文两边都动了手术。先拆数据。

数据的形状:多样性贵过数量

备考的人都懂这个道理的雏形:刷 100 道同一题型,不如做 20 道不同题型。但「懂道理」和「有数」是两回事——数据是 17 个月一条条录的,每一条都是钱,到底该省哪头?论文做了个干净的对照:一边只砍数量(每个任务最多留 N 条,任务种类一个不少),一边只砍多样性(删掉演示最少的那 25% 任务——数据条数几乎没动,还剩 97%)。

拖动滑块砍数量,看两条线怎么走;然后按下「只砍多样性」

数据:论文 Table 7 · 纵轴 = 成功率 · 横轴 = 保留的数据量

砍数量,曲线缓缓下坡:数据砍到一半(51%),泛化从 73 掉到 50,肉疼但线性。而「只砍多样性」那一下是断崖:数据条数几乎没少,泛化直接砸到 54——和砍掉一半数据打平。论文自己的总结足够直白:数据多样性比数据数量更本质。预算有限时,先保种类,再保条数。

可多样性恰恰是最贵的——每添一种新任务,都要真人重新演示几百条。有没有便宜的多样性?论文看向了两个「别的世界」:仿真,和别人家的机器人。

海绵测试:喝别的世界的水

两场实验。第一场,往 13 万条真实数据里混入 51.8 万条仿真轨迹(里面有一批现实中从没给机器人摸过的物体)。第二场更野:混入 20.9 万条 Kuka 机械臂的捡箱数据——那是另一种长相的机器人,用强化学习自己攒的数据,动作分布和人类演示完全不同。两场实验担心的是同一件事:新水把旧水搅浑,老本事被带坏。结果是论文里最漂亮的两张对比:

左(Table 4):混入仿真数据 · 右(Table 5):混入 Kuka 机器人数据 · 灰 = 混入前,绿 = 混入后

两场实验,老本事都只掉了 2 个百分点——几乎无损。而收获惊人:只在仿真里见过的物体,真实世界成功率从 23% 跳到 87%;Kuka 那边,RT-1 从没在自己身体上练过捡箱,光靠「看别的机器人干活」,捡箱成功率 22% → 39%,接近翻倍——注意对照组:用 Kuka 数据训练再放到这台机器人上,成功率是 0%。经验不能整搬,但能掺着吸收。好模型像海绵:吸新水,不挤出旧水。这份「海绵体质」后来成了把几十种机器人的数据合进一锅训练(跨本体数据集)敢立项的早期证据。

数据侧的手术做完了。模型侧呢?六个零件,哪个才是不可拆的?论文一个一个拆给你看——最后这张拆解台,交给你。

沙盒:亲手拆一台 RT-1

下面是论文的全部模型消融(每次只动一个零件,数据不变、重新训练、真机重考)。选一个改法,看四级台阶和推理时间怎么变。给你一个挑战:能不能找到一个比原版更强的改法?提示:确实有一项改动能让「换厨房」涨 6 分——但先看看它的价签。

数据:论文 Table 13 · 空心框 = RT-1 原版基准 · 右下:推理耗时 vs 100ms 预算

逛完这张拆解台,几条规律会自己浮出来。拆掉 ImageNet 预训练,「没见过的指令」暴跌 33 分——RT-1 的泛化有一大半是从 ImageNet 的百万张图里继承的,不是厨房里长出来的。拆掉 6 帧历史,遮挡场景从 64 分崩到 14 分——没有记忆,东西被挡住一瞬间就等于消失了。把离散动作换成连续高斯回归,全线最惨:演示天然是多模态的(从左绕、从右绕都对),高斯分布只会取平均——然后撞在正中间。至于那个「换厨房 +6 分」的自回归生成:推理翻倍到 36 毫秒,预算见底,见过的任务还倒赔 12 分——论文放弃了它。RT-1 没有银弹:每个零件各自为某一级台阶付账,而 100 毫秒的死线不许它多装任何一件。

凉亭:笨功夫的遗产

学术锚点:RT-1(Robotics Transformer 1)由 Robotics at Google 与 Everyday Robots 发表于 2022 年末(arXiv:2212.06817),代码已开源。本文只沿一条主线走:数据的笨功夫 × 被 3 赫兹逼出来的架构。论文里的 real-to-sim 模型选择、SayCan 长任务细节、数据采集运营这些支线,值得回原文。

回想你这一路亲手做过的事。你录了一条演示——乘以 13 万,就是这个系统的全部地基;你点过五个模型的秒表,看见 100 毫秒怎么把 12 亿参数拒之门外;你切过早晚融合,亲眼看着杂物在门口被指令滤掉,又拖着 81 个 token 压成 8 个而要紧的一个没丢;你押过「没见过的指令」那一注,然后在拆解台上看清了 76% 这个数字的成分:一半来自 ImageNet 的继承,一半来自 744 个任务的多样性——而多样性贵过数量,是你拖着滑块看见的断崖。

这篇论文留下的两句话,比模型本身活得久。第一句:机器人学习是数据工程——「多样性 > 数量」直接催生了后来几十家实验室把各自机器人数据合进一锅的跨本体大数据集。第二句:控制可以是序列建模——既然 3500 万参数的 Transformer 能在 3 赫兹下开闭环,那把它换成一个真正的大模型呢?一年后,同一批作者把 FiLM-EfficientNet 整个换成视觉语言模型,名字就叫 RT-2——也就是总图第 6 节时间线上,你步进过的第二站的下一站。

杠精清单:这篇论文最常被质疑的五件事

「97% 是自家考场刷出来的吧?」——部分成立。见过任务的评测和训练同分布(同一批「机器人教室」),只是摆放随机。论文的辩护是 3000+ 次真机试验的规模和四级台阶的难度递进;它也坦白:Gato、BC-Z 都是用 RT-1 的数据重训的「架构对比」,这种比法对旧方法反而偏厚道。

「没见过的指令也只是重新组合,算什么泛化?」——论文自己承认:泛化限于已见概念的新组合,一个训练里完全没有的动作(比如拧瓶盖),它做不出来。76% 是拼装能力,不是想象力。

「模仿学习的天花板就是演示员。」——成立,论文把它列为第一条局限:行为克隆学不出比示范者更好的操作。

「13 台机器人是同一个型号,谈什么规模化?」——中肯。跨本体只在 Kuka 实验里初试了一次(你在第 8 节看到的那 17 分),真正的多本体混训是后续工作的事。

「3 赫兹也好意思叫实时?」——对这组厨房任务够用(人类演示一步也要 2~4 秒),但论文自己把「更快的反应速度」列进了未来工作。

下一步去哪:想看这块地基上盖起来的高楼,回《当 AI 长出手来:VLA 地图》接着走时间线;想检验自己是不是真懂了,回第 9 节的拆解台,把每个零件拆掉之前先预测四根柱子的变化——预测全对,你就出师了。