跳转至

JEPA 与空间表征

世界模型不一定要预测像素。很多时候,预测“高层表征”或“空间结构”更适合决策,因为智能体关心的是物体、关系、可达性和动作后果。


1. 为什么不总是预测像素?

同一个未来可能有很多合理细节:

  • 树叶怎么抖动不影响机器人走路。
  • 物体纹理的微小变化不影响抓取。
  • 背景人物的脸部细节不影响自动驾驶避让。

如果模型被迫预测每个像素,就会把大量能力花在无关细节上。JEPA 和空间表征路线都试图绕开这个问题。


2. JEPA:预测 embedding,而不是生成图像

JEPA(Joint Embedding Predictive Architecture)的核心是:

上下文观测 -> 编码成 embedding -> 预测目标区域/未来帧的 embedding

不是:

上下文观测 -> 生成完整像素

2.1 基本结构

graph LR
    A[上下文 x] --> B[Context Encoder]
    C[目标 y] --> D[Target Encoder]
    B --> E[Predictor]
    E --> F[预测目标 embedding]
    D --> G[真实目标 embedding]
    F --> H[表征预测损失]
    G --> H

训练目标:

\[ \mathcal{L} = \| q_\theta(e(x)) - e(y) \| \]

其中 \(e(\cdot)\) 是编码器,\(q_\theta\) 是预测器。

2.2 JEPA 和自编码器的区别

方法 输入 目标 学到什么
Autoencoder 图像 重建同一张图像 尽量保留像素细节
MAE 遮挡图像 重建被遮挡 patch 的像素 学视觉结构和纹理
JEPA 上下文区域 预测目标区域 embedding 学高层语义和结构

JEPA 不要求生成像素,所以它不会被“目标区域具体是什么颜色噪声”牵着走,更关注语义和结构。

2.3 Masking 怎么做?

以图像为例:

原图 patch 序列: [p1, p2, p3, ..., pN]
上下文区域:     可见的一部分 patch
目标区域:       被遮住的一块或多块 patch

模型根据上下文 embedding 预测目标 embedding:

\[ \hat{y}=q_\theta(e_{\text{context}}(x_{\text{visible}})) \]

真实目标 embedding 来自 target encoder:

\[ y=e_{\text{target}}(x_{\text{target}}) \]

损失是:

\[ \mathcal{L}_{\text{JEPA}}=\|\hat{y}-\text{sg}(y)\|_2^2 \]

这里 \(\text{sg}\) 表示 stop-gradient:目标分支不被这条损失直接更新,避免模型用平凡解投机。

2.4 I-JEPA

I-JEPA 从图像中遮掉一部分,让模型根据上下文预测目标区域的表征。它强调语义级预测,而不是像素级补全。

2.5 V-JEPA

V-JEPA 把这种思想扩展到视频,让模型预测未来或被遮挡视频片段的特征。它适合学习运动、外观和物理变化的高层表示。

对于世界模型,V-JEPA 的关键意义是:

不需要预测未来每个像素,只需要预测未来在表征空间里会怎样

这和机器人/智能体决策非常接近,因为决策关心的是“未来是否有障碍、物体是否会移动、目标是否可达”,而不是每个像素的纹理。

2.6 JEPA 适合什么?

适合:

  • 学视觉表征。
  • 学高层物理和语义结构。
  • 作为规划或控制模型的 latent state。

不适合直接做:

  • 高保真视频渲染。
  • 像游戏一样可视化交互世界。
  • 需要检查每个像素细节的场景。

3. 隐空间预测的关键:别塌缩

如果只要求预测 embedding,模型可能学到无意义的常数表示:

所有图片 -> 同一个 embedding
预测永远正确,但什么也没学到

这叫 representation collapse。

常见避免方式:

  • target encoder 使用 stop-gradient 或 EMA。
  • 加方差/协方差正则。
  • 用 masking 策略让模型必须理解语义。
  • 结合价值、动作或物理约束,让表征服务决策。

3.1 为什么会塌缩?

如果 context encoder 和 target encoder 都可以自由更新,最简单的“作弊”方式是:

\[ e(x)=0,\quad q(e(x))=0 \]

这样预测永远正确,但 embedding 没有任何信息。

3.2 Stop-Gradient 的作用

stop-gradient 的意思是:目标 embedding 当成固定目标,不让预测损失直接把它也改掉。

context encoder + predictor:努力靠近 target embedding
target encoder:慢慢更新,提供稳定目标

很多自监督方法都会用类似思想,例如 BYOL、DINO、JEPA。

3.3 JEPA 如何接世界模型?

JEPA 本身主要是表征学习。要变成世界模型,还需要接动作和动力学:

观测 o_t -> JEPA encoder -> z_t
动作 a_t + z_t -> dynamics -> z_{t+1}
预测 z_{t+1} 是否接近未来真实 embedding

训练目标可以写成:

\[ \mathcal{L}=\|f_\theta(z_t,a_t)-\text{sg}(z_{t+1})\|^2 \]

如果没有动作条件,它更像视频表征预测;加上动作条件,才更接近可用于决策的世界模型。


