面向机器人操作的视觉-语言-动作模型中的双潜在记忆
- 关联论文:2607.07608
- 作者:spark
- 更新:2026-07-20
一句话结论
LaMem-VLA 把历史经验统一编码进 VLA 的连续潜空间,把"短期/长期双库记忆 → 检索 → 压缩 → 编织进当前推理流"做成一个端到端框架,让长时序、强时间依赖的操作任务能在固定上下文内完成。
解决什么真问题
主流 Vision-Language-Action(VLA)模型在预测动作时基本沿用 Markov 假设——只看当前 observation。这一假设在长时序任务里会崩:做"把锅放到水槽 → 开龙头 → 等水开 → 把面条下锅"这种几十步的操作时,agent 没法可靠记住"我两分钟前刚把锅放到了水槽左侧",必须依赖上下文窗口回看。
已有的 memory-augmented VLA 一般走两条路:
- 扩 observation 窗口:把历史 observation 拼进 prompt。问题是 VLA 的视觉 token 很贵,几十帧图就吃光上下文,注意力也会被老帧稀释。
- 从外部 memory bank 检索:把历史 observation 编码后存起来,推理时按相似度拉几条回来作为辅助 context。问题是这些 retrieval 出来的表征(视觉特征、自然语言描述)处在 VLA 自身的潜空间之外,没法和当前的 reasoning flow 真正融合——更像是"贴上去的便签"。
LaMem-VLA 的核心观察是:记忆要被 VLA 用得顺手,必须住在 VLA 的连续潜空间里,而不是外挂一层。
核心方法
整体框架可以拆成四个协调组件,全部跑在 VLA 的 latent embedding space 内:
历史 observation 流 ─┐
▼
(i) Curator
├── short-term vault
└── long-term vault
▲
当前 obs + 指令 ─► (ii) Seeker(多模态 query)
▼
(iii) Condenser
├── short-term latent memory tokens
└── long-term latent memory tokens
▼
(iv) Weaver
└── memory tokens ⊕ current obs ⊕ instruction
▼
VLA backbone → action chunks
(i) Curator — 双库管理
把历史经验分流进两个 vault:
- Short-term vault:保留最近若干步的高分辨率 observation/动作,主要服务"刚才发生了什么"的细粒度回忆。
- Long-term vault:对更早的经验做摘要、抽象或任务级 landmark 化,保留语义级信息。
这一步的关键设计在于"分流策略"——不是简单的按时间窗切,而是用任务事件边界 / 状态变化显著性来切。原文未给出具体的触发函数细节,但强调两个 vault 互为补充,避免短时窗看不到远期目标、长期库又太粗无法落地。
(ii) Seeker — 多模态检索
用当前 observation + 指令的联合 embedding 去 query 两个 vault,取回 top-k 相关条目。检索在潜空间里完成,不需要把记忆"翻译回"自然语言或重新渲染成图像。
(iii) Condenser — 压缩成潜记忆 token
Seeker 拉回来的证据通常是异构的(不同步数、不同模态),直接拼接会撑爆上下文。Condenser 把它们统一编码为两种 latent memory token:
- short-term latent memory tokens(保留细节)
- long-term latent memory tokens(保留语义)
这些 token 的设计空间和 VLA 的 reasoning embedding 是同一个连续空间,所以接下来可以无缝拼接。
(iv) Weaver — 编织进推理
把 memory tokens 和当前 observation embedding + instruction embedding 拼成一条连续的 embedding sequence,送进 VLA backbone。这样 VLA 在做 cross-attention 时,历史记忆和当前感知在同一个 attention 池里被共同查询,记忆能直接影响 attention map,进而直接影响 action generation。
伪代码视角下,单步推理可以写成:
def vla_step(model, obs, instr, memory):
short_tok = memory.short.compress(seeker.query(obs, instr, memory.short))
long_tok = memory.long.compress(seeker.query(obs, instr, memory.long))
seq = concat([short_tok, long_tok, obs.embed(), instr.embed()])
action = model.forward(seq) # VLA backbone
memory = curator.update(memory, obs, action) # 在线写入
return action, memory
整个机制刻意保持 bounded context:不管历史多长,参与当前推理的 token 总量是固定的(短期 k_s + 长期 k_l + 当前 obs + 指令)。
关键实验与数据
论文在两个主流具身 benchmark 上做了对比:
- SimplerEnv(Google DeepMind 系列,侧重 sim-to-real 迁移下的桌面 / 厨房操作)
- LIBERO(终身操作学习 benchmark,任务类型更广,含长 horizon 任务)
报告的关键结论是 LaMem-VLA 相对"扩 observation 窗口"和"外部 memory bank"两类基线都有显著优势,原文给的数据细节未在 abstract 中披露,但 project page 链接(https://github.com/quhongyu/LaMem-VLA)有更细的数值。具体百分比请以原文为准。
值得注意的实验设计点:
- 对比项覆盖了"无记忆"、"短时记忆拼接"、"RAG 式外部 bank"、"Episodic Transformer 类方法"等多个对照。
- 强调 long-horizon、temporally dependent 的任务切片,这是 LaMem-VLA 的主战场。
亮点与局限
亮点
- 范式统一:把 memory 拉进 VLA 的潜空间,避免"外挂便签"的脱节问题;这种"latent memory-native"思路可以推广到其他长时序决策场景。
- bounded context:在固定 token 预算下做长时序推理,工程上更友好,便于部署。
- 双库设计 short + long,对应不同时间尺度的依赖,结构上比单一 memory 更接近人脑工作模式。
- 端到端训练:四组件协同优化,不需要为记忆管理单写一套规则。
局限(基于 abstract + 一般经验推断,原文未明确给出)
- 双库划分策略和检索策略的可解释性有限——出问题时难调试。
- 对 VLA backbone 仍有依赖;如果 backbone 本身的潜空间表征能力不够,再聪明的 memory 也救不回来。
- abstract 没提真实机器人部署实验,主要在仿真上验证;sim-to-real gap 仍是开放问题。
- 延迟:每个 step 都要跑 seeker + condenser,推理延迟会比 vanilla VLA 高一些。
对工程落地的启发
- 机器人 / 具身 agent:如果你的 VLA 跑长时序任务(家庭服务、仓储拣选),LaMem-VLA 的双库 + latent memory 模式是个值得复用的骨架。
- 多模态对话 agent:核心思想"memory 住在同一 embedding space 内"可以原样移植——把 RAG 的检索结果也压缩成 latent memory token 注入 LLM,而不是拼文本片段。
- KV cache 管理:本论文和 KVpop(同一批解读)思路有共鸣——都是在固定预算下做"哪些信息值得保留"的决策,只是 LaMem-VLA 决策的对象是历史经验 token,KVpop 决策的是 attention 状态。
- 工程建议:先在小规模任务上验证 short/long 的划分是否合理,再上完整任务;可以借鉴 Seeker 的多模态 query 设计做工具选型。
与同方向工作的关系
- OpenVLA / RT-2 类通用 VLA:基座。LaMem-VLA 是其上方的 memory 增强层。
- EgoVLP / Long-horizon Video Understanding:长时序表征学习的对应方法在视频理解侧早有类似设计,LaMem-VLA 把这套思路搬进 action generation。
- MemGPT / MemoryBank 类 LLM 长记忆方案:解决思路相似(working / archival 双层),但 LaMem-VLA 全程在 latent 空间跑,比 LLM 侧的"压缩成自然语言摘要"更保真。
- RAG-类方法:在文本 QA 上 RAG 是把检索结果拼回 context;LaMem-VLA 等价于把"检索结果"压成 latent token 再注入,对应 RAG 的潜空间版。
适合谁读
- 做具身智能 / VLA 微调或部署的工程师:四组件设计可以拆解复用。
- 做 LLM 长上下文 / 长记忆的研究者:核心抽象(latent memory-native)和 LLM 侧的 memory layer 一脉相承。
- 做 RAG / Agent 架构设计的人:双库 + 检索 + 压缩的范式对 Agent 的长期记忆管理有直接借鉴价值。
- 不太适合的读者:纯做仿真短任务或不需要长时序依赖的人,性价比不高。
工程落地与核查(Jay)
实际系统怎么用
LaMem-VLA 的落地不是在 VLA 之外另起炉灶,而是以 plugin 形式叠加在任何已有 VLA backbone 上:
VLA backbone (OpenVLA / RT-2 / 你的私有 VLA)
↑ 替换
LaMem-VLA backbone = VLA + Curator + Seeker + Condenser + Weaver
部署时每个推理 step 需要额外跑三个组件(Seeker query + Condenser encode + Weaver concat),延迟会比原 VLA 略高,需要做 latency budget 分析。
主要工程坑
坑 1:Curator 的 vault 划分逻辑是黑箱 ⚠️ 双库的分流策略(基于事件边界还是固定时间窗)是核心工程决策点,原文未给出触发函数实现细节。自行复现时需要设计并验证自己的 vault 分流逻辑——这对 LaMem-VLA 性能影响最大。可以从"任务阶段切换"(如抓取 → 移动 → 放置)的隐式检测入手。
坑 2:四个组件需和 VLA backbone 协同端到端训练 LaMem-VLA 的设计是端到端协同训练,而非即插即用模块。若只推理(不做训练),可以直接用论文 release 的 checkpoint;否则需要同时训练 VLA backbone 和四组件,训练栈复杂。
坑 3:sim-to-real gap 是未解决的工程风险 Abstract 所有实验在 SimplerEnv 和 LIBERO 两个仿真环境完成,未披露真实机器人数据。历史上 sim-to-real 在具身操作任务上是主要工程瓶颈——视觉策略的 domain gap、physics 不一致、动作空间差异都可能导致 LaMem-VLA 的优势在真机上消失。上线真机前务必做 sim-to-real transfer 验证。
坑 4:Seeker + Condenser 带来每步额外延迟 每个推理 step 额外跑一次多模态 query(Seeker)和一次潜 token 编码(Condenser),延迟增幅取决于 VLA backbone 的帧率。对于 real-time 要求高(>10Hz)的场景,延迟 overhead 需要单独 profiling。
坑 5:GitHub 暂未 release 官方代码 ⚠️ 论文提供了 project page(github.com/quhongyu/LaMem-VLA),但截至 abstract 发布尚未确认是否已有可运行代码。复现优先级高于一切工程落地的读者,需等待代码 release 后再做深入集成。
坑 6:bounded context 的 k_s / k_l 超参依赖任务 短期 token 数 k_s 和长期 token 数 k_l 是任务相关的超参——同一个 VLA 在不同任务上需要不同的记忆预算。通用 VLA 产品需要做任务分类 + 自适应 k_s/k_l 调度,否则记忆预算要么浪费要么不够。
核查记录
| 核查项 | 结论 | 存疑点 |
|---|---|---|
| "SimplerEnv + LIBERO 上显著超过外部 memory bank 基线" | ⚠️ 存疑:abstract 未给出具体数字(% / 胜率 / 任务数) | 需读原文第 5 节实验表格 |
| 双库分流策略的具体触发函数 | ❌ 未公开:原文未给出实现细节 | 需读附录或等代码 release |
| Sim-to-real 实验 | ❌ 原文未披露:abstract 只含仿真实验 | 真机部署需独立验证 |
| 四组件是否解耦可复用 | ⚠️ 存疑:端到端设计意味着四组件绑定 VLA backbone | 需等代码确认接口设计 |
| GitHub release 状态 | ⚠️ 需实测:project page 已存在但代码未确认 | 建议发 issue 确认发布时间 |