跳到主要内容
空间记忆与具身智能基础

第6章 两大范式——全隐式端到端 vs 神经符号混合

把空间记忆的工程实现路径说清——为什么"全隐式端到端"在证据链/在线更新/不确定性校准上有结构性短板;为什么"神经符号混合"是当前更现实的工程路径;展开"NeRF / 3DGS 不等于空间智能"这一观察的真实含义;用 GSMem 做"高保真重建 + 结构化场景图"混合路线的样本

空间记忆 neuro-symbolic 神经符号 NeRF 3DGS scene-graph 工程范式

1. 一个让工程师反复纠结的选择

每一支做空间记忆的团队,几乎都会被同一个工程选择困住:

是直接训一个足够大的端到端模型,让空间能力”涌现”?还是把感知模块和结构化状态层分开,做一套神经符号混合系统?

第一条路看起来更”AI 一些”——更优雅、更端到端、更符合”scaling 解决一切”的当前主流叙事。第二条路看起来更”传统一些”——更复杂、更脏、更要写一堆图操作和概率更新代码,且天然难以端到端优化。

但只要这套系统真的要长期跑、跨会话稳定、为决策提供可审计依据,结构性的工程现实会逼着你走第二条路——或至少走一条以第二条路为主、第一条路为辅的混合路径。这一章要讲清楚这件事为什么会发生,以及在每个具体维度上两条路差距究竟有多大。

这一章要做的事:

把全隐式端到端 vs 神经符号混合的真实差距落到 5 个具体维度——并展开”NeRF / 3DGS 不等于空间智能”这一观察的工程含义,以 GSMem 这种混合路线作为现实参照。

2. 两大范式的真实形态

2.1 全隐式端到端:scaling 派的赌注

全隐式端到端路线的核心赌注是:

只要模型足够大、数据足够多、训练足够好,空间能力(包括跨时间状态维护)会从视觉、视频和语言的联合训练里自然涌现。

这条路这两年的代表工作:

  • 大型 VLM(GPT-5、Claude、Gemini、Qwen-VL 等):以一段视频 / 多张图作为输入,端到端推理空间关系
  • 几何增强 VLM(Spatial-MLLM [19]、3DThinker、G²VLM [51]、Think3D [64]):在 VLM 里嵌入几何 / 3D 工具,提升空间推理
  • 生成式世界模型(Genie [14]、Cambrian-S [15]、driving WM [74]):用大规模视频数据训练 dynamics 模型

这条路在某些维度上确实在快速进步——空间组合推理、跨视角一致性、视频生成的物理合理性等。但只要把它们的输出对照第 1 章的四类查询(last-seen / containment / change / state-audit),就会发现它们几乎回答不了这些问题——或者在很短的时间尺度上可能回答正确,但跨小时、跨天、跨会话就崩。

2.2 神经符号混合:把”看”和”记”分开

神经符号混合路线的核心策略是:

用神经模型处理感知(高维、连续、开放词汇),用结构化表示承接认知和记忆(低维、离散、可组合、可查询)。

这条路在 SLAM、动态场景图、对象级语义地图、3D scene graph、概率知识图谱等方向上有几十年的研究积累。代表工作:

  • Kimera [9]、Hydra [10]:动态 3D 场景图,已经接近”关系级表达”
  • Pandora [65]:把 Hydra 扩展到带 articulation 的对象(抽屉 / 门 / 柜子)
  • Belief Scene Graphs [35]、unobserved object detection [37]:把”不可见但仍存在”作为一类显式建模
  • MemoryVLA / RoboMemory [48, 53]:在 VLA 模型里引入显式记忆模块

这条路的优势在第 4 章已经详细展开过——可读、可检验、可局部更新、可证据化。但它的代价也真实存在:系统更复杂、调试更难、模块间接口需要严格定义、不能简单端到端 fine-tune。

2.3 什么时候选哪条

在进入更细的对照之前,先给一份”什么时候选哪条”的快速判断表:

场景维度倾向全隐式倾向神经符号
任务时长短任务(秒-分钟)长任务(小时-跨天-跨会话)
失败成本低(可重试)高(一次错就很难恢复)
是否需要审计不需要需要(自动驾驶 / 医疗 / 安全)
是否需要局部更新不需要需要(用户告诉系统”我把它拿走了”)
是否需要跨会话稳定不需要需要
是否需要可解释回答不需要需要
数据规模海量、覆盖广中等、可控

