跳转至

LLM RL中的熵 Part 2: 熵对训练的调控

Ch01.849 LLM RL中的熵 Part 2: 熵对训练的调控

📊 Level ⭐⭐⭐ | 31.7KB | entities/llm-rl中的熵-part-2-熵对训练的调控.md

背景:为什么要在训练中调控熵?

LLM 的 RL 训练面临一个根本张力:足够的熵让模型保持探索能力(避免过早收敛到次优策略),但太高的熵又会让模型难以学到有意义的模式。

Part 1 讨论了如何防止熵坍塌——本文更进一步,探讨如何主动利用熵作为训练信号,让模型在 RL 过程中更聪明地探索。具体来说,本文涵盖五大类方法:

  1. 在 Advantage 上增加熵相关项 —— 用熵来调节优势值的大小
  2. 挑选高熵 token 更新 —— 直接用熵过滤需要更新的 token
  3. 在 Reward 中增加熵项 —— 对正负样本分别用熵调控奖励值
  4. 基于熵的路径探索 —— 熵作为路径多样性的信号,引导多路径探索
  5. 基于熵的无监督 RL —— 用熵作为内在奖励,不依赖外部 reward

方法一:在 Advantage 上增加熵相关项

核心思想

《REASONING WITH EXPLORATION: AN ENTROPY PERSPECTIVE》提出了一个直接的方法:在优势值 A 上增加一项关于熵的项 ψ(Ht)。

核心思想:如果某个 token 上有更大的熵,说明模型对这个 token 的置信度低(分布平坦),这往往意味着"关键的探索节点"。增加 ψ(Ht) 后,该 token 会有更大的优势值,从而鼓励模型提高其概率。

ψ(Ht) 的两个关键实现细节

第一:设置上限 |At|/κ

在计算 At + ψ(Ht) 时,如果 At < 0,ψ(Ht) 过大可能会改变 A 的正负性。通过设置上限,熵项只在 At > 0 时发挥正向增强作用,不会因为高熵而对一个负向优势的错误动作打高分。

第二:熵项必须停梯度(detach)

从公式(5)中可以看出,熵项通过 detach 停梯度。这意味着 loss 不会通过熵项直接影响模型更新。如果不停梯度,模型可能会直接"刷熵"来 hack loss(不断提高熵来降低 loss),导致模型学崩。

[!warning] 熵项不停梯度是一个常见错误。正确的做法是用 detach 切断梯度流,只让熵作为 Advantage 的加权因子,而不是直接的优化目标。

熵调控 Advantage 的自适应特性

当原始优势 A > 0 时,更高的熵会导致对所选 token 的更新更强,大大增加其出现的概率,从而使输出分布更尖锐。分布变尖锐后熵降低,熵降低又反过来减少基于熵的优势 ψ(Ht),削弱后续更新——形成了一个负反馈回路,自动平衡探索与利用。

当 A < 0 时,熵项被上限约束,不会过度干预。

为什么要鼓励高熵的 token?

高熵 token 往往和"能提升推理能力的关键行为"强相关,主要有三类 token:

  1. 逻辑连接词:"首先""因为""然而"等,这类词帮模型梳理推理步骤,避免跳步出错
  2. 反思句:"让我验证一下这个结果""这里可能算错了"等,这类词帮模型自查错误,提高正确率
  3. 罕见解题方法:"把对数方程转成线性方程"等,这类词帮模型突破思维定式,解决复杂题

[!important] 在 adv 上增加熵项,模型并不会真正固化所有的高熵 token。Adv 还跟模型是否回答正确有关——只有那些"试了之后真的能提高正确率"的高熵行为才会被模型记住(reward 才是正的)。

一个反直觉的实验现象

加入熵项后(如 RL w/ Entropy Adv,紫线),模型的熵反而比原始 RL(蓝线)更低了。这符合直觉:adv 中增加了熵项,更加鼓励那些熵大的 token 进行更激进的更新,让某个 token 的概率变得更高,进而让熵变低。

但关键在于:熵更低了,模型性能却更好了

这不是因为"让模型一直保持高熵",而是"在该探索的时候用熵引导,探索完后让模型对优质路径更自信"

