Reference KL:分布差异与策略约束#

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

TL;DR#

本页内容6 个部分

Reference KL:相对固定参照惩罚偏离

1. 为什么需要固定参考策略#

参考策略给两个动作的概率都是 0.50.5,训练中的策略改成 0.40.4 和 0.60.6。任务奖励可能鼓励这种变化,但目标是否也应为偏离参考行为付出代价?Reference KL 用分布差异定义这份代价。

若目标只包含期望任务奖励,优化器就没有显式保留参考行为的正则约束。评分可能没有覆盖我们希望保留的全部行为,也可能存在获得高奖励但不符合任务意图的行为。Reference KL 给目标增加一个偏好:奖励相近时,倾向于选择更接近参考策略的分布。

2. KL 的定义与正则目标#

KL 散度(Kullback–Leibler divergence)衡量两个概率分布的差异。把当前策略相对 reference 的 KL 从奖励目标中扣掉,就在高奖励与保留参考行为之间加入取舍。对同一个 KL 数值,正则系数越大,目标中的惩罚越大。

2.1 Current、old 与 reference 的作用#

每轮训练包含两个阶段:(1)生成一批数据;(2)用这批数据更新参数。各策略在这两个阶段的作用如下:

策略 是什么 什么时候变化
Current policy πθ\pi_\theta 正在训练的 Actor 每次优化步骤都会更新参数
Old policy πold\pi_{\text{old}} 生成本批 rollout 的策略快照 一批数据优化期间固定,下一轮 rollout 前刷新
Reference policy πref\pi_{\text{ref}} 作为行为参照的模型,例如 SFT 模型 在本文讨论的一段 RL 训练中固定

同一批数据优化期间,current 变化,old 固定。Reference 则跨批保留,用作整段训练的行为参照。

Old 记录采样来源,reference 提供行为参照。某些方案会在训练阶段之间刷新 reference;本文先讨论固定 reference 的情况。

2.2 定义 KL 与本页的方向#

固定状态 ss,KL 的定义是:

DKL ⁣(πθ(⋅∣s)∥πref(⋅∣s))=Ea∼πθ(⋅∣s)[log⁡πθ(a∣s)πref(a∣s)].D_{\mathrm{KL}}\!\left(\pi_\theta(\cdot\mid s)\|\pi_{\text{ref}}(\cdot\mid s)\right) =\mathbb E_{a\sim\pi_\theta(\cdot\mid s)} \left[\log\frac{\pi_\theta(a\mid s)}{\pi_{\text{ref}}(a\mid s)}\right].

这个式子要求 reference 对 current 可能采取的动作有支持,否则 KL 可能为无穷大。KL 非负、两个分布相同时为零,而且通常不对称;交换两者会改变含义。非负性说的是完整期望,不是每个动作上的 log-ratio:某个动作的 current 概率低于 reference 时,该动作的 log-ratio 可以为负。

这里的分母是 reference,动作却按 current 取平均。这个 log-ratio 是用来衡量分布差异的量,没有把采样分布从 reference 换成 current。

本文把 DKL(πθ∥πref)D_{\mathrm{KL}}(\pi_\theta\|\pi_{\text{ref}}) 称为 reverse KL。LLM RLHF 常采用它,既有目标上的取舍,也有利用现有 rollout 训练时的计算原因。

2.3 任务奖励与参考 KL 的联合目标#

以固定问题 qq、完整回答 yy 为例,令 R(q,y)R(q,y) 为任务评分,β≥0\beta\geq0 为正则强度。可以定义:

Jβ(θ∣q)=Ey∼πθ(⋅∣q)[R(q,y)]−βDKL ⁣(πθ(⋅∣q)∥πref(⋅∣q)).J_\beta(\theta\mid q) =\mathbb E_{y\sim\pi_\theta(\cdot\mid q)}[R(q,y)] -\beta D_{\mathrm{KL}}\!\left(\pi_\theta(\cdot\mid q)\|\pi_{\text{ref}}(\cdot\mid q)\right).

这里比较完整回答分布,实际训练还会对问题取平均。KL 惩罚改变奖励与参考偏离之间的取舍,也可能改变最优策略。InstructGPT 就用相对 SFT 模型的 KL 惩罚缓解奖励模型过度优化。[1]

2.4 两动作任务的 KL 惩罚与目标值#

用动作 a1,a2a_1,a_2 作手算例子:reference 的概率是 (0.5,0.5)(0.5,0.5),current 是 (0.4,0.6)(0.4,0.6)。因此,KL 为 DKL(πθ∥πref)=0.4log⁡(0.4/0.5)+0.6log⁡(0.6/0.5)≈0.0201D_{\mathrm{KL}}(\pi_\theta\|\pi_{\mathrm{ref}})=0.4\log(0.4/0.5)+0.6\log(0.6/0.5)\approx0.0201,这里用自然对数。

单独看 a1a_1,其 log-ratio 是 log⁡0.8<0\log0.8<0;但两个动作按 current 概率加权后的 KL 仍为正。因此,一个采样 token 的 log-ratio 可以为负,分布的 KL 才是非负的。

