距离 Google DeepMind 放出 RT-2 那篇论文已经过去一段时间了,但直到今天我依然觉得它值得反复咀嚼。作为长期混迹在具身智能和机器人学习领域的从业者,我很少见到一篇文章能把“语言模型的世界知识迁移到物理操作”这件事讲得如此干净利落。RT-2 这篇工作的全称是 Vision-Language-Action Models Transfer Web Knowledge to Robotic Control,翻译过来就是“视觉-语言-动作模型把网络世界知识迁移到机器人控制”。标题看起来学术味很浓,但内核其实特别直白:让机器人不再只是机械执行指令的死板工具,而是能借助互联网上浩如烟海的图文数据,理解“世界上有什么东西”“这些东西怎么用”“碰到没见过的东西该怎么处理”,然后把这些理解直接变成手臂的物理动作。
如果你正准备入门具身智能,或者已经在做机械臂控制、视觉抓取、多模态模型应用,那么这篇博文就是为你写的。我会从模型设计、训练细节、评测结果到实际复现中容易踩的坑,一条条拆开讲清楚。RT-2 不是那种“看看热闹”的论文,它代表了一条非常现实的技术路线,也就是把大语言模型和机器人动作空间强行对齐。理解了它,你再看后续的 RT-2-X、Open X-Embodiment、甚至现在各类 VLA(Vision-Language-Action)模型,都会有一种豁然开朗的感觉。
1. 内容整体设计与思路拆解:为什么 VLA 模型能成为机器人领域的拐点
1.1 传统机器人学习的死穴:数据永远不够
如果你做过机器人抓取,肯定对那个痛苦有切身体会。一个机械臂从“看到一个物体”到“把物体捏起来”,中间要经过目标检测、位姿估计、抓取点规划、轨迹生成、力控反馈这一大堆环节。传统做法里,每个环节都是一个独立模块,每个模块都需要针对特定物体、特定环境去调参换数据。今天桌上放个可乐罐能抓,明天换个橙汁盒可能就抓不准了。因为模型根本没理解“饮料瓶”这个概念,它只是记住了“某个形状的红色圆柱体”的特征。
问题的根源在于数据。机器人真实交互的数据太难获取了,一台机械臂一小时能采集的数据量,可能还不如互联网上一秒新增的图片多。而且这些机器人数据标签稀疏,大部分时间只是“动作执行记录”,很少有像图文对那样丰富语义。
这时候大家自然就想到一个问题:既然语言模型能从几十亿网页里学到关于世界的知识,那能不能让机器人也借用这种知识?视觉语言模型(VLM)本身已经具备很强的物体识别、场景理解、视觉推理能力了,缺的只是“怎么把理解变成动作”这一步。VLA 模型的核心思路,就是直接把视觉语言模型和动作空间焊在一起,让同一个网络既能读懂世界,又能给出机械臂该怎么动的指令。
1.2 从 RT-1 到 RT-2:一次从“专用”到“通用”的跃迁
其实在 RT-2 之前,Google 已经有 RT-1(Robotic Transformer 1)这个前作。RT-1 的做法是设计一个专用 Transformer 架构,输入是机械臂第一视角图像和自然语言指令,输出是离散化的动作 token。它在特定数据集中表现相当不错,但泛化能力非常有限。你换一个没见过的场景,甚至换一种数据采集方式,效果就断崖式下跌。
原因在于 RT-1 从头开始学视觉和语言的理解能力,模型参数量虽然不小,但跟动辄几十亿甚至上百亿参数的 VLM 相比,它在“世界知识”这个维度上是严重匮乏的。它知道怎么把给定物体从一个地方挪到另一个地方,但不知道“橙子跟苹果的区别”“抽屉应该怎么拉开”这种连小朋友都懂的基础常识。
RT-2 的核心转折点,是把语言模型当作“底座”。它直接在现成的 VLM 模型(PaLI-X 和 PaLM-E)基础上继续训练,让模型在拥有大量互联网图文知识的前提下,再学会“输出机器人动作”。这样机器人不仅能完成见过的任务,还能借助 VLM 自带的视觉语义能力,应对以前完全没见过的情况。
我就用一句话总结:RT-1 是培养一个只会做固定几道菜的厨师,RT-2 是让一个看了几万本菜谱的人直接下厨,后者对食材和厨具的理解显然不是前者能比的。
1.3 为什么要坚持“联合训练”而不是“单独接入”
很多人会问:直接用现成的视觉语言模型当感知模块,然后接一个单独的动作策略网络,不行吗?其实这个方案在今天也很常见,但有一个问题:感知系统和动作系统之间存在“语义断裂”。
感知模块输出的是“物体属于哪一类、位姿在哪、平面上面有什么”,而动作模块需要的是“机械臂各关节应该转几度、末端执行器应该开到多大”。这两者的特征空间完全不一致。感知模型优化的是分类和检测损失,它不会为了“方便抓取”去调整特征表达。于是你经常遇到一个尴尬局面:模型明明正确识别出了物体,但到了动作模块那里,物体特征没有被充分利用,最终抓取成功率还是不高。
RT-2 的联合训练(co-training)方式,是用同一个模型同时优化图像语义理解和动作预测。动作预测的梯度可以从后往前传播到整个视觉语言骨干网络,让模型为了“做好动作”而去调整它对视觉场景的理解方式。这才是真正意义上的端到端 VLA 模型,而不是“感知+控制”的简单拼接。
从个人的工程经验来看,这个设计影响深远。我做线下部署时最怕的就是模型模块太多、链路太长,每个模块单独调参都好好的,一连起来就崩。RT-2 这种统一模型架构,至少在部署运维上省了大量心力。
2. 核心细节解析与实操要点:动作空间如何嵌入语言模型
2.1 动作 token 化:机器人的动作怎么变成一个一个的词
要让语言模型输出动作,最直观的办法就是把动作也当作一种“语言”。RT-2 的做法是这样的:机械臂的末端执行器位姿用 6 维向量表示,3 维位置加 3 维旋转(或者对应的轴角表示),再加上一个夹爪开合指令。这些值本身是连续浮点数,没法直接跟文本 token 混用。
Google 的解决方案是把连续值离散化:把每个维度的数值映射到一个整数区间,比如 0 到 255,然后每个整数对应一个 token ID。这样每个动作就变成了一串离散 token,比如“120, 48, 210, 66, 88, 9, 1”,模型在输出时就是把它们当成普通的 token 来生成。
这里有一个关键技巧:位置坐标不是直接对原始值做均匀离散化,而是先根据机械臂实际运动范围,把原始值归一化到 [0, 1] 区间,再乘上 bin 数量(论文里是 256)。换句话说,bin 的分辨率直接决定动作精度。bin 太少,动作粗糙,可能差几毫米就抓不到物体;bin 太多,模型输出空间过大,又容易产生不合理的动作插值。
我实际测试下来,256 个 bin 对于大部分桌面级机械臂已经够用,也就是说单个维度分辨率大约能达到毫米级。如果你的机器人工作空间特别大,可以适当加大 bin 数,但训练成本也会跟着涨。这里有明显的 trade-off,理论上所有 VLA 模型都绕不开。
2.2 模型架构:在 PaLI-X 和 PaLM-E 的底座上加一层动作头
RT-2 没有设计全新的网络结构,而是直接拿已有的两个视觉语言模型当基础:
- PaLI-X:一个参与多语言多任务的 VLM,参数量达到 550 亿级别,主打强视觉感知能力。
- PaLM-E:Google 自己的具身多模态大模型,参数量最高达到 5620 亿,同时在视觉、语言、机器人状态上都做了预训练。
RT-2 的做法是在这些 VLM 原有的输出词表基础上,增加一组“动作 token”,然后在混合数据上继续微调。用 PaLI-X 底座时模型叫作 RT-2-PaLI-X,用 PaLM-E 底座时叫作 RT-2-PaLM-E。
这种做法的好处是,完全规避了从零设计网络结构的风险。VLM 已经把视觉编码器、跨模态注意力、语言生成都训练得很成熟了,RT-2 要做的只是让模型“学会用一种新的语言说话”,也就是“动作语言”。这就像你教一个精通英语和法语的人再学一门西班牙语,肯定比教一个完全听不懂任何语言的人学习要容易得多。
2.3 训练数据配方:一次勇敢的“知识迁移”实验
RT-2 训练数据分成三大块:
- Web 规模图文对数据:包括各种网页上的图片及其描述文本,这部分是纯粹从互联网收集的知识来源。
- 机器人交互数据:来自 Google 自家机器人的真实轨迹数据,包含第一视角图像、语言指令和动作序列。
- 混合微调数据:把上述两类数据混合,以特定比例呈现给模型。
这里有个特别重要的细节:在联合训练的早期阶段,机器人数据占比不能太高,否则模型会过拟合到机械臂垂直的视觉分布上,丧失网络知识的泛化能力。RT-2 的实验设计里,Web 图文数据和机器人数据的配比经过了仔细的调参,最终才既保留了 VLM 原有能力,又学会了动作输出。
从我的经验来说,这个数据比例的收敛状态其实非常敏感。不同品牌的机械臂、不同数据采集方式,最优比例都不一样。论文里给的是一个通用参考值,落地复现时你不能盲抄,得自己拿一个小的验证集去调。
2.4 本体信息注入:让模型知道它控制的是谁
还有一个常被忽略的设计是“机器人本体标记”。同一条指令“把苹果放到碗里”,对于 6 自由度的固定基座机械臂和 7 自由度的移动机械臂来说,动作空间的含义完全不同。
RT-2 在输入序列中会拼上机器人的本体描述信息,相当于告诉模型“你现在控制的是哪台机器”。这样做有两个好处:一是在多机器人数据混合训练时,模型可以区分不同动作空间的语义;二是模型有可能学习到不同本体之间的共性,比如“把物体拿起来”这件事在不同机器人上对应类似的动作序列。
实际做多机器人泛化实验时,这个设计让 RT-2-X 受益很多。如果你以后自己采集多台机器人的数据做 VLA 训练,强烈建议在输入端保留本体描述,不要省略。
3. 多阶段训练实操与核心环节实现:把“读图写作文”变成“看场景给动作”
3.1 第一阶段:混合微调,让模型学会动作的“语法”
要训练一个 RT-2 级别的模型,没有上百块 TPU 是玩不转的,但我可以把训练的“配方”和“节奏”讲清楚,方便你在复现或者设计实验时作为参考。
RT-2 训练分两个阶段,第一阶段最关键。在这一阶段中,你输入给模型的是“图像 + 语言指令”,期望输出的是“语言回答 + 动作 token”。这个阶段数据包含大量 Web 图文对和一部分机器人轨迹。模型在这个阶段主要学习两件事:
- 延续它已有的视觉语言能力,保证读图、理解指令不会退化成机器人专有模型。
- 新学动作 token 的上下文语法,比如“看到抓取目标后,先输出位移,再输出旋转,最后输出夹爪动作”这种序列模式。
从损失函数的角度看,语言 token 部分正常计算交叉熵损失,动作 token 部分同样计算交叉熵损失。值得注意的是,动作 token 即使格式特殊,本质上也属于离散类别预测,所以算法实现上不用引入额外的回归损失头。
工程上有一个容易踩的坑:如果你把动作 token 和文本 token 放在同一个序列里,那么算 loss 时要注意 mask 掉无关位置,否则模型会因为预测“动作描述中图片区域的干扰 token”而白白浪费学习信号。
3.2 第二阶段:机器人数据精调,动作分布的“最后一公里”
第二阶段把机器人数据占比大幅提高,目标就是强化模型输出动作的置信度。打个比方:第一阶段是让模型“会说动作语言”,第二阶段是让模型“在特定机器人上把话说得清楚利索”。
这一阶段通常会做单机器人数据微调。比如最终部署在某个特定的机械臂上,你就拿这台机械臂的 demo 数据再多轮 few-shot fine-tune,让模型更适应当前机器人的运动学特性和传感器噪声分布。
如果没有这个阶段,模型即使学会了通用的动作生成能力,输出动作也可能不够平滑,甚至出现微小的不一致。我见过一些实验,部署时发现抓取动作忽快忽慢,后来发现是基座模型在混合数据里学到不同本体的动作速度特征,导致输出抖动。这个阶段就负责纠正这个问题。
3.3 推理时的 token 选择策略:动作不需要“花样”
大语言模型生成文本时为了自然度,通常用采样(sampling)策略,比如 top-k 或者 nucleus sampling。但到了机器人动作生成这里,采样反而成了敌人。动作要的是连续、平滑、可复现。如果每次推理输出动作 token 时都随机采样,同一场景前后两次预测可能差很多,机械臂就会乱抖。
RT-2 推理时用的策略是:对文本部分可以保留语言模型的采样,但对动作 token 部分默认用贪心解码或者低温度采样。换成人话就是“动作不要有创意,选概率最高的那个”。这一点特别重要,我建议你所有 VLA 模型部署时都默认这么做。如果你实在想让动作有点多样性,也是在动作规划的上层做随机扰动,不能在输出层乱采样。
4. 关键实验结果与影响范围分析:RT-2 到底强在哪
4.1 VQA 评测:网络知识有没有被“忘掉”
加训机器人动作后,模型会不会把原来从网络上学的视觉语言知识全忘了?这是很多人第一时间担心的。RT-2 在 VQA(Visual Question Answering)基准上做了对比,结果说明两件事:加了机器人动作训练之后,模型在视觉问答上的能力没有明显下降;在部分涉及物理常识的问题上,RT-2 甚至由于训练数据中包含机器人轨迹信息,对物体交互的预测表现更好。
这个实验结果给整个行业吃了一颗定心丸:视觉语言能力与动作能力不是零和博弈,它们共享同一个特征提取器,互相促进。
我在实际项目里也观察到类似现象。让同一个模型同时学“看图说话”和“看场景给动作”,视觉特征的丰富度明显好了很多。因为动作监督信号迫使模型关注物体的可交互属性,比如形状、材质、开口方向,而不仅仅是类别标签。
4.2 机器人任务成功率:看得懂,才能动得对
RT-2 在 Google 自家机器人上做了大量真实世界实验,论文报告在 600 多次真人交互评测里,成功率相对 RT-1 等基线有了显著提升,特别是针对“新物体”“新场景”“新指令”的泛化测试上。
其中有个特别有意思的实验,让科研人员故意把可乐罐放到抽屉里,然后下达“把抽屉里的可乐拿出来”这种复合指令。传统模型经常犯的错误是直接对着抽屉外部乱抓,而 RT-2 因为有丰富的场景理解能力,可以直接推理出“可乐在抽屉里,我得先拉开抽屉,再伸手进去拿”。这种推理能力对传统方法来说是质变,靠堆感知模块是堆不出来的。
另外 RT-2 还展现出对未知物体的处理能力。比如训练数据里没有出现过某个特定品牌的红茶瓶子,但它知道“带盖子的圆形物体可以拧开”“瓶装饮料要从侧面抓取”。这些知识从哪来?从 Web 图文数据里来。这就是“连接互联网知识到机器人控制”最形象、最直观的例证。
4.3 涌现能力:模型的“顿悟时刻”
RT-2 论文里提到一个非常出圈的例子:给模型看一张香蕉和一瓶可乐的照片,问它一个问题,模型能推理出把某样东西放在某样东西上面。这里最令人震惊的是,这种“对物体组合关系的推理”没有在训练数据里显式标注过,而是模型从图文数据中自行学到的。
类似地,RT-2 还能理解一些非常口语化的指令。你告诉它“把苹果拿到和杯子一样高的位置”,它能自动拆解任务:先识别苹果、识别杯子、提取杯口高度、再规划机械臂轨迹。这种高层指令到低层动作的转换,传统机器人编程需要工程师一点点去写逻辑,RT-2 直接用一组网络权重就搞定了。
这类“顿悟”强烈依赖于基座模型的规模。我相信这也是为什么 Google 要搞 50B 级以上的超大模型。规模太小,涌现能力就出不来。
4.4 对行业的影响:打通了两条原本割裂的技术栈
在 RT-2 出现之前,机器人社区和 CV/NLP 社区基本上是各玩各的。做机器人的觉得大模型花里胡哨、不实用;做大模型的觉得机器人数据太少、瓶颈在数据不在模型。RT-2 用一套统一架构向所有人证明:这两个方向不仅不矛盾,而且能互相成就。
随后出现的 RT-2-X、Open X-Embodiment 等工作,本质上都是在 RT-2 框架上进一步扩大数据规模、增加机器人本体种类。整个 VLA 赛道可以说就是被 RT-2 一篇文章点火的。如果你现在去翻各大具身智能创业公司的技术报告,能看到大量 RT-2 的痕迹。
5. 常见问题与排查技巧实录:复现 RT-2 时我踩过的坑
5.1 训练不收敛:先检查动作离散化范围
如果你尝试复现一个简化版 RT-2,最可能遇到的问题是训练一段时间后动作 loss 顽固地停在某个值附近不下降。这时候八成是动作离散化出了问题。
检查项一:动作值的范围是否对齐了 bin 区间。比如你机械臂末端 x 坐标范围是 -0.5 到 0.5 米,但你把原始值直接乘 256,负数全变成 0,动作空间直接塌掉一半。正确做法是先归一化到 [0, 1] 再乘 bin 数。
检查项二:旋转量表示是否合理。欧拉角在接近奇异性时会剧烈跳变,用轴角会好很多。RT-2 用的是旋转向量的 3 维表示,相比欧拉角更平滑,推荐你照抄。
5.2 推理时动作跳变:检查 token 之间的“连续性”
如果你发现模型连续推理出的动作序列在空间上不连续,比如坐标从 100 突然跳到 50,抓取路径像折线一样,先别怪模型不稳定。先检查是不是动作 token 解码后没有做平滑后处理。
实际部署中我习惯在动作输出后面加一个低通滤波器或者指数滑动平均,让机械臂加速曲线更平滑。这根论文完全兼容,因为 RT-2 输出的是离散动作点,上层叠加平滑并不会影响语义正确性。
5.3 多机器人数据不一致:必要时引入末端速度信息
如果训练数据来自不同机器人,可能出现一个常见问题:模型输出的动作语义正确,但实际执行时因为各机器人运动速度不同,出现“手到了,夹爪还没到”的延迟感。RT-2 论文本身没有专门讨论这个,但我在实际做多本体扩展时发现,在输入中额外增加一个“动作速率”维度,能显著减少这类问题。
当然这会扩大 token 空间和动作空间,要权衡收益,不是非做不可。
6. 从 RT-2 到我的实际应用体会:这类模型怎么落地最顺手
我在自己的桌面级机械臂项目上试过复现 RT-2 的简化流程,受限于算力,用的基座模型比 PaLM-E 小好几个量级,但即便这样,也能感受到“把语言模型知识灌注到动作空间”这条路是走得通的。模型在没有见过的新物体上展现出的泛化能力虽不如论文那么惊艳,但已经远超市面上大多数专用抓取方案。
如果你也在琢磨怎么让自家机器人变得更“聪明”,我的建议是:不要急着从头训练一个巨型 VLA,而是先拿现成的小尺寸 VLM 底座,配合少量高质量机器人轨迹数据做一个“VLA-mini”,在具体业务场景里验证 IT 泛化能力是否达标。等验证通过后,再考虑扩大基座模型规模或者引入更多数据源。
关于数据采集,有一点我觉得怎么强调都不为过:机器人轨迹动作的质量、动作时序的完整性,比数量更重要。RT-2 之所以能从互联网图文数据里获得“知识迁移”的能力,一部分原因是机器人轨迹标签足够干净,模型才能把 Web 知识稳定地嫁接到动作输出空间。你要是数据里混满了失败轨迹和中断序列,再强的基座也白搭。
最后再分享一个小技巧:VLA 类模型在真实场景部署时,强烈建议在输入图像以外顺便传入一个“机器人是否就位”的状态信息,比如末端执行器当前位置。这个信息虽然简单,但能显著降低模型在动作推理时的歧义,减少“一脸茫然”的失败率。
RT-2 对我最大的启发不是某个具体模型权重有多强,而是它把“机器人的动作能力”和“语言模型的世界认知”这两个原本高低不齐的技术栈,用一套非常聪明的 token 化方案对齐到了同一个框架里。只要你跟着这个思路走,即使不用 Google 的巨型模型,也能在自己的机器人项目中获得实打实的性能提升。