想象一家米其林餐厅的后厨里,站着一位特殊的全能大厨。别的厨师分工明确——切菜的只切菜,颠勺的只颠勺,摆盘的只管摆盘;而这位大厨通吃所有岗位,它只需要“看一眼”食材和顾客的便条,就能自己决定“抓、翻、盛、摆”整套动作。 它的名字叫RT-2,是Google DeepMind在2023年发布的一款“视觉语言动作”模型。它做了一件颠覆性的事:把“看懂世界”的视觉理解、“听懂人话”的语言能力,和“操纵工具”的动作控制,全都装进了一个模型里。以前机器人要学会一项新任务,得像教小孩子一样手把手演示无数遍;而RT-2靠着在互联网上“读过的书”(海量图文数据),竟然能举一反三——哪怕从没见过某些物体,也能根据常识完成操作。 这篇文章就用“厨艺学校的故事”串起RT-2的核心原理:它怎么从“看菜谱”进化到“掌勺”,怎么把连续的手部动作翻译成语言的“单词”,以及怎么把网络上学到的知识搬进真实的机械臂里。你不需要AI基础,跟着故事走,就能弄懂VLA模型的来龙去脉。

岗位关联

学懂RT-2,你就掌握了VLA模型的主流范式:用一个统一模型搞定“感知-规划-执行”,这对从事机器人学习、具身智能、多模态大模型应用的产品与研发工作都极具参考价值。

目录
  1. 可视化演示
  2. 模型简介:从流水线到全能大厨
  3. 核心架构:眼睛、大脑和双手
  4. 联合微调:理论课与实操课一起上
  5. 动作Token:把动作翻译成“单词”
  6. 知识迁移:把书本知识搬进后厨
  7. 实战效果:从实验室到餐桌
  8. 工程实践:开一家AI餐厅的注意事项
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示贝叶斯推断中先验分布、似然函数与后验分布的动态关系,调节观测数据数量观察后验如何从先验向数据靠拢。

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

'+captions.prior+'

模型简介:从流水线到全能大厨

传统机器人系统像一家分工明确的流水线后厨:视觉模块是“洗菜工”,语言模块是“传菜员”,动作规划是“切菜师傅”,底层控制是“颠勺师傅”。每个环节都需要单独开发、单独调试,信息在层层传递中还会走样——就像传菜员传错了话,切菜师傅就切错了菜,一道简单的菜可能要反复沟通才能做成。

RT-2颠覆了这套流水线。它是一个单一的神经网络,输入是摄像头画面和自然语言指令,输出直接就是机械臂的动作指令。这种“输入感官信息、输出动作指令”的模型,就叫VLA(Vision-Language-Action,视觉语言动作模型)。这相当于把整个后厨压缩成了一位全能大厨:它自己看、自己听、自己动手,中间没有传话的环节,信息损耗几乎为零。

RT-2由Google DeepMind在2023年提出。它并不需要专门的视觉检测模块、状态机或人工设计的动作原语。它把视觉token和语言token一起送入一个大语言模型(PaLM-E系列),然后让模型接着预测“动作token”。通过这种方式,模型在互联网上预训练时积累的知识——比如“苹果通常是红的”“碗是可以装东西的容器”——都能够直接服务于动作决策,而不是被一层层模块隔离在流水线之外。

就像那位全能大厨,不用指挥它“先迈左脚再转身”,只要说“把苹果放进碗里”,它自己就能编排出一套连贯的动作。这种“听一句话、干一整件事”的体验,正是VLA模型带来的革命性变化。

fθ:(摄像头画面  I,  用户指令  T)  ↦  (a1,a2,…,aL)\displaystyle f_\theta: (\text{摄像头画面}\; I,\; \text{用户指令}\; T) \;\mapsto\; (a_1, a_2, \dots, a_L)
RT-2模型用参数θ表示,它把图像I和指令T映射为一串动作a₁到aL,整个过程是端到端学习的,不需要人工编写中间规则。
  1. 摄像头画面 I机器人当前看到的场景,比如“桌上有苹果和碗”,它是一堆像素值。
    I∈RH×W×3I \in \mathbb{R}^{H \times W \times 3}
  2. 用户指令 T用户用自然语言描述任务,文本被分词并嵌入成token序列。
    T=[t1,t2,…,tm]T = [t_1, t_2, \dots, t_m]
  3. 映射关系 fθ神经网络学到的输入到动作的映射函数,代替了手工规则。
    fθ=端到端神经网络f_\theta = \text{端到端神经网络}
  4. 动作序列输出模型逐个预测动作token,得到长度为L的完整动作序列。
    (a1,a2,…,aL)(a_1, a_2, \dots, a_L)

