文章摘要
联合科研团队推出的RoboTTT框架,将机器人策略可处理的视觉 - 动作上下文扩展至8000个时间步。它改变机器人保存和使用历史信息的方式,采用固定大小的Fast Weights承载长期工作记忆。该框架运用多种训练技术实现8K上下文,在多项实验中表现优于基线模型,且闭环表现随预训练上下文变长而提升,但也存在记忆容量、错误恢复边界等局限性。
近五分钟“肌肉记忆”,推理延迟不随历史增长

想象一台机械臂正在组装一辆玩具车:它将黄色车顶放在车身之上,拿起电钻尝试拧紧螺丝,却在第一次尝试时偏离了螺纹位置。人类操作员可以立刻意识到操作失败,调整手臂角度后再次尝试;但对于机器人来说,要完成这样的闭环调整,不仅需要看清当前的画面,还要记住此前的操作过程和结果。

近期,一支联合科研团队推出了RoboTTT框架,将机器人策略可直接处理的视觉-动作上下文扩展至8000个时间步,按照30Hz的控制频率计算,相当于约4.4分钟,也就是接近五分钟的“肌肉记忆”,让机器人能够拥有跨越数分钟的视觉-动作工作记忆。相比单纯延长记忆时长,这项工作更关键的突破在于改变了机器人保存和使用历史信息的方式。

长时序任务的核心困境

当前主流的机器人基础模型大多采用单步或短历史的视觉-动作上下文,仅基于当前画面、少量历史感知、语言指令和本体状态来预测后续动作。部分系统会通过动作分块、高层规划、循环状态或外部记忆来弥补短历史的局限,但当正确动作依赖于当前画面中不存在的历史信息时,这类短历史策略就会遇到结构性瓶颈。

比如两个视觉相似的画面,可能分别对应“尚未拧紧螺丝”和“已完成紧固”,如果机器人不知道此前的操作,就无法区分当前所处的阶段;当零件被机械臂暂时遮挡时,后续动作也需要参考此前看到的零件位置;错误恢复和基于视频的模仿学习也对历史记录有更高的要求,机器人需要根据之前的失败动作调整当前操作,或是参考更早的人类演示来确定当前的装配步骤。因此,当任务具备长时序、状态混淆和部分可观测的特征时,短历史策略很容易触及能力边界。

RoboTTT的核心设计思路

在处理长上下文时,Transformer模型通常会将历史信息保存在KV缓存中,类似不断向档案柜添加文件:每生成一个新的标记,模型就保存对应的Key和Value,在需要理解当前输入时,通过注意力机制从历史表示中检索相关信息。这种方式可以保留相对完整的历史,但KV缓存会随着上下文长度的增加而不断膨胀,对于以30Hz频率持续接收多路视觉和状态信息的机器人来说,完整保留数分钟的视觉-动作历史会带来巨大的存储和计算压力。

RoboTTT采用了截然不同的思路:它没有使用持续增长的KV缓存来承载长期工作记忆,而是让机器人在运行过程中持续修改一个固定大小的内部模型,这个模型的可变参数就是Fast Weights。需要说明的是,RoboTTT并没有完全移除基础视觉-语言-动作(VLA)模型中的注意力机制,而是保留了原有的注意力分支,将跨越数千个时间步的长期状态主要交由Fast Weights处理,再将两个分支的输出进行融合。

每个时间步的完整流程

RoboTTT中的Fast Weights是一组可变参数,可以表示为W_t。之所以被称为“Fast”,是因为它们不仅在训练阶段更新,在推理阶段也会随着新的感知输入发生变化;相比之下,基础VLA模型的普通参数属于Slow Weights,在部署推理阶段通常保持冻结状态。

在每个时间步中,RoboTTT会完成以下完整流程: 1. 机器人首先接收当前时间步的多模态输入x_t,包括摄像头画面、本体状态和任务指令。 2. 模型通过学习到的投影函数,从x_t中生成临时的Key和Value:k_t = P_k(x_t),v_t = P_v(x_t)。这里的k_t和v_t并不会被追加到Transformer的KV缓存中,而是作为当前时间步的自监督更新信号,用于决定当前经验如何修改Fast Weights。 3. RoboTTT使用Key-Value Binding Loss计算更新方向:l_t = ||f(k_t; W_{t-1}) - v_t||²,由此得到梯度g_t = ∇_W l_t,可以将这个梯度理解为当前经验对工作记忆发出的“编辑指令”。 4. 模型基于上一时间步的状态W_{t-1}进行增量修改:W_t = W_{t-1} - ηg_t,其中ΔW_t = -ηg_t代表当前输入造成的参数变化。 5. 模型基于更新后的W_t,结合基础VLA模型的Slow Weights进行动作预测:a_t = π(x_t; W_t, θ),其中θ代表基础模型的Slow Weights。 6. RoboTTT通过一个学习到的Gate门控机制,将TTT分支和原有Attention分支的输出进行融合:o_t = tanh(α) ⊙ o_TTT + o_attn。基础VLA模型继续负责理解当前画面和语言指令并生成动作,而Fast Weights则为其提供跨越更长时间的状态信息。 7. 机器人执行动作a_t后,环境发生变化并产生新的感知x_{t+1},随后重复上述完整流程。

