技术博客

熵坍塌与熵奖励:RL 微调中策略熵为什么不能掉太快

第 31 / 147 篇 · 2025-10-11 · ai · 强化学习熵奖励RLHF

用强化学习微调语言模型(RLHF、RLVR)时,训练曲线里有一条值得盯的指标不是 reward,是策略熵 $H(\pi_\theta)$——模型在回答开头几个 token 上的分布熵。它几乎总是单调下降,问题在于降多快:掉得太快,模型过早锁死到少数几条回复模板上,后续训练变成在窄带里打转,reward 涨不动,通用能力还跟着掉。这就是熵坍塌(entropy collapse),熵奖励(entropy bonus)是标准对策。

熵为什么注定下降

RL 微调的目标里,reward 是条筛选压力:reward 模型(或验证器)对某些 token 模式给高分,对另外一些给低分。梯度上升把概率质量从低分模式搬到高分模式——这正是训练想要的——但搬运过程天然是熵压缩的:概率分布越集中,熵越低。没有反向力时,集中会自我加速:质量集中让采样更常落在高分模板里,这些样本的梯度继续强化同一方向。

定量地看这个反馈。策略梯度(REINFORCE 形式)对 logits 的更新,第 $i$ 个候选 token 的期望步长正比于 $A_i\cdot\pi_i(1-\pi_i)$(advantage 乘 softmax 的局部斜率)。$\pi_i\to1$ 时斜率 $\pi_i(1-\pi_i)\to0$,高概率 token 的更新自然减速——看起来会自我稳定?问题在 advantage 的估计:采样越来越同质化时,组内对比(如同一 prompt 采多个回复)的分母缩小,单个高分样本的归一化 advantage 被放大,高分 token 仍被持续推高。坍塌不是 softmax 几何造成的,是采样分布与奖励景观的耦合:奖励越尖、采样越窄,信号越噪,越依赖少数幸运样本,越推高它们。

还有一个语言模型特有的放大器:自回归分解。第一个 token 的熵掉下去之后,后续 token 是在更集中的条件下生成的,条件熵 $H(w_t|w_{

熵奖励:目标里加一根弹簧

对策直接写在目标函数里:奖励加上策略熵的倍数,

$$ J(\theta)=\mathbb{E}_{x\sim\pi_\theta}\big[r(x)\big]+\beta\,H(\pi_\theta),\qquad H(\pi)=-\sum_i\pi_i\ln\pi_i, $$

$\beta>0$ 是熵系数(注意符号:最大化目标里写 $+\beta H$)。它的梯度有两部分。采样侧,熵对 logits 的梯度有闭式:

$$ \frac{\partial H}{\partial z_i}=-\big(\ln\pi_i+1\big)\pi_i+\sum_j\pi_j\big(\ln\pi_j+1\big)\pi_i=-\pi_i\big(\ln\pi_i+H\big). $$

代入梯度上升更新 $z_i\leftarrow z_i+\eta\,\partial J/\partial z_i$,熵项贡献 $-\eta\beta\pi_i(\ln\pi_i+H)$。分析符号:高于平均惊讶度的 token($\ln\pi_i<-H$,即 $\pi_i>e^{-H}$)拿到负更新被压,低于平均的($\pi_i弹簧的两个方向:惩罚头部、托举尾部,平衡点是 $\pi_i=e^{-H}$ 的等概率面。熵奖励不是模糊的"鼓励探索",是 logits 空间里的一个精确回中力。

$\beta$ 决定这根弹簧的劲度系数。$\beta$ 大,熵压得住,但 reward 收敛变慢,且过大的 $\beta$ 让策略贴近均匀分布,等于放弃学习;$\beta$ 小,坍塌照发生,只是推迟。OpenAI 早期 RLHF 论文的 PPO 配置里 $\beta$ 取 0.01 量级,DeepMind 的 Gopher 工作用了更精细的熵调度(先小后大)。实践中更常见的做法是盯曲线而不是调公式:画出每个 checkpoint 的策略熵,看到加速下坠段就加大 $\beta$ 或降学习率。

与 KL 惩罚的分工

RLHF 的目标里还有另一根弹簧:KL 惩罚 $-\tau\,D_{\mathrm{KL}}(\pi_\theta\|\pi_{\text{ref}})$。两根弹簧容易混淆,分工其实清楚。KL 惩罚是全局锚:拉回参考模型的完整输出分布,防 reward hacking 式跑偏(奖励模型上有漏洞,策略钻漏洞时 KL 会暴涨)。熵奖励是局部弹簧:只管当前分布的集中程度,不管方向。一个策略可以离 ref 很近但熵很低(坍塌到 ref 里也有的窄模板),也可以熵很高但离 ref 很远——两个失效模式正交,所以两个项都需要。DPO 推导那篇里的 KL 正则来自 RLHF 目标的显式约束,这里的熵项来自纯 RL 侧的探索考虑,起源不同,作用互补。

顺带一提现代变体:entropy 不只作奖励项,GRPO 类方法用组内归一化 advantage 隐式维持相对探索,o1 风格的长思维链训练则直接监控 thinking token 处的熵,坍塌发生在推理链分叉点上,比答案位置更早。

坍塌已经发生的补救

曲线诊断出坍塌后,常规处置按代价排序:先降学习率(缩小每步集中速度,熵弹簧重新占优);不行就回滚到熵还健康的 checkpoint 重训一段(损失几个 reward 百分点);再不行换 seed——RL 微调对 seed 的敏感性远大于预训练,同一配置不同 seed 的终态熵可以差出几倍。预防层面,DeepMind 的做法是熵目标化:不固定 $\beta$ 而是自适应调 $\beta$ 把熵钉在目标值上(PID 控制器思路),把"调熵系数"自动化。这个方案概念干净,工程上多一个超回路,采用度一般。

RL 微调中的熵动力学:奖励筛选 vs 熵弹簧 策略熵随训练的三种走向 步数 H 坍塌:加速下坠 β 合适:低位企稳 β 过大:贴均匀 熵奖励的 logits 更新方向 Δzᵢ = −ηβ·πᵢ(ln πᵢ + H) 头部 πᵢ>e^(−H):负更新,往下压 尾部 πᵢ<e^(−H):正更新,往上托 平衡点:等概率面,熵被钉住

小结

RL 微调的奖励信号天然压缩策略分布,加上自回归条件熵的连锁放大,熵坍塌是默认结局而非意外。熵奖励在目标里加 $+\beta H$,其 logits 梯度 $-\pi_i(\ln\pi_i+H)$ 是精确的头部压制、尾部回托,弹簧平衡点由 $\beta$ 定劲度。它与 KL 惩罚分工正交:一个管集中程度,一个管漂移方向。实操上盯熵曲线比调公式重要,坍塌后的处置按降学习率、回滚 checkpoint、换 seed 的顺序升价。