ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

VLA 机器人为什么会重复操作?拆解 MEM 与 IMPRINT 的记忆机制机器人抓空一次以后,为什么还会照着原来的方式再抓?

VLA 机器人为什么会重复操作?拆解 MEM 与 IMPRINT 的记忆机制机器人抓空一次以后,为什么还会照着原来的方式再抓?

🫧个人主页:小年糕是糕手

💫个人专栏:《C++》《数据结构》《Blender 修行笔记》《AI》

🎨你不能左右天气,但你可以改变心情;你不能改变过去,但你可以决定未来!


目录

一、当前观察为什么不足以支持连续操作

1. 物体还在那里,不代表任务还在原来的步骤

2. 为什么不把所有历史画面都输入模型

二、MEM:短期视觉历史与长期语言摘要

1. 两条记忆路径分别负责什么

2. 短期记忆怎样控制计算开销

3. 发出指令,不等于已经完成动作

三、失败以后如何调整:理解上下文适应

1. 桌面变低以后,原来的抓法还适用吗

2. 冰箱拉不开,能不能换一侧尝试

四、IMPRINT:视觉、动作与本体状态一起记

1. 清理桌面,为什么需要记住清理之前的画面

2. 多路历史分别提供什么信息

3. 为什么要分两阶段训练

4. MEM 与 IMPRINT 的区别在哪里

五、实验结果怎么读:成功率和任务进度要分开

1. IMPRINT 的清桌成绩

2. MEM 的任务进度不能换成完整成功率

六、从两篇研究中能提炼出哪些实现思路

1. 先明确记忆要解决哪一种信息缺失

2. 区分动作请求与执行结果

3. 记忆模块也需要训练,而不只是接线

4. 把计算延迟纳入评估

七、记忆的价值,要在下一步动作里验证

参考论文


机器人抓空一次以后,为什么还会照着原来的方式再抓?桌面已经清理过,为什么又开始重复清理?东西都放回了桌子,为什么左右顺序还是错的?

这些问题不一定能靠更准确的物体识别解决。

当前画面能告诉机器人“现在看到了什么”,却未必能告诉它“刚才发生过什么”。

VLA 是 Vision-Language-Action 的缩写,即视觉语言动作模型。这类模型把视觉观察、语言指令等输入与机器人的动作预测连接起来。但能根据眼前画面完成一次抓取,与能连续处理一项家务,仍然是两种不同的能力。

本文结合 MEM 与 IMPRINT 两篇具身智能研究,讨论历史信息如何进入动作策略、短期细节与长期进度怎样分工,以及实验结果究竟能支持什么结论。文中实机成绩均来自论文作者报告。

一、当前观察为什么不足以支持连续操作

1. 物体还在那里,不代表任务还在原来的步骤

先看一个备料任务:按要求取好锅、土豆、牛奶、黄油和捣泥器,并放到指定位置。

抓起一件物品,只是其中一步。机器人还要知道哪些用品已经取过、哪些门需要关闭,以及眼前这次抓取是否仍然属于刚才的子任务。转身去取下一件东西以后,前面的操作可能已经离开相机视野。

MEM 的备料实验就涉及这类要求。指令给出物品、初始位置与目标位置,机器人需要依次完成取放,并处理开过的门或抽屉。[1]

如果策略只读取当前观察,可以把它的信息流简写为:

当前观察+任务指令 → 策略模型 → 下一段动作

这里的观察可以包含图像和机器人自身状态;动作也可能是一段动作块,而非单个控制量。具体表示取决于所用模型。

问题在于,不同历史可能产生相似的当前观察。

洗过的盘子与还没洗过的盘子,未必能从某一帧图像里可靠地区分;目标被遮挡以后,当前画面也可能缺少此前已经看到的位置线索。

这属于部分可观测问题:机器人得到的观察,并没有完整包含作决策所需的任务状态。记忆模块的作用,就是把历史中仍有用的信息带到当前决策里。

2. 为什么不把所有历史画面都输入模型

最直接的方案是保存每一帧,然后让模型每次都读取整段历史。它容易理解,但在直接拼接历史的实现中,输入规模、计算开销和推理延迟都会随历史增长。

对机器人来说,延迟还会影响控制。模型计算下一段动作时,夹爪可能已经移动,接触状态可能发生变化,手里的物体也可能继续滑动。

此外,能够访问历史,不代表模型已经学会正确利用历史。示范里某些偶然的相关性,也可能成为预测动作的捷径。MEM 与 IMPRINT 都把“如何训练模型使用记忆”作为设计的一部分。[1][2]

因此,真正需要确定的是:

  • 哪些信息值得保留;
  • 怎样压缩历史,控制计算开销;
  • 训练时怎样让历史信息参与动作决策。

