☰
视觉模型如何获得长期记忆?VISTA系统设计与应用解析
2026/10/20 13:51:08 网站建设 项目流程

我第一次认真思考视觉模型为什么没有记忆,是在做室内导航仿真的时候。让一个模型自己摸索完一个房间,再把它放到相似布局的另一个房间执行同样的任务,它还是会像初次进门一样到处乱转——明明上一次已经在类似空间里踩过一遍地图了。这个问题很直观地暴露了视觉模型与Agent之间的差距:模型可以告诉你眼前这张图里有什么,但它不记得十秒前、一小时前、昨天它自己看到过什么。这种缺失在静态评测里完全看不出来,一旦到了需要连续交互的场景,就成了硬伤。

最近看到的VISTA这篇工作,恰好就在解决这个问题:给视觉模型补上"长期记忆"。这也是那个在视觉领域深耕多年的重量级团队公开的第一篇Agent方向论文,含金量不需要我多说。这篇文章里,我会把VISTA的核心动机、系统设计、记忆存取机制、训练与实验结论拆开来讲,最后再聊几个跳出论文本身的方向性判断。如果你正在做视觉Agent、具身智能、多模态决策相关的工作,这篇值得认真读。

1. 先聊清楚:视觉模型为什么一直没有"记性"

1.1 静态视觉任务的"单帧假设"

在目标检测、图像分类、语义分割这些经典任务里,模型的输入输出关系非常简单:一张图片进,一组标签或者掩码出。训练的时候,数据是成百上千万张相互独立的图片,模型判定"这张图里有没有猫"的时候,完全不需要参考它之前看过的其他图片。评测也是一样,每个样本单独打分。这套体系运转了几十年,高效、稳定、可控,但也悄悄固化了一个假设——视觉就是"看一眼,说一嘴"。

我一直觉得这个假设才是视觉模型和真正的智能体之间最深的鸿沟。你看一张照片的时候,知道这张桌子旁边刚才可能站着一个人,因为你记得连续的视频帧;但模型不会。它处理下一帧的时候,上一帧早就被丢掉了。如果你让一个视觉模型做连续决策,它每走一步都像失忆症患者一样重新打量世界。

这种"无状态"设计在静态任务里不是问题,甚至是个优点——省显存、省计算、推理速度快。但一旦把模型放进Agent的壳子里,要求它导航、寻找物体、操作环境,问题就立刻暴露:它既不知道"自己从哪来",也不知道"自己去过哪",更谈不上从过去的错误里学习。

1.2 一进Agent场景,记忆就成了硬需求

一个最简单的视觉导航任务:从起点出发,穿过三个房间,找到蓝色箱子。假设模型已经走到了第二个房间门口,它需要知道第二个房间"已经探索过一部分了",才能决定是继续深入还是折返。这个信息是当前帧给不了的——当前帧只有眼前的走廊,而"过去的探索状态"只存在于时间维度上。

我接触过不少做机器人的团队,他们都有一个共同的痛点:模型在仿真环境里反复绕圈。所谓绕圈,就是智能体走到了一个已经访问过的位置,但因为没有任何记忆,它认不出"这地方我来过",于是再次走进同一个死胡同。解决绕圈最简单可靠的办法,就是给Agent装一个能"认得旧地"的长期记忆。VISTA论文里有很多设计动机都围绕"避免重复探索"展开,这恰恰是真实Agent落地时最基础、最要命的问题。

更广义地说,Agent需要的记忆是分层的:空间记忆(哪里去过)、事件记忆(发生了什么)、语义记忆(这类场景该怎么应对)。在语言模型里,上下文窗口承担了前两者的部分功能,但它是短期的、静态的。真正的长期记忆得能跨任务、跨场景保存和复用,而不是只在一个回合内有效。

1.3 长期记忆不等于"囤积历史帧"

很多初学者会把"长期记忆"理解成"把所有的历史帧都存起来"。这个方向没错,但实际操作会立刻撞墙:几百帧高分辨率图像全部喂给Transformer,注意力计算量会爆炸,训练和推理都跑不动。长期记忆不等于"长期缓存",它应该是"结构化后的经验"。

