想象你走进一家老字号餐馆的后厨,一位新学徒正站在老师傅身边。老师傅颠勺、翻锅、撒盐,学徒目不转睛地看,然后照葫芦画瓢地练。三天后,他能做出像模像样的回锅肉;三个月后,他不仅复刻得了招牌菜,还能根据客人“少放辣、多放葱”的要求临场调整。这就是本文的主角——具身智能机器人,而它“学艺”的过程,正是模仿学习与示教。RT-1 是那个抱着录像反复模仿的学徒,RT-2 是那个读过海量菜谱、懂得“什么叫脆”的学徒,RT-X 则是把全世界师傅的绝活汇成一间大教室的厨艺联盟。接下来,我们就把这三代“机器人学徒”请上灶台,看看它们到底怎么学、学什么、还差哪点火候。

岗位关联

掌握 RT-1/RT-2/RT-X 的演进逻辑,等于拿到了具身智能落地路线图的钥匙,无论你做机器人研发、数据工程还是 AI 产品,都能找到自己的发力点。

目录
  1. 可视化演示
  2. 基本概念:从“看师傅做菜”说起
  3. RT-1架构:把“颠勺”变成一张张步骤卡
  4. RT-2架构:读过菜谱的学徒会“思考”
  5. RT-X数据:全球厨房的共享菜谱
  6. 训练流程:从观摩到掌勺
  7. 关键能力:举一反三的功夫
  8. 应用部署:从后厨走向前台
  9. 挑战展望:还差的那点火候
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示RT-1/RT-2/RT-X具身大模型的架构对比、示教学习流程与动作生成推理过程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

RT系列模型架构对比 RT-1:专用模型 RT-2:VLM融合 RT-X:跨平台 具身智能

基本概念:从“看师傅做菜”说起

学徒学艺的第一步不是拿勺,而是“看”。看师傅怎么握锅、怎么起火、怎么在菜快糊时加一勺高汤。这种“看”在 AI 里叫模仿学习(Imitation Learning),师傅的一举一动被记录下来,就成了示教数据(Demonstration Data)。与 AlphaGo 那种自己跟自己下棋试错不同,模仿学习的起点是“别人已经做对了”,机器人要做的,是把“看到的状态”和“师傅的动作”一一对应起来。

这件事被数学家形式化为行为克隆(Behavior Cloning)。师傅做菜时的每个瞬间,都可以记成一对数据:当时锅里什么状态(状态 s)、师傅做了什么动作(动作 a)。收集成千上万对 (s, a) 之后,训练一个神经网络策略 π_θ,让它的输出尽量逼近师傅的动作。这个“照抄要抄像”的目标,就写成一个损失函数:

示教范式不止一种。最常见的三种是:遥操作示教(人用操控手柄带着机器人做一遍)、直接手把手引导(人握着机械臂演示)、以及从视频中提取动作(只看录像,自己揣摩)。具身智能强调机器人要有“身体”——状态来自相机图像,动作是真实的关节指令,这和坐在服务器里只输出文字的聊天机器人有本质区别。而 RT 系列之所以叫“大模型”,是因为它们都站在 Transformer 底座上,和 GPT 同宗同源。

所以,学徒的第一课并不神秘:坐在灶台边,把师傅的每一次出手记成一本“状态—动作”笔记,然后一遍遍模仿、修正、再模仿。RT-1/RT-2/RT-X 这三代模型,本质上是把这套“跟师学艺”的流程,从一本小笔记升级成了一座图书馆。

θ∗=arg⁡min⁡θ  E(s,a)∼D[−log⁡πθ(a∣s)]\displaystyle \theta^{*} = \arg\min_{\theta} \; \mathbb{E}_{(s,a)\sim\mathcal{D}} \big[ -\log \pi_{\theta}(a \mid s) \big]
公式说的是:找一组网络参数 θ,让所有示教样本上“预测动作的概率”的平均负对数最小——翻译成厨房语言,就是让学徒在每种灶台状态下都尽量做出和师傅一样的动作。
  1. 示教数据集 D由一次次“师傅示范”收集来的(状态 s,动作 a)配对,相当于学徒的“学习笔记”。
    D={(s1,a1),(s2,a2),…,(sT,aT)}\mathcal{D} = \{(s_1,a_1),(s_2,a_2),\ldots,(s_T,a_T)\}
  2. 策略网络 π_θ参数为 θ 的神经网络,输入状态输出动作的概率分布,回答“这个状态该做什么”。
    πθ(a∣s)∈[0,1],∑aπθ(a∣s)=1\pi_{\theta}(a \mid s) \in [0,1], \quad \sum\nolimits_{a} \pi_{\theta}(a \mid s) = 1
  3. 负对数似然 −log概率越接近 1,−log 越小;取对数还能把连乘变成连加,方便梯度计算。
    −log⁡πθ(a∣s)-\log \pi_{\theta}(a \mid s)
  4. 期望与 argmin对全部示教样本求平均损失,再用梯度下降迭代求解,等价于“每道菜都反复练”。

