学习信号与表示怎样增加候选,同时让历史表示仍可比较?
指认历史key的身份、加入与离开,先理解缓存到底存了什么,再问它是否仍一致。
四槽FIFO从k1—k4变为k3—k6;新键为已算向量,最旧两键移出。 查看对应图解状态查看完整图解 MoCo 把对比学习看成查询字典。当前查询要在一组键中找到对应项,字典中的其他键可以来自前面的批次。
先看队列这一半。它保存的是已经计算出来的特征,不是每次都重新跑一遍网络的原图。本页容量为 4,旧队列是 [k1,k2,k3,k4];本轮有两个新键 k5、k6。每个查询先与自己的本轮正键和更新前的旧队列比较,再把两个新键按序加入,同时移走最旧的 k1、k2。下一批看到的字典是 [k3,k4,k5,k6]。P17 为便于跟完一整步,只用一个新键,所以只退一个旧键;两页的队列规则相同,示意批大小不同。
这样当前批次可以较小,候选字典仍然较大。数量问题有了办法,但假如编码器每步变化很快,队列里早些时候的特征和新特征就可能不太可比。旧键保存原值,不会自动刷新。MoCo 的另一半设计,正是控制生成键的那个编码器如何变化。
沿本页的双样本示意,队列容量为 4,当前保存旧键 [k1,k2,k3,k4]。本轮两张图产生两个新键 k5、k6;每个查询先与自己的本轮正键及更新前的旧队列比较。比较完成后,将 k5、k6 按序加入,并移除最旧的 k1、k2;下一批使用的字典于是变为 [k3,k4,k5,k6]。这是“容量 4、每批 2 个新键”的教学设置。P17 为便于逐项跟踪,改用每批 1 个新键,得到 [k2,k3,k4,k5];入队和出队遵守相同的先进先出规则。
每个槽保存的是当时算好的向量。k2不会因为查询编码器更新,就自动变成今天重新编码的k2;也没有保存一条可以反传回早先图像的完整计算图。队列的身份标签帮助我们看清“新信息进入、旧信息退出”,向量值则用于相似度计算。
容量更大可以提供更多比较对象,也使最旧条目来自更早的步骤。容量、batch大小和编码器变化速度因此互相影响。课堂图只画4个槽便于指认,不能把4当作MoCo论文的配置。
学生:为什么这张图一次移走两个旧键,P17 却只移走一个?
教师:本页一批放入 k5、k6 两个新键,所以容量不变时退掉最旧的 k1、k2,得到 [k3,k4,k5,k6]。P17 用 k5 一个新键跟完一整步,所以只退掉 k1,得到 [k2,k3,k4,k5]。队列规则没有改变,示意的批大小不同。
容量 4、本轮 2 个新键仅为便于观察的教学队列,不是原论文超参数。比较使用本轮更新前队列;示意下一批的维护结果为 [k3,k4,k5,k6]。 P17 改用每批 1 个新键跟完一次学习,因而只移出 k1,下一批字典为 [k2,k3,k4,k5];两页示意批大小不同,先进先出规则相同。