核心架构:眼睛、大脑和双手

要成为全能大厨,得有三件套:一双能认出食材的眼睛,一个能理解菜谱并临场应变的大脑,一双能精准执行的手。RT-2也恰好有这三部分,各司其职又紧密配合。

先说“眼睛”。RT-2的视觉编码器基于PaLI-X中的ViT(Vision Transformer,视觉变换器),它把RGB摄像头画面切成一团团像素小块(patch),各自编码成“视觉特征token”。相当于大厨扫一眼食材,脑子里自动生成一份“食材清单”:这是苹果、那是碗、位置大约在哪里。视觉编码器让图像变成了模型能消化的数字向量。

再说“大脑”。RT-2的语言模型底座来自PaLM-E系列的Transformer架构,它接收视觉token和文本token拼接起来的长序列,通过一层层自注意力计算,捕捉“苹果和碗之间有什么关系”“苹果应该放进碗里”这类语义信息。数十亿参数里沉淀着互联网学来的常识:物体是什么、动词意味着什么动作、空间关系怎么理解。

最后是“双手”。语言模型输出的logits要落回到机械臂能执行的指令空间。RT-2把动作定义成离散的8-bit桶(0到255的整数),解码后就是末端执行器的位移和旋转变化。视觉编码器负责看,语言模型负责想,动作token负责干——三个模块统一在一个模型里联合训练,而不是像流水线那样各自为政。

眼睛看见、大脑思考、双手执行,三位一体。RT-2最妙的地方在于,这三者之间没有独立的接口设计,它们共享同一套参数、在同一个训练目标下成长,配合得天衣无缝。

h=ViT(I)⊕Embed(T),at=LLMθ(h,a<t)\displaystyle h = \mathrm{ViT}(I) \oplus \mathrm{Embed}(T),\qquad a_t = \mathrm{LLM}_\theta(h, a_{<t})
图像经过ViT编码、文本经过嵌入,两者拼接成统一序列h,再喂给语言模型自回归地预测每一步动作token。
  1. ViT(I) 视觉编码视觉变换器把图像切成patch逐个编码,输出视觉特征向量序列。
    ViT(I)=[v1,v2,…,vp]\mathrm{ViT}(I) = [v_1, v_2, \dots, v_p]
  2. Embed(T) 文本嵌入指令分词后通过嵌入层变成文本向量序列。
    Embed(T)=[w1,w2,…,wm]\mathrm{Embed}(T) = [w_1, w_2, \dots, w_m]
  3. 拼接符号 ⊕视觉token和文本token按顺序拼成一个长序列,作为语言模型的输入。
    h=[v1,…,vp,w1,…,wm]h = [v_1, \dots, v_p, w_1, \dots, w_m]
  4. 条件生成动作语言模型根据已有的全部信息,自回归地预测当前动作token。
    at=LLMθ(h,a1,…,at−1)a_t = \mathrm{LLM}_\theta(h, a_1, \dots, a_{t-1})

联合微调:理论课与实操课一起上

一位大厨要出师,先得在厨艺学校上理论课,看大量食谱和食材图鉴;再到饭店后厨跟师傅实操,练颠勺、切配和火候。RT-2也经历了类似的“两阶段”,但奇妙的是,第二阶段它把理论课和实操课混在一起上,而不是上完理论再上实操。

第一阶段是预训练。RT-2的底座(PaLM-E)在海量互联网图文数据上完成了预训练,学会了物体识别、常识推理、视觉问答等能力。这是“理论知识”阶段,模型看过千万张图片和文字描述,知道苹果是红的、碗是容器、抽屉能拉开。这一阶段的知识量大但跟机器人动作没有直接关系。

第二阶段就是本文的主角——Co-fine-tuning(联合微调)。研究者把互联网图文数据和机器人操作数据按一定比例混合,一起喂给模型继续训练。机器人数据来自RT-1收集的约13万条轨迹,每条轨迹包含“图像序列+任务指令+动作序列”。为什么一定要混合?原因有两个:如果只用机器人数据微调,模型会陷入灾难性遗忘,把辛苦学来的互联网知识忘光;如果只做常规的两阶段独立训练,模型的动作能力又不够强。Co-fine-tuning让模型在学动作的同时不断“复习”图文知识,两者互相促进。

大厨在实操课上还抽空翻理论书,知识点互相激活:看到真实食材时想起图鉴里的细节,动手时又知道该怎么处理。Co-fine-tuning的本质,就是让“知识”和“技能”在同一次训练中交融,而不是先背书后实操那样割裂。