RT-1架构:把“颠勺”变成一张张步骤卡

录像式学徒有个难题:师傅的动作是连续流畅的,可机器人要执行的指令必须是明确的。就像菜谱上写“盐少许”没法照做,得改成“加 3 克盐”一样,RT-1 要做的第一件事,就是把连续动作“标准化”成一张张步骤卡。

RT-1 是 Google 于 2022 年发布的机器人 Transformer,在 13 台机器人、700 多个任务、13 万条示教轨迹上训练。它把每个连续动作维度(比如“末端前进 0.2 米”)映射到 256 个离散桶(bin)之一——这就像把“稍微往前一点点”量化成 256 档精确刻度。离散化的公式:

有了离散 action token,RT-1 的决策就变成了一场“逐字造句”:相机图像经过 EfficientNet 视觉编码器变成视觉 token,语言指令通过 FiLM(特征级条件调制)方式融入视觉特征,Transformer 再自回归地吐出 35 个动作 token。整条动作序列被切成“第 1 步做什么、第 2 步做什么”的步骤卡,机器人按卡执行,再结合闭环反馈修正误差。整个模型只有 920 万参数,换来约 3Hz 的控制频率,足以完成拿取、开抽屉、倒水等任务。

步骤卡的好处是稳定可复现:离散化天然匹配了 Transformer 的词表输出,让“预测下一个动作”变得和“预测下一个词”一样自然。代价是精度被限制在桶的粒度内,但工程上 256 档足够细腻——就像再挑剔的食客,也吃不出 3 克盐和 3.01 克盐的区别。

bi=⌊xi−xmin⁡xmax⁡−xmin⁡×(N−1)⌋\displaystyle b_{i} = \left\lfloor \frac{x_{i} - x_{\min}}{x_{\max} - x_{\min}} \times (N-1) \right\rfloor
公式的含义是:把连续值 x 先按最小最大值压到 0~1 之间,再乘以桶数 N 取整,得到 0 到 N−1 的桶编号。RT-1 里 N=256。
  1. 连续动作值 x_i机器人的目标位置、关节角度等,本是连续实数,类似“师傅手腕的一个微转”。
    xi∈[ xmin⁡, xmax⁡ ]x_{i} \in [\,x_{\min},\ x_{\max}\,]
  2. 归一化映射把连续值压到 [0,1) 区间,相当于把“任意角度”换成“占整个活动范围的几分之几”。
    x~=xi−xmin⁡xmax⁡−xmin⁡\tilde{x} = \frac{x_i - x_{\min}}{x_{\max} - x_{\min}}
  3. 放大取整乘以 (N−1) 再向下取整,得到离散桶编号,类似把一整勺盐拆成 256 格刻度勺。
    bi=⌊x~×(N−1)⌋,bi∈{0,1,…,N−1}b_{i} = \lfloor \tilde{x} \times (N-1) \rfloor, \quad b_i \in \{0,1,\ldots,N-1\}

RT-2架构:读过菜谱的学徒会“思考”

只会看录像的学徒有个致命短板:师傅没做过的菜,他完全抓瞎。给他一条没见过的鱼,他连该刮鳞还是该红烧都不知道。2023 年问世的 RT-2 打破了这堵墙——它先“读”过互联网上海量的图文菜谱(即视觉-语言模型 VLM),再进后厨实习,因此天然认识大量食材和料理常识。

RT-2 的核心思想叫“视觉-语言-动作”(Vision-Language-Action, VLA):把机器人的动作 token 和文本 token 放进同一个词表、同一个 Transformer。它要同时学会两件事——描述世界(输出语言)和改变世界(输出动作)。这引出了“共同微调”(co-fine-tuning):先用海量图文数据把模型训练成一个博学的 VLM,再混合机器人示教数据继续微调,让动作 token 和文本 token 一起参与学习:

这套设计带来了惊人的涌现能力。RT-2 可以对没见过的物体做零样本操作(训练时从未抓过某款饮料罐,第一次见也能抓);可以理解“把桌上最大的红色物体拿给我”这类需要语义推理的指令;甚至出现了思维链(Chain-of-Thought)能力——先把任务“在心里想一遍”,再决定动作顺序,类似学徒自言自语“先配料、再热锅、后下菜”。

读过菜谱的学徒,最大的不同是“懂行”。RT-1 是“我见过这个动作,我照着做”,RT-2 是“我理解这个任务的意图,我知道该选哪个目标”。这种从“手熟”到“心熟”的飞跃,正是具身大模型最激动人心的地方。