当然,熵也不能太低——图中的 0.17 水平不算熵崩溃。作者强调这是因为加入了 clip higher 的 trick;如果去掉 clip higher,熵会掉到 0.03,此时在 adv 上引入熵项就不一定有效了。

快手的实践:熵作为优势的放大系数

和上文方法类似,快手在代码模型博客(KAT-Dev-72B-Exp)中提到了用熵来改变优势值的方法:

"对每个 rollout 样本计算策略熵,并将其归一化后用作优势的放大系数。熵高的样本表示更高的不确定性和探索性,其优势将被放大,在梯度更新中占据更大比重;熵低的样本优势被相应缩小,避免过度优化低熵样本导致策略熵崩溃。"

其文中没有给出更详细的细节,应该是直接当作系数乘到 adv 上的,具体归一化方式尚不清楚。


方法二:挑选高熵 token 更新

核心思想

《Beyond the 80/20 Rule: High-Entropy Minority Tokens Drive Effective Reinforcement Learning for LLM Reasoning》可以看作是方法一的一种更加 hard 的变种——不是调节 A 的大小,而是直接用熵来挑选需要更新的 token

具体来说:如果 token 熵比较大,正常参与更新;如果 token 熵比较小,直接将 A 调节成 0(用示性函数 I 决定某个 token 是否参与模型更新)。ρ 表示需要保留百分之多少的 token,τ_ρ 表示保留 ρ% 这么多 token 的熵阈值。

为什么要更新高熵 token?

理由一:高熵 token 对模型推理过程更重要

将 token 按熵大小按 2:8 比例分成两组,分别调节高熵 token(红线)和低熵 token(蓝线)在 sampling 时温度系数(温度系数 T 越大,sampling 的随机性越大)。发现在模型指标不崩的情况下,调节高熵 token 的温度系数对模型结果影响波动更大,说明高熵 token 更能影响模型的推理

高熵 token 常作为句内和句间的逻辑连接词,例如:

  • 转折对比:"wait"(等等)、"however"(然而)、"unless"(除非)
  • 递进补充:"thus"(因此)、"also"(此外)
  • 因果关系:"since"(既然)、"because"(因为)
  • 数学标记:"suppose"(假设)、"assume"(假定)、"given"(鉴于)、"define"(定义)

这些 token 是模型推理过程中的关键"岔路口"。

理由二:模型在正常 RL 训练时,也主要是在优化高熵 token

如下图所示,高熵 token(100th percentile)的熵在训练过程中是在增加的;而低熵 token 的熵始终保持在一个较低的水平。这说明高熵 token 本身就是 RL 训练过程中最活跃的更新对象。

局限性

  • 20% 的比例可能因数据、模型不同而不同:如下图所示,模型对挑选 token 的比例还是比较敏感的
  • 作者的 setting 是用了 DAPO,即使使用全 token 更新,熵也会在训练后期逐渐增加。因此使用该方法仍然需要综合考虑熵坍塌问题——整体熵非常低的情况下,划分 token 的边界就不明显了

方法三:在 Reward 中直接增加熵项

GTPO 方法概述

《GTPO AND GRPO-S: TOKEN AND SEQUENCE-LEVEL REWARD SHAPING WITH POLICY ENTROPY》中提出的 GTPO 方法,与方法一类似,都是直接用熵来控制 RL 过程中模型更新的幅度,但有以下几点不同:

方面 方法一(REASONING WITH EXPLORATION) 方法三(GTPO)
核心强调 高熵 token 往往和"能提升推理能力的关键行为"强相关 对 token 进行更细粒度的奖励值分配
施加位置 在 Advantage 上施加熵相关项 在 Reward 上施加熵相关项(本质无区别)
样本处理 不管样本正负,只要高熵就鼓励更新 针对正、负样本有不同更新行为

正样本的奖励值计算

GTPO 对正样本的奖励值计算如下:

其鼓励生成高熵 token,进行更加丰富的路径探索。r_i 是原始的奖励值(句子级的,正样本一般为 1),最终计算的奖励 r_{i,t} 是 token 级的。α 为超参数,权衡原始奖励 r 和熵项。具体实验中 α_1 取值为 1,α_2 取值为 0.1。