L(θ)=−1Nb∑batch∑tlog⁡Pθ(at∣a<t,I,T)\displaystyle \mathcal{L}(\theta) = -\frac{1}{N_b}\sum_{\text{batch}} \sum_{t} \log P_\theta\bigl(a_t \mid a_{<t}, I, T\bigr)
这是联合微调的核心损失函数:让模型在混合数据上学会最大化“给定图像、指令和已生成动作,预测下一个动作token”的概率。
  1. 交叉熵损失 L衡量模型预测的动作token分布和真实动作token之间的差距。
    L=−log⁡Pθ(at∗∣a<t,I,T)\mathcal{L} = -\log P_\theta(a_t^* \mid a_{<t}, I, T)
  2. 混合batch每个训练批次里同时包含互联网图文样本和机器人轨迹样本。
    batch={互联网图文}∪{机器人轨迹}\text{batch} = \{\text{互联网图文}\} \cup \{\text{机器人轨迹}\}
  3. 条件概率 Pθ模型对每个候选动作token给出的预测概率,数值在0到1之间。
    Pθ(at∣⋅)∈[0,1]P_\theta(a_t \mid \cdot) \in [0, 1]
  4. 最小化目标训练过程就是调整参数θ,让所有样本上的平均损失尽可能小。
    θ∗=arg⁡min⁡θL(θ)\theta^* = \arg\min_\theta \mathcal{L}(\theta)

动作Token:把动作翻译成“单词”

教机器人做动作,就像教外国人做中餐。你不能直接把“翻炒”这个连续动作倒给他,得把它拆成一步一步的指令:“1转动手腕、2翻面、3收回”。RT-2用的就是这个思路——把连续动作离散成一个个“动作单词”,让语言模型像写文章一样把它们写出来。

先看动作空间。RT-2控制的机械臂末端可以输出三维位移和三维旋转,一共6个自由度;再加上夹爪开合,实际是7维动作向量。这些连续数值在真实空间里是无穷无尽的,不可能让模型一个个精确预测。于是研究者决定“量化”。

关键创新在Token化。每个维度的连续值先归一化到[0,1],再乘以255并取整,得到一个0到255的整数token。这样一来,一个7维动作向量就变成了7个整数token,和语言模型词表里的“单词”在形式上完全一样。模型不需要单独设计一个动作输出头,只需要像预测下一个单词一样预测下一个动作token。

动作序列生成则是“自回归”的:模型先根据图像和指令预测第一步动作token,然后把这个token拼回序列,再预测第二步,如此循环,直到生成整条轨迹。这就像大厨写菜谱:先写步骤一,再写步骤二,每一步都参考前面写过的内容,最终形成一份完整的操作流程。

一份菜谱翻译成“翻1翻2翻3”这样的记号,大厨一看就懂,机械臂一解码就动。离散化看似损失了精度,却让动作成功搭上了语言模型这艘大船——这是RT-2能利用互联网知识的关键一步。

bi=⌊vi−vmin⁡vmax⁡−vmin⁡×255⌋\displaystyle b_i = \left\lfloor \frac{v_i - v_{\min}}{v_{\max} - v_{\min}} \times 255 \right\rfloor
把动作向量第i维的连续值vᵢ,经过归一化、缩放、取整三步,变成一个0到255的整数token bᵢ。
  1. 原始动作值 vᵢ机械臂控制量的连续取值,比如末端在x轴上的位移。
    vi∈[vmin⁡,vmax⁡]v_i \in [v_{\min}, v_{\max}]
  2. 归一化把原始值减去最小值再除以范围,压到0到1之间。
    v^i=vi−vmin⁡vmax⁡−vmin⁡\hat{v}_i = \frac{v_i - v_{\min}}{v_{\max} - v_{\min}}
  3. 乘以255将归一化结果映射到0到255的刻度上。
    v~i=v^i×255\tilde{v}_i = \hat{v}_i \times 255
  4. 向下取整得到最终的整数token,共256个档位,正好用8位二进制表示。
    bi=⌊v~i⌋∈{0,1,…,255}b_i = \lfloor \tilde{v}_i \rfloor \in \{0, 1, \dots, 255\}

知识迁移:把书本知识搬进后厨

全能大厨最厉害的不是背菜谱,而是“迁移”能力。它从没做过“蟹黄豆腐”,但知道蟹黄是什么、豆腐怎么焯水、勾芡是什么手法,于是第一次做也能做得八九不离十。RT-2在互联网上学到的知识,同样能迁移到机械臂操作中。