保存得更多,和使用得更好,是两个需要分别解决的问题。

二、MEM:短期视觉历史与长期语言摘要

MEM 的全称是 Multi-Scale Embodied Memory。它把不同时间尺度的记忆交给不同表示处理,再通过高低层策略配合完成任务。[1]

1. 两条记忆路径分别负责什么

继续看备料。假设材料已经备齐,但捣泥器第一次没抓稳。

系统一方面需要记得“还有这件工具没拿到”,另一方面也需要保留夹爪刚才怎样靠近、物体怎样滑开的细节。这两类信息的粒度不同。

路径主要保留的信息参与决策的方式
长期语言记忆已完成的步骤、较早的重要事件、仍需处理的任务状态高层策略读取并更新摘要,选择下一项子任务
短期观察记忆近期视觉变化及相关机器人状态低层策略结合近期观察、子任务与任务目标,预测动作块

高层策略的输入包括当前观察、任务目标和已有语言记忆;输出包括下一项子任务,以及更新后的语言记忆。

低层策略根据子任务和近期观察执行具体操作。

可以把这套分工理解为两条相互配合的流程:

高层:当前观察+任务目标+已有语言记忆 → 更新记忆、选择子任务。

低层:近期观察历史+子任务+任务目标 → 预测并执行动作块。

这只是信息流的简化,不包含模型内部的完整训练结构。

这种分工使系统可以用相对紧凑的语言表示追踪进度,同时保留局部动作需要的观察细节。“多尺度”指向的是信息表示与决策用途,而不只是把录像按时长分成两段。

2. 短期记忆怎样控制计算开销

MEM 对视觉编码器引入了时间信息处理:在处理单张图像内部空间关系的同时,让不同时间的观察交换信息。

在进入后续 VLA 主干前,论文实现只保留当前时刻对应的视觉表征。此前的观察已经参与编码,历史信息可以通过这个表征影响后续动作预测。[1,第 III-C 节]

这与“分别编码每一帧,再把全部历史 token 交给动作模型”有明显区别:后续主干接收到的输入规模得到控制,历史处理的一部分工作被放到了视觉编码器里。

论文后训练设置中的观察记忆可扩展到18 帧抽样观察,覆盖作者报告的 54 秒历史窗口。[1,第 III-D 节]

这里需要区分两个概念:18 帧是模型使用的抽样观察数量,54 秒是这些观察覆盖的历史时间跨度,它们并不表示相机的原始采集帧率。更早的任务进度则通过语言记忆继续维护。

3. 发出指令,不等于已经完成动作

长期记忆如果只是把子任务指令不断追加到日志里,很容易混淆“要求做什么”和“实际做到了哪里”。

例如,“拿碗、拿碗、拿碗”可能意味着反复尝试同一个步骤,却不能证明碗已经被拿起。MEM 论文中的一个例子,是在成功拿起碗之前不急着更新长期摘要;尝试过程中的动作细节仍可以由短期历史提供。[1]

作者测试了直接拼接既往子任务指令的朴素方案。在长任务实验中,它弱于学习得到的摘要更新。

这里存在一个实际问题:示范中的操作通常较顺利,而机器人执行时可能反复重试,历史序列的分布也随之改变。只会处理顺利示范的历史记录方法,未必适应失败后的执行过程。

MEM 利用带子任务标注及成功、失败信息的机器人轨迹生成摘要监督,再训练高层策略维护记忆。

对实现者来说,这个区别很关键:如果系统只记住“控制指令已发送”,就可能在动作尚未完成时推进任务状态。

记忆更新需要与观察到的执行结果配合使用。

三、失败以后如何调整:理解上下文适应

MEM 用抓筷子和开冰箱等任务,检验近期历史是否能帮助机器人调整操作。[1]

1. 桌面变低以后,原来的抓法还适用吗

抓筷子任务中,训练数据的桌高位于可调范围的上半区,评估时则把桌子调到最低位置。

如果模型无法利用前一次失败留下的线索,下一次面对相似观察,就容易继续执行相似动作。

近期历史让模型有机会把“刚才这一下没有奏效”纳入当前判断,从而调整抓取方式。

这个实验关心的并不是机器人能否说出“桌子变低了”,而是变化与失败的信息能否影响下一次操作。

2. 冰箱拉不开,能不能换一侧尝试

另一项实验使用开启方向不明确的冰箱。机器人朝一侧尝试失败后,需要考虑另一侧。

该任务把成功定义为四次抓握以内打开门,限制了无限次随机试错的空间。

这两组实验都有训练前提:团队提前采集人类纠正或带尝试、随后纠正的轨迹,再微调策略;有无记忆的对照也使用相同干预数据。[1]

