世界模型 = agent 给自己造的一套「staging 仿真环境」。真实环境(prod)每次调用既昂贵又危险——真机器人摔一次几千块。于是 agent 先学一个能预测「我这样动、世界会怎么变」的内部模型,再在这个「梦」里跑成千上万次 rollout 练策略。等价于你在 staging 副本上压测,而不是直接打 prod。
强化学习的软肋是 sample efficiency(样本效率):真环境里试错代价极高。世界模型的思路是把环境的动态规律压进一个神经网络,让 agent 在想象里训练。Ha & Schmidhuber 2018 的经典三件套:
为什么压成 latent 再预测,而不是直接预测下一帧像素?因为像素里大量细节(纹理、光影抖动)对决策无关,硬预测它们等于浪费算力——这条直觉到第二张卡片的 JEPA 会被推到极致。关键反直觉:agent 能完全在 M 生成的「梦」里学会策略,再迁移回真实环境照样能用。DreamerV3(Hafner 2023)把这套规模化——同一套超参数在 150+ 任务上通杀,还首次在 Minecraft 里从零挖到钻石,无需人类示范,且模型越大数据效率越高。
# 示意:世界模型的「想象 rollout」核心循环(latent 空间,不碰真实环境) import torch # V/M/C 假设已训练好:encoder、dynamics、policy 均为神经网络 z = encoder(obs) # V:真实观测 → 潜向量 z total_reward = 0 for t in range(horizon): # 在「梦」里向前滚动 H 步 a = policy(z) # C:只看 latent 做决策 z, r = dynamics(z, a) # M:预测下一个 latent 和奖励——纯想象 total_reward = total_reward + r # 用想象出的回报对 policy 求梯度——上万次 rollout 几乎零成本 total_reward.backward() # 真机一步都没动,策略已在更新
比较两个大文件,你不会逐字节对比(又贵又没必要),而是各算一个语义 checksum 再比。JEPA 就是这个思路:预测未来时不预测每一个像素(那是生成式),而是预测对方的 embedding(语义指纹)——把算力花在「可预测的结构」上,扔掉「不可预测的噪声细节」。
生成式自监督(如还原被遮挡的像素)有个根本浪费:图像里大量细节(树叶纹理、噪点)本质不可预测,模型却被迫逐像素拟合,capacity 都耗在没意义的地方。LeCun 力推的 JEPA(Joint-Embedding Predictive Architecture,联合嵌入预测架构)主张:在抽象表示空间里预测。以 I-JEPA(Assran 2023)为例:
为什么要 EMA + stop-gradient 的不对称设计?否则模型会「作弊」:把所有输入都映射成同一个常数向量,loss 瞬间归零却毫无信息——这叫 representation collapse(表示坍缩)。不对称性堵死了这条捷径。V-JEPA 2(Meta 2025)把它扩到视频,百万小时预训练,已能做机器人零样本规划。
# 示意:I-JEPA 训练一步的骨架(latent 空间预测 + 防坍缩) import torch, torch.nn.functional as F ctx = ctx_encoder(visible_patches) # 编码可见块 with torch.no_grad(): # target 端 stop-gradient tgt = tgt_encoder(masked_patches) # EMA 副本编码被遮挡块 pred = predictor(ctx, mask_pos) # 从上下文预测目标表示 loss = F.smooth_l1_loss(pred, tgt) # loss 在 latent 空间,不碰像素 loss.backward(); opt.step() # 关键:target 不回传梯度,靠 EMA 缓慢跟随 —— 打破对称、防止坍缩 for p_t, p_c in zip(tgt_encoder.parameters(), ctx_encoder.parameters()): p_t.data = 0.996 * p_t.data + 0.004 * p_c.data # EMA 更新
监控里「缓存满 → 错误率涨」是相关性;你的微服务依赖 DAG 才是因果——只有后者能回答「我扩容服务 X 会怎样」。相关性在分布不变时够用,可一旦有人干预系统,只有因果图不会崩。因果表示学习 = 从原始观测里把这张因果图(的变量)挖出来。
深度学习的硬伤是分布外泛化(OOD):训练分布一变就崩,因为它学的是相关性 P(Y|X),不是因果 P(Y|do(X))。两者差在哪?do(X) 是「主动设定 X」(干预),会切断 X 原本的成因;条件 P(Y|X) 只是「观察到 X」。经典例子:公鸡打鸣与日出强相关,但 do(让公鸡闭嘴) 不会阻止日出——观测相关,干预无效。
Schölkopf 等 2021 提出 causal representation learning:从低层像素中发现高层因果变量,并满足 ICM(Independent Causal Mechanisms,独立因果机制)原则——真实世界由一组互相独立、可单独干预的机制拼成。学到这种表示,模型才能对干预与新环境稳健。这正好补上世界模型「会预测干预后果」所缺的那块拼图。
# 可运行:用一个最简 SCM 演示「观察」≠「干预」 import numpy as np rng = np.random.default_rng(0) rotation = rng.normal(size=10000) # 共因:地球自转 crow = rotation + 0.1*rng.normal(size=10000) # 自转 → 公鸡打鸣 sunrise= rotation + 0.1*rng.normal(size=10000) # 自转 → 日出 # 观察:打鸣大的样本,日出也大 —— 强相关 print(np.corrcoef(crow, sunrise)[0,1]) # ≈ 0.98 # 干预 do(crow=5):切断它的成因,sunrise 仍由 rotation 决定 sunrise_do = rotation + 0.1*rng.normal(size=10000) print(sunrise_do.mean()) # ≈ 0,干预公鸡对日出毫无影响
纯文本 LLM 像一个只读写文档、无副作用的纯函数;具身智能是给它接上传感器(读真实世界)和执行器(写真实世界),闭合「感知—行动」回路。区别就像 read-only API 服务 vs 真能操作物理设备的有状态系统——后者每个动作都有真实 side effect,且环境会立刻反馈。
核心痛点是 grounding(符号接地):LLM 知道「苹果」这个词的所有用法,却从没「碰过」苹果,知识浮在符号层。具身智能主张:智能源于身体与物理世界的交互闭环。Moravec 悖论点破了反直觉处——对 AI 来说证明定理容易、端起一杯水极难,感知运动技能才是真正的硬骨头。
现代主线是 VLA(Vision-Language-Action,视觉-语言-动作)模型:PaLM-E(2023)把图像、状态、文字混成一个「多模态句子」喂进 LLM,直接输出机器人规划,并展示了从互联网视觉-语言知识到具身推理的正迁移——在网络图文上学到的常识,能帮机器人在真实场景里少走弯路。再往前看,世界模型(梦里学策略)+ JEPA(高效物理表示)+ 因果(懂干预)正汇聚成同一条主线:能在物理世界里行动的 agent。
# 示意:VLA / 具身 agent 的感知—行动闭环(伪代码骨架) obs = env.reset() # 传感器:拿到 RGB 图像 + 本体状态 while not done: # 多模态句子:图像 + 状态 + 指令,一起喂进 VLA(如 PaLM-E 风格) action = vla_model(image=obs.rgb, state=obs.proprio, text="把蓝色积木放进盒子") obs, reward, done = env.step(action) # 执行器作用于真实世界 # 环境立刻反馈新观测 —— 这条回边才是「具身」的关键