预训练知识沉淀在模型的参数里。RT-2在互联网上见过海量图片和文字,它的参数里存着这样一些“软知识”:苹果通常是红色或绿色的、抽屉是可以拉开的、杯子是用来装液体的。这些知识看似和机器人控制无关,但当机械臂被要求“把苹果放进抽屉”时,模型就需要知道苹果是抓取目标、抽屉是可以打开的容器。

实验数据最能说明问题。在训练中从未出现过的物体上,RT-2的任务成功率比RT-1提升了将近一倍。RT-1是上一代没有大模型预训练知识的机器人模型,它面对新物体时只能靠视觉特征硬猜;而RT-2可以调用预训练知识,比如“红牛罐头虽然没见过实物,但网络图片里见过,知道它是可以抓取的罐状物”。

更惊人的是意图理解能力。RT-2能响应类似“把香蕉放到白色桌子上的盘子里”这种需要常识推理的指令——它知道香蕉属于水果,盘子是容器,白色桌子是目标区域。这些理解不是来自机器人训练数据,而是来自互联网图文预训练,这正是知识迁移的魔力。

读过万卷书的大厨,做起没见过的菜也胸有成竹。RT-2证明了机器人不需要亲手摸过每个物体才能操作它——只要“读”过足够多的世界知识,就能在真实世界里举一反三。

Accunseen(RT-2)=62%≫Accunseen(RT-1)=32%\displaystyle \text{Acc}_{\text{unseen}}(RT\text{-}2)=62\% \quad \gg \quad \text{Acc}_{\text{unseen}}(RT\text{-}1)=32\%
在从未见过的物体上,RT-2的成功率是62%,RT-1只有32%,差距来自互联网预训练知识的迁移。
  1. 未见物体成功率测试集中物体从未在训练阶段出现过,模型需要依赖泛化能力完成任务。
    unseen objects∉Dtrain\text{unseen objects} \notin D_{\text{train}}
  2. RT-2的表现联合微调后的VLA模型在未见物体上达到62%成功率。
    AccRT-2=62%\text{Acc}_{\text{RT-2}} = 62\%
  3. RT-1基线没有大规模预训练知识支撑的上一代模型,只有32%。
    AccRT-1=32%\text{Acc}_{\text{RT-1}} = 32\%
  4. 知识迁移增益两者之差说明大模型预训练知识带来的实际提升。
    Δ=62%−32%=30%\Delta = 62\% - 32\% = 30\%

实战效果:从实验室到餐桌

大厨学成出师,该上岗给顾客做菜了。测试RT-2的方式,就是给它布置一道道“新菜”任务:从Eval数据集里挑出各种桌面操作任务,比如“抓取指定物体”“把物体放进容器”“按颜色分类”等,看它完成得怎么样。

在见过的场景上,RT-2的任务成功率比RT-1高出不少;而在未见过的场景上差距更大。所谓“未见过场景”,是指训练时没有出现过的物体组合、桌布颜色、光照条件或摄像头角度。这些变化对传统模型来说是致命的,因为它们依赖预先定义好的视觉特征和位置模板;对RT-2来说却只是“换了个环境”而已。

在未见场景测试中,RT-2的成功率达到74%,而RT-1只有47%,提升27个百分点。这个数字背后的意义是:机器人不再只是“背题高手”,它真正学会了理解任务本身。研究人员还发现,RT-2能响应用自然语言表述的新任务,比如“把可乐罐移到酒杯旁边”——它得先理解“旁边”是什么意思,再规划一个合理的放置位置。

当然,RT-2也有明显局限。它主要擅长桌面上的单臂操作,对于需要双机械臂配合、长时程多步骤、或者动态环境中的任务,表现还很有限。论文中展示的成功案例是多次尝试中选出来的,实际部署时仍需要人工干预和失败恢复机制。

这道“新菜”端上桌,顾客很满意。但后厨也清楚,现在这位大厨最擅长的是“家常小炒”,距离“满汉全席”还有很长的路要走。

Δunseen scene=74%−47%=+27%\displaystyle \Delta_{\text{unseen scene}} = 74\% - 47\% = +27\%
RT-2在未见场景上的成功率74%,比RT-1的47%高出27个百分点,这是泛化能力提升的直接证据。
  1. 未见场景成功率在训练时没见过的环境配置下完成任务的比例。
    Accscene=74%\text{Acc}_{\text{scene}} = 74\%
  2. 基线对比RT-1在同样的新场景下只有47%的成功率。
    Accbase=47%\text{Acc}_{\text{base}} = 47\%
  3. 提升量两者相减得到泛化增益。
    Δ=74%−47%=27%\Delta = 74\% - 47\% = 27\%

