课程进度 课程大纲 已发布 34/34 课
第 0 部分——先拿到地图
第 1 部分——为什么简单目标会学会看视频
第 2 部分——把一段视频送进单编码器
第 3 部分——会读实验,才算读懂论文
第 4 部分——从官方仓库到自己的实验
第 5 部分——把表征接回世界模型路线
附录——随用随查的技术背包
加一层,证伪一层,再往上搭
- 冻结视觉先保住表征基线
- 加入动作轨迹给出干预
- 滚动未来预测潜在状态
- 计算代价比较目标与风险
- MPC只走一步再观察
先把“看见什么”的字典锁住,再教一个小沙盘:“眼前是这样,推一下之后会怎样?”第一天就把所有零件一起改,失败时很难分辨是眼睛漂了、想象没学会,还是选路出了错。冻结视觉编码器,正是为了先保留一个已知基线。
第一层:只训练动作动力学
第一版冻结发布 encoder。历史观测是 [B,3,T,224,224];取与当前帧对应的 patch 状态 z_t:[B,N,D],而非能看完整窗口的 [CLS]。轨迹还需动作 a:[B,H,A]。新增一个 action-conditioned causal predictor(动作条件因果预测器),滚动得到 z_hat:[B,H,N,D];以真实后续帧的冻结表征计算 one-step 与 multi-step loss。这里的 predictor、loss 和动作数据全部属于新增设计。
先规定 token 对齐:同一相机、crop、帧率和 patch 网格下,第 (i) 个预测 token 才能与目标 token 比较;相机移动或遮挡时还需明确是否预测所有 patch、可见集合或聚合状态。最小损失可用下一步 latent MSE,但必须与 copy-last 比较,并分别记录静态背景与可动物体误差。若 predictor 只学背景,平均误差也可能很好看。
第二层:预测过关后再闭环
规划时给定目标图像 g,编码成 z_goal。CEM(交叉熵方法)等搜索器采样 K 条动作序列,让 predictor 在潜在空间滚动,以目标距离、碰撞或约束组成 cost,再执行最优序列的第一步并读取新观察。这套“计划—走一步—再观察”的闭环才是 MPC:
# 提议的伪代码;不是上游仓库函数
while not done:
z0 = encode_causal(observation_history)
candidates = cem.sample(K, horizon=H)
futures = dynamics.rollout(z0, candidates) # [K,H,N,D]
scores = cost(futures, z_goal, constraints)
env.step(candidates[scores.argmin(), 0])
六道门,最后一道才是机器人
证据梯子可以逐层设闸:①形状与未来泄漏测试;②one-step 胜过“复制当前状态”和忽略动作基线;③报告误差随 horizon 的曲线与不确定性校准;④反事实动作产生可区分的未来;⑤在模拟器中固定数据、预算、CEM 参数,与随机和 model-free 基线比较;⑥最后才做带停止条件、人工接管和分布外场景的闭环实验。哪一层失败,就先停在那一层诊断。
未来存在多种可能时,确定性 MSE 往往把它们平均成模糊的一条路。可以比较 ensemble(模型集合)、随机 latent 或能量式候选,并用覆盖率与校准误差验收。更长时间尺度可以增加慢层状态与子目标,不过每个新增模块都要先胜过单尺度、短 horizon 基线。若后来解冻 encoder,还需同时监控原 frozen probe 与嵌入谱,以发现狭窄控制数据带来的遗忘或坍塌。
论文指出块因果结构允许缓存过去,但冻结仓库和发布 Transformers 接口没有交付完整增量 KV-cache API;真正做流式系统时,应自行实现,并与“每次重编码全部前缀”逐 token 对齐。V-JEPA 2-AC 与 LeWorldModel 是设计参照,不是可直接复制的 LeVJEPA 结果。
这些是设计参照,不是完成声明
搭建时贴在桌边
- 世界模型扩展必须显式新增动作条件 predictor、cost、search 与 MPC。
- 先冻结 encoder、逐层证伪,再考虑端到端微调和长时规划。
- “理论上可缓存”不等于公开接口已实现可验证的流式 cache。
再加下一层之前
- 最小 predictor 必须接收哪两个核心输入?
- 为什么要与“复制当前状态”比较?
- MPC 为何只执行计划的第一步?
逐层核对
- 当前/历史潜在状态与候选动作。
- 视频相邻帧很像;若赢不了复制基线,预测器未学到有用动力学。
- 执行后用新观察纠正模型误差和环境扰动,再重新规划。