一句话概括:还在用PPO微调大模型?你可能被它的核心机制坑了!这篇论文发现PPO用来限制更新幅度的“比率截断”CLIP在长尾分布的语言模型上完全失效:它会粗暴地阻止模型探索新颖的低频词,却又管不住高频词的剧烈漂移。作者提出的DPPO算法,直接用“策略分布的真实距离”来做“风控”,彻底解决了训练效率低和不稳定的老大难问题。(原论文题目见文末,点击阅读原文可直接跳转至原文链接, Published on arXiv on 05 Feb 2026, by Sea AI Lab, Singapore / NUS.)
各位小伙伴好,我创建了学术交流群(个人建群,非广告),涵盖大模型/CV/agent/多模态各个方向,欢迎进群交流,一起进步!
第一阶段:识别核心概念
论文的motivation分析
在LLM的强化学习微调(如RLHF)中,PPO(Proximal Policy Optimization)是默认的王者。PPO的核心机制是利用一个“比率截断”来限制模型更新的幅度,防止新策略偏离旧策略太远(即走出Trust Region,信任区域)。作者发现了一个被长期忽视的结构性缺陷:PPO的截断机制是为传统RL(小动作空间)设计的,并不适合LLM(巨大的词表空间)。
具体表现为两个问题:
- 对低概率Token的过度惩罚:LLM的长尾分布意味着很多合理的探索Token概率很低(如)。如果模型稍微提升一点它的概率(到),比率会瞬间变成100倍,触发PPO截断,导致模型学不动。
- 对高概率Token的约束不足:对于概率极高的Token(如0.99),如果概率掉到0.8,比率变化很小,PPO认为这很安全。但在概率分布上,这其实是一个巨大的质量移动(Mass Shift),可能导致训练崩塌。
论文主要贡献点分析
- 提出 Divergence Proximal Policy Optimization (DPPO):放弃了PPO粗糙的“比率”作为代理,直接使用策略散度(Policy Divergence)(如Total Variation或KL散度)来决定是否更新参数。
- 引入轻量级近似方法:为了解决在几十万词表上计算全量散度太占显存的问题,提出了Binary(二值)和Top-K近似方法。这使得DPPO的计算开销几乎可以忽略不计。
- 建立了针对LLM的理论框架:推导了专门针对LLM生成任务(有限视界、无折扣、序列级奖励)的策略提升下界,弥补了经典RL理论与LLM实践之间的鸿沟。
- 显著的实验结果:在数学推理任务(AIME24/25)上,DPPO在稳定性和最终性能上都显著优于GRPO等PPO变体,且不需要复杂的Rollout Router Replay技巧就能稳定训练。
理解难点识别
- 最具挑战性的概念:Ratio vs. Divergence (Total Variation) 的本质区别。初学者很难直观理解为什么“比率变化大”不等于“分布变化大”。这是理解为什么PPO在LLM上会失效的关键。
- 需要重点解释的核心概念:
- PPO的比率陷阱:为什么它对长尾词表不公平?
- Binary Approximation(二值近似):如何在不遍历整个词表的情况下算出近似的散度?
概念依赖关系
要理解DPPO,必须先通过比喻彻底搞懂PPO错在哪里。路径为:理解PPO的缺陷 引入“真实的距离”概念(TV散度) 解决计算难题(近似方法) 最终方案(DPPO)。
第二阶段:深入解释核心概念
比喻中的关键元素
- 投资经理:模型策略 Policy。
- 投资组合:词表 Vocabulary。
- 蓝筹股(高概率Token):比如“苹果”或“微软”,原本把99%的资金(概率0.99)都投在这里。
- 仙股(低概率Token):一些名不见经传的小公司,只投了1块钱(概率0.00001)。
- 风控规则:Trust Region(信任区域)。
每个元素对应的实际技术概念
- 投资操作:模型更新参数,改变Token的生成概率。
- 资金变动:概率分布的变化量(Divergence)。
- 资金倍数:PPO中的概率比率(Ratio)。
解释为什么这些对应关系是合理的
这个比喻捕捉了LLM中“高频词占据绝大部分概率质量”而“低频词虽然概率极低但数量巨大”的长尾特征,就像投资组合中资金分配极度不均一样。
深入技术细节
PPO的问题核心
PPO使用比率 进行截断。
- 对于低概率词,分母极小,分子稍有变动, 就会爆炸。
- 对于高概率词,分母极大,分子的大幅变动在 上体现不明显。
DPPO的解决方案
DPPO引入了一个基于散度(Divergence)的动态掩码(Mask)。它不再盲目截断,而是计算新旧策略分布之间的总变差距离(Total Variation, TV)。
关键公式:DPPO的目标函数
符号替换版本:DPPO的训练目标 = 期望值 [ 累加每一个Token ( 智能风控开关概率比率优势值 ) ]
这里的核心是那个智能风控开关 ():
智能风控开关的状态:
- 情况1(想加仓但超标):如果这个动作是好的(优势值大于0)且正在增加它的概率,并且 整个投资组合的变动量(Divergence)已经超过了安全线() 关掉开关(0),阻止更新。
- 情况2(想减仓但超标):如果这个动作是坏的(优势值小于0)且正在减少它的概率,并且 整个投资组合的变动量(Divergence)已经超过了安全线() 关掉开关(0),阻止更新。
- 其他情况:一切正常,保持开启(1)。
解决内存噩梦:Binary Approximation(二值近似)
要计算准确的TV散度,需要遍历词表里所有Token(比如10万个词)的概率变化并求和。这在训练时太慢且太占显存。作者提出了Binary Approximation(二值近似)。
公式:
符号替换版本:简化的变动量计算 = | 旧策略下当前Token的概率 - 新策略下当前Token的概率 |
将技术细节与比喻相互映射
- 场景一:你发现了潜力股(低概率Token的更新):你觉得那个只投了1块钱的“仙股”很有前途,决定加仓到100块钱。
- PPO(比率风控官):只看增长倍数。它尖叫道:“天啊!你把仓位增加了100倍(Ratio = 100)!这是违规操作!驳回!” 结果:有益的探索被扼杀了。
- DPPO(散度风控官):看资金总量的变动。它说:“哦,你只动了99块钱,占总资产比例不到亿分之一。批准操作。” 结果:模型成功学到了新知识。
- 场景二:蓝筹股暴雷(高概率Token的更新):你突然觉得“苹果”不行了,决定把99%的仓位降到80%。
- PPO(比率风控官):还是只看倍数。它计算:。它说:“倍数变化不大,还在0.8到1.2的安全范围内。批准操作。” 结果:巨大的策略偏移未被察觉,导致训练不稳定(Collapse)。
- DPPO(散度风控官):看到你移动了19%的巨额资金。它立刻报警:“警告!资金变动量(Total Variation)超过阈值!这太危险了,必须阻止!” 结果:避免了模型崩塌。
总结
PPO的Ratio机制就像一个只懂小学乘除法的风控,容易对小额交易大惊小怪,却对大额资产流失视而不见。DPPO引入的TV散度(以及其近似)则是真正的精算师,它关注的是实际的“资金流动量”,从而在保证安全的前提下,允许模型对长尾知识进行有效探索。
第三阶段:详细说明流程步骤
具体流程伪代码
输入阶段我们有一个Prompt数据集(例如数学问题 ),一个参考模型(Reference Policy, ,通常是SFT后的模型冻结不变),和一个当前正在训练的模型(Policy, )。
Step 1: 采样与生成 (Rollout)
- 从数据集中取出一个Prompt 。
- 让当前模型 根据 生成一个完整的回答序列 。
- 关键记录:在生成的过程中,不仅要保留生成的Token,还要记录下旧策略 对这些Token的预测概率以及新策略 对这些Token的预测概率。
Step 2: 优势估算 (Advantage Estimation)
- 将生成的回答 送入奖励模型(或通过规则打分,如数学题看答案是否正确),得到标量奖励 。
- 为了减少方差,通常会用GRPO的方式,对同一个Prompt生成多条回答,计算每条回答相对于平均值的优势 。
Step 3: 计算散度与构建掩码 (Divergence Masking)进入训练循环,对于序列中的每一个位置 :
- 输入:当前Token ,旧概率 ,新概率 。
- 计算比率:。
- 计算近似散度 (Binary TV):直接做差取绝对值:。(注:如果是Top-K近似,则需要取前K个高频词的概率分布进行对比)。
- **生成掩码 **:
- 设定一个超参数 (例如0.15)。
- 检查是否违反信任区域:
- 如果 ( 且 ) 或者 ( 且 ):说明模型正在试图根据优势更新参数。
- 此时,如果 ,说明这次更新会导致分布变化过大,无论如何都要拦截。
- 如果满足拦截条件,置 ;否则 。
Step 4: 计算损失并反向传播
- 输入:掩码 ,比率 ,优势 。
- 计算Loss:将它们相乘:。(注意通常是最小化负收益)。
- 梯度更新:根据Loss计算梯度,更新模型 的参数。
输出更新后的模型参数,进入下一个训练步。
第四阶段:实验设计与验证分析
主实验设计:核心论点的验证
核心主张:DPPO比PPO/GRPO更稳定,且能处理词表长尾问题。
- 数据集与任务:选择了数学推理任务,使用 AIME 2024 和 AIME 2025 作为测试集。数学推理对逻辑链条要求极高,任何一个步骤的崩塌都会导致结果错误,AIME是高难度竞赛题,非常适合测试RL的稳定性。
- 基线方法:
- **GRPO (Clip-Higher)**:DeepSeek-R1使用的GRPO算法,加上了Clip-Higher trick。
- CISPO:另一种尝试解决信任区域问题的方法。
- 实验结果:DPPO在AIME 24/25上的Pass@1准确率不仅上升速度更快(效率高),而且最终收敛的分数明显高于GRPO。结论是使用散度(Divergence)代替比率(Ratio)作为约束,确实带来了实打实的性能提升。
消融实验分析:内部组件的贡献
问题一:信任区域真的必要吗?
- 消融对象:移除所有Trust Region约束(即PG-IS方法)。
- 结果:模型训练很快就崩塌(Collapse)了,准确率跌到谷底。
- 结论:Trust Region是必须的,尤其是在学习率极低的情况下,训练-推理的不匹配(Mismatch)会累积。
问题二:锚点(Anchor)选谁?
- 消融对象:对比以 (Rollout Policy)为锚点 vs. 以 (Recomputed Policy)为锚点。
- 结果:以Rollout Policy为锚点(即DPPO的做法)非常稳定;而以Recomputed Policy为锚点(很多开源库的默认做法,如MiniRL)会导致崩塌。
- 结论:必须锚定在生成数据的那个模型上,这符合On-Policy的理论假设。
问题三:二值近似(Binary)够用吗?
- 消融对象:对比 Binary TV vs. Top-K TV。
- 结果:两者性能几乎一致。
- 结论:简单的二值近似已经捕捉到了绝大部分的分布偏移信息,性价比极高。
深度/创新性实验剖析:洞察方法的内在特性
实验A:被PPO误杀的Token有哪些?
- 设计:作者把训练过程中被PPO截断(Clipped)的Token打印出来分析。
- 发现:被截断最多的全是关键推理词!比如数字("1", "4")、数学符号("+", "=")、逻辑连接词("Therefore", "Since")。
- 洞见:这些词通常在初始模型中概率较低(因为推理路径多样),一旦RL发现某条路径是对的,想大幅提升这些词的概率时,PPO却因为Ratio过大而“一刀切”地阻止了更新。
实验B:解剖“不稳定性”的来源
- 设计:作者逐步放宽约束,看看到底哪种更新导致了崩塌。
- 发现:崩塌的主要推手是对负样本(Negative Samples)的过度更新。当模型收到负反馈时,如果没有Divergence约束,模型会疯狂降低相关Token的概率,导致“矫枉过正”,破坏了模型原本的语言能力。
- 结论:DPPO的掩码机制在处理负反馈时起到了关键的保护伞作用。
本文题目:Rethinking the Trust Region in LLM Reinforcement Learning
欢迎Deep Learning同好与我交流、讨论、合作!