在熵相关的项中,i/k 表示样本序号(考虑同一个 group 内的样本,即同一个 prompt rollout 出来的多个样本),t 表示 token 在句子中的位置。可以发现,熵项在相同 t 位置做了样本间的归一化(归一化时只考虑正样本),进而表示出熵的相对大小

有的序列可能比较短,没有第 t 位置的 token,那么这个样本第 t 位置的 token 熵用 0 代替。同时熵项也用 d_t 进行了加权,该数值表示在同一 group 内的正样本中,有多少个正样本长度达到了 t(即有多少个正样本在熵归一化时在分母上真正贡献了熵值)。这么做的目的是:t 越大,能够达到 t 的正样本数量越少,归一化时分母实际贡献熵的样本数越少,归一化后结果越容易受到极端的熵值影响,应该降低权重。而 t 越大,d 越小,正好可以当作调节归一化后熵的权重。

负样本的奖励值计算

对于负样本,奖励值的计算如下:

原始奖励值为 -1,由 α_1 进行加权,和正样本的奖励函数计算方式类似,只不过是对熵 H 的倒数进行加权。熵越小促使奖励值负的越多,对模型更新影响越大。

这块的 insight 在于:对于错的越自信(熵小)的样本,应该给予更大惩罚,促使其纠正自己的错误。

公式中的 h_t 是 group 中达到 t 长度的负样本的格式,其作用和正样本中 d_t 一致,此处不再赘述。

关于 GTPO 和方法一的一个矛盾

对于负样本来说,GTPO 是对熵低的 token 进行更激进的更新;而方法一(《REASONING WITH EXPLORATION》)不管样本正负,只要是高熵就进行更激进的更新——二者是相互违背的

笔者认为 GTPO 的做法更加合理:应该对自信的错误进行更大的惩罚和修正。

GTPO 最终的优化目标如下,是将原始的 GRPO 优化目标按照样本的正负性质拆成两部分进行表达,本质上和 GRPO 的优化目标没有区别。

GTPO 的序列级变体:GRPO-S

论文中也提出了 GTPO 序列级的一种变体:GRPO-S。公式和 GTPO 类似,只不过把 token 级的熵在样本序列内部进行了平均,得到序列级的熵 Ĥ。这样做之后每个样本有一个奖励值,而不是像原始 GTPO 那样每个 token 都有不同的奖励值。

笔者感觉这样做的话就和文中"进行更细粒度的奖励控制"这个关注点相违背了。


方法四:基于熵的路径探索

核心思想

熵不仅是衡量不确定性的指标,更是推理路径多样性的直接反映。在 LLM 的 RL 训练中,不同的生成路径对应不同的推理策略,而熵可以告诉我们模型在何时何地进行了"真正的探索"。

DeepSeek-R1-Zero 的实验揭示了一个重要现象:纯 RL 训练(不加入任何 SFT 冷启动)能够自发涌现出"多路径探索"能力,表现为回答长度随训练自然增长,以及出现"让我重新思考""等等,可能有另一种方法"等自我反思语句——这被称为"Aha moment"。

熵与路径分支点的关系

当模型在推理过程中遇到分支点(如选择解题方向、决定是否验证中间结果、考虑替代方案)时,输出分布的熵会显著升高。这些高熵节点代表了模型探索不同推理路径的关键时刻。

为什么高熵路径更有价值?

  1. 多样性意味着可选方案多:高熵说明模型没有过早锁定单一路径,保持了多条推理路线的可能性
  2. 分支点往往决定最终正确率:很多推理题的难度不在于计算本身,而在于"想到用哪种方法"
  3. 自我纠错能力源于路径探索:模型能够在错误路径上及时调整,正是因为它没有完全抛弃其他可能性

[!example] 典型的路径分支点 token 包括: - "首先" / "第一步" → 开启新的推理步骤 - "然而" / "但是" → 承认前路可能有问题 - "或者我们可以" / "另一种方法是" → 考虑替代方案 - "让我验证一下" / "等等,检查一下" → 主动自我纠错

如何量化路径探索程度?

方法一:序列级熵监控

对整条生成序列计算平均熵: $$H_{sequence} = \frac{1}{T} \sum_{t=1}^{T} H_t$$