LVLA=−log⁡p(atok∣I,T)+γ[−log⁡p(ttok∣I,T)]\displaystyle \mathcal{L}_{\text{VLA}} = -\log p(a_{\text{tok}} \mid I, T) + \gamma \big[ -\log p(t_{\text{tok}} \mid I, T) \big]
公式说明:模型每次前向同时预测“该做的动作”和“该说的词”,前者负责动手,后者保住语言常识,γ 调节两者权重,防止学到动作就忘了知识。
  1. 动作 token 损失对机器人动作编号做交叉熵,让模型学会在给定图像 I 和指令 T 时输出正确动作。
    −log⁡p(atok∣I,T)-\log p(a_{\text{tok}} \mid I, T)
  2. 文本 token 损失对语言回答同样做交叉熵,保持“见过世面”的常识不因学动作而遗忘。
    −log⁡p(ttok∣I,T)-\log p(t_{\text{tok}} \mid I, T)
  3. 平衡权重 γγ 大于 0 表示语言损失参与训练,常见做法是显著降低文本损失权重、抬高动作损失权重。
    γ∈(0,1)\gamma \in (0,1)

RT-X数据:全球厨房的共享菜谱

一家餐馆的样本终究有限,一个师傅的绝活也撑不起满汉全席。2024 年,Open X-Embodiment 数据集问世: 21 家机构、22 种不同机器人本体、100 多万条真实轨迹汇聚成一座“全球厨房”。数据种类从单臂抓取、双臂协作到四足移动、轮式导航,应有尽有。

跨本体迁移(Cross-Embodiment Transfer)是 RT-X 的灵魂。不同机器人长得完全不同,就像川菜师傅和法餐主厨用的锅都不一样,但只要把动作统一到“末端执行器的位姿变化”这一共同语言上,颠勺的发力技巧就能迁移。RT-X 的联合训练目标:

实验结果证明联盟的力量:基于 RT-X 数据训练的 RT-1-X 和 RT-2-X,在未见过的任务和本体上的成功率比单本体模型平均提升约 50%。数据规模带来的不只是量变——当轨迹条数跨过某个门槛,模型开始涌现出跨任务的迁移能力,这就是具身智能领域的“数据规模效应”。

全球厨房的逻辑是朴素的:你的一手绝活,加上我的一手绝活,大家共用同一个大脑,每个学徒都成了“集百家之长”的高手。当然,统一数据格式、清洗噪声轨迹、对齐动作空间,这些“联盟管理”的脏活累活,恰恰是工程落地的核心难点。

θ∗=arg⁡max⁡θ∑e=1E∣De∣∑j∣Dj∣  E(s,a)∼Delog⁡πθ(a∣s,e)\displaystyle \theta^{*} = \arg\max_{\theta} \sum_{e=1}^{E} \frac{|\mathcal{D}_{e}|}{\sum_{j}|\mathcal{D}_{j}|} \; \mathbb{E}_{(s,a)\sim\mathcal{D}_{e}} \log \pi_{\theta}(a \mid s, e)
公式含义:把 E 个不同本体(不同厨房)的数据按规模加权,一起训练同一个策略模型 π,让一个骨架同时会做川菜和法餐。
  1. 本体编号 e每种机器人都是一间“分店厨房”,e 从 1 到 E 遍历全部本体。
    e∈{1,2,…,E}e \in \{1,2,\ldots,E\}
  2. 数据量加权数据越多的本体贡献越大,类似投稿多的餐馆在联盟里话语权更重。
    we=∣De∣∑j∣Dj∣w_{e} = \frac{|\mathcal{D}_{e}|}{\sum_{j}|\mathcal{D}_{j}|}
  3. 本体条件化输入策略可以知道“现在操控的是谁”,从而输出适配该机器人的动作。
    πθ(a∣s,e)\pi_{\theta}(a \mid s, e)

训练流程:从观摩到掌勺

学徒不是看完一遍就能上灶的,完整的训练流程分为三步:先采集数据,再预训练打底,最后微调对齐。数据采集阶段,遥操作是主流:操作员戴上操控设备,像操纵提线木偶一样让机器人完成拿杯子、开抽屉等动作,全程录像并记录关节指令。仿真环境也可以批量生成数据,虽然“虚拟菜”不够地道,但量大管饱。

预训练阶段,模型先在海量互联网图文数据上学习常识——什么是杯子、什么是“热”、什么是“小心轻放”。这相当于先读万卷书。微调对齐阶段,再用高质量的机器人示教数据把“常识”落到“动作”上,让模型明白读到“把杯子放回桌上”时,手应该怎么动。数据混合比例是关键超参数:

