想象一条折毛巾轨迹:机器人一开始做得不错,抓住了毛巾边缘,也把布料拉开了一部分。随后它抓偏了,布料开始皱在一起,动作进入停滞。几秒后,人类接管,把毛巾重新整理好,任务最终成功。
这是一个典型的真实世界策略在线采集数据的过程。
但关键问题是,这条数据到底该怎么用?
如果我们只保留「成功部分」或只学习人类接管片段,机器人会失去大量有价值的探索过程;如果整条数据轨迹都保留,机器人又不可避免地模仿中间那段越做越糟的失败行为。这类数据最麻烦的地方就在这里:一条轨迹内部,可能同时包含进展、停滞、失败和恢复。任务流程越长,数据的情况就越复杂。
简而言之,随着具身智越来越多地进入生产环境,策略进化的核心变成对混杂数据的高效利用。这正是离线强化学习发挥的重要场景,但效果严重依赖于帧级的好坏标注——逐帧分辨哪些时刻在推进任务,哪些在停滞或倒退。但靠人类逐帧标注机器人数据非常耗费人力、难以规模化。
一句话读懂 STEAM
清华于超老师团队与正行创新(Striding AI)联合提出的STEAM算法, 正是为解决这个问题而生。STEAM 的核心想法是:
从专家演示的时间顺序中自监督学习帧级进展信号,再用这个信号为专家数据、机器人 rollout 和人工纠正数据逐帧打分。
它不需要手工奖励,不需要人类逐帧标注,也不依赖外部价值模型来判断每一帧好不好。它学习的是更基础的东西:在一个任务中,两帧之间是否发生了真正的局部进展。

对一条混杂轨迹逐帧打分——好帧(橙色 ✓,高优势)与坏帧(灰色 ✗,低优势)被区分开;经「时序偏移 → 集成取最小 → 优势分」得到帧级优势曲线,再用于真实机器人的离线强化学习。
论文链接:https://arxiv.org/abs/2606.29834
项目主页:https://rlinf.github.io/steam/
开源代码:https://rlinf.readthedocs.io/en/latest/rst_source/examples/embodied/steam.html
先看信号:失败会下降,接管后会回升
一个好的帧级学习信号应该符合直觉。
专家演示中,它应该大部分时间保持高位;成功 rollout 可能慢一些、波动更大;失败 rollout 在卡住后应该迅速下降;人工纠正数据则应该在人类接管后重新回升。
STEAM 学到的曲线正是这样。下面四类轨迹被拼到同一画面里同步播放:每格上方是机器人画面,下方是实时的 帧级优势信号A_STEAM ,红点标出当前帧。
STEAM2.mp4
视频 1:STEAM 在四类轨迹上的帧级优势曲线(四格均为 3× 倍速同步播放,每格播放结束后会变暗并显示 END)。
左上「专家演示」全程高位、仅在重试处短暂下跌;右上「成功 rollout」偏低且波动;左下「失败 rollout」卡住后跌向零且不再恢复;右下「人工纠正」先下跌,自第 8 秒「人类接管」标记后明显回升。
这段可视化是 STEAM 故事里最关键的证据。它说明模型不是只会给整条轨迹贴标签,而是在看一条轨迹内部发生了什么:什么时候机器人在推进任务,什么时候进入失败,什么时候人类接管后把状态救回来。
对真实机器人学习来说,这种能力很重要。因为高价值训练信号经常不在「完美演示」里,而在更混乱的地方:失败前的有效接近动作、失败后的恢复动作、人类接管后的纠正动作。
为什么只看整条轨迹不够
在很多机器人学习流程里,数据会被粗略分成「成功」和「失败」。这在简单任务上可行,但在长时程真实任务中太粗。
折毛巾就是一个典型例子。机器人需要抓取、拉平、折叠、再折叠。任何一个阶段都可能出现小错误,但小错误不一定让整条轨迹失去价值。相反,如果我们只保留最终成功的轨迹,机器人会错过大量真实状态覆盖;如果我们把所有 rollout 都放进去,又可能把策略带向失败状态。
STEAM 把问题从“轨迹级”拆成“帧级”:不是问「这条数据要不要」,而是问「这一小段动作对任务进展贡献有多大」。
专家演示里自带“时间标尺”
STEAM 为什么可以不靠人工奖励?
因为成功演示本身就带有一个免费监督信号:时间顺序。
在一条专家轨迹中,后面的帧通常比前面的帧更接近完成状态。拿两帧出来比较,它们的相对顺序就提供了一个局部进展信号。反过来,把专家轨迹倒着看,模型也能看到一种近似的「远离目标」过程。
STEAM 用这个信号训练一个时序预测器:给定两帧和语言指令,预测它们之间隔了多少任务进度。由于不同演示速度不同,STEAM 会用轨迹长度做归一化,让快演示和慢演示可以落在同一个尺度上。
训练完成后,优势分就这样得到:取当前帧和固定间隔之后的一帧,估计这段动作实际推进了多少进度,再减去同样间隔下、归一化尺度对应的「基准进展」。二者之差就是优势——它衡量的不是机器人绝对走到了哪一步,而是相对基准是「多推进」还是「少推进」:更快、更高效则为正且越高,一旦停滞或回退就转负。

