Importance Sampling¶
在 RL 中,rollout 策略 (q) 通常与学习器 (p_\theta) 不同(采样滞后于训练、采样本身非确定性等)。此时朴素的同策略目标
[ \mathcal{L}(\theta) = \mathbb{E}{x\sim p\theta}[A(x)] ]
是有偏的,因为样本来自 (q) 而非 (p_\theta)。重要性采样用概率比重重新加权每个样本来修正这个偏差:
[ \mathcal{L}{\text{IS}}(\theta) = \mathbb{E} A(x)\right] ]}\left[\frac{p_\theta(x)}{q(x)
由此恢复出正确的期望奖励。
出现的两个对数概率张量:
- (\log p_\theta(x)) ——
target_logprobs,由学习器在forward_backward的前向部分计算。 - (\log q(x)) ——
sampling_logprobs,由采样器在 rollout 时记录,作为修正项传入。
等价代码:
Inputs
target_tokens: array[(N,), int]—— 由 (q) 采样的 token ID。logprobs: array[(N,), float]—— 这些 token 的sampling_logprobs。advantages: array[(N,), float]—— 逐 token 的 advantage(正值强化,负值抑制)。
Outputs
logprobs—— 这些 token 的target_logprobs。
Diagnostics
loss:sum—— 重要性加权策略梯度损失总和。