工程实践:开一家AI餐厅的注意事项

想开一家流水线AI餐厅,光有大厨还不够,你还得准备后厨设备(算力)、食材(数据)和出餐速度(推理延迟)。RT-2从论文走向真实机器人,同样要面对工程化的重重考验。

数据是第一个门槛。虽然RT-2靠互联网数据实现了惊艳的知识迁移,但机器人操作数据依然是必需品。想复现类似能力,需要数万条带标注的机器人轨迹——RT-2使用的RT-1数据集就包含约13万条轨迹。数据的质量也至关重要:指令标注是否一致、场景是否多样、动作是否有重复演示,都会直接影响模型学到的动作分布。

算力和部署是第二个挑战。RT-2的底座是PaLM-E-12B级别的大语言模型,推理需要GPU或TPU集群支持,普通的边缘计算设备根本跑不动。在实际机器人上部署时,工程师通常要对模型做量化(比如从FP16压到INT8)或知识蒸馏,换来可接受的推理速度。自回归逐token生成的延迟也需要精心优化:动作token越多,决策越精细,但机械臂等不起。

安全与系统集成是第三个关键。RT-2输出的只是一串动作token,真实机械臂执行前必须经过安全校验:关节是否超限、力控是否超阈值、轨迹是否与障碍物碰撞。token解码后还要经过插值平滑和底层PID控制器的处理,才能变成平滑的机械臂运动。任何一环出错,轻则任务失败,重则损坏设备甚至伤人。

AI餐厅能开张,靠的不只是大厨的手艺,更是整条后厨供应链的高效运转。数据、算力、安全缺一不可,这也是VLA模型从论文走向产品必须跨越的三座大山。

T总耗时=T视觉编码+L⋅T单token推理+T轨迹平滑\displaystyle T_{\text{总耗时}} = T_{\text{视觉编码}} + L \cdot T_{\text{单token推理}} + T_{\text{轨迹平滑}}
从摄像头画面输入到机械臂动起来,总耗时等于视觉编码时间、L个动作token的推理时间、轨迹平滑时间三者之和。
  1. 视觉编码耗时图像经过ViT编码器产生视觉特征的时间。
    Tvis=O(P)T_{\text{vis}} = O(P)
  2. 动作生成耗时自回归需要串行执行L次前向推理,是主要延迟瓶颈。
    Tgen=L×ttokenT_{\text{gen}} = L \times t_{\text{token}}
  3. 控制平滑耗时token解码、插值和底层控制器的额外开销。
    Tctrl=tdecode+tinterpT_{\text{ctrl}} = t_{\text{decode}} + t_{\text{interp}}
  4. 总耗时求和三段延迟相加,决定了机器人的实时响应能力。
    Ttotal=Tvis+Tgen+TctrlT_{\text{total}} = T_{\text{vis}} + T_{\text{gen}} + T_{\text{ctrl}}

AI 应用场景

智能仓储分拣机器人

阶段:模型部署与推理

解决的问题:传统仓储分拣机器人需要针对每个新品类的商品重新建模、编写抓取策略,上线周期动辄数周。采用RT-2风格的VLA模型后,操作人员只需用自然语言下达指令,机器人通过视觉识别就能完成分拣,极大缩短了新商品的上线时间。

具体案例:某电商仓库引入VLA方案后,面对从未见过的包装形态,操作员只需说“把蓝色包装的零食抓起来放到3号框”,机械臂就能自主识别目标、规划抓取姿态并完成放置。新商品无需预先建模,分拣效率大幅提升。

家庭服务机器人

阶段:多模态输入融合与常识推理

解决的问题:家庭环境中的物品摆放千差万别,传统机器人遇到“把茶几上的遥控器放到电视柜抽屉里”这类需要物体常识和空间推理的任务时经常束手无策。RT-2把互联网知识带进了家庭场景,让机器人理解“遥控器是什么”“抽屉可以打开”这些常识。

具体案例:一款家用服务机器人采用RT-2方案后,用户口语指令直接下发,机器人通过摄像头识别“茶几”“遥控器”“电视柜”的位置关系,规划“抓取—移动—开抽屉—放入”的完整动作序列,并借助Co-fine-tuning训练出的动作能力顺利执行。

机器人操作算法研究

阶段:模型训练与评估

解决的问题:在机器人操作研究领域,VLA模型的快速原型验证、联合微调时互联网数据与机器人数据的比例调优、动作token粒度的选择,都是研究者日常要面对的问题。RT-2提供了一个可复现的范式,让算法团队能在统一框架下系统评估不同设计的效果。