固定容量的动态内部状态

从W_0到W_{8000},Fast Weights的矩阵形状始终保持不变,变化的只是矩阵内部的参数值。这意味着在推理阶段,系统不需要保留每个版本的W,只需要携带当前状态W_t并继续更新即可。不过,W_t并不只包含当前输入的影响,由于W_{t-1}已经经过了此前所有时间步的递归更新,过去的经验会通过参数变化持续影响当前状态。因此,W_{8000}会受到此前整个序列的累积影响,但无法像录像或完整的KV缓存一样还原8000个时间步的原始内容。

RoboTTT解决的并不是如何对越来越长的原始历史执行注意力计算,而是如何将越来越长的历史递归压缩进一个固定大小、可被后续动作利用的内部状态。在常规的推理模式中,上下文主要是等待模型读取的数据;而在RoboTTT中,新的输入还会产生梯度,持续修改推理阶段的内部参数。两者的核心差异可以通过下表直观对比:

对比维度 常规训练推理模式 RoboTTT框架
训练阶段 更新模型全局参数 更新基础模型参数,同时学习Fast Weights的初始化与更新逻辑
推理阶段 模型参数通常保持冻结 基础模型参数冻结,Fast Weights持续动态更新
上下文角色 等待模型读取的静态数据 用于修改内部状态的动态学习材料
长期状态存储 KV缓存、循环状态或外部记忆 递归更新的Fast Weights参数
状态容量 KV缓存随历史长度增长;递归状态通常固定大小 Fast Weights矩阵形状始终固定
历史保真度 KV缓存可保留较完整的历史;递归状态通常为有损压缩 历史通过有损压缩存储在当前参数中
单次任务结束后 取决于系统设计 实验中重置为初始状态W0
实现8K上下文的关键训练技术

Fast Weights解决了长历史在推理过程中持续传递的问题,但要将预训练上下文真正扩展到8000个时间步,还需要解决长序列带来的显存占用和训练稳定性问题。如果对完整的长序列执行反向传播,模型需要保留每个时间步产生的中间结果,GPU显存占用会随着序列长度的增加而不断上升。

因此,RoboTTT采用了截断时间反向传播(TBPTT),将长序列切分为多个较短的片段,只在每个片段内部计算梯度。在片段结束时,对应的梯度会被截断,但Fast Weights会继续传递给下一个片段。也就是说,机器人的内部状态会沿着整段轨迹连续更新,但训练时需要保存的中间结果只取决于单个片段的长度,而非完整的8000个时间步。不过,TBPTT只能控制训练过程中的峰值显存,而非总计算量,序列变长后,模型仍然需要处理更多的时间步,因此训练时间和总体计算成本仍会增加。

仅仅让长序列“能够训练”只是第一步,模型还需要学会“如何利用”这段历史。RoboTTT在预训练阶段学习的不仅包括基础模型的Slow Weights,还包括生成Key和Value的投影参数,以及Fast Weights的初始状态W_0。其中,W_0并不是人工设定的固定起点,而是通过外层任务损失进行元学习,在TBPTT框架下,它会直接接收来自第一个片段的梯度,从而被塑造成更适合后续快速更新的初始状态。换句话说,模型在预训练阶段会反复练习如何将连续经验写入Fast Weights,以及如何让这些状态变化服务于后续的动作预测,预训练序列越长,这套状态更新机制经历的连续更新步数就越多。

另一个关键训练技巧是Sequence Action Forcing。RoboTTT使用Flow Matching学习从噪声中还原正确的动作,如果整段序列共享同一个噪声水平,所有动作可能同时变得过于简单或过于困难,导致长序列训练变得不稳定。Sequence Action Forcing会为每个动作块独立采样噪声水平,让同一序列中同时包含不同难度的训练目标。消融实验显示,去掉Sequence Action Forcing后,模型无法稳定生成准确的动作,机器人也难以取得有效的任务进展。