其中 $T$ 是序列长度,$H_t$ 是第 $t$ 个位置的 token 分布熵。

方法二:熵的时间演化分析

追踪训练过程中熵的变化曲线:

  • 训练初期熵快速下降:模型快速收敛到常见推理模式
  • 训练中期熵趋于稳定:标准的 RL 训练会导致熵坍塌
  • 加入熵调控后:在训练中后期仍能保持一定的熵水平,允许模型探索更多路径

方法三:高熵 token 比例追踪

统计每次 rollout 中高熵 token($H_t > \tau$)的比例:

  • 正常 RL 训练:高熵 token 比例随训练下降
  • 熵调控训练:高熵 token 比例能维持在更健康的水平

路径探索与性能的关系

一个反直觉但重要的发现:保持高熵不一定带来更好的性能。关键在于:

  1. 探索需要在正确的方向上进行:无目的的高熵只是随机乱猜
  2. 探索完成后需要收敛:最终还是要固化有效的推理路径
  3. 熵调控的本质是"有引导的探索":用 reward 信号引导探索方向,用熵信号调节探索力度

这解释了为什么方法一(Adv+熵项)中加入熵项后,模型的熵反而比原始 RL 更低,但性能更好——模型在训练过程中学会了"何时该大胆探索,何时该谨慎验证"


方法五:基于熵的无监督 RL

背景动机

传统的 RL 训练依赖外部 reward 信号(通常来自 Reward Model 或规则奖励)。但在很多场景下:

  • 难以定义明确的 reward(如开放式生成任务)
  • Reward Model 可能被 exploit(reward hacking)
  • 某些任务缺乏足够的标注数据训练 Reward Model

无监督 RL 的核心思想是:不使用外部 reward,而是利用模型自身的内在信号来指导学习。熵作为一种衡量模型"不确定性"和"多样性"的指标,成为无监督 RL 的理想内在奖励信号。

内在奖励:熵作为 Curiosity Signal

核心假设:模型对自己不确定的输出应该感到"好奇",应该被鼓励去探索这些不确定性。

内在奖励设计: $$r_t^{intrinsic} = \alpha \cdot H(p_\theta(x_t | x_{<t}))$$

其中 $H$ 是 token 分布的熵,$\alpha$ 是调节系数。

这意味着:

  • 模型生成高熵 token 时获得更高的内在奖励
  • 内在奖励鼓励模型保持探索性,不过早收敛

混合奖励:内在熵奖励 + 外在规则奖励

纯粹基于熵的无监督 RL 可能导致"无意义的多样性"(模型学会生成随机输出以维持高熵)。实践中通常将内在熵奖励与外在规则奖励结合:

$$r_t^{total} = r_t^{extrinsic} + \beta \cdot H(p_\theta(x_t | x_{<t}))$$

其中:

  • $r_t^{extrinsic}$ 是外部奖励(如回答正确性、格式规范性等可量化的奖励)
  • $\beta$ 控制内在奖励的权重
  • 两者结合确保模型既保持探索性,又不会偏离正确方向

GRPO 环境下的无监督变体

在 GRPO 框架下,可以设计一种不需要外部 reward 的熵奖励机制

纯熵奖励的 Group Relative 策略

对同一个 prompt 采样 $G$ 个 response,计算组内每个样本的序列级熵 $H_g$,然后用相对熵作为奖励:

$$r_g = \frac{H_g - \bar{H}}{std(H)}$$

其中 $\bar{H}$ 是组内平均熵,$std(H)$ 是组内熵的标准差。

这种设计的直觉

  • 熵高于平均的样本获得正奖励,鼓励保持多样性
  • 熵低于平均的样本获得负奖励,防止过早收敛
  • 相对比较天然消除了绝对熵值大小的问题

无监督 RL 的局限性

  1. 难以保证生成质量:没有外部 reward 引导,模型可能学会"看似多样实则无意义"的输出
  2. 训练不稳定:内在奖励的方差通常较大,可能导致训练震荡
  3. 收敛困难:模型可能陷入"为了高熵而高熵"的局部最优

[!tip] 无监督 RL 更适合作为预训练或冷启动阶段的探索机制,在获得一定基础能力后切换到有监督的 RL 训练。

与方法一至三的关系

