JEPA4Japan · 教程

第 12 章——一次完整前向传播

998字 3分钟阅读 #LeVJEPA#JEPA#视频自监督学习#SIGReg

从一个批次追踪全局和局部视图、拼接嵌入、两项损失、梯度流与训练后丢弃的组件。

课程进度 课程大纲 已发布 34/34 课

第 0 部分——先拿到地图

  1. 01 第 0 章——开始之前:这门课承诺什么 已发布
  2. 02 第 1 章——同一段视频,两扇不同的窗 已发布
  3. 03 第 2 章——沿着 Yann LeCun 的科研路线走一遍 已发布
  4. 04 第 3 章——别被名字绕晕:JEPA 家族树 已发布

第 1 部分——为什么简单目标会学会看视频

  1. 05 第 4 章——视频可以自己出题 已发布
  2. 06 第 5 章——保留意思,不重画每个像素 已发布
  3. 07 第 6 章——两张卡要相同,但不能全变成白纸 已发布
  4. 08 第 7 章——SIGReg:从许多影子检查一团点云 已发布
  5. 09 第 8 章——只用一行目标函数读懂 LeVJEPA 已发布

第 2 部分——把一段视频送进单编码器

  1. 10 第 9 章——全局视图与局部视图怎样配对 已发布
  2. 11 第 10 章——把视频切成时空小方块 已发布
  3. 12 第 11 章——一台编码器、一个投影头、一张摘要卡 已发布
  4. 13 第 12 章——一次完整前向传播 当前课程
  5. 14 第 13 章——为什么扔掉 95% 反而更会看 已发布
  6. 15 第 14 章——块因果注意力:同一帧互看,未来不能偷看 已发布
  7. 16 第 15 章——RoPE、逐帧 token 与意外长出的密集特征 已发布

第 3 部分——会读实验,才算读懂论文

  1. 17 第 16 章——四组消融究竟回答了什么 已发布
  2. 18 第 17 章——相同轮数不等于相同花费 已发布
  3. 19 第 18 章——ImageNet、K400、SSv2 各考什么 已发布
  4. 20 第 19 章——把论文结果记成一本账 已发布
  5. 21 第 20 章——哪些结论现在还不能说 已发布

第 4 部分——从官方仓库到自己的实验

  1. 22 第 21 章——官方仓库地图 已发布
  2. 23 第 22 章——Walking Tours:十段长视频怎样变成训练数据 已发布
  3. 24 第 23 章——读懂默认配置并启动训练 已发布
  4. 25 第 24 章——先跑一个不会骗人的冒烟测试 已发布
  5. 26 第 25 章——不用训练:加载公开权重提取特征 已发布
  6. 27 第 26 章——在自己的视频上做冻结评估 已发布

第 5 部分——把表征接回世界模型路线

  1. 28 第 27 章——重要边界:LeVJEPA 不是规划器 已发布
  2. 29 第 28 章——怎样把 LeVJEPA 接到下一代世界模型 已发布
  3. 30 第 29 章——十个从入门到论文级的研究项目 已发布

附录——随用随查的技术背包

  1. 31 附录 A——最低限度数学工具箱 已发布
  2. 32 附录 B——完整张量形状表 已发布
  3. 33 附录 C——术语表与论文时间线 已发布
  4. 34 附录 D——复现与审阅检查清单 已发布

跟着一个 batch 走完全程

  1. 同片多窗1 大 + V 小
  2. 随机少看只留 5%
  3. 共享编码取 [CLS]
  4. 两项损失拉近又撑开
  5. 一起更新两边都有梯度
一次前向传播没有隐藏的教师支路:多视图进同一编码器,摘要进同一 projector,然后同时计算不变性与 SIGReg。

同一场球赛被拍成一张全景和几张特写。机器先从每个画面随机抽看少量碎片,再为每扇窗写摘要。第一项评分检查“同一场球赛的摘要是否靠近”,第二项检查“许多场球赛是否被写成了同一句话”。两份批注一起沿原路传回去,连全景卡也会修改;整条训练路径上没有冻结的标准答案。

一站一站查张量

以下是论文架构配上官方代码的执行顺序。**batch(批次)**记作 B,表示一次并行处理多少条 clip;局部视图数记作 V。这里要注明语境:论文受控比较默认 V=4,仓库 Walking Tours 默认配置则是 V=10。

站点全局视图每个局部视图说明
输入16×224×22416×96×96时间窗口相同
patch token,丢弃前313657616 × 14 × 14 与 16 × 6 × 6
95% 丢弃后15729代码按 round(N×0.05) 保留
加 [CLS] 后15830[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 指向损失的箭头。

每一站的代码凭据

走完全程后留下的账

  1. 95% 丢弃后,全局/局部各保留 157/29 个 patch token,再各加一枚 [CLS]。
  2. 不变性和 SIGReg 共用 [B,V+1,256],全局与局部分支都接收梯度。
  3. 0.9999、每 32 optimizer steps 更新的 EMA 只服务评估,与训练 target encoder 是不同角色。

从终点倒着追一次

  1. 224 全局视图在丢弃前有多少 patch token?
  2. 全局摘要会不会被 stop-gradient?
  3. EMA 副本是否参与一次训练前向传播?
沿路径核对
  1. 3136,即 16 × 14 × 14。
  2. 不会;两侧都有梯度。
  3. 不参与;它只周期性平均权重并作为评估检查点保存。