这里可以拿人做类比。你不会记得自己一生中走过的每一块地砖,但你记得"左转第二个房间是厨房""这个牌子的锁芯很难开"。人类的长期记忆是高度抽象、高度选择性的,丢掉的细节不是浪费,而是记忆系统在做信息压缩。视觉Agent的长期记忆设计,第一原则就是:别存原始数据,存特征和事件。

VISTA就是对这个问题的一个系统性回答:它定义了一套记忆块的存取协议,让视觉Agent在模拟环境里自主学习什么值得记、怎么用记忆来决策。这也是我说它是"给视觉模型补记忆"的原因——补的不是缓存,而是真正能被模型调用的经验结构。

2. VISTA的骨架:感知、记忆、决策三件套怎么拼

2.1 三个模块各司其职

VISTA的总体架构,把视觉Agent拆成了三块:感知模块、记忆模块、决策模块。

  • 感知模块:标准的视觉编码器,负责把当前帧变成紧凑的特征表达。一个重要设计是,编码器输出不是一整个全局向量,而是保留空间局部信息的特征图,这样后续检索时可以结合位置信息。
  • 记忆模块:长期记忆库,加上写入、检索、更新的控制逻辑。这是全系统的核心,也是这篇论文最花心思的地方。
  • 决策模块:接收当前感知特征和检索出的记忆特征,输出下一步的动作。

这个架构单看并不新鲜,视觉语言模型、多模态Agent基本都是这条路线。VISTA真正有意思的地方在细节:记忆库不是外挂的一个数据库,而是和感知模块共享特征空间,并且一起参与端到端训练的。也就是说,记忆不是"语义标签的集合",而是"视觉特征的沉淀物"。这个选择很关键,后面我会展开讲。

2.2 为什么训练必须放在模拟器里

给Agent做训练,环境选择是个关键决策。用真实世界做,成本高得吓人,每一次失败都可能需要物理复位,而且无法精确构造"需要记忆才能解决"的场景。所以VISTA选择在交互式模拟器里进行训练。模拟器的价值在于可以大量生成接近真实的空间布局、光照、遮挡变化,用几百个场景并行跑训练数据。

更重要的是,模拟器允许你构造严格的对照实验:同样的场景,Agent先跑一遍形成记忆,然后重置位置再跑一遍。如果没有记忆模块,第二遍的表现应该和第一遍几乎一样;有了记忆模块,第二遍应该明显更快、更少绕圈。这种控制力是真实环境给不了的。

当然,模拟器训练永远有人担心迁移问题。论文采用的策略很务实:先在模拟器里学"如何使用记忆"的策略,感知部分的特征来自大规模的通用图像预训练,所以到了真实环境,感知特征依旧可用,记忆策略也不会完全失效。这套"模拟器学策略+大数据学感知"的组合,是目前视觉Agent最稳妥的信任逻辑。

2.3 记忆写入:模型自己决定什么值得记

读这篇论文时,我最关心的问题是:记忆到底从哪来?VISTA的思路是把"写记忆"也变成模型决定的行为,而不是人工设定规则。

具体来说,每一帧观察经过感知模块编码后,记忆模块会做三个判断。第一,当前状态和已有记忆是否高度重叠?如果重叠,就不新建记忆块,而是更新旧记忆的时间戳和访问频率。第二,当前状态是否包含重要事件?比如Agent发现了一个新的可交互物体、到达了一个此前未知的位置、完成了某个子目标,这些时刻会被优先保存。第三,每隔固定步数,把这一小段轨迹里的关键事件合并成一条摘要型记忆,显著压缩存储量。

这套机制的巧妙之处在于,真正重要的不是"存了什么",而是"模型学会了判断什么重要"。长期记忆的质量上限,不取决于存储空间,而取决于写入策略。如果什么都记,Agent很快就淹没在噪声里;如果什么都丢,Agent又回到失忆状态。学会"选择性忘记"是记忆系统里最难的部分。

3. 记忆库的存取细节:写入什么、怎么检索、如何淘汰

3.1 检索机制:只调取和当前决策相关的top-k条

