0%

TML OPD 的 γ 在哪里

TML OPD 博客的 $\gamma$ 在哪里?他们的原文写的是:

「折扣因子」是什么?它不在公式里。作为初学者我很困惑 🤔。

$\gamma$ 在哪里?

Token-level OPD

如上图所示,TML 的逐词元 loss 已经定义为了:

其中 $ c_t=(x,y_{<t})$。上式是 token-level 的 loss。我们先顺着这个熟悉的式子推一遍它的梯度。

常见 log-derivative trick:

所以有

请注意 score-function identity:

综上,有:

定义:

其中 $s_t$ 是 score function,$r_t$ 是 log-ratio。整理梯度得:

所以,定义梯度的 Monte Carlo estimator:

它是无偏的(当把 $c_t$ 视为已经采样好的固定 context 时),如果 $y_t\sim\pi_\theta(\cdot|c_t)$,那么

对于采样一个 token $y_t$ 得到的单样本无偏 Monte Carlo 梯度估计量 $\hat{g}_t$,设计 surrogate loss,使得它 .backward() 之后产生 $s_t r_t$:

等到真正训练的时候,因为 rollout 是由采样时的 policy $\pi_{\mathrm{samp}}$ 产生的,要再加一个 importance sampling ratio,

其中

因此

如果正处于完全 on-policy 点,即当前 learner 就是刚刚用于 rollout 的 policy,那么

那么

那么

以上就是 TML 的 token-level OPD。

上面一直看的是单个位置 $t$。对于一条长度为 $T$ 的 student rollout,

每个位置都有一个局部梯度估计

TML 的 token-level OPD 对整条 rollout 的梯度估计,就是把各位置的局部贡献直接相加。estimator 定义为:

每个 token 只使用自己当前位置的 log-ratio $r_t$ 作为训练信号,并不会把未来位置的 $r_{t+1},r_{t+2},\ldots$ 回传给当前 token。

为什么 $\hat g_{\mathrm{tok}} = \sum_{t=1}^T\hat g_t$?这合适吗?如果目标是精确估计完整 trajectory reverse-KL 的梯度,它是有偏的。

Sequence-level OPD

参考了知乎文章《重探 On-Policy Distillation(OPD):三类典型失败以及修复路径》

对于 prompt $x$,完整 response 为 $y=(y_1,\ldots,y_T)$。sequence-level OPD 的目标是

用刚刚一样的推导梯度,

利用常见的 log-derivative trick:

所以有

再利用 zero-mean score identity:

得到:

用刚刚一样的记号,记

语言模型是自回归的,

还有

因此,目标的梯度整理为:

因此,sequence-level 的 estimator 定义为:

当 $t’ < t$ 时,因为

所以

这里全期望公式是因为固定 $c_t$ 时,$r_{t’}$ 不随当前的 $y_t$ 变化,我补一下解释:

因此可以把 gradient 改写成 causal return-to-go:

回忆一下,token-level 的 estimator 是:

由此可见,TML 的 token-level 的 estimator 是有偏的。

γ 在哪里?

参考了知乎文章《重探 On-Policy Distillation(OPD):三类典型失败以及修复路径》

把 immediate token-level 和完整 sequence-level 写进同一个 estimator,这样它们就是这个折扣 return-to-go estimator 的特例:

$\gamma$ 就是在这里。😉

References

TML 让 $\gamma = 0$。这是有偏的。但是方差会更小。证明在Yuqian Fu 等人写的文章他们的论文里。

proof

他们还发现了 sampled-token OPD 的其他问题。而且,他们还研究了介于单 token 和全词表之间的「teacher top-K 局部匹配」。

我主要阅读了他们分享的知乎内容

另外 TML 的思路首先是:

然后训练,只有当

时,它才额外调用:

所以另一个视角就是,所谓 $\gamma=0$,从 RL 语言里几乎立即得到:

没有必要先证明

欸,那我这篇博客不就是白写了。