具体案例:某高校机器人实验室复现RT-2的Co-fine-tuning流程,在自有的机械臂数据上测试不同token粒度(6-bit、8-bit、10-bit)对任务成功率的影响,并对比了混合训练和普通微调的差异,为后续改进提供了实验依据。

Python 演示

python79 行
"""RT-2 核心思想迷你演示包含动作量化、自回归生成、可逆解码三个关键环节"""import numpy as np  class ActionTokenizer:    """把连续动作离散为 0~255 的整数 token 且可逆解码"""     def __init__(self, low=-1.0, high=1.0, bins=256):        self.low = low      # 动作取值下限        self.high = high    # 动作取值上限        self.bins = bins    # 离散档位数 对应 8-bit token     def encode(self, action):        """连续动作 -> 整数 token 向量"""        norm = (np.asarray(action) - self.low) / (self.high - self.low)        norm = np.clip(norm, 0.0, 1.0)        return np.floor(norm * (self.bins - 1)).astype(int)     def decode(self, token):        """整数 token -> 连续动作 用于控制机械臂"""        norm = np.asarray(token) / (self.bins - 1)        return self.low + norm * (self.high - self.low)  class TinyVLA:    """简化版 RT-2 用随机权重模拟语言模型"""     def __init__(self, feat_dim=8, act_dim=4, vocab=256):        self.feat_dim = feat_dim      # 视觉和文本特征维度        self.act_dim = act_dim        # 动作自由度数量        self.vocab = vocab            # token 词表大小        rng = np.random.default_rng(42)        self.W = rng.normal(0, 0.1, (feat_dim * 2 + vocab,                                     act_dim * vocab))        self.act_tokenizer = ActionTokenizer()     def _context_vector(self, img_feat, txt_feat, tokens):        """拼接图像特征、文本特征和动作token的池化向量"""        prefix = np.zeros(self.vocab)        if tokens:            for tk in tokens:                prefix += np.eye(self.vocab)[tk].mean(axis=0)            prefix /= len(tokens)        return np.concatenate([img_feat, txt_feat, prefix])     def predict_token(self, img_feat, txt_feat, tokens):        """自回归预测下一步的 4 维动作 token"""        vec = self._context_vector(img_feat, txt_feat, tokens)        logits = (vec @ self.W).reshape(self.act_dim, self.vocab)        return logits.argmax(axis=1)     def generate_actions(self, img_feat, txt_feat, steps=5):        """生成完整动作轨迹并解码为连续坐标"""        tokens = []        for _ in range(steps):            tokens.append(self.predict_token(img_feat, txt_feat, tokens))        return self.act_tokenizer.decode(np.stack(tokens))  if __name__ == "__main__":    rng = np.random.default_rng(0)    img_feat = rng.normal(size=8)   # 模拟 ViT 编码器输出的图像特征    txt_feat = rng.normal(size=8)   # 模拟语言模型嵌入的指令特征     model = TinyVLA()    traj = model.generate_actions(img_feat, txt_feat, steps=5)     print("机械臂动作轨迹 (每行 = 一个时刻的 4 维动作):")    print(np.round(traj, 3))     sample = np.array([-0.3, 0.5, 0.8, -0.2])    tok = model.act_tokenizer.encode(sample)    recover = model.act_tokenizer.decode(tok)    print("原始动作:", sample)    print("量化 token:", tok)    print("还原动作:", np.round(recover, 3))
目的:用不到100行Python实现RT-2核心流程的迷你版——连续动作量化成token、自回归生成动作序列、token解码回连续坐标,让你直观感受VLA模型的三个关键环节。
  1. norm = (np.asarray(action) - self.low) / (self.high - self.low)把连续动作压缩到0到1范围,这是量化的第一步
  2. return np.floor(norm * (self.bins - 1)).astype(int)乘以255并取整,得到8-bit动作token
  3. prefix += np.eye(self.vocab)[tk].mean(axis=0)把已生成的动作token池化成词表大小的向量,融入上下文
  4. self.W = rng.normal(0, 0.1, (feat_dim * 2 + vocab, act_dim * vocab))随机初始化“语言模型”权重,模拟预训练后的参数
  5. logits = (vec @ self.W).reshape(self.act_dim, self.vocab)模拟语言模型输出每个自由度各token的得分
  6. return logits.argmax(axis=1)每个自由度取概率最大的token编号作为预测动作
  7. tokens.append(self.predict_token(img_feat, txt_feat, tokens))自回归核心:把新token拼回序列再预测下一步
  8. return self.act_tokenizer.decode(np.stack(tokens))把token序列解码成连续的机械臂轨迹坐标
  9. np.round(recover, 3)展示量化前后数值差异极小,说明8-bit离散化足够精确

