在强化学习领域,策略优化是提升模型性能的核心技术。传统方法如PPO、TRPO等通过约束策略更新幅度来保证训练稳定性,但在处理复杂推理任务时往往面临探索不足或过度保守的问题。自适应熵策略优化(Adaptive Entropy Policy Optimization, AEPO)的创新之处在于将信息论中的熵概念与策略优化相结合,实现了对模型推理过程的细粒度调控。
熵在策略优化中扮演着两个关键角色:
实际应用中发现,简单地对所有高熵token给予奖励会导致模型在简单问题上产生不必要的冗余推理。例如在解一元一次方程时,模型可能会反复验证明显正确的步骤。
AEPO通过三项关键技术解决了上述问题:
实验数据显示,在数学推理任务上,AEPO相比传统GRPO方法将hard问题的解决率从43%提升至67%,同时将easy问题的平均响应长度缩短28%。
AEPO采用两阶段训练策略,基于Qwen2.5-VL系列模型实现:
第一阶段:监督微调(SFT)
第二阶段:AEPO优化
python复制# 伪代码示例
for epoch in range(total_epochs):
prompts = sample_batch(dataset, batch_size=512)
rollouts = generate_rollouts(
prompts,
temperature=1.0,
top_p=0.99,
max_length=20k # 4k prompt + 16k response
)
# 核心AEPO步骤
entropy_stats = compute_window_entropy(rollouts, window_size=5)
difficulty = assign_difficulty_bucket(rollouts)
advantages = calculate_entropy_shaped_advantages(
rollouts,
entropy_stats,
difficulty
)
update_policy(rollouts, advantages)
对于每个token位置t,计算其w=5窗口内的平均熵:
math复制\bar{H}_{t:w} = \frac{1}{w}\sum_{\tau=t}^{t+w-1} H_\tau
其中Hτ来自softmax温度T=1.0的原始logits。实验表明w=5能有效过滤单token噪声,同时保持对2-3步推理片段的敏感性。
基于group-wise的在线评估:
python复制def assign_difficulty(pass_at_8):
if pass_at_8 >= 6: # ≥75%正确率
return 'easy'
elif pass_at_8 >= 3: # 37.5%-75%
return 'medium'
else: # <37.5%
return 'hard'
每个bucket关联一组参数:
| 参数 | easy | medium | hard |
|---|---|---|---|
| λd | 0.3 | 0.7 | 1.2 |
| δd | 0.5 | 1.0 | 2.0 |
| βd | 1.0 | 0.8 | 0.5 |
不同难度采用差异化奖励曲线:
实际编码采用分段线性函数:
python复制def entropy_reward(difficulty, delta, acc):
if difficulty == 'easy':
return -2.0 * max(delta, 0) + 0.5 * (1 - acc)
elif difficulty == 'medium':
return -0.5 * abs(delta) + 0.7 * acc
else: # hard
return 1.2 * delta + 0.3 * acc
算法1的核心循环包含8个步骤:
比较两种KL处理方式对优势方差的影响:
当Si与Ki相关性低时(实验测得ρ≈0.15),KL惩罚会使梯度方差扩大3-5倍。AEPO采用分离式KL损失:
math复制L_{KL} = \kappa_d \cdot \frac{1}{G}\sum_i \frac{1}{L_i}\sum_t \beta_{i,t} \text{kld}_{i,t}
其中βi,t = βd·ρ^mi,t(ρ=0.7),在高熵窗口(mi,t=1)放松约束。
设潜在状态St∈{R,V}(Reasoning/Verbatim),满足:
则可证明响应长度L与高熵token数NHE存在线性关系:
math复制E[L] = a + b E[N_{HE}]
这解释了为何NHE能有效预测推理长度。实验测得b≈2.3(medium任务),即每个高熵token平均对应2.3个输出token。
AEPO优势函数包含两部分:
math复制\tilde{A}_{i,t} = A^{grp}_{i,t} + \psi_{i,t}
其中:
ψ的设计关键:
math复制\psi_{i,t} = \lambda_d \phi([\bar{H}_{i,t:w}-\theta]_+) \cdot m_{i,t} - b_i
其中:
| 指标 | GRPO | DAPO | AEPO |
|---|---|---|---|
| Easy准确率 | 92% | 93% | 95% |
| Easy平均长度 | 145 | 138 | 104 |
| Hard准确率 | 43% | 51% | 67% |
| Hard平均长度 | 387 | 402 | 435 |
AEPO在保持easy任务高效解决的同时,显著提升hard任务性能。长度增加主要来自对关键推理步骤的更深入探索。
案例1:简单三角问题
code复制问题:直角三角形中,一个锐角60°,对边6√3,求斜边y。
AEPO输出:
sin60° = 6√3/y → y = 12
Tokens: 243 (高熵token: 20)
模型快速应用三角函数关系,仅在单位转换处出现短暂熵升高。
案例2:复杂几何问题
code复制问题:三个圆的半径比为1:2:4,周长和56π,求两圆中心距。
AEPO输出:
[多步推理...] 最终确认半径分别为4,8,16 → 距离=24
Tokens: 4173 (高熵token: 84)
在半径解释、距离公式应用等关键点出现持续高熵窗口,反映深度思考过程。
窗口大小w:
熵阈值q:
KL松弛系数ρ:
难度分级阈值:
现象: 优势值剧烈波动,策略崩溃
解决方法:
python复制# 动态调整示例
current_theta = np.percentile(entropies, 95)
theta = 0.9 * theta + 0.1 * current_theta # 平滑更新
现象: NHE与任务指标无相关性
诊断步骤:
现象: 模型在hard任务上过早终止
调整方案:
实践证明,AEPO在Qwen2.5-VL-7B上需要约5000次迭代达到稳定(batch_size=128),相比GRPO训练时间增加35%,但最终效果提升显著。关键是在保持探索的同时,通过窗口机制和难度感知将计算资源精准分配到最需要的推理环节。