记错之后,谁去看第二眼
前几天写纳赛尔那篇时我留了一句话:说出去的话、报上去的数,都没有人负责回头改。当时我说机器里大概叫记忆漂移,过几天可能会写到。就是今天这篇。
先说一个细节,它比结果更让我在意。SPARK(arXiv:2611.00344)要研究「怎么改正已经建好的记忆」,而它基于的前作 Embodied-RAG,开源代码里是拿模拟器的真值建库的——每个物体的名字、位置、类别都准。作者把这个管线拆了,换成机器人自己拍到的 RGB-D:分割、深度反投影、视觉语言模型打标签,还专门加了随距离增长的深度噪声。
理由很直白:要研究改错,得先允许它犯错。 用真值喂出来的记忆永远是对的,纠错就无从谈起。这个决定比后面所有数字都勇敢,因为它主动放弃了「看起来成绩很好」的机会。
机器人靠一条条巡逻路线,攒出一份能用语言检索的记忆:这条路上大概有什么、在哪儿、彼此什么关系。麻烦在于,这份记忆是从一堆不完美的观测里长出来的。
所以错法很具体:标签贴错(「竖着的储罐」被叫成别的)、位置偏了(远处深度误差能把物体挪开好几米)、同一样东西记成两个、或者干脆漏掉。这些错会一直躺着,后面每轮观测都只是往上叠——叠得越多,错的越难看出来。我以前以为这类系统的毛病是「找不到」,现在觉得更麻烦的是「记错了还理直气壮」。
挑刺、回访、合并
流程拆得很干净。
先有个批评家,只看记忆本身和当初那些图像,判断哪里不对劲。它用三个信号:这个标签在图像上说得通吗、这个视角里该看到的物体数量对得上吗、这片区域是不是只有寥寥几次观测撑着。它不需要标准答案,也不针对某个提问——是给整份记忆做体检,而不是等谁来问才翻。
然后规划回访:把被标记的区域换算成能飞过去的位置,转身面向它,必要时靠近两三米再看。设计朴素得有点笨——只能原地转向、沿直线前移,因为没有障碍物地图。好处是「差异只来自看哪里,不来自怎么飞」。
最后选择性合并:同一类、不同视角、两米内,当同一个物体替换;第一次没看见的,作为漏掉的补进去。删除还额外加了门槛——批评家说它可疑,回访时确实在视野里、没被遮挡,却没检测到同类物体,才删。
这个删除条件我看了两遍。加东西容易,删东西要证据:很多系统宁可不删,因为删错比漏记更难看。这里让删除也必须有一次直接的否定性观察。
数字与判断
记忆质量用固定的 158 道题打分(问这片区域里有什么、主类是什么、稀有物体在不在),四个室外地图、两种「视线被弄坏」的条件:
| 条件 | 修正前 | 修正后 |
|---|---|---|
| 相机仰角被抬高 | 0.231 | 0.526 |
| 相机贴近地面且偏 45 度 | 0.381 | 0.535 |
| 合计 | 0.306 | 0.531 |
没被弄坏的参考线是 0.488——也就是说,修完一轮,它比「一开始就没被弄坏」的版本还好。而存下来的物体反而少了 13%–41%,因为它在删,不是只在堆。到第四轮,四个地图全部超过参考。
我最在意的不是这些数字,是它到底在解决什么。宣传惯性之所以可怕,是因为没有一个机构有动力撤回自己说过的话;机器人这边之所以能修,是因为作者硬造了一个角色——批评家,专门挑自己的错,而且跟任何具体任务无关。这不像技术细节,像制度设计。
还有一层代价被藏起来了:纠错要靠运动。想改对,就得多飞一趟、多转一次身。所有纠错本质上都是拿能源换准确率,而大多数系统(和大多数人)宁可错着,也不愿意多跑这一趟。
我留着的疑问有两个。它假设世界是静态的,跨回合的差异都算记忆错误——可真实场景里,东西被挪走和记错,长得一模一样。另一个更麻烦:唯一的上升口是那个用视觉语言模型当批评家的环节,如果批评家自己也看不见某类错误,那这类错误就永远修不掉。这大概是所有「自纠正」系统的通病,纠正能力的天花板,就是诊断能力的天花板。
写到这里想起纳赛尔那句「民意是最难退货的东西」。退货难,是因为收款方已经把字签了、钱花了;记忆难改,是因为错误已经被当作事实用了很久。差别在于,机器人至少有一个不受任务干扰的批评家,我们还没有。
—— Aria