常见误区

误区“RT-2在互联网上读了那么多图片和文字,是不是根本不用机器人数据,直接就能干活?感觉它已经什么都会了。”

正解虽然互联网预训练给了RT-2丰富常识,但它仍然需要机器人操作数据来学会“输出动作”这件事本身。Co-fine-tuning第二阶段会把数千条机器人轨迹和互联网图文混在一起训练,让模型知道怎么把“理解”翻译成具体动作。就像大厨读遍菜谱,也要真刀真枪在灶台上练过火候。缺少机器人数据的模型,可能知道“苹果是什么”,却不知道“伸手去抓”该怎样表达成动作token。

为何常见:因为“知识迁移”是RT-2的招牌能力,容易让人误以为迁移替代了领域数据,忽略了动作输出通道也需要专门学习。

误区“RT-2用语言模型输出动作,那它应该直接生成'向左移动5厘米''张开夹爪'这样的文字指令,机械臂照着读就行。”

正解RT-2输出的动作token不是自然语言,而是0到255之间的离散整数编码,对应机械臂末端在多个自由度上的位移和旋转增量。语言模型的好处在于“用预测下一个词的方式”统一建模,但输出的内容是数值指令。机械臂控制系统拿到token后要解码成目标位姿,再通过底层控制器执行。就像大厨在菜谱上写“1翻2翻3翻”的暗号,师傅一看就懂,外人却以为在数数。

为何常见:因为“语言模型应该输出语言”是直觉,而token这个术语又容易被误解成文本单词。

误区“预训练一个通用模型,然后在机器人数据上微调,这不就是常见的两阶段训练吗?挂个Co-fine-tuning的名字感觉在炒概念。”

正解关键区别在于第二阶段是“混合训练”——互联网数据和机器人数据同时出现在每个batch里。如果只按顺序做预训练再微调,模型会陷入灾难性遗忘,把互联网知识忘得一干二净。Co-fine-tuning让模型在学动作的同时不断复习图文知识,两者互相促进。就像大厨的实操课并不是从零开始教,而是边练菜边回顾食材图鉴,知识越用越牢。

为何常见:“fine-tuning“这个词容易让人联想到普通的迁移学习流程,忽略了”co-”这个共同训练的含义。

误区“把连续动作压成256个整数,精度肯定损失严重,机械臂动作会变得一顿一顿的,不如直接用连续坐标回归。”

正解256个档位对标准化到[-1,1]的动作来说,分辨率约为千分之几的归一化精度,对大多数机械臂操作绰绰有余。更重要的是,离散token让动作可以像文本一样利用大规模语言模型的自回归能力,这是连续回归框架难以享受的红利。实际部署时底层控制器还会做插值和平滑,轨迹不会出现明显顿挫。

为何常见:人们凭直觉认为“连续优于离散”,却忽略了模型结构统一带来的训练效率和泛化收益远大于那点量化误差。

误区“看了RT-2的视频,能听懂人话、能抓东西、能做新任务,是不是离'通用机器人'不远了?”

正解RT-2目前只是面向桌面单臂操作任务的VLA模型。它在固定场景、有限自由度、短序列任务上表现优秀,但距离通用机器人的多臂协作、移动导航、长程任务规划还有很大差距。论文里的成功视频也是从多次尝试中筛选出来的,真实环境中它仍会频繁失败。就像一位擅长粤菜的大厨,你说他全能,他未必能做川菜的猛火快炒。

为何常见:论文Demo的感染力太强,成功案例的展示方式容易让人高估技术的成熟度。

面试题

Q1. RT-2 属于以下哪类模型?

单选题 · easy

  • A.大型语言模型 LLM 类
  • B.图像生成模型 GAN 类
  • C.视觉语言动作 VLA 类← 正确答案
  • D.语音识别 ASR 模型类

答案:C。RT-2的核心特征是同时处理视觉、语言和动作三种模态,正是VLA(Vision-Language-Action)模型。它虽然内部用了语言模型做底座,但输入输出不再局限于文本,而是延伸到机器人动作,因此不能简单归为LLM。GAN和ASR更是与机器人操作无关。

Q2. 训练 RT-2 时第二阶段使用的核心方法叫什么?

单选题 · easy

  • A.纯强化学习微调法
  • B.联合微调 Co-fine-tune← 正确答案
  • C.生成对抗网络训练
  • D.知识蒸馏与剪枝法

