Importance Ratio:重要性采样与分布校正#

入门5 分钟阅读查看源文件 ↗

TL;DR#

本页内容7 个部分

Importance Ratio:对旧样本重加权

1. 采样分布差异对样本平均的影响#

固定同一个前缀,old 选择第二个动作的概率为 0.20.2,current 却为它分配 0.60.6。旧样本中该动作的期望出现比例仍是 0.20.2,与 current 下的 0.60.6 不同。怎样利用已有样本,计算当前动作分布下的期望?

策略更新使用 current 策略计算概率,而训练回答由 old 策略生成。同一动作在两个策略下出现的概率可能不同,直接平均旧样本,通常不能得到 current 下想计算的期望。

2. 采样分布与目标分布#

Importance ratio(重要性比率)给每个旧样本乘上 current/old 的概率比:current 下概率高于 old 的动作增加权重,概率低于 old 的动作减少权重。它改变计算同一个期望的方式,不改变原本要取平均的量。

2.1 区分采样策略与目标策略#

先区分生成数据的策略与正在更新的策略:

策略 负责什么 什么时候变化
Current policy πθ\pi_\theta 正在训练的 Actor 每次优化步骤都会更新参数
Old policy πold\pi_{\text{old}} 生成本批 rollout 的策略快照 一批数据优化期间固定,下一轮 rollout 前刷新

在同步采样配置中,数据采样完成且尚未更新时,current 与 old 相同;随着同一批数据上的多次更新,两者逐渐不同。Importance ratio 让旧分布下的动作样本用于计算当前动作分布下的期望。

先固定状态 ss,只考虑下一个动作 aa。在 LLM 中,就是固定同一个问题和已生成前缀,比较下一个 token。设 f(s,a)f(s,a) 是要取平均的量,例如动作的回报或一个固定的 advantage。目标是算 current policy 下的期望,但动作来自 old policy。

2.2 两动作任务的重加权计算#

把要平均的动作数值记为 ff,current/old 概率比记为 rr。

固定同一个状态,假设只有动作 a1,a2a_1,a_2。本节的数值都是用于说明计算的假设值:

动作 Old 概率 Current 概率 f(s,a)f(s,a) Ratio rr 加权值 rfr f
a1a_1 0.8 0.4 1 0.5 0.5
a2a_2 0.2 0.6 4 3 12

直接对 old 的样本取平均,对应期望是 Eold[f]=0.8×1+0.2×4=1.6\mathbb E_{\mathrm{old}}[f]=0.8\times1+0.2\times4=1.6。目标策略 current 下的期望为 Eπθ[f]=0.4×1+0.6×4=2.8\mathbb E_{\pi_\theta}[f]=0.4\times1+0.6\times4=2.8。

用 old 的概率加权,再乘 ratio,得到 Eold[rf]=0.8×0.5×1+0.2×3×4=2.8\mathbb E_{\mathrm{old}}[rf]=0.8\times0.5\times1+0.2\times3\times4=2.8。第二个动作在 old 下的期望频率为 0.20.2;乘以 33 后,其对期望的贡献与 current 下的概率 0.60.6 对应。

重要性重加权保持 ff 不变,仅改变期望的估计方式。表中每行代表一种可能的动作,不能将两行各计一次来求期望。实际计算时,对 old 独立采样得到的各个 rfr f 值取普通样本平均即可;0.50.5 与 1212 的期望出现比例仍分别为 0.80.8 与 0.20.2。

3. 换分布恒等式与梯度权重#

3.1 重要性采样恒等式#

把当前策略的概率写成“旧概率 × 概率比”,便得到:

Ea∼πθ(⋅∣s)[f(s,a)]=∑aπθ(a∣s)f(s,a)=∑aπold(a∣s)πθ(a∣s)πold(a∣s)f(s,a)=Ea∼πold(⋅∣s)[πθ(a∣s)πold(a∣s)f(s,a)].\begin{aligned} \mathbb E_{a\sim\pi_\theta(\cdot\mid s)}[f(s,a)] &=\sum_a\pi_\theta(a\mid s)f(s,a)\\ &=\sum_a\pi_{\text{old}}(a\mid s) \frac{\pi_\theta(a\mid s)}{\pi_{\text{old}}(a\mid s)}f(s,a)\\ &=\mathbb E_{a\sim\pi_{\text{old}}(\cdot\mid s)} \left[\frac{\pi_\theta(a\mid s)}{\pi_{\text{old}}(a\mid s)}f(s,a)\right]. \end{aligned}

这个恒等式要求期望存在,且 current 给正概率的动作在 old 下也有正概率。否则旧策略无法采到这些动作,重加权无从补偿。

对采样位置 tt,把这个比值记为 rt(θ)=πθ(at∣st)/πold(at∣st)r_t(\theta)=\pi_\theta(a_t\mid s_t)/\pi_{\text{old}}(a_t\mid s_t)。在两动作算例中,a1a_1 的概率从 0.80.8 降至 0.40.4,所以 r=0.5r=0.5;a2a_2 的概率从 0.20.2 升至 0.60.6,所以 r=3r=3。两个权重分别补偿采样分布中这两种动作相对目标分布过高、过低的期望出现比例。rt=1r_t=1 只说明这个状态下这个动作的概率没变,不代表整个策略都没变。

3.2 概率比加权的策略梯度#

固定本轮估计的 advantage A^t\hat A_t,对旧样本分别计算 rtA^tr_t\hat A_t,再取样本平均,得到策略更新的经验目标。帽子表示它是从 rollout 得到的估计值,不是已知的真实 AπA^\pi。求导得到:

∇θ(rtA^t)=rtA^t∇θlog⁡πθ(at∣st).\nabla_\theta(r_t\hat A_t) =r_t\hat A_t\nabla_\theta\log\pi_\theta(a_t\mid s_t).

动作 log 概率对参数的梯度称为 score 向量。在 current 等于 old 的起点,ratio 为 11,上述导数就是 advantage 乘 score。此后每个位置使用自己的 ratio。这个局部目标也是 PPO 的起点。[1]

4. 重加权后的有限样本方差#

在两动作算例中,两种采样方式都估计期望 2.82.8,但方差不同。直接从 current 采样 ff,单样本方差为 Var⁡πθ(f)=0.4×12+0.6×42−2.82=2.16\operatorname{Var}_{\pi_\theta}(f)=0.4\times1^2+0.6\times4^2-2.8^2=2.16。从 old 采样再算 rfr f,单样本方差则为 Var⁡old(rf)=0.8×0.52+0.2×122−2.82=21.16\operatorname{Var}_{\mathrm{old}}(rf)=0.8\times0.5^2+0.2\times12^2-2.8^2=21.16。独立采样 NN 次后,平均值的方差分别除以 NN。期望相同,并不保证有限样本估计具有相同的方差。

5. 校正范围与有限样本误差#

5.1 采样校正与参考约束的分工#

Importance ratio 校正同一前缀下的动作期望,不会让采样器与训练器的数值实现自动一致。与此不同,Reference KL 会在追求任务奖励时,对偏离参考分布付出代价,从而改变目标。

5.2 有限样本与逐前缀校正的限制#

重加权不会增加实际采样次数。Old 下概率低而 current 下概率高的动作,仍可能在有限批次中缺失;即使出现,也可能因权重较大而主导估计。

上述恒等式只校正给定前缀下的 token 分布。若只给每个位置的训练项乘该位置的 ratio,前缀本身仍按 old 的分布出现。完整回答的换分布权重则是各位置 ratio 的乘积,同样需要满足支持集覆盖与期望存在的条件。

参考资料#

  1. PPO(2017). 原文:Clipping、经验目标与 Actor–Critic。