整体来看,Fast Weights负责传递长期状态,TBPTT控制峰值显存,元学习为W_0提供适合快速更新的起点,Sequence Action Forcing则提升了长序列动作训练的稳定性,这些机制共同支持RoboTTT将预训练上下文扩展到8K时间步。

长上下文带来的实际性能提升
长时序装配任务的完成表现

研究团队在三项双臂装配任务上测试了RoboTTT,分别是Pup Go Car玩具车装配、Circuit电路组件装配和Gear Bot遥控机器人装配。实验结果显示,RoboTTT的平均任务完成分数为79%,单步上下文的GR00T N1.7为42%,增加一帧历史的GR00T N1.7 Hist.为49%,Gated DeltaNet为56%。

在平均需要五分钟完成、包含约十个阶段的Gear Bot任务中,RoboTTT是唯一完成过整项任务的模型,10次测试中完整成功2次,其他基线模型均未完整完成任务。分数背后,论文给出了两点关键定性观察:其一,RoboTTT能够区分视觉相似的任务阶段。在多阶段装配中,“还没拧紧螺丝”和“已经拧紧”的画面可能几乎相同,基线模型因此会做出错误动作或是直接跳过阶段,而持续更新的Fast Weights保留了此前的关键特征,让机器人能够准确判断当前所处的步骤;其二,RoboTTT在插装、卡扣等精细操作阶段的表现更加准确,论文将其归因于长上下文缓解了部分可观测问题:当目标零件被机械臂暂时挡住时,此前的观察仍然可以指导当前的动作。这两点分别对应了前文提到的“状态混淆”和“遮挡”问题。

值得注意的对照实验显示,给GR00T N1.7简单拼接一帧历史后,它在Pup Go Car任务上的分数反而从57%降到了39.5%,论文认为这是因为直接拼接的历史会引入虚假关联,让机器人在推理时偏离训练分布。

从人类演示视频中读取任务目标

在Circuit电路装配实验中,所有测试都使用相同的语言提示“assemble circuit”,语言本身并没有说明应该选择哪些组件,也没有提供安装顺序,目标配置只能从一段人类演示视频中判断。在人类完成演示后,实验场景会被重置,机器人需要根据此前的视频复现相同的装配结果。

在该实验中,RoboTTT的任务完成分数为65%,10次测试中完整成功6次;GDN的任务完成分数为33%,10次测试均未完整成功。这表明RoboTTT不仅能让自身的操作历史影响后续动作,也能利用此前的人类演示确定当前的任务目标。需要说明的是,这里的One-shot并不意味着机器人只看一次视频就能从零掌握一个完全陌生的任务类别,而是指模型在已经训练过的电路装配任务族中,根据一段视频识别测试时未见过的具体配置和操作顺序。

失败后的动作调整能力

RoboTTT通过DAgger Distillation学习了“失败—纠正”之间的关系。训练数据既包含机器人执行失败的动作,也包含随后由人类提供的纠正动作,RoboTTT将失败动作作为上下文,只在正确的人类动作上计算模仿损失。这样一来,模型学习到的不只是“正确动作应该是什么”,而是“发生某种失败后,接下来应该如何纠正”,这也解释了开头的钻孔场景:机器人第一次没有对准螺丝后,此前的失败已经进入历史并改变了Fast Weights,进而影响后续的动作调整。

论文用同一批100条DAgger轨迹比较了不同的训练方式:标准DAgger只在人类纠正动作上微调,丢弃机器人自己的失败动作,这种做法在四种模型上平均只带来约9%的提升,在两个序列模型上也只有约13%;而DAgger Distillation保留了失败动作作为上下文,同样的数据为RoboTTT带来了约36%的提升。论文还验证了一个细节:在这组实验中,将失败动作作为模仿目标并未带来额外收益,让GR00T N1.7在包含失败动作的完整轨迹上微调,与只使用人类纠正动作微调的结果相同,均为57%。因此,失败动作的价值不在于让模型模仿,而在于作为上下文,帮助序列模型学习“失败—纠正”之间的关系。

外部扰动后的状态恢复

DAgger Distillation考察的是机器人如何纠正自身的失败动作,另一类问题则来自环境被外部改变:机器人此前已经完成了某个步骤,但任务状态随后发生了回退。为了测试模型对外部扰动的鲁棒性,研究人员在Pup Go Car实验中,会在机器人装好黄色车顶后将其拆下,或是在轮胎插入后将其取走。仅凭当前画面,策略很难判断零件是从未安装,还是安装完成后又被移除,只有结合此前的操作历史,模型才能意识到任务状态发生了回退,并重新执行对应的步骤。