实践证明,微调时语言损失权重通常设得很低(比如 γ=0.0001),动作损失权重拉满,这样才能保证模型“身怀绝技”而不是“纸上谈兵”。训练完成后还要做评估筛选:成功率低的指令要回炉重训,长尾失败的案例要补齐数据。整个流程就是“观摩—练习—复盘—再练习”的循环,和我们学厨如出一辙。

pk=∣Dk∣α∑j∣Dj∣α\displaystyle p_{k} = \frac{|\mathcal{D}_{k}|^{\alpha}}{\sum_{j} |\mathcal{D}_{j}|^{\alpha}}
公式说:第 k 类数据(遥操作、仿真、网络视频)在每个批次中的采样比例,由其数据量的 α 次方决定。α=1 时按数据量线性采样,α 越大越偏向大数据集。
  1. 数据类别 D_k把遥操作数据、仿真数据、网络图文数据分门别类,就像把练习册按科目归档。
    k∈{遥操作, 仿真, 网络图文}k \in \{\text{遥操作},\, \text{仿真},\, \text{网络图文}\}
  2. 指数 α控制“大数据集优先”的程度,α=1 时采样比例正比于数据量。
    α=1⇒pk∝∣Dk∣\alpha = 1 \Rightarrow p_k \propto |\mathcal{D}_k|
  3. 混合采样每个训练批次按比例从各类数据中抽取,防止某类数据一家独大导致灾难性遗忘。

关键能力:举一反三的功夫

学徒学成与否,看的是“举一反三”。做过红烧肉,能不能做糖醋排骨?这就是泛化能力(Generalization)。RT-1 的泛化体现在对同类物体的迁移:学会了抓红色的马克杯,换个蓝色马克杯也能抓。RT-2 则更进一步:凭借视觉-语言预训练,它能对从未见过的物体类别做出合理操作,这叫零样本迁移(Zero-shot Transfer)。

多任务学习(Multi-task Learning)是泛化的基础。RT 系列不是为单一任务训练一个专用模型,而是让同一套参数同时学习数百个任务。就像学徒同时练川菜、粤菜、面点,任务之间的共性——“握锅要稳”“火候要准”——被共享的参数层捕获,互相促进。数据规模与泛化收益之间存在近似幂律关系:

零样本迁移的工程意义巨大:部署新任务时不用重新采集上千条数据,只要写一句语言指令,模型就可能直接上手。这极大缩短了换型时间——传统工业机器人换一个工件要工程师重新示教几个小时,而 RT-2 风格的大模型可能只需几分钟的现场微调,甚至零调整。

当然,“举一反三”也有边界:离训练分布太远的任务仍会翻车。学徒没做过分子料理,你让他复刻米其林三星的泡沫球,他照样懵。理解泛化的边界,和追求泛化的能力同样重要。

Err(N)=c⋅N−β\displaystyle \text{Err}(N) = c \cdot N^{-\beta}
公式说明:随着有效示教样本数 N 增大,模型错误率按幂律下降,β 越大说明“数据越吃得起”。这是支撑“海量数据路线”最坚实的经验规律。
  1. 数据规模 N有效示教轨迹总数,是所有泛化能力的燃料。
    N=∣D有效∣N = |\mathcal{D}_{\text{有效}}|
  2. 错误率 Err(N)模型在未见过的测试任务上的失败比例,衡量“举一反三”的本事。
    Err(N)∈[0,1]\text{Err}(N) \in [0,1]
  3. 指数 β 与常数 cβ 表示数据利用效率,c 由任务固有难度决定;两者共同刻画学习曲线。

应用部署:从后厨走向前台

学成的学徒终于要出师迎客了。具身大模型的第一类典型应用是移动操作(Mobile Manipulation):机器人装上轮子或四足,既能走到目标位置,又能伸手抓取,完成“从 A 桌取杯子送到 B 桌”这类需要导航+操作的复合任务。在物流仓库、酒店送餐、家庭服务等场景中,这类能力直接决定机器人能否“独当一面”。

第二类应用是多步任务(Multi-step Tasks):冲一杯咖啡、收拾一桌餐具、按顺序摆放调料。这类任务要求模型具备任务分解和状态追踪能力——做到哪一步了、下一步该做哪个动作,都要连续决策。RT-2 在这类任务上展现出“带着计划行动”的雏形。部署时工程师最关心的评估指标是成功率:

人机协作(Human-Robot Collaboration)是第三类场景:人类用手指一指目标,或说一句“把那堆书放到左边第二格”,机器人边看边听边执行。这要求模型具备多模态融合能力和对人的即时反馈做出响应的能力。部署实践中还有三个常用技巧:先在仿真环境预演一遍完整流程;在现场用小批量数据做快速微调适应光照和背景;最后加一道安全兜底——检测到异常立即停止并请求人工介入,就像学徒不确定时主动喊师傅。