|| 方面 | 方法一至三 | 方法四(路径探索) | 方法五(无监督 RL) | |------|-------|-------------------|---------------------| || Reward 来源 | 外部 Reward Model 或规则 | 外部 + 熵引导 | 纯内在熵奖励 | || 关注粒度 | Token 级 | 序列/路径 级 | 序列/Token 级 | || 训练目标 | 优化特定任务性能 | 平衡探索与利用 | 最大化内在好奇心 | || 典型应用 | 数学推理、代码生成 | 多路径推理任务 | 开放式生成、冷启动 |


五大方法对比

方面 方法一(Adv+熵项) 方法二(挑选高熵 token) 方法三(Reward+熵项) 方法四(路径探索) 方法五(无监督 RL)
代表工作 REASONING WITH EXPLORATION Beyond the 80/20 Rule GTPO R1-Zero 现象观察 内在奖励研究
熵的作用位置 Advantage Token 选择器 Reward 路径/序列 级 内在奖励信号
对负样本的处理 不区分正负,高熵即鼓励 直接过滤掉低熵 token 对低熵负样本加大惩罚 视具体设计而定 N/A(无外部 reward)
细粒度 Token 级 Token 级(hard 过滤) Token 级(GTPO)或序列级(GRPO-S) 序列/路径 级 Token/序列 级
核心机制 ψ(Ht) 放大优势值 阈值筛选高熵 token 归一化熵项塑形 reward Aha moment / 自我反思涌现 内在好奇心驱动
核心假设 高熵 token 是探索节点 高熵 token 占 20% 但贡献 80% 效果 自信的错误应被更严厉惩罚 高熵 = 多路径可能性 高熵 = 值得探索的区域

与 Part 1 的关系:防止坍塌 vs 主动调控

|| 方面 | Part 1(防止坍塌) | Part 2(主动调控) | |------|-------------------|-------------------| | 目标 | 保持最低熵水平,防止崩溃 | 利用熵作为训练信号 | | 手段 | KL 约束、熵正则项、Clip Higher、CISPO、Cov 调控等 | Advantage 熵项、Reward 熵项、Token 选择、路径探索、无监督 RL | | 阶段 | 整个训练过程 | 重点在训练早期/中期 | | 效果 | 防止模式崩溃 | 提升探索效率,引导推理路径 | | Reward 依赖 | 无需修改 reward 设计 | 可基于 reward 设计调整 | | 典型场景 | 任何 RL 训练场景 | 需要引导特定推理行为时 |


核心启示

[!summary] 熵不是训练的敌人,而是信号。关键在于如何正确地让熵参与梯度计算——停梯度的熵项既能作为 Advantage 的加权因子,又不会让模型通过"刷熵"来作弊。配合自适应负反馈回路,熵调控可以成为一种优雅的探索-利用平衡机制。

但也要注意:

  • 不是熵越高越好:加了熵项的 RL w/ Entropy Adv 熵反而更低,但性能更好——模型在探索完成后迅速收敛到正确路径
  • 高熵 token 是推理的关键"岔路口":逻辑连接词、反思句、罕见解法是三类代表
  • 正负样本应区分处理:GTPO 对自信错误的负样本加大惩罚,这个设计比统一鼓励高熵更合理
  • 路径探索需要引导:R1-Zero 的 Aha moment 揭示了多路径探索的重要性,但无目的的高熵不等于有效探索
  • 无监督 RL 是有潜力的探索方向:在缺乏外部 reward 的场景下,熵可以作为内在奖励信号,但需要与外在奖励结合使用

深度分析

熵调控的本质:从"防止坍塌"到"主动信号"

熵在 LLM RL 训练中扮演的角色经历了范式转变。Part 1 的方法是防止熵坍塌,保持模型探索能力;本文的五种方法则将熵本身作为训练信号 。熵调控的本质不是"让模型保持高熵",而是"在正确的时间点用熵引导探索"。方法一(Adv+熵项)的实验表明,加入熵项后模型的熵反而降低,但性能提升——模型学会了"何时该大胆探索,何时该谨慎验证" 。

五大方法的内在逻辑统一性