RoboTTT可以利用此前轨迹在Fast Weights中形成的内部状态,返回相应阶段重新安装零件。车顶被拆除后,它在20次测试中成功恢复15次,GDN为13次,短上下文基线最高只有10次;轮胎被取走后,RoboTTT与GDN均恢复18次。两种扰动合计,RoboTTT的恢复率为83%,最佳短上下文基线为53%。

不过,这组结果需要结合两个前提理解:首先,团队额外采集了30分钟扰动数据,并将其与原有任务数据共同训练,所有方法都表现出一定的恢复能力,论文认为这可能与联合训练有关,因此RoboTTT的优势主要体现在更高的恢复率,而非在没有相关训练数据的情况下从零获得了这项能力;其次,GDN在轮胎扰动实验中与RoboTTT打平,均为18/20,这说明至少在这项实验中,“任务进度”这类相对粗粒度的状态,固定大小的递归记忆也能保留一部分,RoboTTT与GDN的差距更明显的场景,是需要从人类视频中提取具体配置和操作顺序的One-shot模仿。

上下文长度可能成为新的缩放方向

除了具体的任务表现,RoboTTT最值得关注的结果之一,是模型的闭环表现随着预训练上下文变长而持续提升。研究团队分别使用128、256、512、1K、2K、4K和8K时间步进行预训练,结果显示,1K模型的平均任务完成分数为43.9%,8K模型则达到71.5%,相对提升约63%。相比之下,Gated DeltaNet并没有呈现同样持续的增长趋势。

论文将这一差异归因于两类模型不同的状态更新机制:RoboTTT通过外层任务损失学习Fast Weights的初始状态W_0和更新方式,预训练上下文越长,这套状态读写机制就会在更长的连续轨迹中接受训练;而GDN的线性关联状态不具备同样的梯度式元学习过程,也就无法通过相同方式将更长的训练序列转化为对状态读写机制的持续塑造。需要强调的是,1K和8K模型的Fast Weights矩阵形状相同,扩展的是模型在预训练阶段学习管理这组状态的时间跨度,而非Fast Weights的状态容量。这组结果表明,预训练上下文长度可能成为机器人基础模型的一条新的缩放方向,不过,不同上下文长度的实验并未完全固定训练token数量、batch size与总计算量,因此现阶段还不能将这一趋势视为已经得到验证的缩放定律。

RoboTTT的局限性

尽管RoboTTT实现了更长的上下文处理能力,但这并不意味着它拥有无限的记忆。Fast Weights的容量始终固定,过去的经验只能以有损压缩的形式存在,随着新的信息不断写入,新经验可能覆盖旧经验,相似任务状态可能相互干扰,错误的感知也可能污染当前的状态。因此,未来真正重要的问题不只是上下文能否从8K增加到1M,而是当模型运行到第一百万步时,第一千步的重要信息还剩下多少。

RoboTTT展示的错误恢复能力也有明确的边界:它的“失败—纠正”能力来自DAgger Distillation,训练数据中已经包含了机器人失败动作与人类纠正动作,因此模型在测试时利用的是训练阶段学到的纠错规律,并不意味着它面对任意未知故障都能自主找到解决方案。此外,论文中提到的“恒定推理成本”也需要准确理解:它表示每一步的成本不会随着已经处理的历史长度继续增加,而不是RoboTTT的绝对计算成本很低。RoboTTT将DiT的参数量由约5.38亿增加至约6.9亿,实验部署使用的也是配备高性能工作站的设备,它能否在低功耗边缘机器人芯片上保持同样的实时控制能力,仍有待验证。

RoboTTT也没有证明机器人可以跨任务、跨天持续学习:论文实验中的每次任务执行都从训练得到的初始状态W_0重新开始,当前尚未展示Fast Weights中的经验如何跨任务保留、如何在多台机器人之间共享,以及状态受到污染后如何审计和回滚。此外,实验范围本身也相对有限,目前的证据主要来自同一种机器人平台和三项桌面装配任务,每项正式测试通常只有10至20次,它是否能够迁移到其他机器人本体、传感器和开放环境,还需要更广泛的验证。

总结:记忆不再是被动存储,而是主动的学习过程

回到开头那个没有拧紧的螺丝的场景,无论是机器人自己偏离了螺丝位置,还是已经装好的车顶或轮胎被人中途取走,它都需要让此前的感知和动作继续影响当前的决策,才能重新调整或返回正确的步骤。RoboTTT改变的不只是机器人能够利用的历史长度,更是历史进入模型的方式:长历史并没有完整保存在不断增长的缓存中,而是作为学习材料,通过一次次梯度更新,持续改写一个固定大小的内部状态,让记忆本身成为了一种动态的学习过程。

以上内容不代表本平台立场,仅供读者参考