从后厨到前台,本质是“学艺”到“营业”的跨越。技术指标最终要落到成功率、节拍时间、安全记录这些经营数字上——机器人再聪明,也得端得出菜才算数。

SR=1M∑m=1M1[任务m 成功]\displaystyle \text{SR} = \frac{1}{M} \sum_{m=1}^{M} \mathbb{1}[\text{任务}_{m}\ \text{成功}]
公式含义:同一任务重复测试 M 次,成功一次记 1,失败记 0,平均下来的成功率 SR 就是机器人的“顾客满意率”。
  1. 测试次数 M为了让结果可信,每个任务至少测 10~100 次。
    M≥10M \geq 10
  2. 指示函数 𝟙任务成功取 1、失败取 0,像给每道菜打分。
    1[成功]∈{0,1}\mathbb{1}[\text{成功}] \in \{0,1\}
  3. 平均成功率最终得分,工业客户通常要求达到 90% 以上才肯验收。

挑战展望:还差的那点火候

出师后的学徒,离真正的大厨还差几样火候。第一是反应速度。RT-2 这类大模型的前向推理需要数百毫秒到数秒,而灵巧操作(如穿针引线、捏起硬币)需要几十赫兹的控制频率。整个决策回路的延迟可以写成一个加法:

第二是灵巧操作(Dexterous Manipulation)。现在的 RT 系列大多操作的是“夹爪”——只会捏,不会捻。人类手指有 20 多个自由度,触觉反馈细腻,这是当前模型和硬件都难以企及的领域。第三是安全可靠:在家庭和工厂里,机器人一个错误动作可能伤人毁物。模型需要不确定性估计、碰撞检测、紧急停止等多层保障,就像大厨切菜时也要不断提醒自己“刀快,稳住”。

展望未来,数据、模型、硬件三者必须协同进化:更标准的数据采集协议、更高效的模型架构(如扩散策略、缓存加速)、更强的小型化算力平台,缺一不可。具身大模型目前就像一位刚从厨艺学校毕业的年轻厨师——基本功扎实,能独立待客,但离“人锅合一”的境界还有几道硬门槛要跨。而每一道门槛背后,都是工程师和研究者的大机遇。

τcycle=τ感知+τ推理+τ执行\displaystyle \tau_{\text{cycle}} = \tau_{\text{感知}} + \tau_{\text{推理}} + \tau_{\text{执行}}
公式说明:一次完整的“看到—想到—做到”循环,等于图像编码时间、模型推理时间和电机响应时间之和。要让机器人动作丝滑,必须三项一起压缩。
  1. 感知延迟 τ_感知相机成像与视觉编码耗时,目前约几十毫秒。
    τ感知≈30-60ms\tau_{\text{感知}} \approx 30\text{-}60\text{ms}
  2. 推理延迟 τ_推理大模型前向计算耗时,是当前最大的瓶颈,可达数百毫秒。
    τ推理≈300-1000ms\tau_{\text{推理}} \approx 300\text{-}1000\text{ms}
  3. 执行延迟 τ_执行电机与传动系统响应,取决于机械硬件。
    τ执行≈10-50ms\tau_{\text{执行}} \approx 10\text{-}50\text{ms}

AI 应用场景

工业流水线的快速换型

阶段:数据采集与策略微调(模仿学习)

解决的问题:传统工业机器人换产时需要工程师重新示教路径,动辄数小时甚至数天;基于 RT-1 风格模型的解决方案只需操作员用遥操作设备做几次示范,模型通过行为克隆快速学会新工序,换型时间从小时级压缩到分钟级。

具体案例:某 3C 电子工厂的上下料工位,机器人原本固定抓取一种外壳。引入 RT-1 式离散动作建模后,操作员示范了 20 次“从托盘取件放到流水线”的动作,模型微调后成功率达到 97%,换型时不再需要修改代码。

家庭服务机器人的语言指令跟随

阶段:模型部署与语义推理(RT-2 视觉语言动作)

解决的问题:传统家用机器人只能执行预设任务,面对“把茶几上那个红色的东西放到沙发上”这类自然语言指令无能为力。RT-2 借助网络图文预训练获得常识,能理解物体属性与空间关系,把语言指令直接翻译为动作序列。

具体案例:在一间模拟客厅的测试环境中,部署 RT-2 的移动机械臂接收随机组合的指令(含未见过的物体与位置),零样本成功率比仅用机器人数据训练的基线提升了两倍以上,用户可以用日常口语直接指挥机器人做家务。

跨机构数据共建与联合模型训练

阶段:数据工程与预训练(RT-X 跨本体)

解决的问题:单家实验室的数据量有限,且机器人型号单一,训练出的模型泛化能力弱。Open X-Embodiment 提供的跨机构、跨本体数据集让模型学会不同机器人之间的共性动作表征,显著提升在陌生机器人上的迁移表现。