五种熵调控方法看似不同,实则共享同一套逻辑框架:通过某种方式放大高熵 token 或路径在梯度更新中的权重 。方法一在 Advantage 层面加权,方法二在 token 过滤层面筛选,方法三在 Reward 层面塑形,方法四在路径层面引导,方法五将熵本身作为 reward。区别只在于"在哪里注入熵信号"和"如何与外部 reward 交互" 。

高熵 token 的认知价值

高熵 token 作为"推理岔路口",其认知价值被严重低估。这些 token 之所以熵高,是因为模型对它们的置信度低——这恰恰意味着它们是"关键节点" 。逻辑连接词("首先""然而""因为")、反思句("让我验证一下")、罕见解法标记("把对数方程转成线性方程")——这些 token 帮助模型建立推理结构、进行自我纠错、突破思维定式 。

GTPO 与方法一的矛盾揭示的设计空间

方法一(REASONING WITH EXPLORATION)和 GTPO 对负样本的处理存在根本分歧:前者无论样本正负都鼓励高熵 token,后者对低熵的负样本(自信的错误)施加更大惩罚 。GTPO 的逻辑更符合直觉:对"自信地犯错"应该更严厉地惩罚。但这个矛盾也说明,熵调控方法的设计空间很大,不同的设计选择适合不同的训练场景 。

无监督 RL 的潜力与边界

方法五(基于熵的无监督 RL)最有潜力也最危险。潜力在于它不依赖外部 reward,可以在冷启动阶段帮助模型探索;危险在于纯粹追求高熵会陷入"随机输出"的局部最优 。内在熵奖励必须与外在奖励结合使用,且更适合作为预训练或冷启动阶段的探索机制,而非全程的优化目标 。

实践启示

对于 LLM RL 训练实践者

  1. 优先考虑熵项停梯度:如果在你的 RL 系统中加入熵项,第一件事是确保熵项停梯度。否则模型会通过"刷熵"来降低 loss,导致训练崩溃 。

  2. 配合 clip higher 机制使用:实验表明,熵调控方法对熵的水平比较敏感。去掉 clip higher 后熵可能降到 0.03(熵崩溃临界点),此时熵调控方法可能失效 。

  3. 根据任务类型选择方法:推理任务优先考虑方法一/二;数学/代码生成可以尝试 GTPO(方法三);需要多路径探索时关注方法四;冷启动阶段考虑方法五 。

  4. 监控高熵 token 比例:高熵 token 比例是反映模型探索状态的重要指标。如果高熵 token 比例持续下降,说明模型正在过度收敛 。

对于 Reward 设计者

  1. GTPO 的正负样本区分值得借鉴:对"自信错误"施加更大惩罚的设计直觉上更合理,可以考虑在自己的 reward shaping 中借鉴 。

  2. 熵项需要样本间归一化:GTPO 在 token 位置维度对组内样本做归一化,消除绝对熵值大小的影响。这个归一化技巧对其他熵调控方法也适用 。

  3. 位置衰减因子防止极端值影响:d_t 作为位置衰减因子,避免因样本长度差异导致的归一化偏差。这个设计在设计类似的相对比较机制时可以参考 。

对于算法研究者

  1. 熵调控与自适应负反馈的结合:方法一展示了一个优雅的自适应机制——高熵→大更新→低熵→削弱更新。这种负反馈回路值得在其他 RL 场景中探索 。

  2. 多方法组合的可能性:五种方法并非互斥,可以在同一个训练框架中组合使用。例如,用方法一调控 advantage,用方法四监控路径探索,用方法五做冷启动 。

  3. 熵作为内在奖励的更多可能性:方法五(熵作为内在奖励)可以与其他内在奖励机制(如 curiosity-driven、self-supervised)组合,探索更丰富的无监督 RL 方向 。


相关概念

  • 熵正则化(Entropy Regularization)
  • Advantage 估计算法
  • 奖励塑形(Reward Shaping)
  • GRPO(Group Relative Policy Optimization)
  • Policy Gradient 方法
  • 路径探索(Path Exploration)
  • 内在奖励(Intrinsic Reward)
  • 好奇心驱动学习(Curiosity-driven Learning)
  • 自我反思(Self-reflection)
  • LLM RL中的熵 Part 1: 熵的调控

原文存档

相关实体