课程进度 课程大纲 已发布 34/34 课
第 0 部分——先拿到地图
第 1 部分——为什么简单目标会学会看视频
第 2 部分——把一段视频送进单编码器
第 3 部分——会读实验,才算读懂论文
第 4 部分——从官方仓库到自己的实验
第 5 部分——把表征接回世界模型路线
附录——随用随查的技术背包
跟着一个 batch 走完全程
- 同片多窗1 大 + V 小
- 随机少看只留 5%
- 共享编码取 [CLS]
- 两项损失拉近又撑开
- 一起更新两边都有梯度
同一场球赛被拍成一张全景和几张特写。机器先从每个画面随机抽看少量碎片,再为每扇窗写摘要。第一项评分检查“同一场球赛的摘要是否靠近”,第二项检查“许多场球赛是否被写成了同一句话”。两份批注一起沿原路传回去,连全景卡也会修改;整条训练路径上没有冻结的标准答案。
一站一站查张量
以下是论文架构配上官方代码的执行顺序。**batch(批次)**记作 B,表示一次并行处理多少条 clip;局部视图数记作 V。这里要注明语境:论文受控比较默认 V=4,仓库 Walking Tours 默认配置则是 V=10。
| 站点 | 全局视图 | 每个局部视图 | 说明 |
|---|---|---|---|
| 输入 | 16×224×224 | 16×96×96 | 时间窗口相同 |
| patch token,丢弃前 | 3136 | 576 | 16 × 14 × 14 与 16 × 6 × 6 |
| 95% 丢弃后 | 157 | 29 | 代码按 round(N×0.05) 保留 |
加 [CLS] 后 | 158 | 30 | [CLS] 永不丢弃 |
| 编码器摘要 | [B,1,d] | 合并为 [B,V,d] | 局部视图先并入 batch 计算 |
| projector 输出 | [B,V+1,256] | 同一张量 | 全部摘要拼接后一次投影 |
随后,代码以全局嵌入广播减去所有 V+1 个嵌入并取均方;全局对自身的那一项恒为零。SIGReg 把张量换成 [view, batch, 256],逐视图检查批分布。总损失是 MSE + 0.02 × SIGReg,梯度同时流过全局与局部分支,再更新共享 encoder 和 projector。
训练图到这里结束,target encoder、masked query predictor 和 stop-gradient 均未参与。官方实现另行维护一份 Polyak 权重副本:衰减 0.9999,每 **32 个 optimizer step(优化器更新步)**更新一次,仅保存为评估权重。它不做前向、不产生 target,也不进入损失。训练结束后 projector 被丢弃;评估使用编码器,论文结果与发布权重采用其 EMA 副本。
用一个小 batch 查错
设 B=2、V=4。写出三个答案:共有 2×5=10 个视图摘要;projector 后张量是 [2,5,256];若刚完成第 31 个 optimizer step,EMA 还未到下一次每 32 步的更新点。再用红笔划掉任何从 EMA 指向损失的箭头。
每一站的代码凭据
- LeVJEPA arXiv v1:图 1 与训练目标
- arXiv v1 附录 B:EMA 只作评估检查点
- 官方代码快照:完整 multiview forward
- 官方配置快照:两套视图、projector、EMA 与损失参数
走完全程后留下的账
- 95% 丢弃后,全局/局部各保留 157/29 个 patch token,再各加一枚
[CLS]。 - 不变性和 SIGReg 共用
[B,V+1,256],全局与局部分支都接收梯度。 0.9999、每 32 optimizer steps 更新的 EMA 只服务评估,与训练 target encoder 是不同角色。
从终点倒着追一次
- 224 全局视图在丢弃前有多少 patch token?
- 全局摘要会不会被 stop-gradient?
- EMA 副本是否参与一次训练前向传播?
沿路径核对
- 3136,即
16 × 14 × 14。 - 不会;两侧都有梯度。
- 不参与;它只周期性平均权重并作为评估检查点保存。