我第一次认真思考视觉模型为什么没有记忆是在做室内导航仿真的时候。让一个模型自己摸索完一个房间再把它放到相似布局的另一个房间执行同样的任务它还是会像初次进门一样到处乱转——明明上一次已经在类似空间里踩过一遍地图了。这个问题很直观地暴露了视觉模型与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想要真正在现实里长期运行、持续学习这种缓存层是必不可少的。如果你正准备做类似方向我建议先在小规模模拟器里把写记忆-读记忆闭环跑通再考虑扩大场景和任务复杂度。长期记忆这套东西值得每个做视觉决策的人提前押注。
阅读完成 · 觉得有帮助?