第6章 两大范式——全隐式端到端 vs 神经符号混合
把空间记忆的工程实现路径说清——为什么"全隐式端到端"在证据链/在线更新/不确定性校准上有结构性短板;为什么"神经符号混合"是当前更现实的工程路径;展开"NeRF / 3DGS 不等于空间智能"这一观察的真实含义;用 GSMem 做"高保真重建 + 结构化场景图"混合路线的样本
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 | ObjectRecord + 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)
- 时间衰减有显式
- 可以在系统级做 calibration——把模型报告的 92% 和长期统计上的实际正确率对齐
更关键的是 temporal-stratified calibration:
“刚观测过 5 秒的对象”和”3 天没观测过的对象”的置信度,应该用不同的 calibration 曲线评估。把这两类样本混在一起做整体校准是无意义的。
全隐式系统几乎做不到这件事——因为它没有”距上次观测多久”这个显式变量。神经符号系统天然支持——time_since_last_observation 是 ObjectRecord 的一个字段,可以直接做 stratified calibration。
第 7 章会把这件事变成评测体系的核心。
3.4 维度 4:跨会话与跨设备稳定性
问题:系统重启 / 用户换设备 / 多机协作——状态层会不会崩?
全隐式系统的失败模式:
- 在内存里。重启就丢了。
- 即使把 落盘,恢复后的 ,但模型权重在两次会话间可能不完全一致(小版本升级、多设备权重略有差异)——会导致语义漂移
- 多设备情况下,每个设备一份独立的 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) |
| 容器关系 | 不可表达 | 可表达(在抽屉里 / 在书架上) |
| 置信度衰减 | 没有(重建一旦做出就是”看起来都是真的”) | 显式(每个对象有时间衰减 ) |
| 跨会话更新 | 重训或局部 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. 章节小结
本章核心结论:
- 两条范式的差距不是”哪条更优雅”,是”哪条更贴近问题本身的结构”。空间记忆要解决的问题——长时序、跨会话、可审计、可局部更新——和神经符号的能力天然契合,和全隐式的能力存在结构性 mismatch。
- 5 个具体维度的真实差距:证据链、在线更新、不确定性校准、跨会话稳定、与现有栈互通——每一项全隐式都不是”暂时不够好”,是结构上做不到。
- NeRF / 3DGS 不等于空间智能——它们解决的是”看起来怎么样”,不是”是什么、在哪、有多确定”。它们应该作为可视化旁路或高保真后端,不是状态层主体。
- GSMem 是混合路线的现实样本——它把 3DGS 作为持久回放载体,叠加对象级场景图和语义检索层。它的方法论价值在于把”3DGS 在系统里的正确位置”想清楚了。
- 神经符号路线的工程复杂度是真的,但可以被切到可承担形态——多帧融合、transient/stable 双池、CQRS 模式、场景化端到端测试是几条已经被反复验证的对策。
- 复杂度是生存税——可解释、可局部更新、可长期跑、可与现有栈互通——这些不是奢侈品,是真实生产环境的硬约束。
- 下一章预告:把这一章建立的”神经符号空间记忆”放进评测体系——四类基准的实际形态、负观测 / temporal-stratified calibration 为什么必须独立度量、Goodhart 陷阱与证据可回溯评测怎么设计。
思考题
- 把第 3 节的 5 个维度套到你目前的系统:每一项你处于哪一边?哪一项是你最该补上的——同时也是你”突然换不动”的最大原因?
- 如果你现在用了 NeRF / 3DGS,重新审视一次:它在你的系统里承担什么角色?是状态层主体,还是可视化旁路?如果是前者,你的系统大概率有第 4 节里那张对照表上的盲区。
- GSMem 这种”3DGS + 场景图”的混合路线,能不能套到你的产品上?关键问题是:你的应用是否真的需要”高保真重新观察”?如果不需要,神经符号纯结构方案就够了。
- 神经符号系统的工程复杂度让团队心里发怵是正常的。挑出第 5 节的三条对策(多帧融合 / 双状态机 / CQRS)里你最容易落地的一条,作为下一个 sprint 的目标——这往往是从”原型”到”生产”的最低成本一跃。
下一章我们正式进入空间记忆的评测体系——把现有 benchmark 测到了什么 / 漏掉了什么说清楚,并给出一组贯穿全章的评测原则:负观测必须独立测、calibration 必须按时间分层、benchmark 不是终点、证据回溯是最终判据。