假设记忆库里已经攒了几百条记忆块,现在Agent站在新位置、面对当前帧,它不可能也不需要同时读取所有记忆,必须做一件事:检索。VISTA的检索方式是典型的向量相似度匹配:当前观察的特征向量作为query,在记忆库里用点积或余弦相似度找出最相关的k条记忆。这里的k是超参数,需要根据任务复杂性调节,论文的实验部分会有不同取值下的对比。

为什么不直接全量读取?两个原因。第一是计算代价,全量读取的话注意力计算量随记忆库大小增长,Agent跑得越久越慢,在实时决策场景里完全不可接受。第二是注意力稀释,我见过不少带外部记忆的模型在长任务里表现不升反降,原因就是无关记忆太多,注意力被平均了。人回忆过去也是选择性的,检索式访问更接近真实的记忆机制。

3.2 融合:旧记忆怎么参与新决策

检索出top-k记忆块之后,下一步是融合。融合方式用的是cross-attention:当前帧的特征作为query,记忆块的特征作为key和value,通过注意力交互,把记忆中的信息注入当前的视觉表示。这种做法的好处是,模型不是简单地把记忆向量拼接在特征后面,而是能动态决定"当前决策需要重点关注记忆里的哪一部分"。

举个例子。导航任务中,当前帧里出现一扇门,检索到的记忆里恰好有一条"这扇门通向储物间,上次进去没有找到钥匙"。在cross-attention的作用下,模型可能就会偏向不进入这扇门,转头去别处搜索。如果换一条记忆,比如"这个房间的柜子上放着一把钥匙",模型的决策方向又会不同。这种依据情境动态调用记忆的能力,是长期记忆参与决策的正确姿势。

一个细节值得注意:检索到的记忆块里通常不只包含视觉特征,还会附带位置信息(比如记忆产生时Agent所在的空间坐标)和时间信息(比如这条记忆是几个时间步之前的)。为什么需要这些?因为很多"回忆"本质上是对"空间-时间"关系的判断。Agent要判断"我是不是找过这个角落",就需要当前位置和记忆里位置的对比;要判断"这个物体是新的还是刚才那个",就需要时间戳来判断。纯视觉特征不足以支撑这类关于顺序和位置的推理。

3.3 淘汰策略:记忆库如何防止无限膨胀

记忆库不能无限增长。VISTA给记忆管理设计了一套基于评分的更新策略:每条记忆块会根据最近访问频率、时间新鲜度、与当前任务的相关性综合打分,分数低的会被逐渐淡出。这实际上是一个可学习的缓存淘汰系统,行为上有点像操作系统里的LRU,但评估维度更丰富。

这个设计还有一个额外的好处:缓解灾难性遗忘。因为记忆库是模型外部的,新的交互经验不会直接覆盖旧记忆,除非触发显式更新,所以模型在后期任务里仍然可以访问早期任务留下的记忆。这个特性对持续学习类的Agent场景非常关键——一个长期运行的机器人不能被最新一轮数据"冲掉"之前学到的经验。

4. 训练策略与消融结论:长期记忆到底值多少分

4.1 两阶段训练:先练眼,再练脑

VISTA的训练分两个阶段。第一阶段是标准的视觉预训练:用大规模静态图像数据训练感知模块,让特征提取器掌握通用的视觉语义。第二阶段才进入模拟器进行交互训练,重点是训练记忆模块的写入和检索策略,以及决策模块。策略优化用强化学习或者模仿学习都可以,VISTA采取的是能同时优化任务奖励和信息增益的混合目标。

这个顺序不能反。如果一开始就在模拟器里从零训练,感知特征会很弱,记忆沉淀下来也是模糊的,模型既看不清楚环境,也记不清楚经验。先用海量静态图像把"眼睛"练好,再让"脑子"学怎么用记忆,是这类体系最稳妥的路径。

4.2 消融实验结果:三条值得记住的规律

消融实验是判断一个模块到底有没有用的金标准。VISTA里比较有信息量的结论大概有三条,我整理成表格方便对照:

对比设置观察结果原因分析
有记忆 vs 无记忆长程任务成功率显著下降,短程任务受影响较小任务越长,跨时间的决策越多,记忆的价值越大
记忆库容量小 vs 大表现先快速上升,然后进入平台期超过一定数量后,新增记忆不再提供增量信息
全量记录 vs 选择性记录全量记录表现反而更差冗余记忆稀释注意力,干扰决策质量

