# 梯度更新和 EMA 更新作用在不同地方 [独立阅读](/course/blocks/moco-two-parameter-updates.html)**课堂上下文:从哪个问题来** 两种参数更新解决不同任务:query学当前选择,key维持较平滑的编码规则。 query编码器从当前损失接收梯度,例如 $\theta_q\leftarrow\theta_q-\eta\nabla_{\theta_q}L$。key编码器不沿当前loss反传,而通过参数移动平均跟随query:$\theta_k\leftarrow m\theta_k+(1-m)\theta_q$。 令旧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彻底冻结;这两个极端帮助理解时间尺度,但通常不是希望采用的默认方案。 图内标签与数值:P16 学习表示机制图,状态 2;查询视图;查询编码器 θq;q;对比损失;键视图;键编码器 θk;k⁺;梯度更新;键分支停止梯度;参数 EMA;θk ← m θk + (1−m) θq;0.9 × 1 + 0.1 × 2 = 1.1;这里的平均对象是网络参数;m = 0.9 仅用于教学算例。 梯度只到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 仅用于教学算例。梯度只到query;EMA从query参数流向key参数。 [查看对应图解状态](/#/l3-r2-p16/1)[查看完整图解](/#/l3-r2-p16/1) ## 继续阅读与实验