世界模型论文与 Sora 解读
世界模型旨在学习环境的动态规律,使 AI 能够预测和模拟物理世界的演化。OpenAI 的 Sora 将视频生成视为世界模拟,展示了生成模型作为世界模型的潜力。
世界模型的概念
世界模型的核心思想是构建环境的内部模拟器:
- 观察编码:将高维感知压缩为低维表示
- 动态预测:预测下一状态
- 策略决策:基于预测规划行动
python
class WorldModel(nn.Module):
"""世界模型框架"""
def __init__(self, obs_dim, latent_dim, action_dim):
super().__init__()
# 编码器:压缩观察
self.encoder = nn.Sequential(
nn.Linear(obs_dim, 256),
nn.ReLU(),
nn.Linear(256, latent_dim)
)
# 转移模型:预测下一状态
self.transition = nn.Sequential(
nn.Linear(latent_dim + action_dim, 256),
nn.ReLU(),
nn.Linear(256, latent_dim * 2) # 均值 + 方差
)
# 奖励模型:预测奖励
self.reward_head = nn.Linear(latent_dim, 1)
def predict_next(self, latent, action):
"""预测下一个潜在状态"""
x = torch.cat([latent, action], dim=-1)
params = self.transition(x)
mean, log_var = params.chunk(2, dim=-1)
next_latent = mean + torch.randn_like(mean) * torch.exp(0.5 * log_var)
return next_latent, mean, log_var
def imagine(self, initial_obs, policy, steps=100):
"""在世界模型中想象未来"""
latent = self.encoder(initial_obs)
trajectory = []
for _ in range(steps):
action = policy(latent)
next_latent, _, _ = self.predict_next(latent, action)
reward = self.reward_head(next_latent)
trajectory.append((latent, action, reward))
latent = next_latent
return trajectory经典世界模型论文
Ha & Schmidhuber (2018)
首个"世界模型"论文,使用 VAE + MDN-RNN 构建简单环境的世界模型:
- VAE 编码器压缩视觉输入
- MDN-RNN 预测未来状态
- 在"梦境"中训练策略
Dreamer 系列
Danijar Hafner 的系列工作将世界模型推向实用:
- Dreamer v1:在潜在空间中想象训练
- Dreamer v2:离散潜在表示,更稳定
- Dreamer v3:固定超参数,通用性强
Sora 作为世界模型
OpenAI 的 Sora 将视频生成重新诠释为世界模拟:
核心技术
- 时空 Patch:将视频切分为时空 Patch Token
- 扩散 Transformer:用 DiT 架构进行视频扩散去噪
- 变长生成:支持不同分辨率和时长
Sora 的"涌现"能力
Sora 展示了一些未经显式训练的能力:
- 3D 一致性:摄像机移动时物体保持 3D 一致
- 长程连贯:长时间视频中物体和人物保持一致
- 物理交互:模拟简单物理效果(碰撞、重力)
Sora 的局限
尽管 Sora 展示了令人印象深刻的视频生成能力,它对物理世界的理解仍不完整。Sora 可能生成违反物理定律的视频(如物体穿透、突然消失),表明其世界模型仍是不完美的。
世界模型的理论挑战
- 分布偏移:想象训练中的分布偏移(compounding error)
- 长期预测:误差随预测步数指数增长
- 泛化能力:训练分布外的泛化
- 因果理解:相关性 vs 因果性的区别