第5章 世界模型的 M 层——从 Ha-Schmidhuber 到结构化空间记忆
把第 4 章建立的三层架构放进 World Model 的视角对照——Ha-Schmidhuber 经典 V/M/C 架构里 M 层的角色与边界、Genie 这一波生成式世界模型暴露的盲点、为什么 latent dynamics 无法替代结构化对象化的空间记忆
1. 一个不得不先澄清的概念
最近一两年,「世界模型 (World Model)」这个词在学术圈和产业圈都被用得很泛——视频生成、机器人、自动驾驶、游戏开发、AR/VR、Agent 仿真、训练环境……只要和”世界”沾边的工作,几乎都会自称是世界模型。这种泛用让概念变得难用:当甲方说”我们要做世界模型”时,乙方很难判断他指的是哪种系统。
这一章不打算卷入”什么才算真正的世界模型”的定义之争。我们用一个更工程化的策略:先回到 Ha 与 Schmidhuber 在 2018 年提出的最早期、最简洁的 World Model 架构,把它的接口拆清楚;再以这套接口作为坐标系,回答”它和第 4 章建立的三层架构是什么关系”。
这一章要做的事:
以 Ha-Schmidhuber 的 V/M/C 架构作为公共参照,把”世界模型的 M 层”和”空间记忆”的对应关系说清楚——指出哪些事情 latent dynamics 能做、哪些做不到,以及把空间记忆描述为”M 层的对象化、证据化、可查询化的工程扩展”。
2. Ha-Schmidhuber 的经典架构:V / M / C
2.1 三个组件 + 一个核心想法
Ha 与 Schmidhuber 2018 年的 World Models [73] 提出了一种极简的 RL 智能体架构:
- V (Vision):用 VAE 把高维视觉输入压缩为低维 latent code
- M (Memory):用 RNN(具体是 MDN-RNN)根据当前 、动作 和 hidden state 预测下一时刻的 latent state
- C (Controller):在 和 之上做策略选择
放进一张时序图:
o_t o_{t+1}
│ │
▼ ▼
┌───┐ ┌───┐
│ V │ │ V │
└─┬─┘ └─┬─┘
│ z_t │ z_{t+1}
▼ ▼
┌───┐ h_t h_{t+1} ┌───┐
│ M │ ─────────────────────────► │ M │
└─┬─┘ └───┘
│
▼
┌───┐ a_t
│ C │ ──────► environment
└───┘
这个架构最有启发性的地方有两个:
- 它把”看见”、“记住”、“做”显式地分给了三个组件 —— 不让任何一个组件兼职
- M 既负责对历史的压缩,也负责对未来的预测 —— 它用 hidden state 同时承担”我从过去到现在见过什么”和”接下来可能发生什么”两件事
2.2 M 层在 Ha-Schmidhuber 架构里的真正角色
很多人初读 World Model 这篇论文时,会把焦点放在 M 层的”做梦”能力——M 可以脱离环境,在自身想象中训练 C。这确实是论文最 fancy 的实验。但从工程视角看,M 层的核心价值不在”做梦”本身,而在它在感知和决策之间架起了一个内部状态层。
具体说,M 层做了三件事:
| M 层职责 | 具体形态 | 工程意义 |
|---|---|---|
| 压缩历史 | hidden state 是过去观测和动作的总结 | 决策不再只依赖当前帧 |
| 预测未来 | $p(z_{t+1} | z_t, a_t, h_t)$ 给出下一步分布 |
| 维护内部世界 | 在没有观测时也能演化 | 部分可观察情况下提供状态续接 |
这三件事单独看都不复杂,但放在一起就是”世界模型”的核心语义:在感知和动作之间,存在一个被内部维护的世界状态。这正是第 4 章建立的 Memory 层在 Ha-Schmidhuber 框架里的早期抽象。
3. 从 V/M/C 看本模块第 4 章的架构
3.1 三层结构的对照
把 Ha-Schmidhuber 的 V/M/C 和本模块第 4 章的 Perception/Cognition/Memory 放一起:
| 层次 | Ha-Schmidhuber | 本模块第 4 章 |
|---|---|---|
| 1 | V (VAE 压缩为 ) | Perception + Cognition(先识别再结构化) |
| 2 | M (RNN 维护 ,预测 ) | Memory(维护对象信念、容器状态、变化历史) |
| 3 | C (策略) | 应用层(规划 / 决策 / 对话 / UI) |
注意第 2 行——这是这一章的核心。M 层和 Memory 层在功能位置上是同一个槽位:它们都位于”看”和”做”之间,承担跨时间状态维护和预测的角色。
但这不等于它们是同一个东西。
3.2 M 层:隐式 latent dynamics
经典 V/M/C 架构里的 M 层是一个隐式 latent dynamics model:
- 状态:一个高维 hidden state vector ,无法被人类直接读懂
- 更新:通过 RNN 的 forward pass 完成,更新规则被编码在权重里
- 接口:只能通过”再 forward 一步”来查询——你没有
last_seen(obj)这样的显式接口 - 不确定性:用 MDN(mixture density network)输出 的分布,但没有为不同对象、不同事件分别维护置信度
- 证据:完全不存在——你无法回答”为什么相信这件事”
这套实现在 RL 任务里表现很好——尤其是在感知输入分布相对稳定、任务步长不太长的情境下。但放到第 1 章列出的四类查询(last-seen / containment / change / state-audit)面前,它会立刻露出短板:
- last-seen:M 层不知道哪个对象上一次出现在哪个位置——它只知道 是什么
- containment:M 层没有”容器”的概念——只有 latent 里某些维度可能隐式编码了”这个东西看不见了”
- change:M 层不会主动给你一份”昨天到今天的差分”——你必须从两个 反推
- state-audit:M 层无法被时间索引——你不能问”昨天 8 点的 是什么”
3.3 Memory 层:结构化、对象化、证据化的状态
第 4 章建立的 Memory 层和 M 层的对照:
| 维度 | 经典 M 层 | 第 4 章 Memory 层 |
|---|---|---|
| 状态形态 | 高维隐向量 | 结构化 ObjectRecord / RelationGraph |
| 更新规则 | RNN forward | Bayesian update / 容器推理 / 时间衰减 |
| 接口 | 只能 forward + decode | last_seen / is_in / changes / state_at |
| 不确定性 | 的整体分布 | 每个对象、每条关系独立的 |
| 证据 | 无 | evidence_pointer 链回原始观测 |
| 时间索引 | 隐式(在 里) | 显式(每条记录带时间戳) |
| 可解释 | 黑箱 | 白箱(每个查询都能回溯) |
| 局部更新 | 无(只能整段重训) | 单对象级(“这个对象状态改了”) |
简单说:M 层是 Memory 层在权重里的早期抽象形态;本模块第 4 章的 Memory 层是 M 层在结构层面的工程化扩展。
这个对照的工程含义不是”M 层不行”——它在它擅长的任务(短任务、感知稳定、实时控制)里依然有价值——而是:当任务跨过几小时、几个房间、几次重启时,M 层这种”全部塞进 latent”的策略会失效。 此时必须把状态从 latent 里搬出来,落到对象级、关系级、证据级的结构化表示上。
4. 现代生成式世界模型:Genie 这一波的盲点
2024-2026 年这一波”世界模型”热潮,核心驱动力其实是视频生成模型——Genie [14]、Cambrian-S [15]、各种 driving world model [74]、Genie 2 / 3 等等。这些模型把生成质量推到了惊人的水准,让人产生”世界模型问题已经在被解决”的错觉。
这一节我们要说清楚:生成质量提升 ≠ 世界状态维护能力提升。前者是”对世界的影子建模得更好”,后者是”对世界的状态维护得更好”——这是两件事。
4.1 生成式世界模型的真正能力
生成式世界模型确实有真实价值:
- 数据生成:合成大量训练数据,覆盖 long-tail 场景
- 规划仿真:在生成的虚拟环境里做策略评估
- 梦境训练:类似 Ha-Schmidhuber 的”做梦”,用模型仿真 rollout 来训 RL 策略
WorldArena [80] 这样的新一代 benchmark 已经把世界模型评测推向”下游功能效用”——不再只看视频质量,也看它能不能服务规划、能不能作为 policy evaluator。这是好事。
4.2 三个被掩盖的局限
但即便是表现最好的生成式世界模型,在第 1 章列出的四类查询上仍然不能直接回答:
1. 没有显式对象身份
生成模型会”画”出连贯的对象——这一帧的钥匙到下一帧仍然是钥匙——但它不维护对象身份的离散标识。如果用户问”这是同一把钥匙吗”,模型只能基于视觉相似度答,没有跨场景、跨时间的稳定 ID。
2. 没有显式置信度衰减
生成模型默认每一帧都有完整画面——它不会告诉你”这一帧里钥匙的存在我只有 30% 把握”。它要么生成出来,要么不生成。这种”全或无”的画面不能直接服务于决策——决策需要带置信度的信念。
3. 没有可被局部更新的状态
生成模型生成的是”画面流”,不是”状态结构”。如果用户告诉系统”钥匙我已经拿走了”,模型没法把这条事实”插入”到它的内部状态——只能 fine-tune 或在 prompt 里追加。
4.3 视觉保真度的陷阱
最危险的陷阱是把”视觉保真度”等同于”空间智能”。WorldArena 的关键发现 [80] 直接戳破了这件事:
生成视频在视觉质量、运动质量、3D 准确性等维度的提升,并不一定转化为下游 embodied 任务的能力提升。
这件事和我们在第 6 章会展开的”NeRF / 3DGS 不等于空间智能”是同一个观察的两个版本——前者是关于动态生成模型,后者是关于静态高保真重建——但本质相同:它们都是”对世界影子的高质量建模”,不是”对世界状态的可维护建模”。
5. 为什么 latent dynamics 不够:四件具体的事
把上面三节的讨论收拢,可以列出”latent dynamics 解不了 / 解不好”的四件具体的事。这四件事会在第 7 章变成评测设计的核心,第 8 章变成工程落地的核心。
5.1 第 1 件:跨小时尺度的容器推理
容器推理是空间记忆的 litmus test(第 4 章已经详细展开)。latent dynamics 处理这件事的失败模式:
- 看到螺丝刀放进抽屉 → latent 里某些维度编码了这件事
- 抽屉关上 → 后续观测里都看不到螺丝刀
- 经过几小时连续 forward → hidden state 渐渐”忘掉”了 看到的事
- 用户问”螺丝刀现在在哪” → latent 里已经没有强信号
这件事不是 RNN 容量小——它是结构问题。RNN 没有”容器”的离散概念,没有”事件持久化”的机制,自然无法把”放进容器后状态被保护”这件事编码进 forward pass。
要做对,必须显式建模 ContainerState 和容器关闭后的”belief protection”——这就是第 4 章给出的做法。
5.2 第 2 件:跨会话的状态恢复
应用场景:用户关机睡觉,第二天重启系统。
- 经典 M 层: 在关机时丢失。重启后 重新初始化,过去的记忆全没了。
- “保存 到磁盘”的折中方案:可行,但 是个不可解释的 latent vector——它不能被检验、不能被局部修正、不能被人类读取。如果昨天 里有错误状态,今天它会带着这个错误继续累积。
要做对,状态必须以结构化、可读、可修正的方式持久化——也就是第 4 章的 ObjectRecord + RelationGraph + EvidenceIndex。
5.3 第 3 件:负观测的处理
用户问”我护照在哪?最近三次主动扫描书桌都没看到。”
- 经典 M 层:每次”扫描书桌没看到”是一次正常 forward pass,但模型不知道要把这件事当成对”在书桌上”信念的反证来处理。它只是更新 而已。
- 结果:模型可能仍然回答”在书桌上”——因为之前的 forward pass 里这个状态被编码过,且 RNN 没有显式机制去主动衰减它。
要做对,必须把”负观测”作为一类独立的更新事件,并区分”应该看到却没看到”和”本来就看不到”两种情况——这正是第 4.3 节情形 2 的工程化。
5.4 第 4 件:变化的可解释回答
用户问”昨晚到今早玄关有什么变化?”
- 经典 M 层:你能拿到 和 两个 latent vector,但它们的差对人类毫无意义。
- 你可以训一个 decoder 把差解码成自然语言——但这个解码本质上是”再生成一段描述”,不是”基于结构化变化的可追溯报告”。它可能漏掉真实变化、可能编造不存在的变化。
要做对,变化必须基于两个时刻的 ObjectRecord 集合做集合差分,并把每条差分挂到具体的 evidence_pointer 上——这才能让回答可被检验。
6. 新一波”M 层结构化”的尝试
学界已经在多个方向上做过把 M 层”结构化”的尝试。这一节简要梳理几条代表性路径,让读者看清”M 层结构化”不是凭空发明的工程偏好,而是社区共识在演化的方向。
6.1 路径 A:在 latent space 里嵌入对象 slot
代表工作如 SLATE / Slot Attention 系列、对象中心的 video prediction、Genesis 等:
- 让 latent 自动分解成”slots”,每个 slot 对应一个对象
- 在 dynamics 阶段,每个 slot 独立演化,slot 之间通过注意力交互
这条路保留了 latent 的端到端训练优势,但给了 M 层”对象级别”的结构。它的缺点:slot 仍然是 latent,没有真实身份、没有证据链;对长程容器推理依然困难。
6.2 路径 B:把 M 层换成显式场景图
代表工作:Hydra [10]、Pandora [65]、SceneLLM [42]、3DLLM-Mem [46]:
- 直接把 M 层的状态用动态场景图表示
- 节点是对象 / 区域 / 容器,边是空间关系 / 容器关系 / 时间关系
- 更新通过图操作完成(添加节点、修改边、删除边、版本化)
这条路就是第 4 章的工程实现路径。它的优点:可读、可检验、可局部更新、可证据化。缺点:场景图的构建需要可靠的对象身份识别和关系推断——这要求感知和认知层都做得相当扎实。
6.3 路径 C:脑启发的双系统记忆
代表工作:MemoryVLA [48]、RoboMemory [53]、BSC-Nav [57]、Hippoformer [62]:
- 把记忆分成”工作记忆”和”长期记忆”两部分
- 工作记忆类似经典 M 层的 latent dynamics,处理短时序内的连续状态
- 长期记忆类似结构化场景图,处理跨会话、跨场景的稳定知识
- 两套记忆通过显式的”巩固 (consolidation)“机制连接
这条路是路径 A 和路径 B 的混合。它接受了”短时序用 latent、长时序用结构”的工程现实,并把巩固机制本身作为可被设计的模块。
6.4 三条路径的工程取舍
把三条路径放在同一张表里:
| 维度 | A: latent + slot | B: 显式场景图 | C: 双系统记忆 |
|---|---|---|---|
| 端到端可训性 | 好 | 困难 | 中等 |
| 长时序稳定性 | 一般 | 好 | 好 |
| 容器推理 | 一般 | 好 | 好 |
| 跨会话恢复 | 困难 | 自然 | 自然 |
| 可解释 / 证据链 | 弱 | 强 | 强(长期部分) |
| 工程复杂度 | 中 | 高 | 高 |
| 当前最适合的领域 | 短任务、连续控制 | 长任务、需要审计 | 综合长短任务 |
第 6 章我们会更深入地展开”全隐式端到端 vs 神经符号混合”这条主线——在那里你会看到,A 路径属于”隐式优化派”,B 路径属于”神经符号派”,C 路径是两者的妥协。
7. 把”世界模型”和”空间记忆”放回正确的位置
经过这一章的对照,我们终于可以给出一组工程上可用的、避免概念混乱的判定原则。
7.1 一张概念位置图
┌───────────────────────────┐
│ 生成式世界模型 │
│ (Genie / 视频 WM 等) │
│ │
│ 核心输出:高质量未来帧 │
│ 适合:仿真训练 / 数据生成│
└─────────────┬─────────────┘
│
│ "做梦/仿真" 接口
│
┌──────────────┐ ▼
│ Application │ ┌─────────────────────────────┐
│ 规划/决策 │ ◄ │ M 层 / Memory 层 │
└──────────────┘ │ - 隐式:latent dynamics │
▲ │ - 显式:结构化空间记忆 │
│ │ - 综合:双系统 │
└───────────┤ │
│ 核心输出:当前世界状态 │
│ 接口:last-seen/in/change │
└──────────────┬──────────────┘
▲
│
┌───────────────┴───────────────┐
│ Perception / Cognition │
│ (从感知到结构化观测) │
└───────────────────────────────┘
这张图传达的核心信息:
- 生成式世界模型主要服务的是”做梦/仿真”接口——它能给规划器一个仿真环境,但不直接维护当前世界状态
- M 层 / Memory 层才是当前世界状态的所在地——应用层的查询主要打到这里
- 两者是互补关系,不是替代关系——一个工业级系统可能两者都有,分工清晰
7.2 三条判定原则
把这套对照浓缩成三条可以挂在工程评审上的判定原则:
原则 1:世界模型 ≠ 空间记忆
如果你的需求是”维护当前对象级世界状态、支持 last-seen/containment/change/state-audit 查询”,不要把 Genie / 视频 WM 这一类生成模型直接放进系统主链路——它们解决的不是这个问题。这是把”做梦能力”和”记日记能力”混为一谈。
原则 2:M 层是空间记忆的早期抽象,不是终点
如果你的系统目前的状态层是一个 RNN 或 Transformer 的 hidden state,请承认它在长时序、跨会话、容器推理这几件事上的工程上限——不要试图通过”再加几层 attention""扩大 hidden state”来把它撑下去。这条路的边际收益会断崖式下降。
原则 3:双系统记忆是当前最现实的工程方案
把”短时连续状态”留给 latent dynamics(M 层 / 工作记忆),把”长时结构状态”放给显式场景图(Memory 层 / 长期记忆),中间通过明确的巩固机制连接——这是当前能让一个空间智能系统长期跑得动的最现实工程路径。
8. 章节小结
本章核心结论:
- Ha-Schmidhuber 的 V/M/C 架构提供了世界模型的最简公共参照——M 层在感知和决策之间维护内部世界状态。这个槽位本身是对的,本模块的 Memory 层和它在功能位置上是同一个。
- M 层是空间记忆的早期抽象形态——latent dynamics 解决了”在感知和决策间架一层内部状态”这件事,但它的接口、不确定性表达、证据链都不够支撑物理世界中的长程任务。
- 生成式世界模型(Genie / 视频 WM)和空间记忆是两个不同槽位的系统——前者服务”做梦/仿真”,后者服务”当前状态查询”。视觉保真度的提升不直接转化为状态维护能力——WorldArena 的核心发现就是这一点。
- latent dynamics 解不了的四件事:跨小时容器推理、跨会话状态恢复、负观测处理、变化的可解释回答。这四件事都需要把状态从 latent 里搬出来,落到对象级、结构级、证据级的显式表示。
- 三条结构化 M 层的路径:latent + slot(A)、显式场景图(B)、双系统记忆(C)。当前最现实的工程方案是 C——短时序 latent + 长时序结构,通过巩固机制连接。
- 三条判定原则:世界模型 ≠ 空间记忆 / M 层是早期抽象不是终点 / 双系统记忆是现实工程路径——可以直接挂在系统设计评审上。
- 下一章预告:我们将沿着这一章建立的”M 层 vs 空间记忆”对照,进入更具体的”全隐式端到端 vs 神经符号混合”工程范式之争——以及这个对比下”NeRF / 3DGS 不等于空间智能”这一观察的深层意义。
思考题
- 在你目前的系统里,“世界模型 / 空间记忆”这两个角色是分清的,还是被一个组件兼任的?兼任的情况下,最容易在哪一类查询(last-seen / containment / change / state-audit)上出问题?
- 把第 5 节的”latent dynamics 解不了的四件事”逐项套到你的系统:哪些已经显式处理了?哪些还是”latent 自己应该会处理”的状态?后者通常就是”不可解释长程崩溃”的根源。
- 你的系统里有没有”双系统记忆”的雏形?比如一个”短时连续 hidden state”+ 一个”长期结构化记忆”?如果有,巩固机制是怎么设计的?如果没有,硬塞一个进去的最小代价是什么?
- 如果让你重新审视一份”我们要做世界模型”的项目方案——只用本章三条判定原则——你会问对方哪三个问题来确定他们到底要做哪一种系统?
下一章我们正式进入工程范式的对比:全隐式端到端路线 vs 神经符号混合路线,并展开”NeRF / 3DGS 不等于空间智能”这一观察的真实含义——以及 GSMem 这种”3DGS + 场景图”的混合路线给我们的工程启示。