Lecture 03 学习讲义
正文
工具
按问题查找
学习信号与表示怎样增加候选,同时让历史表示仍可比较?

梯度和 EMA,更新的是不同对象

解释、算例与证据

P16 · 两个编码器,不同的更新方式

两种参数更新解决不同任务:query学当前选择,key维持较平滑的编码规则。

P16 学习表示机制图,状态 2P16 学习表示机制图,状态 2查询视图查询编码器 θqq对比损失键视图键编码器 θkk⁺梯度更新键分支停止梯度参数 EMAθk ← m θk + (1−m) θq0.9 × 1 + 0.1 × 2 = 1.1这里的平均对象是网络参数;m = 0.9 仅用于教学算例。

query分支接受损失梯度,key分支停止梯度且参数由EMA跟随;算例0.9×1+0.1×2=1.1。

  • 查询视图
  • 查询编码器 θq
  • q
  • 对比损失
  • 键视图
  • 键编码器 θk
  • k⁺
  • 梯度更新
  • 键分支停止梯度
  • 参数 EMA
  • θk ← m θk + (1−m) θq
  • 0.9 × 1 + 0.1 × 2 = 1.1
  • 这里的平均对象是网络参数;m = 0.9 仅用于教学算例。
query分支接受损失梯度,key分支停止梯度且参数由EMA跟随;算例0.9×1+0.1×2=1.1。 查看对应图解状态
查看完整图解

课堂讲述

查询编码器用梯度学习;键编码器不直接通过这条对比损失反向更新,而是用查询编码器参数的移动平均来跟随。 例如只看一个参数分量,旧的键参数是 1,当前查询参数是 2,平均系数取 0.9,那么键参数会变成 1.1,而不是立刻跳到 2。真实网络是对所有参数作这样的更新,这个小数字只是帮助我们看清“缓慢跟随”是什么意思。 这里的 momentum 平均的是网络参数,不是优化器里累积梯度的动量。较慢变化的键编码器,让跨批次保存的键更一致,但旧特征依然不是被神奇地刷新为今天的结果。队列和参数平均,分别回应“大”和“相对一致”两个要求。

梯度更新和 EMA 更新作用在不同地方

独立阅读

query编码器从当前损失接收梯度,例如 θq←θq−η∇θqL\theta_q\leftarrow\theta_q-\eta\nabla_{\theta_q}L。key编码器不沿当前loss反传,而通过参数移动平均跟随query:θk←mθk+(1−m)θq\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彻底冻结;这两个极端帮助理解时间尺度,但通常不是希望采用的默认方案。

沿这个问题继续

手算两次EMA,并在图上指出梯度箭头与EMA箭头的落点;再到P17串完整一步。

图示条件与公式约定

EMA 算例 m=.9、旧 θk=1、当前 θq=2,结果1.1。真实网络对参数张量更新;这不是优化器梯度动量。

这条线索的展开与后续阅读