物理世界模型:真正在做物理理解的工作¶
最后更新: 2026-04-17 | "皇帝新衣"的姐妹篇——有批判也有建设性方案
前言:两类世界模型的根本分歧¶
Kepler vs Newton 世界模型对比(arXiv:2602.06923 Figure 1)

Causal-JEPA 训练架构(arXiv:2602.11389 Figure 1)

V-JEPA 直觉物理评估(arXiv:2502.11831 Figure 1)

PIN-WM 可微物理引擎框架(arXiv:2504.16693 Figure 1)

-
预测型(Sora/Genie/Dreamer):追求视觉逼真
-
理解型(本文聚焦):追求因果可控和守恒性
一、显式物理约束的世界模型¶
PhyDNet (CVPR 2020)¶
双分支:PhyCell (PDE约束) + ConvLSTM (残差)
PhyCell 建模广义线性 PDE,涵盖热方程/波动/平流-扩散,采用预测-校正格式(类卡尔曼滤波)。
实验(vs SOTA):
-
Moving MNIST MSE: 24.4 (vs E3D-LSTM 41.3, 降低41%)
-
Moving MNIST SSIM: 0.947 (vs ConvLSTM 0.707)
-
引用 300+,后续 PastNet (ACM MM 2024) 在 Fourier 域延伸
局限:仅线性 PDE,无法处理接触非线性。
PINNs (Raissi 2019)¶
将 PDE 残差编入损失:L = L_data + L_physics
-
适用正/逆问题
-
为什么没成为主流?维度诅咒 / 需已知PDE / 优化困难 / 比数值方法慢10-100× / 不支持动作输入
Interaction Networks (DeepMind NeurIPS 2016)¶
第一个通用可学习物理引擎:物体=节点,关系=边。奠定"物理=图上消息传递"范式。后续 Visual Interaction Networks (2017) 从像素端到端。
二、物理信息图神经网络¶
GNS (ICML 2020, DeepMind)¶
粒子→图节点,邻近粒子→边,10步消息传递,输出每粒子加速度。
性能:
-
流体/颗粒/多材料混合均有效
-
Geoelements-GNS: 比 MPM 快 5000× (2.5h → 20s)
-
训练 2000 粒子 → 测试扩展至 20000+ (10× 外推)
Dynami-CAL GraphNet (Nature Communications 2025)¶
核心创新:在边局部参考系中精确保证牛顿第三定律
F_ij = -F_ji, τ_ij = -τ_ji
vs GNS:
-
3D颗粒碰撞500步: GNS粒子逸出; Dynami-CAL稳定
-
旋转料斗16000步: GNS早期失稳; Dynami-CAL全程准确
-
封闭系统: GNS出现非物理动能增益; Dynami-CAL精确保持动量
-
仅需 500 训练样本即达强性能
-
测试: 3D颗粒/N体/人体运动(CMU mocap)/蛋白质动力学
其他 (2024-2026)¶
-
SEGNO (NeurIPS 2023): E(3)等变GNN + 牛顿方程
-
Reversible GNS (2025): 可逆网络实现时间双向一致
-
LLM-GNN 物理法则发现 (Nature Comms 2025)
三、可微分物理引擎¶
DiffTaichi (MIT ICLR 2020)¶
源代码变换生成梯度(非反传计算图),10个物理模拟器:弹性体/流体/刚体/布料/台球等。代码比手写CUDA短4.2×,比TensorFlow快188×。
Brax (Google NeurIPS 2021)¶
纯JAX,GPU/TPU并行。单GPU: 每秒百万步。TPU集群: 每秒数亿步。学习算法与环境同设备运行,零CPU↔GPU拷贝。
NVIDIA Newton (2025)¶
NVIDIA + Google DeepMind + Disney 联合,Linux Foundation开源。基于Warp。人形机器人仿真加速70×,灵巧手100×。含MuJoCo-Warp。
MuJoCo MJX¶
闭源(2012) → 开源(2022) → MJX JAX版(2023) → MuJoCo Playground(2025)。支持自动微分。单GPU几分钟完成策略训练。
Drake (MIT)¶
多体动力学,TRI资助。暴露完整稀疏结构/解析梯度。MIT操控课程标准工具。
四、从视频中学习物理的新范式¶
"From Kepler to Newton" (arXiv:2602.06923, 2026)¶
三个归纳偏置打破开普勒陷阱:
-
空间平滑性: 减小词表V=128 → R²从0.86→1.0
-
空间稳定性: 历史输入加噪σ=0.1
-
时间局部性(最关键): 注意力窗口限长度=2
当窗口=2时,力表征R²=0.999(牛顿涌现);窗口长时R²=0.9(开普勒拟合)
局限:仅合成轨迹,未在真实视频验证。
Causal-JEPA (arXiv:2602.11389, 2026)¶
LeCun 参与。与标准JEPA区别:物体级掩码(非patch级)。
-
掩码整个物体的表征,强制建立物体间因果交互
-
用 1.02% 的潜变量特征 vs patch级100%
-
规划速度快8×
-
CLEVRER反事实推理提升~20%,整体83.88%
-
形式化证明:物体级掩码通过潜在干预诱导因果归纳偏置
V-JEPA 直觉物理 (arXiv:2502.11831)¶
"惊异度"机制:预测表征与实际表征的L1距离。物理不可能→惊异度升高。
-
IntPhys物体恒常性: 85.7% (vs 未训练基线 51.4%)
-
IntPhys连续性: 86.3%
-
形状恒常性: 83.7%
为什么V-JEPA远超GPT-4V/Gemini?
-
VideoMAEv2/Qwen2-VL/Gemini 均≈随机
-
关键:表征空间预测天然建立"预期状态"内部模型
-
像素预测不强迫建立抽象物体表征
-
仅128小时HowTo100M视频 → 准确率>70%
符号回归¶
-
AI Feynman (Tegmark 2020): 100/100 Feynman方程, 困难集从15%→90%
-
PySR (Julia生态): 进化搜索+并行
-
LLM-SR (ICLR 2025): LLM先验注入PySR
-
符号回归×世界模型的直接结合: 几乎无工作,重要研究空白
五、具身世界模型中的物理¶
PIN-WM (RSS 2025)¶
专为非抓取操作(推/翻转),可微物理引擎识别真实参数(质量/恢复系数/摩擦),3D Gaussian渲染。
真实机器人:
-
推成功率: 75% (vs ASID 40%)
-
翻转: 65% (vs ASID 0%)
GWM (ICCV 2025)¶
3D Gaussian表示 + 潜在扩散DiT,预测动作条件下的未来Gaussian状态。几何精度优于像素世界模型。
RoboScape (NeurIPS 2025 Spotlight)¶
双分支协同自回归Transformer (34M-544M)。深度+关键点辅助。与真实仿真器Pearson相关0.953。
GigaWorld-0 (极佳视界)¶
三阶段可微物理:参数采样→代理模型→梯度精化。PBench 82.07分 (超Cosmos-Predict2.5的79.95)。
六、天气/气候:隐式物理世界模型¶
Aurora (Microsoft, Nature 2025)¶
1.3B参数,100万+小时气象数据。超越91%预报目标。比ECMWF快5000×。
GNN/Transformer大规模训练。
是否算"真正物理WM"?严格说不是:
-
无能量/质量守恒保证
-
长程预报"模糊化"(回归气候均值)
但在统计层面极其有效,属于"隐式物理WM"(physics-like, not physics-constrained)。
层次1: 守恒性 (Conservation)¶
-
精确保证守恒定律
-
代表: Dynami-CAL GraphNet, PINNs
-
最强约束,但泛化性差
八、五大研究空白¶
-
像素→物理参数端到端: PIN-WM初步实现, 受限刚体
-
非线性PDE可扩展约束: PINNs/PhyDNet无法处理湍流
-
物理守恒 × 视频生成统一: Dynami-CAL有守恒无渲染; Sora有渲染无守恒
-
符号回归 × 世界模型: 用WM生成轨迹再提取定律, 几乎无直接工作
-
真实世界物理泛化: Kepler→Newton归纳偏置能否在真实视频中有效?
参考¶
-
PhyDNet (CVPR 2020): arXiv:2003.01460
-
GNS (ICML 2020): arXiv:2002.09405
-
Dynami-CAL (Nature Comms 2025): arXiv:2501.07373
-
DiffTaichi (ICLR 2020): arXiv:1910.00935
-
Newton (NVIDIA 2025): developer.nvidia.com
-
From Kepler to Newton (2026): arXiv:2602.06923
-
Causal-JEPA (2026): arXiv:2602.11389
-
V-JEPA intuitive physics (2025): arXiv:2502.11831
-
PIN-WM (RSS 2025): arXiv:2504.16693
-
GWM (ICCV 2025)
-
RoboScape (NeurIPS 2025 Spotlight): arXiv:2506.23135
-
AI Feynman (Science Advances 2020)
-
Aurora (Nature 2025)
关键数学公式¶
PhyDNet: PDE 约束¶
PhyCell 建模广义线性 PDE:
\(\Phi(h(t,x)) = \sum_{i+j \leq q} c_{i,j} \cdot \frac{\partial^{i+j} h}{\partial x^i \partial y^j}\)
预测-校正两步更新(类卡尔曼滤波):
预测步:\(\tilde{h}_{t+1} = h_t + \Phi(h_t)\)
校正步:\(h_{t+1} = \tilde{h}_{t+1} + K_t \odot (E(u_t) - \tilde{h}_{t+1})\)
矩约束:\(\mathcal{L}_{moment} = \sum \|M(w_{p,ij}^k) - \Delta_{ij}^k\|_F\)
PINNs: 物理残差损失¶
\(\mathcal{L} = \underbrace{\|u_{\theta}(x,t) - u_{data}\|^2}_{\text{数据项}} + \underbrace{\left\|\frac{\partial u}{\partial t} + \mathcal{N}[u]\right\|^2}_{\text{PDE残差项}}\)
其中 N[u] 是 PDE 算子(如 Navier-Stokes),通过自动微分计算残差。
GNS: 粒子图更新¶
消息传递:\(e_{ij}^{\prime} = f_e(e_{ij}, v_i, v_j)\)
节点聚合:\(v_i^{\prime} = f_v\left(v_i, \sum_{j \in \mathcal{N}(i)} e_{ij}^{\prime}\right)\)
加速度预测:\(\ddot{x}_i = \text{Decoder}(v_i^{\prime})\)
状态积分:\(x_{t+1} = x_t + \dot{x}_t \Delta t + \frac{1}{2}\ddot{x}_i \Delta t^2\)
Dynami-CAL: 精确动量守恒¶
在边局部参考系中强制牛顿第三定律:
\(\mathbf{F}_{ij} = -\mathbf{F}_{ji}, \quad \boldsymbol{\tau}_{ij} = -\boldsymbol{\tau}_{ji}\)
保证线动量和角动量精确守恒(非近似),任何时间步长下成立。
From Kepler to Newton: 力的涌现¶
时间局部性(上下文窗口=2)→ 模型被迫学习瞬时力:
\(\mathbf{F} = m \cdot \frac{\mathbf{x}_{t+1} - 2\mathbf{x}_t + \mathbf{x}_{t-1}}{\Delta t^2}\)
力探针 R²:\(R^2(\hat{F}, F_{\text{true}}) = 0.999 \text{ (context=2)}\)
对比:\(R^2 \approx 0.9 \text{ (context=all, 开普勒拟合)}\)
Causal-JEPA: 物体级干预¶
掩码 token:\(\hat{z}_{masked} = W_{anchor} \cdot \mathbf{1}_{anchor} + e_{temporal}\)
训练目标:\(\mathcal{L} = \underbrace{\|\hat{z}_{history} - z_{history}\|_2^2}_{\text{历史恢复}} + \underbrace{\|\hat{z}_{future} - z_{future}\|_2^2}_{\text{未来预测}}\)
物体级掩码 → 强制建立物体间因果交互表征。仅用 1.02% 潜变量特征。
V-JEPA 惊异度机制¶
惊异度:\(S(v) = \|P_\phi(\tilde{v}) - E_{\bar{\theta}}(v)\|_1\)
对物理不可能视频(物体消失),S 显著升高 → 二元分类物理可能/不可能。
PIN-WM: 可微物理参数识别¶
参数集:\(\theta = [\theta^M, \theta^k, \theta^\mu] \quad (\text{质量/恢复系数/摩擦})\)
渲染损失:\(\mathcal{L} = \|\text{render}(\text{sim}(\theta)) - I_{\text{obs}}\|_2^2\)
通过 3D Gaussian Splatting 渲染 + 可微物理引擎反传梯度到物理参数。
工程实现要点¶
GNS 核心前向传播¶
# GNS (Graph Network Simulator) 核心实现
# 参考: github.com/google-deepmind/graph_nets
class GNS(nn.Module):
def __init__(self, d_node=128, d_edge=128, n_layers=10):
# 10层消息传递 (论文最佳值)
self.encoder_node = MLP(in_features=state_dim, out_features=d_node)
self.encoder_edge = MLP(in_features=rel_dim, out_features=d_edge)
self.processors = nn.ModuleList([
InteractionBlock(d_node, d_edge) for _ in range(n_layers)
])
self.decoder = MLP(d_node, out_features=3) # 输出: 加速度 (x,y,z)
def forward(self, particles, edges):
"""
particles: (N, state_dim) # 位置+速度+属性
edges: (E, 2) 邻接关系 (半径r内连接)
"""
v = self.encoder_node(particles) # (N, 128)
e = self.encoder_edge(edge_feats) # (E, 128)
for proc in self.processors:
# 消息传递: 边→节点→边
e_new = proc.edge_fn(e, v[edges[:,0]], v[edges[:,1]])
v_agg = scatter_add(e_new, edges[:,1], dim=0) # 聚合邻居消息
v = proc.node_fn(v, v_agg)
e = e_new
accel = self.decoder(v) # (N, 3) 加速度
return accel
# 训练时加噪: 防止自回归误差累积
# particles_noisy = particles + N(0, sigma_noise)
Dynami-CAL 动量守恒约束¶
# Dynami-CAL GraphNet 核心: 边局部参考系 + 牛顿第三定律
# 参考: Nature Communications (2025), arXiv:2501.07373
class DynamiCALLayer(nn.Module):
def forward(self, v_i, v_j, r_ij):
"""
v_i, v_j: 节点特征
r_ij: 边方向向量 (i→j)
"""
# 1. 构建边局部参考系 (旋转等变+平移不变)
e_parallel = r_ij / (r_ij.norm() + eps) # 平行于连线
e_perp = cross(e_parallel, z_hat) # 垂直分量
R_ij = stack([e_parallel, e_perp, cross()]) # 3x3 旋转矩阵
# 2. 在局部参考系中预测力
local_input = cat([R_ij @ v_i, R_ij @ v_j, r_ij.norm()])
F_local = self.force_mlp(local_input) # (3,) 局部力
# 3. 牛顿第三定律: F_ij = -F_ji (精确, 非近似!)
F_ij = R_ij.T @ F_local # 旋转回全局参考系
F_ji = -F_ij # 精确满足 F_ij = -F_ji
# 4. 扭矩同样精确守恒
tau_ij = cross(r_ij, F_ij)
tau_ji = -tau_ij # τ_ij = -τ_ji
return F_ij, F_ji, tau_ij, tau_ji
# 关键: 500 训练样本即可达强性能
# 对比 GNS: 高动量下粒子逸出; Dynami-CAL 全程稳定
PIN-WM 可微物理参数识别¶
# PIN-WM: 从RGB图像识别物理参数 (RSS 2025)
# 参考: arXiv:2504.16693
class PINWM:
def __init__(self, physics_engine, renderer):
self.engine = physics_engine # MuJoCo/IsaacGym (可微)
self.renderer = renderer # 3D Gaussian Splatting
self.params = nn.Parameter( # 待识别的物理参数
torch.tensor([
1.0, # 质量 mass
0.5, # 恢复系数 restitution
0.3, # 摩擦系数 friction
])
)
def forward(self, action, obs_gt):
# 1. 用当前参数在物理引擎中仿真
state_seq = self.engine.simulate(action, self.params)
# 2. 用 3DGS 渲染仿真结果
rendered = self.renderer(state_seq) # (T, H, W, 3)
# 3. 渲染损失 (与真实观测比较)
loss = F.mse_loss(rendered, obs_gt)
# 4. 梯度反传: obs → renderer → sim → params
# 物理引擎可微 → 梯度到达物理参数
return loss
def system_id(self, trajectories, n_iters=100):
optimizer = Adam([self.params], lr=1e-3)
for i in range(n_iters):
loss = sum(self.forward(a, o) for a, o in trajectories)
loss.backward()
optimizer.step()
# 识别后: 推任务真实机器人 75%, 翻转 65%
return self.params
V-JEPA 惊异度物理评估¶
# V-JEPA 直觉物理: "惊异度"机制 (arXiv:2502.11831)
class VJEPAPhysicsEval:
def __init__(self, encoder, predictor, target_encoder):
# encoder: ViT-Huge (frozen, pretrained V-JEPA)
self.enc = encoder
self.pred = predictor
self.target_enc = target_encoder # EMA
def compute_surprise(self, video):
"""
video: (B, T, C, H, W)
返回: 惊异度分数 (越高=越不符合物理预期)
"""
# 1. 遮盖视频的后半部分 (模拟"未来")
visible = video[:, :T//2]
target = video[:, T//2:]
# 2. 编码
z_visible = self.enc(visible) # (B, N_vis, D)
z_target = self.target_enc(target) # (B, N_tgt, D) sg
# 3. 预测被遮部分的表征
z_pred = self.pred(z_visible, target_pos) # (B, N_tgt, D)
# 4. 惊异度 = 预测表征与实际表征的 L1 距离
surprise = (z_pred - z_target).abs().mean()
return surprise
def eval_intphys(self, possible_video, impossible_video):
"""
IntPhys 评估: 物理可能 vs 不可能视频配对
如果 surprise(impossible) > surprise(possible) → 正确
"""
s_ok = self.compute_surprise(possible_video)
s_bad = self.compute_surprise(impossible_video)
return s_bad > s_ok # True = 模型理解物理
# 结果:
# IntPhys 物体恒常性: 85.7% (vs 随机 51.4%)
# IntPhys 连续性: 86.3%
# IntPhys 形状恒常性: 83.7%
# 仅需 128 小时视频即可训练到 >70%
↑ 上级 · 00 世界模型的"皇帝新衣":视频生成 ≠ 物理理解