4. 显式 3D 表征

世界模型也可以显式维护三维空间:

表征 含义 优点 缺点
点云 三维点集合 简单、直接 稀疏、拓扑不连续
Mesh 顶点和面片 工程可用、可编辑 重建难,拓扑复杂
Voxel/Occupancy 空间格子是否被占用 适合碰撞和路径规划 分辨率高时成本大
NeRF 用神经网络表示辐射场 视角合成好 动态和编辑较难
3D Gaussian Splatting 用高斯表示场景并快速渲染 渲染快、质量高 动态交互和物理仍需额外建模

4.1 3D 表征为什么重要?

机器人和自动驾驶必须处理:

  • 物体在空间中的位置。
  • 遮挡后物体仍然存在。
  • 可通行区域和碰撞。
  • 从不同视角看到同一个世界。

显式 3D 表征天然有几何一致性。

4.2 Occupancy:适合规划和碰撞

Occupancy 把空间离散成格子,预测每个格子是否被占用:

\[ O(x,y,z)\in[0,1] \]

机器人导航中常用:

占用概率高 -> 不能走
占用概率低 -> 可以规划路径
未知区域 -> 需要探索或保守避让

它不一定渲染得漂亮,但非常适合碰撞检测和路径规划。

4.3 NeRF:连续场景函数

NeRF 学一个函数:

\[ F_\theta(x,y,z,\mathbf{d})\rightarrow(\sigma,c) \]

输入 3D 位置和观察方向,输出密度 \(\sigma\) 和颜色 \(c\)。通过体渲染得到新视角图像。

优点:

  • 多视角一致。
  • 新视角合成质量好。

限制:

  • 动态场景困难。
  • 交互、接触、物理变化不是天然支持。
  • 训练和渲染成本较高。

4.4 3D Gaussian Splatting

3DGS 用很多 3D 高斯表示场景,每个高斯有:

位置、尺度、旋转、不透明度、颜色/球谐系数

渲染时把这些高斯投影到相机平面并混合。它比 NeRF 更快,适合实时渲染和可视化。

但要变成世界模型,还要回答:

动作后这些 Gaussian 怎么移动、变形、消失或产生?

静态 3D 重建不是完整世界模型,动作条件动力学才是关键。

4.5 但 3D 不是银弹

显式 3D 的问题:

  • 需要多视角、深度或重建约束。
  • 物体交互、材质、形变和接触很难。
  • 决策还需要动作条件动力学,不只是静态重建。
  • 训练和渲染成本较高。

5. 结构化世界模型

除了连续 latent 和 3D 表征,还可以用结构化表示:

物体 A:位置、速度、类别
物体 B:位置、速度、类别
关系:A 在 B 左边、A 支撑 B、A 与 B 接触

常见形式:

  • scene graph
  • object-centric slots
  • graph neural network
  • particle-based dynamics
  • keypoint dynamics

5.1 Object-Centric 表征

object-centric 模型把场景拆成多个对象 slot:

\[ z_t = \{z_t^1,z_t^2,\ldots,z_t^K\} \]

每个 slot 表示一个物体或区域:

slot 1:杯子
slot 2:桌面
slot 3:夹爪
slot 4:盒子

动力学可以写成:

\[ z_{t+1}^i=f_\theta(z_t^i,\{z_t^j\}_{j\ne i},a_t) \]

这样模型能显式处理物体之间的交互,例如“夹爪接触方块后,方块跟随夹爪移动”。

5.2 图网络动力学

把物体看成节点,关系看成边:

节点:物体状态
边:接触、距离、支撑、约束

GNN 更新:

\[ m_{ij}=\phi_e(z_i,z_j,e_{ij}) \]
\[ z_i'=\phi_v(z_i,\sum_j m_{ij}) \]

这适合粒子、刚体、多物体交互等结构清晰的世界。

优点:

  • 可解释。
  • 适合物理关系和组合泛化。
  • 数据效率高。

缺点:

  • 需要可靠地分解物体。
  • 对复杂纹理、流体、形变、开放世界很难。
  • 手工归纳偏置强,通用性可能不足。

6. 怎么选表征?

任务 推荐表征
图像控制入门 autoencoder/RSSM latent
强化学习连续控制 Dreamer/TD-MPC 风格 latent
视觉理解和高层推理 JEPA 表征
机器人抓取和导航 3D/occupancy + latent dynamics
自动驾驶闭环模拟 视频 + 3D/传感器表征
物体交互小环境 object-centric/graph
交互式游戏世界 video world model + latent action

表征选择的原则

表征不需要保留世界的一切,只需要保留“对预测和决策有用”的信息。世界模型的好坏最终要看它能不能帮助智能体行动。


7. 表征学习检查清单

  • 这个表征能预测未来吗?
  • 这个表征是否保留奖励相关信息?
  • 这个表征是否对无关纹理变化鲁棒?
  • 这个表征是否支持动作条件预测?
  • 这个表征是否能长期 rollout 不漂移?
  • 如果表征不可视化,是否有其他指标验证它可用于控制?