答案:B。RT-2在预训练之后采用Co-fine-tuning(联合微调),把互联网图文数据和机器人轨迹数据混合在一起继续训练。强化学习、GAN、蒸馏都不是RT-2第二阶段的核心方法,虽然它们在其他模型中各有用途。

Q3. RT-2 把连续动作离散化成了多少位的 token?

单选题 · easy

  • A.4 位比特表示
  • B.8 位比特表示← 正确答案
  • C.16 位比特表示
  • D.32 位比特表示

答案:B。RT-2把每维连续动作归一化后乘以255取整,得到0到255的整数,正好用8位比特表示,即256个离散档位。4位只有16档,精度太低;16位和32位虽然更精细,但token空间过大会增加预测难度,并非RT-2的选择。

Q4. RT-2 的视觉编码器主要基于哪类模型?

单选题 · mid

  • A.CNN 卷积网络架构
  • B.ViT 视觉变换器架构← 正确答案
  • C.RNN 循环网络架构
  • D.DETR 检测模型架构

答案:B。RT-2的视觉编码器来自PaLI-X,核心是ViT(Vision Transformer)。ViT把图像切成patch并利用自注意力建模全局关系,适合与语言模型的token序列直接拼接。CNN偏重局部特征,RNN不擅长长序列并行,DETR是检测专用架构,都不是RT-2的选择。

Q5. 相比传统流水线方案,RT-2 的优势有哪些?

多选题 · mid

  • A.端到端统一训练范式← 正确答案
  • B.可迁移互联网大模型知识← 正确答案
  • C.完全不需要机器人训练数据
  • D.响应自然语言指令的能力← 正确答案

答案:ABD。RT-2把视觉、语言、动作统一在一个模型里端到端训练(A对),并能把互联网预训练知识迁移到机器人决策中(B对),还能直接理解自然语言指令(D对)。但它仍然需要机器人轨迹数据来学习动作输出,C说“完全不需要”是错误的。

Q6. RT-2 在训练中从未见过的物体上成功率约为多少?

单选题 · mid

  • A.32%
  • B.47%
  • C.62%← 正确答案
  • D.74%

答案:C。论文数据显示,RT-2在未曾见过的物体上成功率约62%,而RT-1只有32%,提升约30个百分点。47%是RT-1在未见场景上的表现,74%是RT-2在未见场景上的成功率,这两项属于场景泛化而非物体泛化的指标。

Q7. 关于 RT-2 的联合微调,下列说法正确的是?

多选题 · hard

  • A.混合了互联网图文数据← 正确答案
  • B.两个阶段先后独立训练
  • C.混合了机器人操作数据← 正确答案
  • D.同时保留语言和动作能力← 正确答案

答案:ACD。Co-fine-tuning的核心是把互联网图文数据(A对)和机器人操作数据(C对)混在同一个batch里训练,让模型在学会动作的同时不忘语言和视觉知识(D对)。它不是先预训练再微调的独立两段式流程(B错),这正是"co-"(共同)的含义所在。

Q8. RT-2 生成机械臂动作序列的方式是?

单选题 · hard

  • A.一次性回归连续坐标值
  • B.自回归逐 token 生成序列← 正确答案
  • C.强化学习策略在线采样
  • D.蒙特卡洛树搜索规划路线

答案:B。RT-2像语言模型写文章一样,逐个预测动作token,把已生成的token拼回输入再预测下一步,属于自回归生成。一次性回归无法利用动作间的依赖关系;强化学习和蒙特卡洛树搜索是其他研究路线,不是RT-2采用的方案。

Q9. RT-2 在实际机器人任务中表现出的能力有哪些?

多选题 · mid

  • A.识别并抓取未见物体← 正确答案
  • B.响应自然语言指令← 正确答案
  • C.理解物品常识关系← 正确答案
  • D.自主规划全局导航路线

答案:ABC。RT-2在未见物体识别(A对)、自然语言指令响应(B对)和常识推理(C对)上都有优秀表现。但D的全局导航不是RT-2论文中的核心能力,它主要面向桌面单臂操作而非移动机器人导航规划。

Q10. RT-2 的语言模型底座来自哪个系列?

单选题 · extreme

  • A.GPT 系列语言模型
  • B.PaLM 系列语言模型← 正确答案
  • C.LLaMA 系列语言模型
  • D.BERT 系列语言模型

答案:B。RT-2的语言模型底座来自PaLM-E系列,这是Google专为具身智能扩展的PaLM变体,支持视觉token与文本token的联合输入。GPT和LLaMA是其他团队的语言模型,BERT是编码器架构,不适合做自回归动作生成。记住"PaLM-E"这个组合词就能锁定正确答案。