梯度更新和 EMA 更新作用在不同地方
课堂上下文:从哪个问题来
两种参数更新解决不同任务:query学当前选择,key维持较平滑的编码规则。
query编码器从当前损失接收梯度,例如 。key编码器不沿当前loss反传,而通过参数移动平均跟随query:。
令旧key参数为(0,2),当前query参数为(2,4),m=0.9,则key变为(0.2,2.2)。若query下一次仍不变,再更新得到(0.38,2.38)。平均的是网络参数,不是历史队列向量;也不同于优化器保存的梯度动量。
较慢的key变化减轻历史向量的坐标系漂移。它并不把历史key全部校正为新参数下的值,也不保证任意队列容量都合适。m=0立即追上query,m=1彻底冻结;这两个极端帮助理解时间尺度,但通常不是希望采用的默认方案。
梯度只到query;EMA从query参数流向key参数。 查看对应图解状态
- 查询视图
- 查询编码器 θq
- q
- 对比损失
- 键视图
- 键编码器 θk
- k⁺
- 梯度更新
- 键分支停止梯度
- 参数 EMA
- θk ← m θk + (1−m) θq
- 0.9 × 1 + 0.1 × 2 = 1.1
- 这里的平均对象是网络参数;m = 0.9 仅用于教学算例。