0. 一句话定位
从 100 万小时无标注视频里学一个「潜在空间世界模型」,再用 62 小时机器人数据做动作条件微调,实现 零样本机器人操控(65–80% 成功率)。
V-JEPA 2(Assran et al., Meta FAIR, 2025-06, arXiv:2506.09985,1.2B 参数)走的是 LeCun 的 JEPA 哲学:智能体应该先在脑内预演「做这件事世界会怎么变」,再去行动——而不是像 RT-2 / OpenVLA / π0 那样靠「互联网图文 + 大量遥操数据」硬训。
1. 核心思想:潜在空间预测,不是像素重建
给定视频帧序列 (x_1, x_2, ..., x_T):
# 1) 编码:把每一帧映射到潜在向量空间
z_t = Encoder(x_t) # Vision Transformer (ViT-L/H/G)
# 2) 预测:用过去潜在向量 + 动作条件 预测未来潜在向量
z_{t+1} = Predictor(z_{t-k...t}, a_t) # a_t 可选,无动作时为视频自监督
# 3) 损失:只对「未来帧的潜在表示」做 L2 / Smooth-L1,
# 不重建像素;目标也由 EMA teacher encoder 产生。
L = || z_{t+1} - stop_grad(Encoder_target(x_{t+1})) ||^2
符号:x_t = t 时刻视频帧;z_t = 潜在向量;Encoder = ViT;a_t = 可选动作;下标 _target = EMA 教师编码器。
2. 架构图:Encoder + Predictor + 规划回环
图:V-JEPA 2 的训练闭环(Encoder + Predictor + EMA 教师 + L2 潜在损失)与推理闭环(latent MPC 规划头)。预测目标是潜在空间里的未来帧,而不是像素。
3. 两阶段训练
- 阶段 1(无动作自监督预训练):100 万小时视频 + 100 万张图像,完全无人工标注,让 Encoder + Predictor 学会「潜在空间里的物理动力学」。
- 阶段 2(V-JEPA 2-AC 动作条件微调):仅用 62 小时 Droid 机器人数据集微调 Predictor,不写任何 task-specific 奖励函数,让模型学会「在动作 a 下未来长啥样」。
4. 关键模块
- Encoder:ViT-L/H/G,标准 ViT 块(LayerNorm + MHSA + MLP),把 16×16 patch 编码为潜在向量;EMA 教师编码器提供稳定预测目标。
- Predictor:轻量 Transformer,输入是过去帧潜在向量的位置拼接 + 可选动作 token,输出下一帧的潜在向量。
- 规划头(planning head):给定当前观测 + 候选动作序列,在潜在空间「想象」未来 K 步,挑出与目标图像 embedding 最近的那条动作链,再用模型预测控制(MPC)下发。
- 目标表示:用一张目标图像作为任务指令,让机器人不依赖自然语言就能「看出」要做什么。
5. PyTorch 风格伪代码
import torch
import torch.nn as nn
class VJEPA2(nn.Module):
def __init__(self, encoder, predictor):
super().__init__()
self.encoder = encoder # ViT-L/H/G
self.target_encoder = encoder # EMA 教师,stop_grad
self.predictor = predictor # Transformer
for p in self.target_encoder.parameters():
p.requires_grad = False
def forward(self, frames, actions=None):
# frames: (B, T, 3, H, W) 视频片段
B, T = frames.shape[:2]
feats = self.encoder(frames.flatten(0, 1)) # (B*T, D)
feats = feats.unflatten(0, (B, T)) # (B, T, D)
with torch.no_grad():
targets = self.target_encoder(frames[:, 1:].flatten(0, 1))
targets = targets.unflatten(0, (B, T - 1))
preds = self.predictor(feats[:, :-1], actions) # (B, T-1, D)
return preds, targets # L2 / Smooth-L1 在 D 维做
# 规划:Model-Predictive Control in latent space
@torch.no_grad()
def plan(model, obs, goal_embed, action_candidates, horizon=8):
z = model.encoder(obs) # (D,)
best, best_score = None, -1
for traj in action_candidates: # each (T_pred, A_dim)
z_pred = z
for a in traj:
z_pred = model.predictor(z_pred.unsqueeze(0), a.unsqueeze(0)).squeeze(0)
score = torch.cosine_similarity(z_pred, goal_embed, dim=-1)
if score > best_score:
best, best_score = traj, score
return best # 下发给机器人的动作序列
6. 训练 / 优化要点
- EMA 教师编码器:目标编码器用 encoder 权重的指数滑动平均更新(momentum ≈ 0.99→0.999),避免表征塌缩。
- Masked latent prediction:仿 MAE 思路对 patch 随机 mask,让预测器只补全被遮掉的部分,降低计算量同时学更鲁棒表示。
- 分辨率梯度提升:先在 224×224 训,再 fine-tune 到 384×384。
- 不重建像素:loss 只落在潜在空间 → 训练目标与人类关心的高层语义(物体运动、因果)天然对齐,避免浪费容量在纹理/颜色细节。
7. 复杂度与消融
- Encoder ViT-H/16 在 16 帧 384² 输入下,推理速度是英伟达 Cosmos 的 30 倍(Meta 官方口径)。
- Something-Something v2 上 77.3% top-1,超过同规模有监督模型;PerceptionTest 84.0、TempCompass 76.9。
- 零样本机器人 pick-and-place 65–80% 成功率(在 Droid 见过、在 Franka 全新桌面未见的物体)。
- 消融要点:移除动作条件 → 规划完全失败;移除 EMA → 表征塌缩;预测空间改成像素 → 性能下降 + 算力翻 5 倍以上。
8. 总结与影响
V-JEPA 2 把「世界模型」从论文概念推进到可直接挂到真机的工程方案,三层意义:
- 路线意义——证明不依赖像素重建、不依赖大规模遥操也能让机器人「看懂」环境;
- 数据意义——100 万小时视频成本远低于 62 小时遥操数据的边际成本;
- 生态意义——V-JEPA 2 全套权重开源(CC-BY),叠加 NVIDIA Cosmos 闭源 + 30× 速度差,世界模型路线 Meta 已经领跑。
对具身智能主线:利好上游世界模型 / 视频理解 / VLA 三模态(具身「大脑」派)、利好视频-多模态预训练基础设施(视频编码、潜在向量压缩、动作 token 化)。
💬 留言
NaphJohn/LLM-blog尚未启用 Discussions:请在 GitHub 仓库 Settings → General → Features 勾选 Discussions 后刷新本页,评论区即自动显示。