这三条结论指向同一个核心观点:记忆不是越多越好,而是"选得准"比"存得多"更重要。很多团队做记忆系统,第一反应是扩大存储、记录所有细节,实验做下来往往会发现收益递减甚至变差。真正的智力活在于判断"哪条经历值得留下"。

4.3 和两类旧方案的对比:VISTA绕开了哪些坑

在VISTA之前,给视觉Agent加记忆的主流做法有两条。一种是堆历史帧,把连续的帧序列直接拼进Transformer,跟视频理解的处理方式类似;另一种是构建显式地图,比如拓扑图、栅格地图,把Agent的探索结果记录成空间结构。两条路线各有明显短板。

堆历史帧的问题是计算量。序列一长,注意力就是二次方增长,任务稍微复杂一点就撑不住,而且模型对不同时间步同样对待,缺少"什么重要什么不重要"的区分。显式地图的问题是鲁棒性。地图构建本身是误差累积的过程,一个定位噪声就可能把整张图带偏,导航链跟着就崩了。

VISTA走的是第三条路:不做显式地图,不存原始帧,而是在特征空间里做异步检索的稀疏记忆库。它不建地图,但通过带位置信息的记忆块足够支撑空间导航;它不存帧,但保存了事件级别的结构化信息。两条旧路线的短板,它都绕开了。

5. 论文之外:VISTA给视觉Agent指了哪条路

5.1 视觉研究开始认真对待"决策"

长期以来,视觉模型的产出是"描述"——标签、框、掩码。VISTA这类工作把产出的目标换成了"动作",并且让模型在动作之前有权访问自己过去的状态。这个转变看似只是应用层的升级,实际上重构了整个数据组织方式:模型开始需要"经历",而不只是"样本"。一份份交互轨迹、一次次的成功和失败,都成了训练数据的一部分。这会倒逼视觉社区重新思考评测方式:不再只看单帧准确率,还要看任务完成率、绕圈率、跨任务复用能力。

5.2 视觉长期记忆和语言长期记忆是两个难度

语言模型做长期记忆相对容易:文本可以压缩成摘要、关键词、知识条目,语义密度高,存和取都很自然。视觉完全不是一回事。一帧图像的语义高度依赖上下文,同一张桌子在不同位置、不同光照下特征差异巨大,很难直接压缩成"文本摘要"之类的形式。VISTA用"位置+时间+特征"联合编码记忆块的方式,是处理这种视觉独特性的有效方案。

这一点给做应用的人提了个醒:别把LLM的memory方案直接搬到视觉Agent上。文本检索的成功依赖语言的高层语义抽象,视觉记忆必须保留更多底层空间和时间信息,否则导航类任务根本没法用。

5.3 几个我觉得必然的方向

看完这篇工作,我觉得有三个方向值得关注。第一,跨场景的记忆迁移:让Agent把在一个场景里学到的经验迁移到另一个场景,这需要记忆表示有更强的泛化性。第二,记忆的跨模态索引:给视觉记忆挂上语言标签或文本描述,用自然语言作为检索入口,能大幅提升记忆调用的灵活性。第三,长周期记忆压缩:把跨多个任务的记忆周期性地蒸馏成更抽象的语义规则,让长期记忆真正实现跨任务复用。

作者团队在视觉领域深耕多年,第一次做Agent就选择了"长期记忆"这个切口,这个选择本身就很说明问题。他们看到的瓶颈不是感知能力不够强,而是感知之后的"记住什么、回忆什么"这一环缺失。这个判断我认为是准确的,也是接下来两三年视觉Agent会集中突破的区域。

最后说点个人体会。读这篇工作,我最大的收获不是某个网络结构,而是重新理解了"记忆"在Agent里的定位:它不应该是模型内部的一个层,而应该是模型和世界之间的一层"经验缓存层"。视觉Agent想要真正在现实里长期运行、持续学习,这种缓存层是必不可少的。如果你正准备做类似方向,我建议先在小规模模拟器里把"写记忆-读记忆"闭环跑通,再考虑扩大场景和任务复杂度。长期记忆这套东西,值得每个做视觉决策的人提前押注。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询