把一次学习走通,也读清实现顺序
课堂上下文:从哪个问题来
本页把前两页对象放回一条可追踪过程。纸面步骤与Notebook时序有细微差异,说明已明确标注。
沿当前图逐项走:本批原图产生两视图;query/key编码器分别给出q、k⁺;q与k⁺及旧队列比较;loss更新query;key按EMA跟随;本次已经算出的k⁺入队、最老key出队。旧队列不因本步更新重算。
主讲画面按原论文Algorithm 1排列。当前LAB 07教学代码则在计算本批key之前执行EMA,再计算loss和query更新。这是训练步内的时序约定差异,读代码时必须跟着实际顺序,不要声称逐行相同。两者共享的关键机制是:query接受梯度、key停止梯度并平滑跟随、队列复用历史特征。
LAB 07另外在队列保存源图ID,屏蔽同源旧key,避免同一图片再次出现时成为自己的负例;不同源图仍可能属于同一类别。它没有论文的分布式ShuffleBN,训练15轮的效果也不用于论文排名。学生完成本节后,应能指出一条key何时生成、何时用于比较、何时离开。
query、正例、旧队列、两次参数更新与FIFO是同一步的不同对象。 查看对应图解状态
- 同一输入
- 视图 a
- 视图 b
- query 编码器
- key 编码器
- q
- k⁺ = k₅
- L = −ln p⁺
- 比较用旧字典
- k₁ … k₄
- q 与所有候选比较
- k⁺ 是本轮正确项
- 梯度 → θq
- EMA
- k₅ 入队;k₁ 退队
- k₂ k₃ k₄ k₅
- 下一批的字典
- 按原文算法 1:更新 query,再平均 key 参数并维护下一批的字典。