跳到主要内容

从 KL 散度理解 SFT 与 RL:覆盖数据,还是寻找高奖励模式?

SFT 和强化学习都在调整语言模型的输出分布,但两者观察数据、获得反馈和移动概率质量的方式并不相同。

一种常见的概括是:

  • SFT 对应 Forward KL,倾向于覆盖训练数据中的模式;
  • RL 对应 Reverse KL,倾向于寻找高奖励模式。

这个说法抓住了部分直觉,但如果缺少条件,很容易产生误解。本文从 KL 散度的定义出发,依次推导:

  1. SFT 为什么等价于最大似然;
  2. Forward KL 为什么具有 mass-covering 倾向;
  3. 最大熵 RL 如何写成 Reverse KL;
  4. RLHF 中的参考策略为什么不能省略;
  5. 为什么不能笼统地说“所有 RL 都是 Reverse KL”。

**先记住一句话:**KL 的方向决定了从哪个分布采样,也决定了模型更害怕“漏掉目标模式”,还是“生成目标不认可的内容”。

1. KL 散度究竟在计算什么?​

对于离散分布 和 ,KL 散度定义为

这里有两个容易写错的地方。

第一,KL 中是概率之比的对数:

第二, 的期望是在 上计算的。也就是说,我们从 中采样,再检查 给这些样本分配了多少概率。

因此,KL 散度有方向:

它也不是严格意义上的距离,因为它不满足对称性和三角不等式。

一个编码视角​

如果真实数据服从 ,但我们使用按照 设计的编码方案,那么

表示相对于最优编码,平均多付出了多少信息量。 越不能解释 经常产生的样本,额外代价就越大。

2. Forward KL 与 Reverse KL 的行为差异​

为避免术语混乱,本文固定以下约定:

  • 是目标分布;
  • 是待优化的模型分布;
  • 称为 Forward KL;
  • 称为 Reverse KL。

不同资料可能采用不同命名方式,所以阅读论文时最好直接看公式,不要只看 forward 或 reverse 这两个词。

2.1 Forward KL:目标有的,模型不能漏​

Forward KL 为

如果某个位置满足

那么

目标分布认为 会出现,模型却几乎不给它概率,因此模型受到很大惩罚。

所以 Forward KL 倾向于:

  • 覆盖目标分布的多个模式;
  • 避免遗漏训练数据中的低频区域;
  • 在受限模型中形成 mass-covering 或 mode-covering 行为。

它有时也被称为 zero-avoiding:模型尽量避免在 的位置令 。

2.2 Reverse KL:模型生成的,目标必须认可​

Reverse KL 为

如果

那么该项趋近正无穷。模型在目标不认可的区域生成内容,会受到很大惩罚。

但如果模型完全不访问目标分布的某个模式,即

这个位置不会被 采样,因此它对 Reverse KL 没有直接贡献。这使模型可能选择一个容易拟合的高概率模式,而忽略其他模式。

所以 Reverse KL 常表现为:

  • 把概率集中在少数高价值区域;
  • 避免进入目标分布的低概率区域;
  • 在受限模型中形成 mode-seeking 或 mode-selecting 行为。

2.3 一个三点分布的例子​

设目标分布为

表示目标有两个同样合理的模式。模型如果只选择第一个模式:

则 Forward KL 为

因为模型漏掉了第二个模式;而 Reverse KL 为

仍然是有限值。

反过来,如果模型在第三个位置分配正概率,由于 ,Reverse KL 会变成无穷大。这个简单例子揭示了两种方向的核心区别:

方向最害怕的情况典型倾向
目标有,模型没有覆盖多个模式
模型有,目标不认可选择安全的高概率模式

“覆盖”与“寻峰”是受模型能力、参数化方式和支持集影响的训练倾向,并不是任何情况下都必然出现的结果。

3. SFT 为什么等价于最大似然?​

在监督微调中,设:

  • 表示上下文或指令;
  • 表示目标回答;
  • 表示训练数据分布;
  • 表示模型分布。

对固定上下文 ,考虑

展开后得到

训练数据分布固定,因此 与模型参数 无关。于是

右边就是最大似然估计。实际训练时,数据分布由有限样本近似:

对于自回归语言模型,一条回答的概率又可拆成 token 概率的乘积:

所以

这正是常见的 token 级交叉熵损失。

SFT 学到了什么?​

SFT 的样本来自训练数据,模型要提高这些示范答案的概率,因此它更擅长:

  • 学习回答格式和表达风格;
  • 建立基本的指令跟随能力;
  • 覆盖数据中出现的任务和答案模式;
  • 模仿示范,而不是主动比较多个候选答案的优劣。

所以更准确的总结是:

SFT 让模型学会按照示范去做,但不一定让模型学会在多个可行答案中选出最优答案。