具体案例:某高校实验室加入 Open X-Embodiment 联盟,贡献了 50 小时四足机器人导航数据;作为回报,他们直接获得了基于 22 种机器人、100 万条轨迹预训练好的 RT-1-X 模型权重,在自己新的四足平台上微调后,导航成功率比从零训练提升了近一半。

Python 演示

python86 行
import numpy as np  def softmax(x):    # 数值稳定的 softmax    e = np.exp(x - x.max())    return e / e.sum()  class RT1LikePolicy:    """极简 RT-1 风格策略:从状态预测离散动作桶,再还原为连续动作"""     def __init__(self, state_dim, action_dim, num_bins=32, hidden=64, lr=0.05):        self.action_dim = action_dim        self.num_bins = num_bins        self.lr = lr        rng = np.random.default_rng(0)        self.W1 = rng.normal(0, 0.1, (state_dim, hidden))        self.b1 = np.zeros(hidden)        self.W2 = rng.normal(0, 0.1, (hidden, action_dim * num_bins))        self.b2 = np.zeros(action_dim * num_bins)     def discretize(self, actions):        # 将 [-1, 1] 的连续动作压到 [0, 1),再乘以桶数取整        scaled = np.clip((actions + 1) / 2, 0, 0.999)        return (scaled * self.num_bins).astype(int)     def _logits(self, states):        hidden = np.tanh(states @ self.W1 + self.b1)        logits = (hidden @ self.W2 + self.b2).reshape(-1, self.action_dim, self.num_bins)        return hidden, logits     def train_step(self, states, actions):        n = states.shape[0]        hidden, logits = self._logits(states)        targets = self.discretize(actions)        probs = np.exp(logits - logits.max(axis=2, keepdims=True))        probs /= probs.sum(axis=2, keepdims=True)        grad = probs.copy()        for d in range(self.action_dim):            grad[np.arange(n), d, targets[:, d]] -= 1.0        grad /= n        grad_flat = grad.reshape(n, -1)        back = grad_flat @ self.W2.T * (1 - hidden ** 2)        self.W2 -= self.lr * hidden.T @ grad_flat        self.b2 -= self.lr * grad_flat.sum(axis=0)        self.W1 -= self.lr * states.T @ back        self.b1 -= self.lr * back.sum(axis=0)     def act(self, state):        # 推理:各动作维度取概率最大的桶,再还原为 [-1, 1] 连续动作        _, logits = self._logits(state[None, :])        bins = np.array([np.argmax(softmax(logits[0, d])) for d in range(self.action_dim)])        return bins / (self.num_bins - 1) * 2.0 - 1.0     def train(self, states, actions, epochs=300):        for _ in range(epochs):            self.train_step(states, actions)  def make_demo_data(n=400, target=(0.6, -0.4)):    # 生成示教数据:从随机起点朝固定目标方向移动 0.3    rng = np.random.default_rng(42)    states = rng.uniform(-0.8, 0.8, (n, 2))    delta = np.array(target) - states    delta /= np.linalg.norm(delta, axis=1, keepdims=True)    return states, delta * 0.3  def main():    states, actions = make_demo_data()    policy = RT1LikePolicy(state_dim=2, action_dim=2)    policy.train(states, actions, epochs=300)     pos = np.array([-0.7, 0.5])    for _ in range(30):        pos = pos + policy.act(pos)    target = np.array([0.6, -0.4])    dist = float(np.linalg.norm(pos - target))    print("最终位置:", pos)    print("距目标距离:", round(dist, 3))    print("结论:", "模仿学习成功" if dist < 0.35 else "还需更多训练")  if __name__ == "__main__":    main()
目的:用纯 NumPy 实现一个 RT-1 风格的模仿学习策略——把连续动作离散成桶,通过行为克隆学习“从状态预测动作”,最后让机器人从起点走向目标点,直观演示“示教—离散化—模仿—执行”的完整链路。
  1. scaled = np.clip((actions + 1) / 2, 0, 0.999)把 [-1,1] 连续动作归一化到 [0,1),这是 RT-1 式动作离散化的第一步。
  2. logits = (hidden @ self.W2 + self.b2).reshape(-1, self.action_dim, self.num_bins)输出形状 (样本数,动作维度,桶数),每个动作维度独立一组“桶”的分数。
  3. probs /= probs.sum(axis=2, keepdims=True)沿桶维度做 softmax 归一化,得到每个桶的概率。
  4. grad[np.arange(n), d, targets[:, d]] -= 1.0把正确桶位置的梯度减 1,Softmax 交叉熵的标准反向梯度,推动模型提高正确桶的概率。
  5. back = grad_flat @ self.W2.T * (1 - hidden ** 2)误差从输出层反传到隐藏层,tanh 导数为 (1−h²)。
  6. bins = np.array([np.argmax(softmax(logits[0, d])) for d in range(self.action_dim)])推理时对每个动作维取概率最大的桶编号,类似 RT-1 的 argmax 解码。
  7. return bins / (self.num_bins - 1) * 2.0 - 1.0把桶编号换算回 [-1,1] 连续动作,完成“离散→连续”解码。
  8. delta /= np.linalg.norm(delta, axis=1, keepdims=True)构造示教动作:朝目标方向的单位向量乘以步长,模拟“师傅”的示范轨迹。

