过拟合/灾难性遗忘:SFT vs on-policy RL 分析
问题清单
- 为何 RL(尤其 RLHF/PPO)"主分量更稳、主要改次要分量"?
- on-policy 为何更像只在"自己会生成的区域"做重加权?
- 为何 on-policy 往往用更小 KL 就能获得相近提升?
- policy gradient 为何体现"最小 KL 解"的(显式/隐式)偏好?
- SFT 也用当前模型算 loss,为何仍可能被离线数据拉远?
- on-policy 是否等价于分布自对齐/自蒸馏(让训练数据更像模型自己会生成的数据------很多"缓解遗忘"的方法本质)?
0. 起始表述与核心疑问
0.1 原始表述(原句)
"SFT 造成过拟合和灾难性遗忘(catastrophic forgetting),其表层原因是训练数据不够 on-policy;深层原因是权重的主分量被外来数据大幅修改,导致'根基'不稳。
RL 因为用 on-policy 的数据训练,权重的主分量不变,改变的只是次要分量,反而能避免灾难性遗忘;而改变的权重分布也更稀疏(尤其 bf16 量化下)。"
0.2 核心疑问
为什么会说"RL 用 on-policy,所以主分量不变、只改次要分量"?
这句话中的"主分量/次要分量"是一种几何/谱分解的说法:将参数更新 Δ θ \Delta\theta Δθ 投影到某个"重要方向"的基底上(常见是 Fisher/Hessian 的特征方向,或某种 PCA/SVD 得到的"核心子空间")。
关键理解:
- "主分量不变"本质是指:RL(尤其是带 KL 约束的 PPO/RLHF)更倾向于在"低敏感/低曲率"的方向上做小幅修正
- 而不会大幅旋转/改写那些对模型整体行为最敏感的方向
- 关键不是"on-policy 这个词本身有魔法" ,而是 on-policy +(显式或隐式)KL/信赖域约束 共同导致的
一、RL 为何"主分量不变、改次要分量"?
1.1 数学机制:KL/信赖域约束下的 Fisher 谱分解
1.1.1 RLHF/PPO 的优化目标
典型 RLHF(PPO/GRPO 等)优化的目标(简化形式):
max θ E x ∼ D , y ∼ π θ ( ⋅ ∣ x ) [ r ( x , y ) ] − β K L ( π θ ( ⋅ ∣ x ) ∥ π ref ( ⋅ ∣ x ) ) \max_\theta \mathbb{E}{x\sim\mathcal{D}, y\sim\pi\theta(\cdot|x)}[r(x,y)] - \beta\,\mathrm{KL}(\pi_\theta(\cdot|x) \,\|\, \pi_{\text{ref}}(\cdot|x)) θmaxEx∼D,y∼πθ(⋅∣x)[r(x,y)]−βKL(πθ(⋅∣x)∥πref(⋅∣x))
目标函数组成:
- 第一项 : E x ∼ D , y ∼ π θ ( ⋅ ∣ x ) [ r ( x , y ) ] \mathbb{E}{x\sim\mathcal{D}, y\sim\pi\theta(\cdot|x)}[r(x,y)] Ex∼D,y∼πθ(⋅∣x)[r(x,y)] 是期望奖励,鼓励生成高奖励的回答
- 第二项 : − β K L ( π θ ( ⋅ ∣ x ) ∥ π ref ( ⋅ ∣ x ) ) -\beta\,\mathrm{KL}(\pi_\theta(\cdot|x) \,\|\, \pi_{\text{ref}}(\cdot|x)) −βKL(πθ(⋅∣x)∥πref(⋅∣x)) 是 KL 散度惩罚项
- π ref \pi_{\text{ref}} πref 是参考策略(通常是初始模型或上一轮迭代的模型)
- β > 0 \beta > 0 β>0 是正则化系数,控制奖励优化与分布稳定性的权衡
KL 项的作用机制:
- KL 项(或 PPO 的 ratio clipping 起到类似"信赖域"作用)强制新策略不偏离参考模型太远
- 这会把"允许的更新"限制在小 KL 半径内:你可以改,但只能改到"刚刚好够用"
- 等价于在策略空间中施加了一个信赖域约束
1.1.2 Fisher 信息矩阵与 KL 的二阶展开
Fisher 信息矩阵的定义:
对于策略 π θ \pi_\theta πθ,Fisher 信息矩阵 F ( θ ) F(\theta) F(θ) 定义为:
F ( θ ) = E x ∼ D , y ∼ π θ ( ⋅ ∣ x ) [ ∇ θ log π θ ( y ∣ x ) ∇ θ log π θ ( y ∣ x ) ⊤ ] F(\theta) = \mathbb{E}{x\sim\mathcal{D}, y\sim\pi\theta(\cdot|x)}\left[\nabla_\theta \log \pi_\theta(y|x) \nabla_\theta \log \pi_\theta(y|x)^\top\right] F(θ)=Ex∼D,y∼πθ(⋅∣x)[∇θlogπθ(y∣x)∇θlogπθ(y∣x)⊤]
Fisher 矩阵的物理意义:
- F ( θ ) F(\theta) F(θ) 衡量参数空间在 θ \theta θ 处的"曲率"
- 特征值 λ i \lambda_i λi 大的方向:参数变化对策略输出影响大(高敏感、"硬"方向)
- 特征值 λ i \lambda_i λi 小的方向:参数变化对策略输出影响小(低敏感、"软"、冗余方向)
KL 散度的二阶展开:
在参考策略参数 θ 0 \theta_0 θ0 附近,将 KL 散度做二阶 Taylor 展开:
K L ( π θ 0 + Δ θ ( ⋅ ∣ x ) ∥ π θ 0 ( ⋅ ∣ x ) ) ≈ 1 2 Δ θ ⊤ F ( θ 0 ) Δ θ + O ( ∥ Δ θ ∥ 3 ) \mathrm{KL}(\pi_{\theta_0+\Delta\theta}(\cdot|x) \,\|\, \pi_{\theta_0}(\cdot|x)) \approx \frac{1}{2}\Delta\theta^\top F(\theta_0) \Delta\theta + O(\|\Delta\theta\|^3) KL(πθ0+Δθ(⋅∣x)∥πθ0(⋅∣x))≈21Δθ⊤F(θ0)Δθ+O(∥Δθ∥3)
其中 F ( θ 0 ) F(\theta_0) F(θ0) 是在 θ 0 \theta_0 θ0 处计算的 Fisher 信息矩阵。当 Δ θ \Delta\theta Δθ 足够小时,高阶项可忽略。
推导说明:
- 在 Δ θ = 0 \Delta\theta = 0 Δθ=0 处, K L ( π θ 0 ( ⋅ ∣ x ) ∥ π θ 0 ( ⋅ ∣ x ) ) = 0 \mathrm{KL}(\pi_{\theta_0}(\cdot|x) \,\|\, \pi_{\theta_0}(\cdot|x)) = 0 KL(πθ0(⋅∣x)∥πθ0(⋅∣x))=0(相同分布)
- 一阶导数: ∇ Δ θ K L ( π θ 0 + Δ θ ( ⋅ ∣ x ) ∥ π θ 0 ( ⋅ ∣ x ) ) ∣ Δ θ = 0 = 0 \nabla_{\Delta\theta} \mathrm{KL}(\pi_{\theta_0+\Delta\theta}(\cdot|x) \,\|\, \pi_{\theta_0}(\cdot|x))|_{\Delta\theta=0} = 0 ∇ΔθKL(πθ0+Δθ(⋅∣x)∥πθ0(⋅∣x))∣Δθ=0=0(KL 在相同分布处达到最小值,梯度为零)
- 二阶导数: ∇ Δ θ 2 K L ( π θ 0 + Δ θ ( ⋅ ∣ x ) ∥ π θ 0 ( ⋅ ∣ x ) ) ∣ Δ θ = 0 = F ( θ 0 ) \nabla^2_{\Delta\theta} \mathrm{KL}(\pi_{\theta_0+\Delta\theta}(\cdot|x) \,\|\, \pi_{\theta_0}(\cdot|x))|_{\Delta\theta=0} = F(\theta_0) ∇Δθ2KL(πθ0+Δθ(⋅∣x)∥πθ0(⋅∣x))∣Δθ=0=F(θ0)(Fisher 信息矩阵)
- 因此二阶展开没有一阶项,直接从二阶项开始
这个近似的有效性:
- 在参数更新幅度较小时(这正是 KL 约束所保证的),二阶近似是准确的
- Fisher 矩阵 F F F 捕获了策略分布对参数变化的局部敏感性
1.1.3 带约束优化问题的求解
优化问题转换:
将原始优化问题在 θ 0 \theta_0 θ0 附近展开(假设 π ref = π θ 0 \pi_{\text{ref}} = \pi_{\theta_0} πref=πθ0,即参考策略就是当前策略),得到关于参数更新 Δ θ \Delta\theta Δθ 的优化问题:
max Δ θ g ⊤ Δ θ − β 2 Δ θ ⊤ F Δ θ \max_{\Delta\theta} g^\top\Delta\theta - \frac{\beta}{2}\Delta\theta^\top F \Delta\theta Δθmaxg⊤Δθ−2βΔθ⊤FΔθ
其中:
- g = ∇ θ E x ∼ D , y ∼ π θ ( ⋅ ∣ x ) [ r ( x , y ) ] ∣ θ = θ 0 g = \nabla_\theta \mathbb{E}{x\sim\mathcal{D}, y\sim\pi\theta(\cdot|x)}[r(x,y)]|_{\theta=\theta_0} g=∇θEx∼D,y∼πθ(⋅∣x)[r(x,y)]∣θ=θ0 是奖励的梯度(关于 x x x 的期望通常省略,实际计算时对 x x x 求平均)
- F = F ( θ 0 ) F = F(\theta_0) F=F(θ0) 是 Fisher 信息矩阵
展开说明:
- 第一项(奖励项)的一阶展开: E y ∼ π θ [ r ( x , y ) ] ≈ E y ∼ π θ 0 [ r ( x , y ) ] + g ⊤ Δ θ + O ( ∥ Δ θ ∥ 2 ) \mathbb{E}{y\sim\pi\theta}[r(x,y)] \approx \mathbb{E}{y\sim\pi{\theta_0}}[r(x,y)] + g^\top\Delta\theta + O(\|\Delta\theta\|^2) Ey∼πθ[r(x,y)]≈Ey∼πθ0[r(x,y)]+g⊤Δθ+O(∥Δθ∥2)
- 第二项(KL 项)的二阶展开: K L ( π θ ∥ π θ 0 ) ≈ 1 2 Δ θ ⊤ F Δ θ + O ( ∥ Δ θ ∥ 3 ) \mathrm{KL}(\pi_\theta \,\|\, \pi_{\theta_0}) \approx \frac{1}{2}\Delta\theta^\top F \Delta\theta + O(\|\Delta\theta\|^3) KL(πθ∥πθ0)≈21Δθ⊤FΔθ+O(∥Δθ∥3)
- 常数项( θ 0 \theta_0 θ0 处的值)在优化中可以忽略,因此得到上述形式
无约束优化问题的闭式解:
对 Δ θ \Delta\theta Δθ 求导并令其为零,得到:
Δ θ = 1 β F − 1 g \Delta\theta = \frac{1}{\beta}F^{-1}g Δθ=β1F−1g
关键观察 :更新方向不是简单的梯度方向 g g g,而是经过 Fisher 矩阵逆 F − 1 F^{-1} F−1 调整后的方向。这被称为自然梯度(Natural Gradient)。
1.1.4 特征分解视角:主分量与次要分量
Fisher 矩阵的特征分解:
将 F F F 做特征分解:
F = ∑ i = 1 d λ i u i u i ⊤ F = \sum_{i=1}^{d} \lambda_i u_i u_i^\top F=i=1∑dλiuiui⊤
其中:
- λ 1 ≥ λ 2 ≥ ⋯ ≥ λ d > 0 \lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_d > 0 λ1≥λ2≥⋯≥λd>0 是特征值(从大到小排列)
- u i u_i ui 是对应的单位特征向量,构成参数空间的正交基
- d d d 是参数维度
更新方向的分解:
将梯度 g g g 投影到特征向量上: g i = g ⊤ u i g_i = g^\top u_i gi=g⊤ui,则更新方向可写为:
Δ θ = ∑ i = 1 d g i β λ i u i \Delta\theta = \sum_{i=1}^{d} \frac{g_i}{\beta\lambda_i}u_i Δθ=i=1∑dβλigiui
关键数学洞察:
-
高敏感方向(主分量) : λ i \lambda_i λi 很大
- 步长系数 1 β λ i \frac{1}{\beta\lambda_i} βλi1 被强烈压缩
- 即使梯度投影 g i g_i gi 很大,更新幅度 g i β λ i \frac{g_i}{\beta\lambda_i} βλigi 也很小
- 结果:这些方向上的参数几乎不变
-
低敏感方向(次要分量) : λ i \lambda_i λi 很小
- 步长系数 1 β λ i \frac{1}{\beta\lambda_i} βλi1 相对较大
- 即使梯度投影 g i g_i gi 较小,也能产生可观的更新幅度
- 结果:更新主要集中在这些方向
数学表达:
- 对于 λ i ≫ β \lambda_i \gg \beta λi≫β 的方向: g i β λ i ≈ 0 \frac{g_i}{\beta\lambda_i} \approx 0 βλigi≈0,更新被抑制
- 对于 λ i ≪ β \lambda_i \ll \beta λi≪β 的方向: g i β λ i \frac{g_i}{\beta\lambda_i} βλigi 可能较大,更新得以进行
因此 :"核心主方向(主分量)基本不动,主要动的是次要分量"。
这就是 RL 能"保护主分量"的数学机制:Fisher 信息矩阵的谱分解天然地将更新引导到低敏感方向。
1.2 on-policy 采样对"最小改动"趋势的强化
1.2.1 on-policy 采样分布的性质
on-policy 采样分布 : y ∼ π θ ( ⋅ ∣ x ) y \sim \pi_\theta(\cdot|x) y∼πθ(⋅∣x)
关键性质:
- 训练时使用的数据 y y y 是从当前策略 π θ \pi_\theta πθ 采样出来的,而非固定数据集
- 这带来一个重要性质:只会对模型自己当前会产出的区域进行"加权重/减权重"的微调
- 难以像纯 SFT 那样,被离线数据强行拉去一个它原本概率很低、分布差很大的区域(distribution gap)
数学表达:
- 对于概率极低的输出 y y y(如 π θ ( y ∣ x ) ≈ 0 \pi_\theta(y|x) \approx 0 πθ(y∣x)≈0),on-policy 采样几乎采不到: P ( y ∼ π θ ( ⋅ ∣ x ) ) ≈ 0 P(y \sim \pi_\theta(\cdot|x)) \approx 0 P(y∼πθ(⋅∣x))≈0
- 因此这些 y y y 对期望的贡献几乎为零: E y ∼ π θ [ A ( x , y ) ∇ θ log π θ ( y ∣ x ) ] ≈ 0 \mathbb{E}{y\sim\pi\theta}[A(x,y)\nabla_\theta \log \pi_\theta(y|x)] \approx 0 Ey∼πθ[A(x,y)∇θlogπθ(y∣x)]≈0(因为采样概率极低,即使单个样本的梯度很大,期望值也很小)
- 模型难以被"强行拉向"这些低概率区域
1.2.2 理论支持:更小的 KL 偏移
实证观察:
- on-policy 方法往往能用更小的 KL 偏移达到同样任务提升
- 离线方法(SFT/离线偏好优化)需要更大的 KL 才能学到同样东西
理论分析:
- 近期专门研究"遗忘"的工作从理论上分析了 policy gradient 目标对"最小 KL 解"的隐式偏好
- 这解释了"深层原因":不是说 RL 天生保护主分量,而是它被训练机制(on-policy + KL/信赖域)推向一种"最小必要改动"的解
机制解释:
- on-policy 采样让学习发生在模型当前分布附近
- KL/信赖域约束进一步限制更新幅度
- 两者结合,使得优化倾向于在"最小 KL 变化"的方向上进行
1.3 经验现象:参数更新稀疏性
实证观察:
- RL 微调往往只更新 5%--30% 的参数子网,其余参数几乎不动
- 这种现象被称为 parameter update sparsity(参数更新稀疏性)
更新冗余性对比:
- SFT 的参数更新更冗余,分布更分散
- RL 的更新更"parsimonious(精简、关键)",集中在少数重要参数上
与"主分量不动"的联系:
- 如果把"主分量不动"理解为"绝大多数参数几乎不变,只改一小撮"
- 那么参数更新稀疏性就是这一现象的实证支持
- Fisher 矩阵的谱分解机制使得更新集中在低敏感方向,这些方向对应的参数子集较小
1.4 对比 SFT:为什么更容易"动到主分量"?
1.4.1 SFT 的优化目标
SFT 目标:
min θ E ( x , y ∗ ) ∼ D [ − log π θ ( y ∗ ∣ x ) ] \min_\theta \mathbb{E}{(x,y^*)\sim\mathcal{D}}[-\log \pi\theta(y^*|x)] θminE(x,y∗)∼D[−logπθ(y∗∣x)]
这是标准的最大似然估计 (MLE),目标是拟合离线标注分布 p data ( y ∣ x ) p_{\text{data}}(y|x) pdata(y∣x)。
1.4.2 SFT 缺乏约束机制
核心问题:
- 如果数据集 D \mathcal{D} D 和初始策略 π θ 0 \pi_{\theta_0} πθ0 的输出分布差很大(off-policy / distribution gap)
- SFT 会持续把模型拉向数据分布
- 没有天然的"别离太远"的约束(除非额外加 KL、加 replay、做 self-distillation 等)
数学表达:
- SFT 的梯度: ∇ θ L SFT = − E ( x , y ∗ ) ∼ D [ ∇ θ log π θ ( y ∗ ∣ x ) ] \nabla_\theta L_{\text{SFT}} = -\mathbb{E}{(x,y^*)\sim\mathcal{D}}[\nabla\theta \log \pi_\theta(y^*|x)] ∇θLSFT=−E(x,y∗)∼D[∇θlogπθ(y∗∣x)]
- 即使 π θ ( y ∗ ∣ x ) \pi_\theta(y^*|x) πθ(y∗∣x) 极小,梯度仍然存在,会持续拉高这个概率
- 没有类似 Fisher 矩阵的机制来抑制高敏感方向的更新
累积效应:
- 每一步更新都把模型往数据分布拉
- 如果数据分布与模型分布差距大,每一步都可能动到主分量(高敏感方向)
- 累积起来,主分量被大幅修改,导致"根基"不稳
1.4.3 缓解遗忘的方法本质
常见方法:
- 加 KL 正则:限制模型偏离初始模型太远
- 加 replay:混合旧数据和新数据
- 做 self-distillation:让模型学习自己之前的输出
这些方法的共同本质:
- 都在做分布自对齐/自蒸馏
- 让训练数据更像模型自己会生成的数据
- 减少数据分布与模型分布的差距(distribution gap)
这正好说明了:
- SFT 的问题在于数据分布与模型分布不匹配
- 解决方法是让数据分布更接近模型分布
- 而 on-policy RL 天然就做到了这一点
二、on-policy 为何只在"自己会生成的区域"微调?
2.1 SFT:期望在数据分布上(离线/off-policy)
SFT 的损失函数:
L SFT ( θ ) = E ( x , y ∗ ) ∼ D [ − log π θ ( y ∗ ∣ x ) ] L_{\text{SFT}}(\theta) = \mathbb{E}{(x,y^*)\sim\mathcal{D}}[-\log \pi\theta(y^*|x)] LSFT(θ)=E(x,y∗)∼D[−logπθ(y∗∣x)]
关键点:
- 期望的采样分布 : ( x , y ∗ ) ∼ D (x,y^*) \sim \mathcal{D} (x,y∗)∼D,其中 D \mathcal{D} D 是固定的数据集
- y ∗ y^* y∗ 来自数据集,不是来自当前模型 π θ \pi_\theta πθ 的采样
- 即使当前模型对 y ∗ y^* y∗ 的概率非常低(如 π θ ( y ∗ ∣ x ) = 0.001 \pi_\theta(y^*|x) = 0.001 πθ(y∗∣x)=0.001),你仍然会强制它对这个 y ∗ y^* y∗ 做梯度更新:把 π θ ( y ∗ ∣ x ) \pi_\theta(y^*|x) πθ(y∗∣x) 往上拉
数学表达:
- 梯度: ∇ θ L SFT = − E ( x , y ∗ ) ∼ D [ ∇ θ log π θ ( y ∗ ∣ x ) ] \nabla_\theta L_{\text{SFT}} = -\mathbb{E}{(x,y^*)\sim\mathcal{D}}[\nabla\theta \log \pi_\theta(y^*|x)] ∇θLSFT=−E(x,y∗)∼D[∇θlogπθ(y∗∣x)]
- 对于每个数据样本 ( x , y ∗ ) (x,y^*) (x,y∗),无论 π θ ( y ∗ ∣ x ) \pi_\theta(y^*|x) πθ(y∗∣x) 多小,梯度都会存在
- 这等价于"把模型往数据分布拉",不管这条路对模型来说原本多不自然
2.2 on-policy policy gradient:期望在当前策略分布上
Policy gradient 的梯度:
∇ θ J ( θ ) = E x ∼ D , y ∼ π θ ( ⋅ ∣ x ) [ A ( x , y ) ∇ θ log π θ ( y ∣ x ) ] \nabla_\theta J(\theta) = \mathbb{E}{x\sim\mathcal{D}, y\sim\pi\theta(\cdot|x)}[A(x,y)\,\nabla_\theta \log \pi_\theta(y|x)] ∇θJ(θ)=Ex∼D,y∼πθ(⋅∣x)[A(x,y)∇θlogπθ(y∣x)]
关键点:
- 期望的采样分布 : y ∼ π θ ( ⋅ ∣ x ) y \sim \pi_\theta(\cdot|x) y∼πθ(⋅∣x),其中 π θ \pi_\theta πθ 是当前策略
- y y y 是从当前策略 π θ \pi_\theta πθ 采样出来的
- 没采到的输出(概率极低的区域)就几乎没有梯度信号
数学表达:
- 对于概率极低的 y y y(如 π θ ( y ∣ x ) ≈ 0 \pi_\theta(y|x) \approx 0 πθ(y∣x)≈0),采样概率 P ( y ∼ π θ ( ⋅ ∣ x ) ) ≈ 0 P(y \sim \pi_\theta(\cdot|x)) \approx 0 P(y∼πθ(⋅∣x))≈0
- 因此这些 y y y 对期望的贡献几乎为零: E y ∼ π θ [ A ( x , y ) ∇ θ log π θ ( y ∣ x ) ] ≈ 0 \mathbb{E}{y\sim\pi\theta}[A(x,y)\nabla_\theta \log \pi_\theta(y|x)] \approx 0 Ey∼πθ[A(x,y)∇θlogπθ(y∣x)]≈0(因为采样概率极低,即使单个样本的梯度很大,期望值也很小)
- 你很难被"离线数据"一下子拉过去
因此:on-policy 更像在"我本来就常生成的几类回答"里,重新加权(哪个更好就增大概率,哪个更差就减小概率)。
2.3 关键差异:期望的采样分布不同
SFT : ( x , y ∗ ) ∼ D (x,y^*) \sim \mathcal{D} (x,y∗)∼D(外部给定轨迹 + teacher forcing)
on-policy RL : y ∼ π θ ( ⋅ ∣ x ) y \sim \pi_\theta(\cdot|x) y∼πθ(⋅∣x)(当前策略采样)
这是本质差异 :虽然两者都用当前模型/策略 π θ \pi_\theta πθ 计算梯度,但期望的采样分布不同。
2.4 Teacher Forcing 的额外影响
Teacher Forcing 的定义:
- 在训练时,使用数据中的真实前缀来预测下一个 token
- 而不是使用模型自己生成的前缀
SFT 中的 Teacher Forcing:
- SFT 训练时用 teacher forcing:前缀也是数据给的
- 模型在训练中经常被迫学习一些它自己生成时根本到不了的状态/轨迹
- 例如:模型自己生成时,某个前缀的概率可能很低,但训练时强制使用数据中的这个前缀
on-policy RL 的差异:
- on-policy RL 的训练轨迹就是模型自己走出来的:前缀是自己生成的,后续也是自己生成的
- 因此更新只发生在"自己实际覆盖的状态-动作分布"上
数学表达:
- SFT:训练分布 = 数据分布 D \mathcal{D} D,可能与 π θ \pi_\theta πθ 的生成分布差距很大
- on-policy RL:训练分布 = π θ \pi_\theta πθ 的生成分布,天然匹配
一句话对照:
- SFT:固定数据分布上做拟合(off-policy),可能强行把模型往远处拉
- on-policy RL:当前策略分布上做加权重排(on-policy),天然更局部、更难被远处分布牵引
三、为何 on-policy 往往用更小 KL 达到同样提升?
3.1 前提条件
"往往"有前提:奖励/偏好信号本身通常也是在当前策略附近定义出来的。
具体机制:
- RLHF 的偏好数据往往来自模型采样,再让人打分/排序
- 因此优化方向天然是"局部改良":在模型当前会生成的回答中,选择更好的
数学表达:
- 偏好数据通常来自: ( x , y 1 , y 2 ) ∼ π θ 0 (x, y_1, y_2) \sim \pi_{\theta_0} (x,y1,y2)∼πθ0,其中 y 1 , y 2 y_1, y_2 y1,y2 是从当前策略采样
- 奖励函数 r ( x , y ) r(x,y) r(x,y) 通常在这些采样点附近定义
- 因此优化方向 ∇ θ E y ∼ π θ [ r ( x , y ) ] \nabla_\theta \mathbb{E}{y\sim\pi\theta}[r(x,y)] ∇θEy∼πθ[r(x,y)] 主要指向当前分布附近的改进
3.2 直觉对比:分布搬运 vs 局部重排
SFT 的情况:
- 目标是匹配数据集 D \mathcal{D} D
- 如果 D \mathcal{D} D 里很多轨迹离模型当前分布很远,要把概率质量搬过去,就得做大幅分布搬运
- 这需要很大的 KL 变化: K L ( π new ∥ π old ) ≫ 0 \mathrm{KL}(\pi_{\text{new}} \,\|\, \pi_{\text{old}}) \gg 0 KL(πnew∥πold)≫0
on-policy RL 的情况:
- 只能在自己采样到的区域里调整
- 等价于在当前分布附近做"局部重排":把概率质量从差的回答重新分配到好的回答
- 这只需要很小的 KL 变化: K L ( π new ∥ π old ) ≈ 0 \mathrm{KL}(\pi_{\text{new}} \,\|\, \pi_{\text{old}}) \approx 0 KL(πnew∥πold)≈0
数学表达:
- SFT: π new ( y ∣ x ) ≈ p data ( y ∣ x ) \pi_{\text{new}}(y|x) \approx p_{\text{data}}(y|x) πnew(y∣x)≈pdata(y∣x),如果 p data p_{\text{data}} pdata 与 π old \pi_{\text{old}} πold 差距大,KL 大
- on-policy RL: π new ( y ∣ x ) ≈ π old ( y ∣ x ) ⋅ w ( y ) \pi_{\text{new}}(y|x) \approx \pi_{\text{old}}(y|x) \cdot w(y) πnew(y∣x)≈πold(y∣x)⋅w(y),其中 w ( y ) w(y) w(y) 是奖励引导的权重,KL 小
3.3 极端例子:A/B 二选一场景
设置:
- 当前策略: π θ 0 ( A ∣ x ) = 0.99 \pi_{\theta_0}(A|x) = 0.99 πθ0(A∣x)=0.99, π θ 0 ( B ∣ x ) = 0.01 \pi_{\theta_0}(B|x) = 0.01 πθ0(B∣x)=0.01
- 离线数据全是 y ∗ = B y^* = B y∗=B(或偏好强烈指向 B)
SFT 的行为:
- 损失: L SFT = − log π θ ( B ∣ x ) L_{\text{SFT}} = -\log \pi_\theta(B|x) LSFT=−logπθ(B∣x)
- 梯度方向:持续把 π θ ( B ∣ x ) \pi_\theta(B|x) πθ(B∣x) 往上拉,即使当前概率极低
- KL 变化:快速增大(因为要把概率质量从 A 搬到 B)
- 假设最终 π new ( A ∣ x ) = 0.01 \pi_{\text{new}}(A|x) = 0.01 πnew(A∣x)=0.01, π new ( B ∣ x ) = 0.99 \pi_{\text{new}}(B|x) = 0.99 πnew(B∣x)=0.99,则:
- K L ( π new ∥ π old ) = 0.01 log 0.01 0.99 + 0.99 log 0.99 0.01 ≈ 4.6 \mathrm{KL}(\pi_{\text{new}} \,\|\, \pi_{\text{old}}) = 0.01 \log \frac{0.01}{0.99} + 0.99 \log \frac{0.99}{0.01} \approx 4.6 KL(πnew∥πold)=0.01log0.990.01+0.99log0.010.99≈4.6(很大)
on-policy RL 的行为:
- 采样:几乎采不到 B(概率 0.01)
- 梯度信号:对 B 的梯度信号极弱(因为采样不到)
- KL 变化:
- 如果采不到 B,几乎无法学习转向 B
- 即使能学到(通过探索),也是渐进式的,KL 增长更慢
结论:"更小 KL 达到同样提升"常见在:奖励改动是"就地修一下"就能变好的任务,而不是需要把模型迁到一个完全不同的分布。
四、policy gradient 对"最小 KL 解"的偏好
4.1 显式最小 KL:RLHF/PPO 里的 KL 正则
RLHF 实际优化:
max θ E y ∼ π θ [ r ] − β K L ( π θ ∥ π ref ) \max_\theta \mathbb{E}{y\sim\pi\theta}[r] - \beta\,\mathrm{KL}(\pi_\theta\|\pi_{\text{ref}}) θmaxEy∼πθ[r]−βKL(πθ∥πref)
这不是"隐式偏好",而是目标函数里就写着:收益提高的同时,尽量别离参考策略太远。
最优策略的闭式解:
在策略空间中,这个目标有一个很漂亮的闭式形状:
π ∗ ( y ∣ x ) ∝ π ref ( y ∣ x ) exp ( r ( x , y ) β ) \pi^*(y|x) \propto \pi_{\text{ref}}(y|x)\,\exp\left(\frac{r(x,y)}{\beta}\right) π∗(y∣x)∝πref(y∣x)exp(βr(x,y))
数学推导(简化):
- 对目标函数关于 π θ \pi_\theta πθ 做变分,使用拉格朗日乘数法
- 考虑概率归一化约束: ∑ y π θ ( y ∣ x ) = 1 \sum_y \pi_\theta(y|x) = 1 ∑yπθ(y∣x)=1
- 得到上述指数加权形式
这个形式的含义:
- 最优策略是对参考分布 π ref \pi_{\text{ref}} πref 做"指数加权重排"
- 不是另起炉灶地搬家,而是在参考分布上按 reward 做温和再加权
- 本质是"在满足奖励提升的同时,选离参考最近的那一个"
KL 的作用:
- 当 β \beta β 很大时,KL 项占主导, π ∗ ≈ π ref \pi^* \approx \pi_{\text{ref}} π∗≈πref(几乎不变)
- 当 β \beta β 很小时,奖励项占主导, π ∗ \pi^* π∗ 可以偏离 π ref \pi_{\text{ref}} πref 较远
- β \beta β 控制了"探索新策略"与"保持稳定"之间的权衡
4.2 隐式最小 KL:信赖域/自然梯度
即使不把 KL 写进目标,很多现代 RL(TRPO、PPO 的近似、natural gradient)都在做类似"在 KL 小球里,找收益上升最快的方向":
max Δ θ g ⊤ Δ θ s.t. K L ( π θ + Δ θ ∥ π θ ) ≤ ϵ \max_{\Delta\theta} g^\top\Delta\theta \quad \text{s.t.} \quad \mathrm{KL}(\pi_{\theta+\Delta\theta}\|\pi_{\theta}) \leq \epsilon Δθmaxg⊤Δθs.t.KL(πθ+Δθ∥πθ)≤ϵ
约束优化问题的求解:
使用拉格朗日乘数法,构造拉格朗日函数:
L ( Δ θ , λ ) = g ⊤ Δ θ − λ ( 1 2 Δ θ ⊤ F Δ θ − ϵ ) L(\Delta\theta, \lambda) = g^\top\Delta\theta - \lambda\left(\frac{1}{2}\Delta\theta^\top F \Delta\theta - \epsilon\right) L(Δθ,λ)=g⊤Δθ−λ(21Δθ⊤FΔθ−ϵ)
对 Δ θ \Delta\theta Δθ 求导并令其为零,得到:
Δ θ = 1 λ F − 1 g \Delta\theta = \frac{1}{\lambda}F^{-1}g Δθ=λ1F−1g
其中 λ \lambda λ 由约束 1 2 Δ θ ⊤ F Δ θ = ϵ \frac{1}{2}\Delta\theta^\top F \Delta\theta = \epsilon 21Δθ⊤FΔθ=ϵ 确定。
等价性:
- 同样的收益提升 g ⊤ Δ θ g^\top\Delta\theta g⊤Δθ,优先选择 KL 更小的那种更新方式
- 因为 KL 约束 1 2 Δ θ ⊤ F Δ θ ≤ ϵ \frac{1}{2}\Delta\theta^\top F \Delta\theta \leq \epsilon 21Δθ⊤FΔθ≤ϵ 限制了更新幅度
- 在满足约束的前提下,选择收益提升最大的方向
结论:每一步更新都倾向于最省 KL 的那条路。
PPO 的 ratio clipping:
- PPO 使用 ratio clipping: r ( θ ) = π θ ( a ∣ s ) π θ old ( a ∣ s ) r(\theta) = \frac{\pi_\theta(a|s)}{\pi_{\theta_{\text{old}}}(a|s)} r(θ)=πθold(a∣s)πθ(a∣s),限制在 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon, 1+\epsilon] [1−ϵ,1+ϵ] 内
- 这等价于隐式的 KL 约束,起到类似信赖域的作用
五、SFT 也用当前模型算 loss,为何仍可能被离线数据拉远?
5.1 核心差异:期望的采样分布不同
关键理解 :虽然两者都用当前模型/策略 π θ \pi_\theta πθ 计算梯度,但期望的采样分布不同。
SFT 的情况:
- 训练样本 ( x , y ∗ ) (x,y^*) (x,y∗) 不是当前模型生成的
- 期望分布: ( x , y ∗ ) ∼ D (x,y^*) \sim \mathcal{D} (x,y∗)∼D(固定数据集)
- 即使每一步都用当前模型 π θ \pi_\theta πθ 算 loss,但训练样本 y ∗ y^* y∗ 来自固定数据集
- 训练时用 teacher forcing:前缀也是数据给的
on-policy RL 的情况:
- 训练轨迹就是模型自己走出来的
- 期望分布: y ∼ π θ ( ⋅ ∣ x ) y \sim \pi_\theta(\cdot|x) y∼πθ(⋅∣x)(当前策略采样)
- 前缀是自己生成的,后续也是自己生成的
- 因此更新只发生在"自己实际覆盖的状态-动作分布"上
5.2 Teacher Forcing 的额外影响
Teacher Forcing 的定义:
- 在序列生成任务中,训练时使用真实的前缀来预测下一个 token
- 而不是使用模型自己生成的前缀
SFT 中的问题:
- 模型在训练中经常被迫学习一些它自己生成时根本到不了的状态/轨迹
- 例如:模型自己生成时,某个前缀序列 x 1 : t x_{1:t} x1:t 的概率可能很低 P ( x 1 : t ) ≈ 0 P(x_{1:t}) \approx 0 P(x1:t)≈0
- 但训练时强制使用数据中的这个前缀,模型必须在这个状态下学习
- 这导致训练分布与生成分布不匹配
on-policy RL 的差异:
- 训练时使用的轨迹就是模型自己生成的
- 训练分布 = 生成分布,天然匹配
5.3 分布差距的累积效应
SFT 的累积问题:
- 即使每一步都用当前模型算 loss,但训练样本 ( y ∗ ) (y^*) (y∗) 来自固定数据集
- 如果数据集分布 p data ( y ∣ x ) p_{\text{data}}(y|x) pdata(y∣x) 与当前模型分布 π θ ( y ∣ x ) \pi_\theta(y|x) πθ(y∣x) 差距大
- 每一步更新都会把模型往数据分布拉: π θ t + 1 ← π θ t + α ∇ θ L SFT \pi_{\theta_{t+1}} \leftarrow \pi_{\theta_t} + \alpha \nabla_\theta L_{\text{SFT}} πθt+1←πθt+α∇θLSFT
- 没有约束机制阻止这种"拉远"的趋势
- 累积起来,模型分布逐渐远离初始分布 π θ 0 \pi_{\theta_0} πθ0,KL 散度持续增大
数学表达:
- 初始分布: π θ 0 ( y ∣ x ) \pi_{\theta_0}(y|x) πθ0(y∣x)
- 数据分布: p data ( y ∣ x ) p_{\text{data}}(y|x) pdata(y∣x)
- 如果 K L ( p data ∥ π θ 0 ) ≫ 0 \mathrm{KL}(p_{\text{data}} \,\|\, \pi_{\theta_0}) \gg 0 KL(pdata∥πθ0)≫0,每一步更新都会把模型往 p data p_{\text{data}} pdata 拉,从而增加 K L ( π θ t ∥ π θ 0 ) \mathrm{KL}(\pi_{\theta_t} \,\|\, \pi_{\theta_0}) KL(πθt∥πθ0)
- 经过 T T T 步后: K L ( π θ T ∥ π θ 0 ) \mathrm{KL}(\pi_{\theta_T} \,\|\, \pi_{\theta_0}) KL(πθT∥πθ0) 会持续增长(具体增长幅度取决于学习率、数据分布与初始分布的差距等因素,通常不是简单的线性关系,但趋势是持续增大)
on-policy RL 的保护机制:
- 训练样本来自当前策略: y ∼ π θ ( ⋅ ∣ x ) y \sim \pi_\theta(\cdot|x) y∼πθ(⋅∣x)
- 天然消除分布不匹配:训练分布 = 当前模型分布
- 即使有 KL 约束,也是在"自己会生成的区域"内做调整
- KL 增长被显式约束: K L ( π θ t + 1 ∥ π θ t ) ≤ ϵ \mathrm{KL}(\pi_{\theta_{t+1}} \,\|\, \pi_{\theta_t}) \leq \epsilon KL(πθt+1∥πθt)≤ϵ(每一步都有限制)
对比:
- SFT : K L ( π θ T ∥ π θ 0 ) \mathrm{KL}(\pi_{\theta_T} \,\|\, \pi_{\theta_0}) KL(πθT∥πθ0) 可能无界增长(如果没有额外约束)
- on-policy RL : K L ( π θ T ∥ π θ 0 ) ≤ T ⋅ ϵ \mathrm{KL}(\pi_{\theta_T} \,\|\, \pi_{\theta_0}) \leq T \cdot \epsilon KL(πθT∥πθ0)≤T⋅ϵ(有界增长)
六、on-policy 是否等价于分布自对齐/自蒸馏?
6.1 相似点:都在减少 distribution gap
分布差距的定义:
- 模型当前分布 : π θ ( y ∣ x ) \pi_\theta(y|x) πθ(y∣x) - 模型现在会生成什么
- 数据分布 : p data ( y ∣ x ) p_{\text{data}}(y|x) pdata(y∣x) - 数据集中有什么
- 分布差距 : K L ( p data ∥ π θ ) \mathrm{KL}(p_{\text{data}} \,\|\, \pi_\theta) KL(pdata∥πθ) 或 K L ( π θ ∥ p data ) \mathrm{KL}(\pi_\theta \,\|\, p_{\text{data}}) KL(πθ∥pdata)
SFT 的情况:
- 数据分布: ( x , y ∗ ) ∼ D (x,y^*) \sim \mathcal{D} (x,y∗)∼D,可能离 π θ \pi_\theta πθ 很远
- 分布差距: K L ( p data ∥ π θ ) ≫ 0 \mathrm{KL}(p_{\text{data}} \,\|\, \pi_\theta) \gg 0 KL(pdata∥πθ)≫0(有 gap)
on-policy 的情况:
- 数据分布: y ∼ π θ ( ⋅ ∣ x ) y \sim \pi_\theta(\cdot|x) y∼πθ(⋅∣x),就是当前模型分布
- 分布差距: K L ( π θ ∥ π θ ) = 0 \mathrm{KL}(\pi_\theta \,\|\, \pi_\theta) = 0 KL(πθ∥πθ)=0(没有 gap,对当前 θ \theta θ 来说)
结论:从"覆盖的状态/输出区域"看,on-policy 确实是一种"自对齐数据分布"。
6.2 关键不同:目标函数不同
6.2.1 自蒸馏(Self-Distillation)的目标
典型自蒸馏:
min θ E x K L ( π teacher ( ⋅ ∣ x ) ∥ π θ ( ⋅ ∣ x ) ) \min_\theta \mathbb{E}{x} \mathrm{KL}(\pi{\text{teacher}}(\cdot|x) \,\|\, \pi_\theta(\cdot|x)) θminExKL(πteacher(⋅∣x)∥πθ(⋅∣x))
特点:
- teacher 常常就是旧模型或更大模型
- 目标是模仿 teacher 的分布(软标签)
- 本质是让 student 尽可能接近 teacher 的输出分布
数学表达:
- 对于每个输入 x x x,希望 π θ ( ⋅ ∣ x ) ≈ π teacher ( ⋅ ∣ x ) \pi_\theta(\cdot|x) \approx \pi_{\text{teacher}}(\cdot|x) πθ(⋅∣x)≈πteacher(⋅∣x)
- 这是监督学习,目标是拟合 teacher 的输出
6.2.2 on-policy policy gradient 的目标
Policy gradient:
∇ θ J ( θ ) = E x ∼ D , y ∼ π θ ( ⋅ ∣ x ) [ A ( x , y ) ∇ θ log π θ ( y ∣ x ) ] \nabla_\theta J(\theta) = \mathbb{E}{x\sim\mathcal{D}, y\sim\pi\theta(\cdot|x)}[A(x,y)\,\nabla_\theta \log \pi_\theta(y|x)] ∇θJ(θ)=Ex∼D,y∼πθ(⋅∣x)[A(x,y)∇θlogπθ(y∣x)]
特点:
- 把采样到的回答按好坏(advantage A ( x , y ) A(x,y) A(x,y))打分
- 然后"好就增概率、坏就减概率"
- 不会要求"复现自己刚才的输出"
- 而是把分布往"更高 reward 的那部分"推
数学表达:
- 更新方向: Δ θ ∝ E y ∼ π θ [ A ( x , y ) ∇ θ log π θ ( y ∣ x ) ] \Delta\theta \propto \mathbb{E}{y\sim\pi\theta}[A(x,y)\nabla_\theta \log \pi_\theta(y|x)] Δθ∝Ey∼πθ[A(x,y)∇θlogπθ(y∣x)]
- 更新效果:对于 A ( x , y ) > 0 A(x,y) > 0 A(x,y)>0 的 y y y,更新会使得 π θ + Δ θ ( y ∣ x ) \pi_{\theta+\Delta\theta}(y|x) πθ+Δθ(y∣x) 增加;对于 A ( x , y ) < 0 A(x,y) < 0 A(x,y)<0 的 y y y,更新会使得 π θ + Δ θ ( y ∣ x ) \pi_{\theta+\Delta\theta}(y|x) πθ+Δθ(y∣x) 减少
- 不是拟合当前分布,而是按 advantage 重新加权(高 advantage 增概率,低 advantage 减概率)
6.2.3 带 KL 正则的 RLHF
RLHF 目标:
max θ E y ∼ π θ [ r ] − β K L ( π θ ∥ π ref ) \max_\theta \mathbb{E}{y\sim\pi\theta}[r] - \beta\,\mathrm{KL}(\pi_\theta\|\pi_{\text{ref}}) θmaxEy∼πθ[r]−βKL(πθ∥πref)
理解:
- 在不离参考策略太远的前提下,把参考分布 π ref \pi_{\text{ref}} πref 按 exp ( r / β ) \exp(r/\beta) exp(r/β) 重新加权
- 最优策略: π ∗ ( y ∣ x ) ∝ π ref ( y ∣ x ) exp ( r ( x , y ) / β ) \pi^*(y|x) \propto \pi_{\text{ref}}(y|x)\,\exp(r(x,y)/\beta) π∗(y∣x)∝πref(y∣x)exp(r(x,y)/β)
- 更像"奖励引导的重加权",而不是"自蒸馏式的自我复制"
"蒸馏味"的来源:
- KL 到 reference 确实很像"用 reference 当 teacher,限制 student 乱跑"
- 但它是"约束项/正则",不是主要监督信号
- 主要信号仍来自 reward/advantage,而不是拟合 reference
6.3 数学对比
自蒸馏:
- 目标: min θ K L ( π teacher ∥ π θ ) \min_\theta \mathrm{KL}(\pi_{\text{teacher}} \,\|\, \pi_\theta) minθKL(πteacher∥πθ)
- 更新方向: Δ θ ∝ − ∇ θ K L ( π teacher ∥ π θ ) \Delta\theta \propto -\nabla_\theta \mathrm{KL}(\pi_{\text{teacher}} \,\|\, \pi_\theta) Δθ∝−∇θKL(πteacher∥πθ)
- 结果: π θ \pi_\theta πθ 向 π teacher \pi_{\text{teacher}} πteacher 靠近
on-policy RL:
- 目标: max θ E y ∼ π θ [ r ] − β K L ( π θ ∥ π ref ) \max_\theta \mathbb{E}{y\sim\pi\theta}[r] - \beta\,\mathrm{KL}(\pi_\theta\|\pi_{\text{ref}}) maxθEy∼πθ[r]−βKL(πθ∥πref)
- 更新方向: Δ θ ∝ ∇ θ E y ∼ π θ [ r ] − β ∇ θ K L ( π θ ∥ π ref ) \Delta\theta \propto \nabla_\theta \mathbb{E}{y\sim\pi\theta}[r] - \beta \nabla_\theta \mathrm{KL}(\pi_\theta\|\pi_{\text{ref}}) Δθ∝∇θEy∼πθ[r]−β∇θKL(πθ∥πref)
- 结果: π θ \pi_\theta πθ 在 π ref \pi_{\text{ref}} πref 附近按奖励优化
关键差异:
- 自蒸馏:目标是拟合 teacher,KL 是主要项
- on-policy RL:目标是优化奖励,KL 是约束项
6.4 小结
on-policy RL 可以看成一种"分布自对齐 + 奖励驱动的再加权",但不是"自蒸馏",因为:
- 不是在最小化"拟合自己输出"的监督损失
- 而是在自己分布上做"好坏方向"的概率质量搬运(通常还带 KL 约束,像 trust region)
- 主要目标是优化奖励,而不是保持分布不变
准确表述:
- on-policy RL = 分布自对齐(数据来自当前策略)+ 奖励优化(按好坏重新加权)
- 自蒸馏 = 分布对齐(拟合 teacher)+ 无奖励信号(只是模仿)
七、重要纠偏与限制
7.1 这不是铁律
on-policy ≠ 一定不遗忘:
- 如果 KL 系数 β \beta β 调得很小、奖励很尖锐、学习率很大,RL 也能把模型推很远,也会忘
- 需要 KL-control 这类机制来稳住分布
- 实证中确实观察到 RL 也会出现灾难性遗忘的情况
"主分量不变"的准确理解:
- 更像是对常见 RLHF 实践设置(KL 正则 + PPO clipping + 小步更新)的总结
- 而不是理论保证
- 在特定条件下(合适的 β \beta β、学习率、KL 约束)才成立
7.2 关键机制总结
"RL 因为 on-policy 所以主分量不变"更准确的理解:
- RLHF/PPO 的 on-policy 采样让学习发生在模型当前分布附近
- KL/信赖域(显式 KL 或 PPO clipping)把优化偏好推向"最小 KL 的解"
- 在 Fisher/Hessian 的谱分解里,这等价于:
- 强烈抑制高敏感(可视作"主")方向的更新
- 把改动集中到低敏感("次要")方向上
数学表达:
- on-policy: E y ∼ π θ [ ⋅ ] \mathbb{E}{y\sim\pi\theta}[\cdot] Ey∼πθ[⋅],采样分布 = 当前策略分布
- KL 约束: K L ( π θ + Δ θ ∥ π θ ) ≤ ϵ \mathrm{KL}(\pi_{\theta+\Delta\theta} \,\|\, \pi_\theta) \leq \epsilon KL(πθ+Δθ∥πθ)≤ϵ
- Fisher 分解: Δ θ = ∑ i g i β λ i u i \Delta\theta = \sum_i \frac{g_i}{\beta\lambda_i}u_i Δθ=∑iβλigiui,高 λ i \lambda_i λi 方向被抑制
因此:on-policy + KL/信赖域约束共同作用,导致主分量更稳、次要分量更易更新。
八、Toy 例子:A/B 二选一场景的详细分析
8.1 设置
当前策略 : π θ 0 ( A ∣ x ) = 0.99 \pi_{\theta_0}(A|x) = 0.99 πθ0(A∣x)=0.99, π θ 0 ( B ∣ x ) = 0.01 \pi_{\theta_0}(B|x) = 0.01 πθ0(B∣x)=0.01
离线数据 :全部是 y ∗ = B y^* = B y∗=B(或偏好强烈指向 B,即 r ( B ) ≫ r ( A ) r(B) \gg r(A) r(B)≫r(A))
8.2 SFT 的更新过程
损失函数 : L SFT = − log π θ ( B ∣ x ) L_{\text{SFT}} = -\log \pi_\theta(B|x) LSFT=−logπθ(B∣x)
梯度计算:
- ∇ θ L SFT = − ∇ θ log π θ ( B ∣ x ) \nabla_\theta L_{\text{SFT}} = -\nabla_\theta \log \pi_\theta(B|x) ∇θLSFT=−∇θlogπθ(B∣x)
- 即使 π θ ( B ∣ x ) = 0.01 \pi_\theta(B|x) = 0.01 πθ(B∣x)=0.01(很小),梯度仍然存在且指向增加 π θ ( B ∣ x ) \pi_\theta(B|x) πθ(B∣x) 的方向
更新过程:
- π θ 1 ( B ∣ x ) = 0.01 + α ⋅ gradient ≈ 0.05 \pi_{\theta_1}(B|x) = 0.01 + \alpha \cdot \text{gradient} \approx 0.05 πθ1(B∣x)=0.01+α⋅gradient≈0.05(假设)
- π θ 2 ( B ∣ x ) ≈ 0.15 \pi_{\theta_2}(B|x) \approx 0.15 πθ2(B∣x)≈0.15
- π θ T ( B ∣ x ) ≈ 0.99 \pi_{\theta_T}(B|x) \approx 0.99 πθT(B∣x)≈0.99(经过多步后)
KL 变化:
- 初始: K L ( π θ 0 ∥ π θ 0 ) = 0 \mathrm{KL}(\pi_{\theta_0} \,\|\, \pi_{\theta_0}) = 0 KL(πθ0∥πθ0)=0
- 最终:假设 π θ T ( A ∣ x ) = 0.01 \pi_{\theta_T}(A|x) = 0.01 πθT(A∣x)=0.01, π θ T ( B ∣ x ) = 0.99 \pi_{\theta_T}(B|x) = 0.99 πθT(B∣x)=0.99,则:
- K L ( π θ T ∥ π θ 0 ) = 0.01 log 0.01 0.99 + 0.99 log 0.99 0.01 ≈ 4.6 \mathrm{KL}(\pi_{\theta_T} \,\|\, \pi_{\theta_0}) = 0.01 \log \frac{0.01}{0.99} + 0.99 \log \frac{0.99}{0.01} \approx 4.6 KL(πθT∥πθ0)=0.01log0.990.01+0.99log0.010.99≈4.6(很大)
- KL 快速增大,因为要把概率质量从 A 搬到 B
问题:这种大幅改动可能动到主分量(高敏感方向),导致模型"根基"不稳。
8.3 on-policy RL 的更新过程
采样过程:
- 从 π θ ( ⋅ ∣ x ) \pi_\theta(\cdot|x) πθ(⋅∣x) 采样,几乎采不到 B(概率 0.01)
- 100 次采样中,大约只有 1 次是 B
梯度信号:
- 对于 A: E y ∼ π θ [ A ( x , A ) ∇ θ log π θ ( A ∣ x ) ] \mathbb{E}{y\sim\pi\theta}[A(x,A)\nabla_\theta \log \pi_\theta(A|x)] Ey∼πθ[A(x,A)∇θlogπθ(A∣x)],信号强(采样多)
- 对于 B: E y ∼ π θ [ A ( x , B ) ∇ θ log π θ ( B ∣ x ) ] \mathbb{E}{y\sim\pi\theta}[A(x,B)\nabla_\theta \log \pi_\theta(B|x)] Ey∼πθ[A(x,B)∇θlogπθ(B∣x)],信号极弱(采样少)
- 即使 r ( B ) ≫ r ( A ) r(B) \gg r(A) r(B)≫r(A),但由于采样不到 B,梯度信号几乎为零
更新过程:
- 如果采不到 B,几乎无法学习转向 B
- 即使能学到(通过探索或偶然采样到),也是渐进式的
- π θ 1 ( B ∣ x ) ≈ 0.01 \pi_{\theta_1}(B|x) \approx 0.01 πθ1(B∣x)≈0.01(几乎不变)
- π θ T ( B ∣ x ) ≈ 0.02 − 0.05 \pi_{\theta_T}(B|x) \approx 0.02-0.05 πθT(B∣x)≈0.02−0.05(缓慢增长,如果探索充分)
KL 变化:
- 初始: K L ( π θ 0 ∥ π θ 0 ) = 0 \mathrm{KL}(\pi_{\theta_0} \,\|\, \pi_{\theta_0}) = 0 KL(πθ0∥πθ0)=0
- 最终: K L ( π θ T ∥ π θ 0 ) ≈ 0.1 − 0.5 \mathrm{KL}(\pi_{\theta_T} \,\|\, \pi_{\theta_0}) \approx 0.1-0.5 KL(πθT∥πθ0)≈0.1−0.5(较小)
- KL 增长更慢,因为更新幅度被限制(KL 约束 + 采样限制)
结论:on-policy 难以被强行拉向低概率区域,天然保护了当前分布的主要结构。
8.4 数学对比总结
SFT:
- 梯度: ∇ θ L = − ∇ θ log π θ ( B ∣ x ) \nabla_\theta L = -\nabla_\theta \log \pi_\theta(B|x) ∇θL=−∇θlogπθ(B∣x),总是存在
- 更新: π θ t + 1 ( B ∣ x ) = π θ t ( B ∣ x ) + α ⋅ large gradient \pi_{\theta_{t+1}}(B|x) = \pi_{\theta_t}(B|x) + \alpha \cdot \text{large gradient} πθt+1(B∣x)=πθt(B∣x)+α⋅large gradient
- KL: K L ( π θ T ∥ π θ 0 ) ≫ 0 \mathrm{KL}(\pi_{\theta_T} \,\|\, \pi_{\theta_0}) \gg 0 KL(πθT∥πθ0)≫0(快速增大)
on-policy RL:
- 梯度: ∇ θ J = E y ∼ π θ [ A ( x , y ) ∇ θ log π θ ( y ∣ x ) ] \nabla_\theta J = \mathbb{E}{y\sim\pi\theta}[A(x,y)\nabla_\theta \log \pi_\theta(y|x)] ∇θJ=Ey∼πθ[A(x,y)∇θlogπθ(y∣x)],对 B 的信号极弱
- 更新: π θ t + 1 ( B ∣ x ) ≈ π θ t ( B ∣ x ) + α ⋅ weak signal \pi_{\theta_{t+1}}(B|x) \approx \pi_{\theta_t}(B|x) + \alpha \cdot \text{weak signal} πθt+1(B∣x)≈πθt(B∣x)+α⋅weak signal(如果有 KL 约束,还要进一步限制)
- KL: K L ( π θ T ∥ π θ 0 ) ≤ T ⋅ ϵ \mathrm{KL}(\pi_{\theta_T} \,\|\, \pi_{\theta_0}) \leq T \cdot \epsilon KL(πθT∥πθ0)≤T⋅ϵ(有界增长)
九、总结
9.1 核心机制
-
KL/信赖域约束:通过 Fisher 信息矩阵的谱分解,抑制高敏感方向的更新
- 数学机制: Δ θ = ∑ i g i β λ i u i \Delta\theta = \sum_i \frac{g_i}{\beta\lambda_i}u_i Δθ=∑iβλigiui,高 λ i \lambda_i λi 方向被压缩
- 结果:主分量(高敏感方向)几乎不动,次要分量(低敏感方向)更易更新
-
on-policy 采样:训练数据来自当前策略,消除分布不匹配
- 数学表达: E y ∼ π θ [ ⋅ ] \mathbb{E}{y\sim\pi\theta}[\cdot] Ey∼πθ[⋅],采样分布 = 当前策略分布
- 结果:只在当前分布覆盖的区域更新,难以被拉向低概率区域
-
最小 KL 偏好:显式(KL 正则)或隐式(信赖域)地偏好最小改动
- 显式: max θ E [ r ] − β K L ( π θ ∥ π ref ) \max_\theta \mathbb{E}[r] - \beta\,\mathrm{KL}(\pi_\theta\|\pi_{\text{ref}}) maxθE[r]−βKL(πθ∥πref)
- 隐式: max Δ θ g ⊤ Δ θ \max_{\Delta\theta} g^\top\Delta\theta maxΔθg⊤Δθ s.t. K L ( π θ + Δ θ ∥ π θ ) ≤ ϵ \mathrm{KL}(\pi_{\theta+\Delta\theta}\|\pi_\theta) \leq \epsilon KL(πθ+Δθ∥πθ)≤ϵ
- 结果:在满足奖励提升的前提下,选择 KL 最小的更新方式
-
局部优化:奖励信号通常在当前策略附近定义,优化方向天然是局部改良
- 机制:偏好数据来自模型采样,奖励在采样点附近定义
- 结果:优化方向指向当前分布附近的改进,而非大幅分布迁移
9.2 与 SFT 的关键差异
| 维度 | SFT | on-policy RL |
|---|---|---|
| 数据来源 | 固定数据集(off-policy) | 当前策略采样(on-policy) |
| 期望分布 | ( x , y ∗ ) ∼ D (x,y^*) \sim \mathcal{D} (x,y∗)∼D | y ∼ π θ ( ⋅ ∣ x ) y \sim \pi_\theta(\cdot|x) y∼πθ(⋅∣x) |
| 分布匹配 | 可能远离当前模型分布 | 天然匹配当前模型分布 |
| 约束机制 | 无天然约束 | KL/信赖域约束 |
| 更新方向 | 可能大幅拉远 | 局部重加权 |
| Fisher 保护 | 无 | 有(通过 KL 约束) |
| 主分量保护 | 可能动到主分量 | 主分量更稳 |
| KL 增长 | 可能无界 | 有界( ≤ T ⋅ ϵ \leq T \cdot \epsilon ≤T⋅ϵ) |
SFT 缓解遗忘:
- 需要额外机制(KL 正则、replay、self-distillation)来减少分布差距
- 本质是让训练数据更像模型自己会生成的数据
- 这正好说明了 on-policy 的优势
RLHF 稳定性:
- 依赖 KL/信赖域约束,需要合理设置 β \beta β 和学习率
- 如果 β \beta β 太小或学习率太大,仍可能出现遗忘
- 需要监控 KL 散度,确保在合理范围内
参考文献与延伸阅读
- Fisher 信息矩阵与自然梯度:Amari (1998) - 自然梯度的理论基础
- KL 正则化 RLHF:Ziegler et al. (2019) - RLHF 的经典工作
- 灾难性遗忘与分布对齐:Korbak et al. (2022) - 遗忘机制的理论分析
- 参数更新稀疏性:Zhou et al. (2023) - RL 更新的稀疏性观察
- policy gradient 的最小 KL 偏好:相关理论分析工作
- on-policy vs off-policy:Sutton & Barto (2018) - 强化学习基础
- 信赖域方法:Schulman et al. (2015) - TRPO 的原始论文
- PPO:Schulman et al. (2017) - PPO 算法