1. 从标题拆解:RT-1 到底想解决什么问题
第一次看到 "RT-1: Robotics Transformer for Real-World Control at Scale" 这个标题,我脑子里蹦出来的第一个念头是:终于有人把 Transformer 从"看图说话"往"动手干活"这条路上推了一大步。标题里三个关键词——Robotics Transformer、Real-World Control、At Scale——每一个都踩在机器人学习领域最疼的地方。
先说 Robotics Transformer。Transformer 这套架构在自然语言和视觉领域已经统治了好几年,核心优势是能处理长序列、能建模远距离依赖、能通过大规模预训练吸收海量数据。但机器人控制跟文本生成完全是两码事:文本是离散 token,机器人动作是连续的高维向量;文本错了可以重来,机器人动作错了可能撞桌子、摔杯子。所以把 Transformer 搬到机器人上,不是简单换个输入输出就完事,而是要重新设计动作的表示方式、重新考虑推理频率、重新权衡模型容量和实时性。
再说 Real-World Control。很多机器人学习的工作是在仿真里刷 benchmark,Sim2Real 的 gap 一直是老大难。RT-1 明确强调 real-world,意味着它要处理真实环境里的光照变化、物体遮挡、传感器噪声、执行器延迟这些仿真里很难完全复现的东西。这直接决定了它的数据必须来自真实机器人,训练和评估都得在物理世界里跑。
最后是 At Scale。这个词最容易被忽略,但恰恰是 RT-1 最有价值的部分。它不是在一个机械臂上跑几十条轨迹就发论文的那种工作,而是用大规模多任务数据训练一个单一模型,让它能泛化到没见过的任务、没见过的物体、没见过的环境布局。规模体现在三个维度:任务数量、数据量、以及模型参数量。
我个人的判断是,RT-1 的核心贡献不在于提出了某个全新的网络模块,而在于它系统性地回答了"当机器人数据足够多、任务足够杂时,Transformer 能不能作为一个通用的控制策略"。这个问题的答案,对整个具身智能方向都有参考意义。
2. 核心设计思路:为什么是 Transformer 而不是别的
2.1 机器人策略网络的历史包袱
在 RT-1 之前,机器人策略学习主流有几条路线。一条是行为克隆,用 CNN 把观测映射到动作,简单直接,但泛化能力差,换个背景、换个物体颜色可能就废了。另一条是强化学习,在仿真里能刷出很高的成功率,但搬到真机上往往需要大量调参和 reward shaping,样本效率低得让人抓狂。还有一条是基于模型的方法,先学一个世界模型再规划,理论上优雅,但模型误差会累积,长程任务容易崩。
这些方法的共同问题是:每个任务单独训一个策略。你有十个任务就训十个模型,任务之间不共享知识,数据利用率极低。而 Transformer 的注意力机制天然适合做多任务联合建模——不同任务的动作序列可以看成不同的"语言",模型在训练中自动学习任务之间的共性。
2.2 动作离散化:一个被低估的关键决策
RT-1 有一个设计我觉得特别值得聊,就是把连续动作离散化成 token。机器人动作通常是 7 维左右的连续向量(末端执行器的位置、姿态、夹爪开合),直接回归连续值在 Transformer 里不是不行,但训练不稳定、容易过拟合。
RT-1 的做法是把每个动作维度均匀离散化成若干个 bin,比如每个维度分 256 个桶,这样动作就变成了类似文本 token 的离散序列。这个决策的好处有三点:第一,可以直接复用语言模型里的交叉熵损失,训练稳定;第二,分类分布比高斯分布更能表达多峰的动作不确定性;第三,离散 token 方便和视觉 token、文本 token 拼在一起做统一建模。
注意:离散化的 bin 数量是个超参数,分得太粗动作精度不够,分得太细分类头太大且稀疏。实际做的时候要根据任务对精度的要求来定,抓取任务和插孔任务对精度的敏感度完全不一样。
2.3 多任务数据的组织方式
At Scale 的另一个体现是数据组织。RT-1 的训练数据来自多个机器人、多个任务、多个场景,每条数据包含一段图像序列、一段文本指令、一段动作序列。模型要学的是给定当前观测和指令,预测下一步动作。
这里有个工程上的难点:不同任务的轨迹长度差异巨大,有的几秒完成,有的要几十秒。如果简单拼接,注意力窗口会被长轨迹占满。RT-1 采用的是固定长度片段采样,每次从完整轨迹里截一段固定长度的窗口,这样 batch 内序列长度一致,训练效率高。同时通过指令文本区分任务,让模型学会"看指令干活"。
3. 模型架构细节:视觉、文本、动作怎么揉在一起
3.1 视觉编码器的选择与取舍
RT-1 的视觉输入是 RGB 图像序列,通常取最近几帧来提供运动信息。视觉编码器用的是预训练的图像分类网络,比如 EfficientNet 这类在 ImageNet 上训过的骨干。为什么不用从头训?因为机器人数据再大规模,跟 ImageNet 的千万级图像比还是少,预训练权重能提供很强的视觉先验。
这里有个实操细节:视觉特征不是只取最后一层,而是取中间某层的特征图,然后做空间展平变成 token 序列。这样做的原因是最后一层太抽象,空间信息丢失严重,而机器人控制需要知道物体在图像里的具体位置。中间层既有语义又有空间分辨率,是个折中。
3.2 文本指令的注入方式
文本指令比如 "pick up the apple" 或者 "move the can to the left",需要编码成向量跟视觉特征融合。RT-1 用的是预训练语言编码器,把指令编码成一个条件向量,然后通过 FiLM 或者交叉注意力注入到视觉特征里。
我试过类似的架构,发现指令编码的质量直接决定泛化能力。如果指令太短太模糊,模型只能靠视觉猜任务;如果指令描述太细,模型又会过拟合到特定措辞。比较好的做法是训练时对指令做同义替换增强,让模型学到语义而不是字面。
3.3 Token 序列的拼接与 Transformer 主干
最终的输入序列大致是这样组织的:视觉 token 在前,文本 token 在后,中间用特殊分隔符隔开。Transformer 主干是多层自注意力加前馈网络,层数和隐藏维度根据算力预算来定。RT-1 的参数量在几千万到几亿级别,不算特别大,因为要保证推理频率能满足实时控制。
推理时,模型输出动作 token 的分类分布,取 argmax 或者采样得到离散动作,再反离散化成连续动作发给机器人。整个流程从图像采集到动作输出,延迟要控制在几十毫秒级别,否则控制会抖。
| 模块 | 输入 | 输出 | 关键设计 |
|---|---|---|---|
| 视觉编码器 | RGB 图像序列 | 视觉 token | 预训练骨干,取中间层特征 |
| 文本编码器 | 指令文本 | 指令向量 | 预训练语言模型,同义增强 |
| Transformer 主干 | 拼接 token 序列 | 动作 token 分布 | 自注意力,因果掩码 |
| 动作解码 | 动作 token | 连续动作 | 反离散化,限幅 |
4. 实操复现:从数据采集到模型部署的完整链路
4.1 数据采集的坑与经验
如果你真想复现 RT-1 这套东西,数据采集是第一道坎。我的经验是:任务设计要覆盖足够的多样性,但每个任务的演示质量要稳定。多样性包括物体种类、摆放位置、光照条件、背景纹理;稳定性指同一个任务的多次演示动作要一致,不能一次从左边抓一次从右边抓,否则模型学出来的是平均动作,什么都抓不准。
采集频率建议至少 10Hz,太低会丢失动作细节,太高数据量爆炸。每条轨迹建议 5 到 20 秒,太短信息量不够,太长训练时截断浪费。采集时同步记录时间戳,方便后续对齐图像和动作。
提示:采集阶段一定要做数据校验,检查图像是否模糊、动作是否有跳变、指令是否和实际动作匹配。脏数据混进去,训练时 loss 看着正常,部署时行为诡异,排查起来非常痛苦。
4.2 训练配置与调参要点
训练用标准的 AdamW 优化器,学习率带 warmup 和 cosine 衰减。batch size 尽量大,因为多任务数据分布差异大,小 batch 梯度噪声太强。损失函数就是动作 token 的交叉熵,如果同时预测多个未来动作,可以加权求和。
我踩过的一个坑是类别不平衡。某些动作维度比如夹爪开合,大部分时间是不变的,只有少数时刻变化,导致分类器倾向于预测不变。解决办法是对变化时刻的样本加权,或者用 focal loss 这类机制。
另一个坑是过拟合到训练场景。模型在训练集上成功率很高,换个桌子颜色就掉一半。缓解办法包括:数据增强(颜色抖动、随机裁剪、背景替换)、dropout、以及最重要的——增加场景多样性。
4.3 部署时的实时性优化
训练好的模型要部署到真实机器人上,推理速度是硬指标。几个优化方向:模型量化(FP16 或 INT8)、算子融合、以及用 TensorRT 这类推理引擎做图优化。如果还是不够快,可以考虑动作分块预测——一次预测未来多步动作,减少推理次数。
控制循环的设计也很关键。我的做法是模型推理和机器人控制解耦,模型在一个线程里跑,控制指令进队列,控制线程按固定频率从队列取最新指令。这样即使模型偶尔卡一下,控制也不会断。
5. 常见问题与排查技巧实录
5.1 训练不收敛或 loss 震荡
这个问题我遇到太多次了。排查顺序一般是:先看数据有没有问题(图像和动作是否对齐、指令是否为空),再看学习率是不是太大,然后看 batch 里任务分布是不是太偏。如果某个任务的数据量是其他任务的十倍,梯度会被它主导,其他任务学不动。解决办法是做任务级采样加权,让每个任务在 batch 里出现的概率差不多。
5.2 仿真里好使真机上拉胯
Sim2Real 的 gap 主要来自三个方面:视觉差异(渲染和真实照片的纹理、光照不同)、动力学差异(摩擦、延迟、电机响应不同)、以及噪声差异(真实传感器有噪声,仿真里往往太干净)。缓解手段包括域随机化、真实数据微调、以及视觉上的风格迁移。但最根本的还是多用真实数据,仿真只能做预训练。
5.3 长程任务中途失败
RT-1 这类模型本质是反应式的,每一步看当前观测决定下一步动作,没有显式的长程规划。所以做多步任务时,中间一步偏了后面就全乱。改进方向有几种:一是用动作分块,让模型一次预测一段动作,隐含短期规划;二是加一个高层规划器,把长任务拆成子任务;三是用示教数据里的失败恢复样本,让模型学会纠错。
| 问题现象 | 可能原因 | 排查方法 | 解决思路 |
|---|---|---|---|
| loss 不降 | 数据对齐错误 | 可视化图像-动作对 | 重新对齐时间戳 |
| 成功率低 | 任务数据不平衡 | 统计各任务样本数 | 采样加权 |
| 真机抖动 | 推理延迟高 | 测端到端延迟 | 量化+分块预测 |
| 泛化差 | 场景多样性不足 | 换场景测试 | 数据增强+增采 |
| 长任务失败 | 无长程规划 | 分步评估 | 加规划器或分块 |
6. 这套东西的边界与后续可扩展方向
RT-1 证明了 Transformer 在大规模机器人数据上能学到可泛化的控制策略,但它也有明显边界。第一,它依赖大量高质量示教数据,数据采集成本高;第二,它的泛化主要是任务内泛化,跨 embodiments(比如从一种机械臂换到另一种)还需要额外工作;第三,它的推理频率受模型大小限制,复杂模型很难做到高频控制。
后续可以扩展的方向,我个人比较看好几个:一是多模态融合,除了 RGB 还加入深度、触觉、力觉,让模型对物体物理属性有更好的感知;二是在线学习,让模型在部署后能根据人类反馈持续改进;三是层次化策略,高层做任务规划,低层做动作执行,分工明确。
我在实际项目里的体会是,RT-1 这套范式的价值不在于某个具体数字,而在于它给出了一条可扩展的路径:数据越多、任务越杂、模型越大,策略的泛化能力就越强。这个 scaling law 在机器人领域能不能像语言模型那样成立,目前还没有定论,但至少 RT-1 让我们看到了希望。如果你正在做机器人学习相关的东西,建议先把数据 pipeline 搭扎实,模型架构反而是最容易替换的部分。数据质量决定了上限,模型只是逼近这个上限的工具。