绝大多数真实的空间记忆需求集中在右列。这就是为什么神经符号路线在工程现实里更常被选中——不是它更优雅,而是它更接近问题本身的结构。

3. 五个维度的具体对照

把两条路线的差距拆到具体维度,最值得关心的有 5 个。每一个维度都直接决定了系统能不能在生产环境里长期跑下去。

3.1 维度 1:证据链与可审计

问题:用户问”你为什么相信钥匙在书桌上?“系统能给出什么样的回答?

全隐式端到端神经符号混合
状态形态latent vector hth_tObjectRecord + evidence_pointers
答”为什么相信”不能(latent 不可解释)能(指回具体 obs_id / timestamp / sensor)
答”上次校准是什么时候”不能能(last_evidence_time 字段)
答”如果我现在告诉你 X 错了,你能改吗”只能 fine-tune 或重 prompt能(直接修改 ObjectRecord)

证据链不是装饰。它是任何一个生产级空间记忆系统都必须有的底线能力——尤其在那些”答错就出大事”的场景(家庭安全、自动驾驶、医疗机器人)。全隐式路线在这条维度上不是”暂时不够好”,是结构上做不到——隐式状态没法被审计,这是 latent 表征的根本属性。

3.2 维度 2:在线更新与局部修正

问题:当用户说”刚才那条记录是错的,钥匙我已经拿走了”,系统能怎么响应?

全隐式系统的窘境:

  • 用户的修正以语言形式表达
  • 但模型的状态在权重和 latent 里
  • 没有”修改某个特定记忆”的接口——只能整段重新跑一次推理或 fine-tune
  • 即使重新推理,模型可能在下一轮又回到错误状态——因为修正没有被持久化到任何”可被检索的事实库”

神经符号系统的处理方式:

def apply_user_correction(memory: SpatialMemory, correction: UserStatement):
    """处理形如 '钥匙我拿走了' 这种修正"""
    target = memory.find_object(correction.subject)
    target.state = "missing"  # 或者用户明示的新位置
    target.belief = 0.99      # 用户陈述视为高可信观测
    target.last_evidence_time = now()
    target.evidence_pointers.append(EvidencePointer(
        type="user_statement",
        content=correction.raw_text,
        timestamp=now(),
    ))
    memory.commit(target)

这段代码不复杂——但它的存在本身就是关键。神经符号系统给”用户修正”提供了一等公民的接口;全隐式系统则只能把它当作 prompt 里又一行 token。

在线更新和局部修正能力是空间记忆”可生产化”的分水岭。没有这个能力,每一个用户反馈都只能等下一轮训练——这意味着你的系统学不到用户的纠错,只能依赖人工标注重新训练。

3.3 维度 3:不确定性的稳定校准

问题:系统报告”钥匙在抽屉里,置信度 92%“——这个 92% 可信吗?

全隐式系统通常有两种”不确定性”:

  • 模型本身输出的概率(softmax):在很多任务上和真实正确率脱节,需要显式 calibration(temperature scaling 等)
  • prompt 让模型自报置信度:“你有多确信?“——模型给的数字往往是表演性的,没有真实校准基础

神经符号系统的不确定性来自:

  • 每个 ObjectRecord 有显式 P(state)
  • 每次更新都有 likelihood 模型作为基础(sensor model / 容器关闭后的 belief protection)
  • 时间衰减有显式 τ\tau
  • 可以在系统级做 calibration——把模型报告的 92% 和长期统计上的实际正确率对齐

更关键的是 temporal-stratified calibration

“刚观测过 5 秒的对象”和”3 天没观测过的对象”的置信度,应该用不同的 calibration 曲线评估。把这两类样本混在一起做整体校准是无意义的。

全隐式系统几乎做不到这件事——因为它没有”距上次观测多久”这个显式变量。神经符号系统天然支持——time_since_last_observation 是 ObjectRecord 的一个字段,可以直接做 stratified calibration。

第 7 章会把这件事变成评测体系的核心。

3.4 维度 4:跨会话与跨设备稳定性

问题:系统重启 / 用户换设备 / 多机协作——状态层会不会崩?

