VLA算法 MEM: Multi-Scale Embodied Memory for Vision Language Action Models
引入
现在的智能体究竟还差些什么才可以真正投入现实生活生产?
答案是更强的记忆能力,这同时包括长期记忆和短期记忆。
长期记忆给予模型长时间使用时的一致性,短期记忆一方面支撑长期记忆(检索后的信息加入上下文自然会占用更多的token),另一方面支撑工具调用(相同,工具使用占用更多的token)以获得更强的智能。
因此长期记忆的更新检索机制的设计以及中短期记忆所需要的超长上下文窗口一直是llm领域探索的焦点。
对于在虚拟世界生效的智能体是这样,对于在现实世界生效的智能体同样如此。
VLA中的长期记忆和短期记忆
在讲解论文之前我要阐明下在VLA领域的记忆的概念,这和LLM领域的记忆的概念差别很大。
在VLA领域(也就是论文所在的领域),长期记忆说的是完成一个任务的时间区间所需要的记忆,并不涉及到记忆的永久性的存储。而短期记忆则是完成一个原子操作的时间区间所需要的记忆。
这种概念的差异是VLA模型和LLM模型各自任务差异以及在各自任务下的能力差异所造成的。
VLA模型(涉及到高频次的与环境的交互)因为其本身任务场域的复杂程度远高于虚拟世界的agent,需要高频次的输入图像(消耗大量token),所以完成一个完整的复杂任务所需要的token数极高。(VLA模型的每一次响应都可以看作chatbot的一轮对话,由此可以看见这种token累积的速度)。
与此同时,因为VLA模型本身数据较少,处理现实世界任务的能力并未如LLM的语言能力那样强大,目前来说高准确率完成一个完整的复杂任务几乎不可能。
所以,在VLA领域和agent领域这种长期记忆和短期记忆概念的差异是很正当的。
如何让VLA“获得”短期记忆能力?
mem是通过什么样的设计让VLA“获得”短期记忆能力的呢?
注意,我这里说的是“获得”,这是因为VLA本身的继承自VLM的短期记忆能力已经因为其对于自回归范式的放弃而一同放弃掉了。
VLA对于自回归范式的放弃主要是三点考量:
- VLA所面对的任务场域(涉及到高频次的与环境的交互)会迅速产生大量的上下文,拖慢推理速度并且占用大量显存,这对于自回归范式来说是致命的。
- VLA面世之初所需要解决的任务不需要自回归范式所带来的短期记忆能力,所以放弃自回归范式对于VLA来说不存在压力。
- action chunk的设计以及flow matching的生成方式能带来更高的动作精度以及执行频次,而这两者虽然可以与自回归范式适配,但都未经过深入的探索。
VLA既然放弃了自回归范式,自然也放弃了随之而来的短期记忆能力。虽然有些范式会意图利用同时输入当时和过去的几帧图像来获得几帧画面时间区间的短期记忆,但是这种方法既死板又低效,不能说是一个有潜力的好方法。
mem是怎么让VLA获得短期记忆能力的?
mem的做法是保留过去几帧的图像,但是却不直接将过去的图像对应的token放入快系统的vla中进行推理。与之相反,mem只会将当前一帧图像所对应的token放入vla模块,而过去几帧图像则是通过video encoder模块将自身的信息融入到当前一帧图像的token中。
所以,本质上video encoder的作用是记忆的提前检索,避免了在相较于video encoder极大的vla中进行记忆检索。这有两个好处:
- 避免了过多图片token导致actionexpert部分注意力涣散的现象。
- 用video encoder这个小模型替代了action expert这个大模型进行视频信息的提取,减少了推理延迟
video encoder的设计也使用了将时序注意力和空间注意力分层进行的方法来减少推理延迟,具体来说就是对于预训练的vit每隔四层将注意力层改为时序上的注意力。
下面是这种时空注意力分离的示意图。

(时空注意力分离示意图 论文图4)
可以看到,最终只有current对应的图片token会被输入到action expert中。
快系统(短期记忆)的总体设计如下图所示。
(快系统设计/短期记忆设计 论文图二右半)
值得注意的是图示中快系统的任务指令只有慢系统输出的子任务,但是原文公式中却表示同时有初始任务指令作为输入,此处存疑。
论文中也定量的分析了这种通过video encoder提前检索记忆信息+时空注意力分离(有趣的一点,虽然这两者都只能带来常数项系数的速度增益,但两者叠加相乘后增益效果明显。)的方法相较于利用vla检索记忆信息的方法所带来的时间增益。如下图所示:
(video encoder优势 论文图三)
(但是值得注意的是,这终究只是改变二次方项的系数罢了,随着Total Frames的增加,推理时间仍然是平方增长)
和快慢双系统中需要在推理能力与响应速度之间进行抉择相似,在快系统内部也需要在记忆容量和响应速度之间进行抉择,并且这种抉择本身的零和性质意味着某种超参风格的设计是不可能奏效的。
短期记忆容量的灵活性是一个完全可以探讨的话题。或者说,当我们可以解决快慢双系统间计算资源的tradeoff的时候,我们理应可以解决快系统内部记忆容量和响应速度的tradeoff。
该论文的实验设计十分的合理,为短期记忆专门设计了需要InContextLearning能力的任务,实验描述以及表格如下。
(简单重复试错任务 论文图七)
如何让VLA“获得”长期记忆能力
VLA既然连短期记忆都没有,自然也是没有长期记忆的。哪怕是在快慢双系统的经典设计中,长期记忆也是不具备的。
mem论文中的长期记忆是通过自然语言存储的,依赖于慢系统而存在。只要了解mem中的慢系统是如何运作的,自然也知道所谓长期记忆是如何维持的。慢系统结构如下:

(慢系统设计/长期记忆设计 论文图二左半)
任务指令和记忆性文字和图片一起输入后输出下一时间步的记忆以及下一时间步要做的子任务,不断重复此过程。此处的记忆是总结性的文字,并不是单纯的之前时间步子任务的拼接,这是因为实验表示总结性文字的表现更好(论文中尝试将此解释为测试环境中的多次失误子任务拼接而成的记忆与训练环境中记忆差别过大,会导致训练-测试的分布域差别),可以看下表中蓝黄色对比。
(快慢记忆组件的消融实验,实验均为长程任务 论文图六)
(可以明显看出,长程任务对于短期记忆仍然有很高的需求,这与引入部分所提到的在llm领域中,短期记忆总是作为长期记忆前提相吻合了)
值得注意的是整个过程可以说是硬件无关的或者说是action无关的,这纯粹就是一个vlm模型的运作方式,只不过按论文所说训练是快慢系统一起端到端的。
总的来说,长短期记忆依赖于慢快双系统,慢快双系统组合起来下面是一个整体的框架图示。
(整体框架 论文图二)
总结
论文总体来说非常紧凑,只有九页的正文加上三页的附录,这对于学习者是件好事。
其中的任务设置值得额外注意,完全做到了和技术的完美吻合,这是大多数vla领域研究者在进行功能获得性创新时都做不到的。
如果要说问题的话就是本次任务设置所使用的长期任务的instruction太过于取巧了,是子任务的时序拼接,这在实践中是极其不方便的。而且很直觉的一件事就是,将多任务进行总结的难度显著低于将单任务进行分解后进行总结的难度,也可以说是向慢系统性能的妥协吧。