时刻告诉自己:不能过度自信
真实 rollout 中有很多专家演示里没见过的状态。单个预测器在这些状态上可能过度自信,把一个坏片段误判成高价值片段。
STEAM 用一个小集成来降低这种风险。多个预测器在专家分布附近通常比较一致;一旦遇到奇怪状态,它们更容易分歧。STEAM 最终采用较保守的分数,相当于在说:如果模型们意见不一致,不要相信最乐观的那个。
这不是为了让策略变得保守,而是为了避免把错误经验放大进训练。机器人学习里,假阳性往往比漏掉一些好片段更危险:一个看似高分但实际有害的动作,会把策略推向错误方向。
机器人真的变聪明了吗
STEAM 以 π₀ 作为 VLA 骨干,并通过 CFGRL 把帧级优势信号接入策略训练。最直观的结果来自真实机器人折毛巾。
表中最核心的对比是:只用专家数据的行为克隆在折毛巾上的成功率为 33.3%;STEAM 在专家演示、人工纠正和 rollout 的混杂数据上训练后达到 92.3%,提升 59 个百分点。更重要的是,STEAM 同时提高了阶段完成分数和吞吐量,说明它不是靠「动作变慢」换成功率,而是在更有效地完成任务阶段。
视频 2:折毛巾任务上 STEAM 与三个基线的同步对比(四格均为 3× 倍速,每格播放结束后会变暗并显示 END)。
STEAM(本文)稳定完成整套折叠;BC、HG-DAgger、RECAP 更容易在折叠阶段停滞或出错。
在更短的抓取放置任务上,只用专家数据的行为克隆为 63.8%;加入 rollout 后,STEAM 用帧级优势生成最优性标签,并在推理时引导策略偏向高最优性条件,成功率达到 80.0%。如果和同样接入混杂数据、同样使用 CFGRL 骨干的 RECAP 相比,STEAM 在折毛巾和抓取放置上也都有明显优势。这说明 STEAM 最有价值的场景仍然是长时程、质量混杂、容易出现局部失败和恢复的真实任务。

折毛巾(5 阶段)、零食结账(8 阶段)、可乐补货(4 阶段)使用 ARX 双臂机器人;抓取放置(2 阶段)使用单臂Franka。

Succ. 为平均成功率,Score 为完成的子阶段数,Thr. 为每小时成功轨迹数。STEAM 在引入混杂数据后收益最明显,尤其是在长时程折毛巾任务上。
什么时候STEAM最有用
STEAM 不是一个「给所有数据打上最优性标签就一定更好」的通用魔法。
论文中有一个很好的反例:在简单抓取放置任务上,如果只有少量专家数据,额外的优势标注和条件引导反而不如直接行为克隆。这不是失败,而是一个有用边界:当任务短、专家数据干净、数据量又少时,额外的帧级偏好信号不一定有收益。
但一旦加入真实 rollout,STEAM 的价值就重新出现。它适合的不是理想化的干净数据集,而是现实中更常见的训练池:专家演示、失败尝试、缓慢成功、人工接管混在一起。

和奖励模型的区别
目前机器人采用训练数据的很多方法都要先绕一圈:会先学习奖励或价值函数,再把它转换成优势。
STEAM 走的是更直接的路线——不绕弯,直接学习“每一步有没有推动任务变好”。
这带来三个实际差异:
- 不需要人为设计奖励,也不需要逐帧标注;
- 不依赖通用 VLM 在具体物理任务上的零样本判断;
- 不假设任务进展永远单调,而是允许真实轨迹里的倒退、重试和恢复。
对技术读者来说,STEAM 的两个设计细节尤其重要。
第一,更细的时序分箱能让模型区分不同程度的进展和倒退。
第二,小规模集成能抑制 rollout 分布外状态上的过度高估。

Succ. 为成功率,Score 为完成的子阶段数,Thr. 为吞吐量。
总结
STEAM 的动机很简单:机器人不只需要更多经验,还需要知道经验中的哪些部分值得学习。当机器人能够在失败、重试和人类接管中识别真正推进任务的动作,并把这种信号用于策略改进,具身智能就离「GPT时刻」更近了一步。