测试时发生的是in-context adaptation(上下文适应):模型结合当前任务中的历史改变行为。

它与现场更新模型参数、持续训练出新技能是不同的过程。看到机器人尝试失败后换了一种做法,不能据此认定它在运行中完成了参数学习。

失败后的历史需要被策略实际读取,训练数据里也需要包含有助于调整操作的经验。仅仅增加一个缓存,并不能保证模型自然学会纠错。

四、IMPRINT:视觉、动作与本体状态一起记

MEM 用语言摘要与近期观察作分工。IMPRINT 则研究另一条路线:把多路历史压进可学习的潜在记忆中。[2]

1. 清理桌面,为什么需要记住清理之前的画面

IMPRINT 的一个实机任务要求:

  1. 挪开小桌上的物品;
  2. 清洁小桌,且清洁动作恰好完成一次;
  3. 把物品直立放回去,并恢复正确的左右排列。

小桌被清空以后,当前画面已经不包含原来的排列。

要恢复任务要求的状态,系统需要利用较早的观察;要避免重复清洁,还得判断操作进行到了哪里。

如果只检查“桌子上最后有没有物品”,就会漏掉这个任务最关键的要求:物品的位置关系是否恢复,清洁步骤是否按要求完成。

2. 多路历史分别提供什么信息

IMPRINT 纳入的历史包括:

  • 视觉观察:物品原先在哪里,场景外观怎样变化;
  • 动作记录:此前向机器人发送了哪些动作;
  • 本体状态:关节、夹爪等机器人自身状态的变化。

原始位置可以从视觉历史中恢复;动作与本体状态也能为运动过程和任务进度提供线索。这些信息具有互补关系,具体作用还取决于任务及训练方式。

动作记录表示发出过什么动作,不能独立证明动作执行成功。因此,动作记录仍然需要与视觉和本体状态结合判断。

IMPRINT 把多路历史压缩为潜在记忆,并在推理时增量更新。它没有要求所有重要信息都先转写成自然语言。[2]

3. 为什么要分两阶段训练

IMPRINT 的训练安排可以概括为两个阶段。

第一阶段:学习保留历史。

模型读取视觉、动作和本体状态历史,学习记忆表示。训练目标包括重建历史信息,以及估计当前任务进度。

第二阶段:让记忆服务动作。

将记忆表示接入动作策略,与策略联合适配动作预测,使保留下来的信息能够参与实际控制。

第一阶段给记忆表示明确的监督,第二阶段再让它适应控制任务。这比只告诉动作模型“现在多了一段历史输入”,多了一步学习如何保留信息的过程。

4. MEM 与 IMPRINT 的区别在哪里

IMPRINT 是独立研究,并不是 MEM 的升级版本。两者的差异可以按设计比较,但不能直接把不同论文里的分数拼成排行榜。

比较项MEMIMPRINT
记忆表示长期语言摘要与短期观察历史分工多路历史压缩成潜在记忆
任务组织高层选择子任务并更新语言记忆记忆表示参与动作策略预测
训练关注点学会摘要更新及近期观察的时间编码先监督历史重建与进度估计,再联合适配策略
可检查性可以检查语言摘要及任务选择,仍需与实际执行核验主要通过任务结果和表示分析检查,潜在记忆较难直接阅读

这张表比较机制,没有控制双方的模型、数据、任务与算力,因此不用于判断哪一种方案普遍更强。

五、实验结果怎么读:成功率和任务进度要分开

1. IMPRINT 的清桌成绩

论文附录表 12 给出了各方法在 Dust Table 任务中的原始成功次数。[2]

方法成功次数 / 总次数成功率
无记忆 π06/2030%
HAMLET5/2025%
MemER8/2040%
均匀抽样历史10/2050%
IMPRINT16/2080%

同一研究又为 IMPRINT 更换了未见过的物品:

物品条件IMPRINT 成功次数 / 总次数成功率
原物品条件16/2080%
未见物品条件9/2045%

这些成绩对应具体的验收要求:临时放下时物品直立,恰好清洁一次,最后直立放回小桌并恢复正确左右排列。

每次执行前,也都有工作人员复位场景并随机摆放。

论文展示过一个很直观的失败示例:均匀抽样策略把瓶子都放回了小桌,却交换了左右位置。动作流程看起来已经结束,任务仍然没有通过。[2,附录 E.3]

每项只有 20 次执行,多成功或失败一次,报告的成功率就会相差 5 个百分点。阅读结果时,应当把成功率、执行次数和验收条件放在一起看。

80% 是这组研究设置下观察到的结果,不能直接外推成任意家庭里的稳定表现。更换物品后的 45%,也说明泛化条件会明显影响结果。