继续这个两动作例子,令任务奖励分别为 11 和 44,则 current 下的期望奖励为 Eπθ[R]=0.4×1+0.6×4=2.8\mathbb E_{\pi_\theta}[R]=0.4\times1+0.6\times4=2.8。若 β=2\beta=2,用更精确的 KL 值计算,加入惩罚后的目标为 Jβ=2.8−2×0.020136≈2.7597J_\beta=2.8-2\times0.020136\approx2.7597。这里降低的是目标值,任务奖励本身没有被重新估计。

2.5 刷新 old 后的概率比与参考惩罚#

沿用 current 为 (0.4,0.6)(0.4,0.6)、reference 为 (0.5,0.5)(0.5,0.5) 的两动作分布。下一轮把 current 的 (0.4,0.6)(0.4,0.6) 保存成新的 old 时,所有动作的 current / old ratio 都回到 11;相对 reference (0.5,0.5)(0.5,0.5) 的 KL 却仍是约 0.02010.0201。

固定同一状态,所有动作的 ratio 都为 11,表示 current 与 old 在该状态下的动作分布相同;该状态下的 reference KL 为零,则要求 current 与 reference 的动作分布相同。 两个量使用不同基准,所以可以同时参与训练。

KL 只衡量相对参考模型的分布差异,不能保证回答正确,也不能代替对奖励质量的判断。

3. 最优分布与逐 token 分解#

3.1 两动作重加权与最优策略推导#

沿用两动作任务:reference 概率均为 0.50.5,奖励分别为 11 和 44,KL 系数为 β=2\beta=2。将参考概率分别乘以指数奖励,未归一化权重为 0.5e1/2≈0.82440.5e^{1/2}\approx0.8244 和 0.5e4/2≈3.69450.5e^{4/2}\approx3.6945。再除以两者之和,得到最优概率:

π∗(a1)=0.5e1/20.5e1/2+0.5e4/2≈0.1824,π∗(a2)≈0.8176.\pi^*(a_1)=\frac{0.5e^{1/2}}{0.5e^{1/2}+0.5e^{4/2}}\approx0.1824,\qquad \pi^*(a_2)\approx0.8176.

两个动作在 reference 中等概率,奖励较高的动作因指数权重更大,取得更高的最优概率。这是给定奖励与 KL 系数、可自由选择动作分布时的理论解;原算例中的 current (0.4,0.6)(0.4,0.6) 用于计算当时的目标值,尚未达到这个最优分布。

固定问题 qq,令 β>0\beta>0,在 reference 的支持上优化。先把策略视为可自由选择的分布,不限制在某个神经网络的参数范围内,并假定下面的归一化求和有限。对奖励减去 reference KL 惩罚的目标加入概率和为 11 的约束,用拉格朗日乘子 λ\lambda 求驻点:

拉格朗日函数对回答概率的偏导=R(q,y)−β(log⁡π∗(y∣q)πref(y∣q)+1)+λ=0.\text{拉格朗日函数对回答概率的偏导}=R(q,y)-\beta\left(\log\frac{\pi^*(y\mid q)}{\pi_{\text{ref}}(y\mid q)}+1\right)+\lambda=0.

移项可得 π∗(y∣q)∝πref(y∣q)exp⁡(R(q,y)/β)\pi^*(y\mid q)\propto\pi_{\text{ref}}(y\mid q)\exp(R(q,y)/\beta)。目标中的奖励项对分布线性,负 KL 项为凹函数,因此这个驻点给出最大值。归一化后:

π∗(y∣q)=πref(y∣q)exp⁡(R(q,y)/β)∑y′πref(y′∣q)exp⁡(R(q,y′)/β).\pi^*(y\mid q) =\frac{\pi_{\text{ref}}(y\mid q)\exp(R(q,y)/\beta)} {\sum_{y'}\pi_{\text{ref}}(y'\mid q)\exp(R(q,y')/\beta)}.

Reference 提供基准概率,奖励通过指数权重调整该概率。 奖励相同的回答保留 reference 中的概率比例;奖励更高的回答具有更大的指数重加权倍数。β\beta 越大,奖励差异对两个回答概率比的影响越小;β\beta 越小,这种影响越大。这是自由分布下的理论最优解,实际模型和优化过程未必能达到它。[2]

3.2 回答 log-ratio 的逐 token 分解#

LLM 的回答概率可以分解为各 token 条件概率的乘积。因此,对完整回答的 log-ratio 有:

log⁡πθ(y∣q)πref(y∣q)=∑t=1∣y∣log⁡πθ(yt∣q,y<t)πref(yt∣q,y<t).\log\frac{\pi_\theta(y\mid q)}{\pi_{\text{ref}}(y\mid q)} =\sum_{t=1}^{|y|}\log \frac{\pi_\theta(y_t\mid q,y_{<t})}{\pi_{\text{ref}}(y_t\mid q,y_{<t})}.

这里按完整生成过程计入终止动作(如 EOS),两边采用相同的序列定义。对 current 生成的完整回答取期望,右边的和就对应完整回答分布的 KL;其中前缀也来自 current 的生成过程。

因此,完整回答的 log-ratio 可以沿 token 累计。将 log-ratio 用作奖励权重或直接用作可微 loss 时,求导路径不同;KL Regularization 进一步核对这两种正则方式。

4. 方向选择与采样条件#

4.1 Forward 与 reverse 的取舍#

交换方向,forward KL 的定义是:

DKL ⁣(πref(⋅∣s)∥πθ(⋅∣s))=Ea∼πref(⋅∣s)[log⁡πref(a∣s)πθ(a∣s)].D_{\mathrm{KL}}\!\left(\pi_{\text{ref}}(\cdot\mid s)\|\pi_\theta(\cdot\mid s)\right) =\mathbb E_{a\sim\pi_{\text{ref}}(\cdot\mid s)} \left[\log\frac{\pi_{\text{ref}}(a\mid s)}{\pi_\theta(a\mid s)}\right].

方向 期望的加权分布 对参考行为的取舍
Reverse KL Current 有 mode-seeking 倾向:允许根据奖励聚焦部分行为模式,不强求全面覆盖参考行为
Forward KL Reference 对 reference 概率较高、current 概率却接近零的行为施加较大惩罚

Mode(模式)是分布的概率峰或高概率区域。Mode-seeking 描述拟合时聚焦部分模式的倾向;本页中应结合奖励重加权后的目标分布理解,而非只看某条 rollout 当前有多常见。

当模型无法同时表示全部目标模式时,这种取舍尤其明显。若模型能精确表示同一个固定目标分布,并达到全局最优,两个方向的 KL 都可降到零,无需降低任何目标模式的概率来近似其他模式。[3]

从定义看,若 reference 对一个动作给正概率,而 current 为该动作分配零概率,forward KL 会变成无穷大;reverse KL 不会仅因这个动作的 current 概率为零就变成无穷大,其他动作的偏离仍会受到惩罚。

例如,reference 原本会生成两类回答,奖励明确偏好其中一类。Reverse KL 允许显著调整两类回答的概率比例;forward KL 对另一类参考回答的概率降至接近零施加更强的约束。KL 的方向是一项训练目标设计选择。

4.2 采样来源与梯度估计成本#

在当前策略采样的配置中,任务奖励直接在 current 生成的回答上计算。Reverse KL 的 log-ratio 可以沿用这些回答:在按 current 采样时,把 −βlog⁡(πθ/πref)-\beta\log(\pi_\theta/\pi_{\text{ref}}) 加进奖励并停止其梯度,通过 policy gradient 就能估计相应正则目标的梯度。[4]

Forward KL 也可以利用 current 样本,但需要正确的重加权。 固定前缀 ss,假定两种策略在共同支持上概率为正,并允许交换求和与求导。令 score 向量 z(a)=∇θlog⁡πθ(a∣s)z(a)=\nabla_\theta\log\pi_\theta(a\mid s)。两种 KL 的梯度都能写成在 current 样本上计算“权重乘 zz”的期望:

方向 乘在 z(a)z(a) 前的权重
Reverse KL log⁡[πθ(a∣s)/πref(a∣s)]\log[\pi_\theta(a\mid s)/\pi_{\text{ref}}(a\mid s)]
Forward KL 1−πref(a∣s)/πθ(a∣s)1-\pi_{\text{ref}}(a\mid s)/\pi_\theta(a\mid s)

第二行利用了 Eπθ[z]=0\mathbb E_{\pi_\theta}[z]=0;去掉其中的 11,仍得到同一个期望梯度。表中比较正的 KL 惩罚,不乘 β\beta 或最大化目标中的负号。

作一个权重大小的手算例子:若某个动作的 current 概率只有 reference 的千分之一,reverse 的权重为 log⁡(1/1000)≈−6.9\log(1/1000)\approx-6.9,forward 的权重则为 1−1000=−9991-1000=-999。这个动作在 current 下很少出现,该动作一旦被采样,其 forward KL 梯度系数可能很大。

这个例子解释了 forward KL 为什么可能受少数大权重样本影响。完整梯度方差还取决于概率分布和 score,因此不能推出 reverse KL 总是方差更小。[4]

也可以按 reference 采样来估计 forward KL;固定前缀且动作可枚举时,还可以直接求和。采用哪种方式,需考虑采样来源、计算成本与估计稳定性。

4.3 校正采样与改变目标的区别#

机制 比较对象 作用
Importance ratio Current / old 用旧动作样本计算当前动作分布下的期望
Reference KL Current 与 reference 在目标中惩罚偏离参考分布

Importance Ratio 的两动作算例中,乘 ratio 后仍然是在计算原来想求的期望 2.82.8;在同一两动作任务中加入 reference KL 后,目标变成约 2.75972.7597。前者改变计算期望的方式,后者改变要优化的目标。

参考资料#

  1. InstructGPT(2022). 原文:RLHF 中的 PPO 与 reference KL。
  2. Direct Preference Optimization(2023,v2). 原文:KL 正则目标的最优分布。
  3. VIREL(2019). 原文:§2.3、§4:模式选择与分布可表示性。
  4. Rethinking KL Regularization in RLHF(2025). 原文:采样梯度、奖励接法与显式 loss。