4. 从奖励构造一个目标分布​

强化学习中没有固定的标准答案,只有奖励函数 或环境反馈。为了把奖励与概率分布联系起来,可以定义 Boltzmann 分布:

其中

是归一化常数, 是温度参数。

取对数:

奖励越高, 分配的概率越大。温度控制分布的尖锐程度:

  • 较小:分布更集中,更偏向最高奖励结果;
  • 较大:分布更平滑,保留更多探索空间。

5. 最大熵 RL 为什么可以写成 Reverse KL?​

设当前策略为 。计算它到奖励诱导分布的 Reverse KL:

由于 与 无关,最小化这个 KL 等价于

这就是最大熵强化学习的基本目标:

  • 鼓励 exploitation,即提高高奖励行为的概率;
  • 鼓励 exploration,即避免策略过早退化为单一行为;
  • 决定奖励与熵之间的权衡。

因此,“RL 是 mode-seeking”不能理解为策略一定会完全坍缩。奖励项推动策略向高奖励模式集中,熵正则则保留多样性。

6. RLHF 中为什么还要有参考策略?​

大模型 RLHF 通常不会直接优化“奖励加熵”,而是限制新策略不要偏离 SFT 模型太远。常见目标为

其中 通常是冻结的 SFT 模型。

定义奖励诱导的目标策略

其中

现在计算

两边乘以 :

不依赖待优化策略,因此

这说明 KL 正则化 RLHF 可以解释为:当前策略使用 Reverse KL 去逼近由参考策略和奖励共同决定的目标策略。

参考策略有两个作用:

  1. 保留 SFT 阶段学到的语言能力和基本行为;
  2. 防止模型为了提高奖励而进入异常区域,即缓解 reward hacking 和分布漂移。

如果参考策略是均匀分布,那么

此时才会退化成前面的最大熵目标。真实 RLHF 的参考策略并不均匀,因此不能简单地把 KL 正则完全等同于熵奖励。

7. SFT 与 RL 的统一对比​

维度SFTKL 正则化 RL / RLHF
样本主要来自人工数据或示范分布当前策略生成的样本
主要信号标准回答的对数似然奖励、偏好或环境反馈
KL 视角
典型倾向覆盖示范中的模式向高奖励模式集中
主要作用学会任务、格式和基本行为在已有能力中进一步选优
主要风险学到数据噪声和平庸答案奖励投机、模式收缩和分布漂移

可以用一句话概括:

SFT 让模型学会“怎么做”,RL 让模型进一步学习“哪些做法更值得选择”。

8. On-policy 不等于 Reverse KL​

这两个概念经常被混为一谈:

  • on-policy 描述训练轨迹由谁生成;
  • Forward / Reverse KL 描述两个分布以什么方向进行比较。

例如,在 on-policy distillation 中,学生模型先生成上下文,但老师仍可能在这些上下文上提供 token 级 Forward KL:

这里轨迹来自 student,所以状态分布是 on-policy 的;但动作分布上的 KL 方向仍然是 teacher 到 student 的 Forward KL。

判断一个方法时,应分别问两个问题:

  1. 轨迹从哪里来? 来自 teacher、离线数据,还是当前 policy?
  2. KL 方向是什么? 是 Target 到 Model,还是 Model 到 Target?

9. 常见误区​

误区一:KL 是两个对数的比值​

错误:

正确:

误区二:最小化 KL 与最大似然的目标值相等​

两者的最优参数相同,但目标值相差一个与参数无关的常数 。因此应该比较它们的最优参数,而不是直接写两个标量目标相等。

误区三:奖励函数本身就是概率分布​

奖励可以是任意实数,概率必须非负且归一化。需要通过

或带参考策略的形式,才能得到合法的目标分布。

误区四:所有 RL 都是 Reverse KL​

只有在最大熵 RL、KL 正则化 RLHF,或明确构造 reward-induced distribution 的框架中,RL 目标才能直接改写为 Reverse KL。一般的累计奖励最大化并不天然等于 KL 最小化。

误区五:Reverse KL 一定导致模式坍缩​

Mode-seeking 是典型倾向,并非不可避免的结论。熵正则、参考策略、模型表达能力、奖励设计和采样方式都会影响最终结果。

10. 总结​

整条推导可以压缩成三行:

SFT​

训练样本来自数据分布,模型学习覆盖示范中的行为。

最大熵 RL​

策略提高高奖励行为的概率,同时通过熵保持探索。

KL 正则化 RLHF​

其中

奖励负责指出更好的方向,参考策略负责限制偏移,两者共同构成模型实际逼近的目标分布。

如果只记住最后一个判断,可以记成:

Forward KL 更在意不要漏掉目标已有的模式;Reverse KL 更在意模型生成的内容必须得到目标分布认可。

延伸阅读​