2. MEM 的任务进度不能换成完整成功率

MEM 的菜谱实验从 42 种训练菜谱中选出 5 种,换到未见厨房和物体条件下评估。每种策略在相应任务或菜谱上执行 10 次,多数备料菜谱按 6—7 项用品计分。[1]

如果拿对五件、漏下一件,可以获得较高的任务进度,但整项备料仍没有完成。

论文长任务图中的Task Progress应当按这个含义理解。

因此,MEM 的任务进度和 IMPRINT 的整项成功率,回答的是不同问题:

  • 任务进度反映完成了多少;
  • 整项成功率反映有多少次执行满足全部要求。

比较论文时,需要先对齐任务定义、成功条件、执行次数和人工参与方式,再讨论分数。

六、从两篇研究中能提炼出哪些实现思路

以下是根据研究机制作出的工程分析,不是原作者已经验证的通用实现方案。

1. 先明确记忆要解决哪一种信息缺失

如果问题是物体短暂被遮挡,近期观察可能提供必要的位置线索;如果问题是十几分钟前已经完成哪些步骤,就需要能够保留更长时间跨度的信息。

还有一种情况是,系统保存了历史,却没有把历史与当前决策有效连接起来。这时继续扩大缓存,未必能解决问题。

可以先问一句:机器人这一步做错,究竟缺少哪条信息?

先确定决策缺少什么,再选择表示形式,比直接扩大历史窗口更容易定位问题。

2. 区分动作请求与执行结果

发送抓取命令、夹爪闭合、物体真正被拿稳,是不同事件。任务记忆何时推进,应当有观察或执行状态支持。

例如,一个上层任务管理器可以分别记录:

准备抓取 → 正在尝试 → 确认拿稳 → 搬运完成

这是便于理解的状态划分示例,并非 MEM 或 IMPRINT 的官方实现。

这种设计能否改善效果,仍要在自己的任务中验证。它不能替代底层感知与动作反馈,但可以帮助开发者检查:系统是否把“尝试过”误当成了“已经完成”。

3. 记忆模块也需要训练,而不只是接线

MEM 比较过从预训练阶段引入观察记忆,与仅在后训练阶段加入视频编码器的情况。

后者同样从预训练 π0.6 检查点开始,却较难有效利用历史信息。[1,消融实验]

IMPRINT 则通过历史重建和任务进度监督,先训练记忆表示。

两项研究都提示:基础模型已经见过大量机器人数据,不代表后来接入的记忆结构就能自动发挥作用。

对于自己的系统,除了检查接口有没有接通,还需要检查训练目标是否真的要求模型使用历史,以及训练数据是否覆盖了必须依赖历史才能区分的情况。

4. 把计算延迟纳入评估

MEM 的效率实验在单张 H100、四路相机输入条件下测量,并给出 300 毫秒的参考实时阈值。[1]

这是一组明确条件下的测量,自己的部署环境仍需单独评估。

除了记忆跨度,可以同时记录策略刷新延迟、整项任务耗时、重复操作次数和人工接管情况。

一个能读取更长历史、却显著拖慢动作更新的系统,未必有更好的实际表现。只有历史处理及时完成,记忆才有机会参与当前这一步动作。

七、记忆的价值,要在下一步动作里验证

MEM 与 IMPRINT 展示了两种可研究的做法:前者按时间尺度和功能分工,后者从多路历史里学习紧凑表示。它们都把“过去发生过什么”接入了机器人决策。

目前的证据主要来自给定任务内的记忆评估。

多日环境变化、长期使用偏好,以及旧信息何时应该失效,需要额外设计测试。MEM 也把超出单次执行、持续数周数月的记忆列为未来方向。[1]

这意味着,任务内记忆与长期家庭使用仍有距离。机器人记得这一次清桌前的物品排列,并不能证明它已经能够长期维护整个家庭的环境知识。

回到最初的备料:工具滑开以后,近期历史帮助调整抓取;等工具放好,任务记录也应当继续推进。锅和材料都已经齐了,这项工作就该结束。

机器人究竟记住了多少,最终要看这些信息有没有改变接下来该做的动作。

参考论文

[1] Marcel Torne, Karl Pertsch, Homer Walke, et al. MEM: Multi-Scale Embodied Memory for Vision Language Action Models. arXiv:2603.03596v2, 2026.

论文原文 | 作者项目说明

[2] Yilin Wu, Rutav Shah, Shuaiyi Huang, et al. Memory Without Curation: Learning Multi-Stream Latent Memory for Robot Policies. arXiv:2610.14406v1, 2026.

论文原文与附录

本文为论文解读,未进行机器人实机复现。


RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进