常见误区

误区很多人以为 RT-1 这类模型就是把师傅做事的视频录下来,机器人到时候照着视频原样演一遍。既然视频能重放,那机器人不就是个高级录像机吗?

正解模仿学习学的是“状态到动作的映射函数”,不是视频帧本身。RT-1 把图像和指令编码成特征,再输出离散动作 token,即便场景有光照变化、物体位置微移,模型也能泛化执行。录像回放遇到一点变化就死机,而模仿学习的策略网络懂得“变通”——它学的是师傅做菜的“门道”,不是那一盘菜的“剧照”。

为何常见:因为“示教数据”外观上确实是一段段视频,初学者很容易把数据形式和学习目标混为一谈。

误区既然 RT-1 把连续动作切成 256 个桶会损失精度,那把桶数加到 10 万不是更精确吗?毕竟连续动作本来包含无限细节。

正解桶数不是越多越好。离散化的目的不是“逼近连续”,而是匹配 Transformer 的离散 token 输出结构,让大模型能自回归地预测动作。桶数过多会导致每个桶的样本稀疏、学习困难,反而降低成功率。工程上 256 桶已经能覆盖绝大多数机械臂动作的精度需求,配合闭环反馈,足以完成精细操作。

为何常见:直觉上“连续比离散精细”是对的,但忽略了离散化是服务于模型架构的刻意设计,而非无奈的妥协。

误区以为 RT-X 就是把 100 万条来自 22 种机器人的数据直接拼接,丢给同一个模型训练就行了,反正大模型“吃”得下。

正解直接拼接会因动作空间不一致(有的机器人 6 自由度、有的 7 自由度;有的夹爪、有的吸盘)而失败。RT-X 需要先设计统一的动作表征(如末端位姿增量)、统一的观测格式、统一的数据协议,甚至要按本体条件化输入,让模型知道“现在在操控谁”。数据治理的工程量往往比模型训练本身更大。

为何常见:大模型“大力出奇迹”的叙事让人忽略了数据工程中精细的对齐工作。

误区以为 RT-2 = 一个聊天机器人 + 一个机械臂控制器,两套系统通过 API 对接,语言模型负责“想”,控制器负责“做”。

正解RT-2 不是模块拼接,而是在同一个 Transformer 内、同一个词表上联合训练视觉、语言和动作。动作 token 与文本 token 共享同一套权重,视觉特征同时服务于“描述世界”和“改变世界”两个目标。这种深度融合才带来了语义泛化和思维链的涌现能力——拼接方案学不会“从未见过也能做”。

为何常见:传统机器人系统长期是“感知—规划—控制”三层模块化架构,思维惯性让人难以接受端到端融合。

误区既然 RT-X 靠 100 万条数据获得了能力跃升,那训练示教数据是不是录得越多越好?随便录、批量录,量大就行。

正解数据的质量、覆盖度和多样性比数量更关键。失败的示教(中途掉落的物体、错误的操作步骤)如果不筛选,模型会把“错误动作”也学进策略;任务分布单一的数据再多,也提升不了泛化。RT 系列的数据管线包含质量过滤、轨迹对齐、任务标注等层层工序——就像厨师选料,烂叶子再多也做不出好菜。

为何常见:“大模型需要海量数据”的印象深入人心,让人忽视了数据管线中的质量控制成本。

面试题

Q1. RT-1 将连续动作值划分为 256 个离散桶,最直接的原因是?

单选题 · easy

  • A.让动作输出变得更加精细
  • B.匹配 Transformer 的离散 Token 输出形式← 正确答案
  • C.减少示教数据的采集工作量
  • D.让机器人摆脱视觉输入依赖

答案:B。RT-1 采用离散桶的核心动机是让连续动作适配 Transformer 的词表式输出,使“预测动作”与“预测下一个词”在形式上统一(答案 B)。动作精度不是离散化的目的,且离散化反而会损失精度;示教数据采集量和视觉输入都与离散化无关。

Q2. 模仿学习中的“示教数据”最可能来自?

单选题 · easy

  • A.真人摇控操作录制的轨迹← 正确答案
  • B.机器人随机试错产生的轨迹
  • C.手工编写的一堆判断规则
  • D.操作系统自动生成的日志