全隐式系统的失败模式:

  • hth_t 在内存里。重启就丢了。
  • 即使把 hth_t 落盘,恢复后的 h0=htsavedh_0 = h_t^{\text{saved}},但模型权重在两次会话间可能不完全一致(小版本升级、多设备权重略有差异)——会导致语义漂移
  • 多设备情况下,每个设备一份独立的 hidden state——没有合并机制

神经符号系统的处理:

  • 状态是结构化的(JSON / 图数据库 / 向量库),落盘后语义稳定
  • 跨设备时可以做对象级合并:device A 看到的 ObjectRecord 和 device B 的合并,按时间戳和置信度做加权
  • 跨会话恢复时,第 4 章的”先对齐再差分”流程可以自然套用

这件事的工程含义是:生产环境的空间记忆系统几乎必须是结构化的——因为生产环境一定会涉及重启、升级、多设备、协作。隐式状态在这些情境下天然不稳定。

3.5 维度 5:与现有 SLAM / 高精地图栈的互通

问题:你的系统不是孤岛——它要和 SLAM、IMU、高精地图、第三方感知模块协作。两条路线的互通成本不一样。

全隐式路线的接口:

  • 输入:图像 / 视频 / 文本——容易接
  • 输出:自然语言描述 / 隐式 latent——难接到下游决策模块

神经符号路线的接口:

  • 输入:结构化观测(同样可以接图像,但要先经过认知层结构化)
  • 输出:结构化状态(ObjectRecord / RelationGraph)——和 SLAM 的子地图、Lanelet2 的车道、ROS 的 tf2 坐标系等都能直接对接

工业界的现实是:你不可能从零搭起整个感知栈,必须复用现有的 SLAM、高精地图、3D occupancy 等模块。神经符号路线天然兼容这些模块的输出格式(点云、bbox、lane line、object id);全隐式路线则要把这些结构化信号”硬塞”进 token 流——既低效又损失结构信息。

4. NeRF / 3DGS 不等于空间智能

讲完两大范式的整体对照,必须单独花一节澄清一个最常见的误解:

「我们用 NeRF / 3DGS 做了高保真重建——所以我们做了空间智能。」

这句话在过去两年的产业宣传里反复出现,但从空间记忆的视角看,它几乎是错的。这一节展开为什么。

4.1 NeRF / 3DGS 真正解决的是什么

NeRF 和 3D Gaussian Splatting 的核心目标是新视角合成 (novel view synthesis)

  • 给一组带姿态的图像
  • 学一个隐式(NeRF)或显式(3DGS)的三维表示
  • 从该表示中可以渲染出任意新视角的逼真图像

这件事在虚拟制作、文化遗产数字化、3D 内容生成、商品展示、虚拟旅游等领域有实实在在的价值。它的核心能力是”让一个静态场景被任意视角观看”。

但这件事和”空间智能”是两个不同的能力维度——它们的目标函数、输出形态、可用查询都根本不同。

4.2 一份对照表