答案:A。模仿学习的核心是“跟师学艺”,数据由师傅示范产生。真人遥操作录制的轨迹就是师傅的“言传身教”(答案 A)。随机试错是强化学习的路线;手工规则是传统控制;系统日志没有动作标签,都不是示教数据。

Q3. RT-2 相比 RT-1 的核心突破是?

单选题 · mid

  • A.动作输出频率大幅度的提升
  • B.完全不需要任何机器人数据
  • C.借助网络海量图文获得常识← 正确答案
  • D.取消了全部视觉编码器组件

答案:C。RT-2 的关键创新是把互联网规模的视觉-语言知识注入机器人策略,让它“读过菜谱再下厨”,从而获得语义泛化和思维链能力(答案 C)。它仍需机器人示教数据微调,并没有取消视觉编码器,动作频率也比 RT-1 低。

Q4. Open X-Embodiment 数据集的独特价值是?

单选题 · mid

  • A.汇集 20 余家机构多种机器人本体← 正确答案
  • B.只收录单一种类的工业机械臂
  • C.全部采用纯合成的仿真环境数据
  • D.刻意控制数据总量以降低难度

答案:A。RT-X 的核心是跨机构、跨本体的海量真实数据联盟:22 种机器人、21 家机构、100 万条轨迹(答案 A)。它不限于单一本体,也不是纯仿真数据,更不是刻意缩小规模——数据规模效应恰恰是它最大的财富。

Q5. 行为克隆的损失函数本质上衡量的是?

单选题 · hard

  • A.示教动作与预测动作的欧氏距离
  • B.机器人关节力矩的输出幅度
  • C.视觉特征的重构误差大小
  • D.预测动作分布的负对数似然← 正确答案

答案:D。行为克隆把示教动作当作“标准答案”,训练目标是最大化策略输出正确动作的概率,等价于最小化负对数似然(答案 D)。欧氏距离常见于回归式动作输出,不是行为克隆的标准形式;力矩和重构误差与行为克隆无关。

Q6. RT-1 中“语言条件化”(FiLM)的作用是?

单选题 · hard

  • A.用语言指令调制视觉特征,区分不同任务的输出← 正确答案
  • B.将中文指令翻译成英文再输入模型
  • C.降低图像分辨率以节省计算资源
  • D.把语言直接当作机械臂的执行命令

答案:A。FiLM(特征级线性调制)让语言指令去“调节”视觉特征通道的缩放和偏移,从而引导 Transformer 生成当前任务对应的动作(答案 A)。它不是翻译、不是降采样,更不是把文本直接当动作执行。

Q7. 跨本体迁移中的“本体”指的是?

单选题 · easy

  • A.数据集所在服务器的物理位置
  • B.训练框架自身的版本号信息
  • C.机器人物理结构形态与执行器← 正确答案
  • D.神经网络隐藏层的总数目

答案:C。“本体”(Embodiment)指机器人的物理载体——单臂、双臂、四足、轮式等不同结构(答案 C)。跨本体迁移要解决的正是“不同身体如何共享一个大脑”的问题,与服务器、框架版本、网络层数无关。

Q8. 下列哪些属于具身大模型常用的示教数据来源?

多选题 · mid

  • A.真人遥操作系统记录的轨迹← 正确答案
  • B.仿真环境自动生成的样本← 正确答案
  • C.互联网海量的图文语料← 正确答案
  • D.手工编辑的机器码指令

答案:ABC。示教数据来源包括遥操作轨迹(A)、仿真数据(B)以及为注入常识而使用的网络图文语料(C)。机器码指令属于底层编程,不是示教数据,也不具备“示范”语义,故 D 错误。

Q9. RT-2 展现出的涌现能力包括?

多选题 · mid

  • A.对从未见过物体的零样本抓取← 正确答案
  • B.依据语义推理选择目标物体← 正确答案
  • C.理解多语言自然语言指令← 正确答案
  • D.完美替代一切传感器硬件

答案:ABC。RT-2 的涌现能力体现在零样本操作(A)、语义推理选目标(B)和跨语言指令跟随(C)。但它仍需传感器输入,无法“替代一切硬件”,D 明显错误。

Q10. 将 RT 系列模型部署到真实场景时,需要考虑的工程问题有?

多选题 · hard

  • A.推理延迟能否匹配控制频率← 正确答案
  • B.跨本体动作空间是否对齐← 正确答案
  • C.长尾失败案例的兜底安全← 正确答案
  • D.完全无需任何现场数据微调

答案:ABC。部署必须关心延迟(A)、跨本体对齐(B)和安全兜底(C)。D 过于绝对——虽然零样本能力可以减少微调,但现场光照、背景变化时通常仍需要小批量数据适配,故 D 错误。