维度NeRF / 3DGS(高保真重建)空间记忆(认知底座)
目标新视角合成跨时间状态维护
输出像素 / 点 / 高斯椭球ObjectRecord + RelationGraph + 置信度 + 证据
时间观静态(或基于训练数据快照)动态、可更新、可衰减
对象身份没有(场景是个连续函数)一等公民(每个对象有 ID)
容器关系不可表达可表达(在抽屉里 / 在书架上)
置信度衰减没有(重建一旦做出就是”看起来都是真的”)显式(每个对象有时间衰减 τ\tau
跨会话更新重训或局部 fine-tune(成本高)增量更新(修改 ObjectRecord)
可解释回答不能能(每个回答带证据指针)
隐私默认保存大量原始数据默认只存指针 / 摘要

把这张表盯着看 30 秒:你会发现 NeRF / 3DGS 在空间记忆需要的每一个维度上都不直接提供能力。它解决的是”这个静态场景从另一个角度看起来怎样”——而空间记忆要解决的是”这个对象现在在哪里、为什么这么相信、上次校准什么时候”。

4.3 NeRF / 3DGS 在系统里的正确位置

这不是说 NeRF / 3DGS 没有价值——而是它们的工程位置应该是可视化旁路特定查询的高保真后端,不是状态层主体:

应用层 ─────────► Memory 层(结构化空间记忆)

                       │ 大多数查询打到这里

                       └────► (可选) 高保真渲染后端
                              - 用 NeRF / 3DGS 重建场景
                              - 当用户需要 "看起来什么样" 时调用
                              - 或者用作 GSMem 这种对象级 splatting

这种分工的关键是:

  • Memory 层负责”是什么、在哪、有多确定”
  • NeRF / 3DGS 后端负责”看起来怎么样”
  • 两者通过对象 ID / 区域 ID 桥接

4.4 GSMem:一个值得参考的混合路线

GSMem [40] 是这两年值得单独提一嘴的工作——它把 3DGS 用作持久空间记忆的载体,并在其上叠加对象级场景图和语义检索层:

  • 基底:3DGS 提供一份连续、高保真的场景重建
  • 结构层:在 3DGS 之上叠加对象级场景图(每个对象有 ID、bbox、关系)
  • 查询层:通过场景图做对象级检索,然后用 3DGS 做”空间回放”——即从一个之前没去过的视角重新观察对象

GSMem 的核心创新点其实是:post-hoc re-observation from memory——从记忆里”重新看一遍”过去的某个区域,能解决”初次观测时漏检”的问题。

但 GSMem 的存在恰恰证明了我们这一节的论点:

  • 3DGS 单独不够——必须叠场景图、对象层、语义检索层才能服务真实的空间记忆查询
  • 场景图单独够吗——不够,3DGS 提供的”高保真回放”在某些任务上确实是新的能力维度
  • 混合才是答案——这正是神经符号路线的精神:神经模型负责高维 / 连续 / 高保真部分,结构化表示负责对象级 / 关系级 / 跨时间部分

GSMem 的方法论价值在于:它把”NeRF / 3DGS 是空间记忆的什么”这件事想清楚了——它是记忆的一种”重新可视化”载体,不是记忆主体。

5. 神经符号路线的工程开销与对策

神经符号路线的好处前面已经说得很清楚。但工程师的真实关心通常是另一面:这条路有多复杂?维护成本多高?

这一节给出几条具体的对策——它们不是”消除复杂度”,是把复杂度切到可承担的形态

5.1 复杂度来源 1:感知和认知的接口要稳

神经符号系统的最大风险是感知层和认知层的接口不稳定——感知层吐出来的对象 ID 跨帧不稳定、关系归属噪声大,会让记忆层的状态完全乱掉。

对策

  • 多帧融合再进入记忆层:单帧检测一旦不稳定,就用 N 帧投票 / 卡尔曼滤波 / 跟踪算法做融合,只把跨帧稳定的结果送到记忆层
  • “transient → stable” 的双状态机制:第 4 章已经讲过——新出现的对象先进 transient 池,多次确认后才升级到 stable 池
  • 保守的关系推断:当置信度低于阈值时,宁可不更新关系,也不要写入错误关系

5.2 复杂度来源 2:图操作的工程成本

动态场景图的更新涉及大量图操作——添加节点、修改边、删除子图、版本化。这些操作如果用普通的内存图库实现,性能很容易成为瓶颈。

对策

  • 用专门的图数据库(Neo4j / dgraph / TigerGraph)承接长期记忆
  • 用内存 KV + 对象索引承接短时工作记忆
  • 把”事件流”和”状态视图”分开——事件流(ObservationLog)可以 append-only 写入,状态视图(ObjectRecord)按需重建。这套 CQRS 模式在 SLAM、大规模时序数据库里都验证过

5.3 复杂度来源 3:测试和回归非常麻烦

神经符号系统的测试不像端到端模型那样可以”跑一个 benchmark 看分数”——它的每一层都需要单独测试,集成行为还需要”给定观测序列 → 预期状态变化”的端到端测试。

对策

  • 每一层独立测试:感知层用 detection benchmark;认知层用关系标注数据集;记忆层用合成观测序列做单元测试
  • 场景化的端到端测试:构造若干典型场景(用户放钥匙到抽屉、用户重新进入房间、用户告诉系统”我把它拿走了”),对每个场景定义”预期内部状态轨迹”
  • 回归测试自动化:每次代码变更跑一遍场景化测试,检查每一步状态是否如预期变化

第 7 章会把这套场景化测试体系做成评测的一部分。

5.4 复杂度的真实价格

神经符号系统的复杂度比全隐式系统高,这是事实。但这个复杂度的”价格”应该被诚实评估:

  • 它换来了可解释——这在监管/安全/医疗场景里是硬性要求
  • 它换来了可局部更新——这是产品体验里”用户能纠正系统”的基础
  • 它换来了可长期跑——重启不丢状态、跨设备协作、跨会话稳定
  • 它换来了可与现有栈互通——SLAM / 高精地图 / ROS / Unity 都能接

对真正要”进入物理世界长期工作”的系统而言,这些不是”加分项”,是生存条件。复杂度是为生存条件付的工程税。

6. 一份范式选型 Cheat Sheet

把本章铺开的所有内容压缩成一张可以贴在白板上的选型表:

你需要的能力 / 现实约束倾向选择
任务时长 ≤ 几分钟、可重试全隐式可以试
任务时长 ≥ 几小时、跨会话神经符号
必须给出可审计回答神经符号
用户要能直接纠正系统神经符号
重启 / 跨设备 / 多机协作神经符号
已有 SLAM / 高精地图栈要互通神经符号
任务空间纯文本 / 纯视频 / 仿真全隐式可以试
任务里”看起来怎么样”很重要(XR / 数字孪生)神经符号主体 + NeRF / 3DGS 旁路
主要做仿真训练 / 数据生成生成式 WM 路线
高保真重建本身就是产品NeRF / 3DGS(但不要叫它空间智能)

如果你对照下来发现绝大多数行落在右列——这就是为什么真实的空间记忆系统几乎一定走神经符号路线,或者以神经符号为主体的混合路线。

7. 章节小结

本章核心结论:

  1. 两条范式的差距不是”哪条更优雅”,是”哪条更贴近问题本身的结构”。空间记忆要解决的问题——长时序、跨会话、可审计、可局部更新——和神经符号的能力天然契合,和全隐式的能力存在结构性 mismatch。
  2. 5 个具体维度的真实差距:证据链、在线更新、不确定性校准、跨会话稳定、与现有栈互通——每一项全隐式都不是”暂时不够好”,是结构上做不到。
  3. NeRF / 3DGS 不等于空间智能——它们解决的是”看起来怎么样”,不是”是什么、在哪、有多确定”。它们应该作为可视化旁路或高保真后端,不是状态层主体。
  4. GSMem 是混合路线的现实样本——它把 3DGS 作为持久回放载体,叠加对象级场景图和语义检索层。它的方法论价值在于把”3DGS 在系统里的正确位置”想清楚了。
  5. 神经符号路线的工程复杂度是真的,但可以被切到可承担形态——多帧融合、transient/stable 双池、CQRS 模式、场景化端到端测试是几条已经被反复验证的对策。
  6. 复杂度是生存税——可解释、可局部更新、可长期跑、可与现有栈互通——这些不是奢侈品,是真实生产环境的硬约束。
  7. 下一章预告:把这一章建立的”神经符号空间记忆”放进评测体系——四类基准的实际形态、负观测 / temporal-stratified calibration 为什么必须独立度量、Goodhart 陷阱与证据可回溯评测怎么设计。

思考题

  1. 把第 3 节的 5 个维度套到你目前的系统:每一项你处于哪一边?哪一项是你最该补上的——同时也是你”突然换不动”的最大原因?
  2. 如果你现在用了 NeRF / 3DGS,重新审视一次:它在你的系统里承担什么角色?是状态层主体,还是可视化旁路?如果是前者,你的系统大概率有第 4 节里那张对照表上的盲区。
  3. GSMem 这种”3DGS + 场景图”的混合路线,能不能套到你的产品上?关键问题是:你的应用是否真的需要”高保真重新观察”?如果不需要,神经符号纯结构方案就够了。
  4. 神经符号系统的工程复杂度让团队心里发怵是正常的。挑出第 5 节的三条对策(多帧融合 / 双状态机 / CQRS)里你最容易落地的一条,作为下一个 sprint 的目标——这往往是从”原型”到”生产”的最低成本一跃。

下一章我们正式进入空间记忆的评测体系——把现有 benchmark 测到了什么 / 漏掉了什么说清楚,并给出一组贯穿全章的评测原则:负观测必须独立测、calibration 必须按时间分层、benchmark 不是终点、证据回溯是最终判据。