大模型Alignment偏好优化技术PPO,DPO, S
我做了一年AI对齐,发现真正能用的方法,就两个半
去年我还在某家大厂搞alignment,每天开会跟菜市场似的——一帮人为了“PPO的KL惩罚系数到底设0.04还是0.1”吵得脸都红了。Reward曲线画出来漂漂亮亮,一测生成质量反而往下掉。
后来换了DPO,三行代码就收敛了,效果也没差多少。
但我心里一直犯嘀咕:这东西,是不是太取巧了?
离职后闲了大半个月,我把2024年冒出来的那些alignment方法挨个儿读了一遍——从PPO、DPO、SimPO、KTO,到Step-DPO、MCTS-DPO、SPO。数学推导一个比一个长,但真正能落地的不超过三个。
今天跟你聊聊,哪些坑我踩过,哪些思路值得跟。
一、PPO这东西,我劝小团队别碰
四个模型同时挂着(策略、参考、奖励、价值),光显存就吃掉8张A100。
又贵,又重,动不动就炸。
更难受的是reward hacking——模型学会用长句子刷高分,或者往里塞一些无关的关键词。我调参调了两个月,最后发现最管用的不是调clip系数,而是把KL惩罚的β从0.04提到0.2,再加一个长度正则。
有个事让我特别无语:2024年开源社区开始大规模抛弃value function。
DeepSeek的GRPO直接把critic删了,只用组内采样算标准化优势,在AIME 2023上干到71.0%。我试了试,显存确实省了四分之一,但每个prompt要采样8-64个回复,推理成本一下就上去了。
不过话说回来,对于数学和代码这种结果可验证的任务,GRPO真是好兄弟——奖励信号清楚,模型不会乱编。
但我得跟你说句实话: GRPO的工程细节比论文里写的要脏很多。我搭的时候卡在vLLM和采样器的吞吐匹配上,最后直接抄了DeepSeek开源代码里的采样逻辑才跑顺。
PPO还有个变种叫RLOO,用留一法算baseline。我拿它在AlpacaEval上试过,效果接近PPO但少一个critic网络,适合小团队。问题是什么?调参经验太少,β和batch size一改就崩。
二、DPO的家族谱系:满地都是“数学秀”和“真香”
DPO是2024年最被追捧的方向,因为它把PPO的奖励模型和强化学习两步合并成一步。
我大概数了一下,基于DPO的改进至少有十几个:SimPO、KTO、ORPO、R-DPO、Step-DPO、MCTS-DPO、SPO……
很多论文的推导占了五页,但核心差异一句话就能说完。
1. SimPO:去掉reference model的代价
SimPO直接用输出序列的长度归一化对数概率作为隐式奖励,不跟参考模型比。
我刚开始是心动的——少一个模型,训练快一倍。
实际发现它有两个坑。隐式奖励和真实偏好之间仍有gap,导致模型容易生成短而精确的回答。你让它解释个复杂场景,它直接就砸了。另一个是β参数对长度偏置极其敏感,稍微调大就全变短句。
陈丹琦团队拿它练出了当时最强的8B模型,但我自己复现时发现:如果base model质量低,SimPO提效并不明显。
说白了,SimPO极度依赖SFT阶段的底子。
2. KTO:省标注是省了,但上限就在那
去年我做标注项目最大的痛就是找pair数据。
KTO只用二元标签(好/坏),单个样本就能训,听起来太完美了。
我实际跑过一次:用LLM自己判了2000条数据的好与坏,跑KTO,结果比DPO差了7个点(AlpacaEval 2)。
原因很简单——没有成对对比,模型学不到相对偏好。
适合快速验证,但想冲sota?还得上成对数据或在线采样。
3. Step-DPO和MCTS-DPO:reasoning层面的新思路
Step-DPO是我今年最喜欢的一篇。
它不再等模型输出整段回答再算loss,而是对每一步推理做局部优化。
我知道的某国内模型团队在数学推理任务上用Step-DPO替代了DPO,pass@1提升了12%。
这个思路跟OpenAI o1的test-time compute精神是一致的:拆分奖励信号,给中间推理步骤反馈。
MCTS-DPO就更取巧了——它根本不在优化公式上折腾,而是用MCTS探索采样路径,产生高质量的偏好数据,然后跑标准DPO。
说白了就是:拼算法拼不过,就靠合成数据卷质量。
我试过在代码任务上跑MCTS-DPO,确实比直接DPO高了8%以上的pass@1。
但MCTS树的宽度深度怎么设?很玄学。我卡的是采样效率,后来用了业界常用的vLLM + ray才压住延迟。
4. SPO:纳什均衡是忽悠还是硬货?
不少人觉得reward model不能建模“a > b, b > c, c > a”这类循环偏好,于是SPO引入了博弈论里的纳什均衡。
这个数学我翻了三遍才勉强跟上。
落地时更惨:需要采样多个输出做pairwise对比,然后解一个凸优化问题,收敛极慢。
目前只见到Google和Meta的论文里用过,我自己的实验跑了一周没出结果。
要我说,SPO纯属数学炫技。除非多轮对话系统对偏好的不可传递性有强需求,不然平常用的低频交互场景完全用不上。
聊到最后,我觉得最朴实的是Online DPO。
它用当前策略采样新数据再训练,本质上就是GRPO的弱化版——同样需要在线采样,但不需要奖励模型,只需要偏好标注。
我在Llama-3-8B上跑过两轮迭代,效果从AlpacaEval 2的23%提升到31%,算是对冲图个便宜。
三、我的选型口诀和2025预测
你看,折腾了这么多方法,最后能用的其实就几条:
- 结果可验证(数学、代码)→ GRPO
- 只有偏好对 + 算力有限 → Online DPO(至少两轮迭代)
- 只有好/坏标签 → KTO(但降低预期)
- 想冲sota且不差钱 → PPO + 多维度reward model
- 数据质量不行,别折腾算法,回去重标或合成
说到这儿,我想掏出一个核心经验:
SFT阶段模型没学好,对齐就是天花板。
我见过一个团队用DPO训了一个月,最后发现模型连指令都follow不住,纯属白费电。
另外,长度偏置无人不踩:任何reward形式都会让输出变长,需要在reward函数里显式加length penalty,或者像SimPO那样做长度归一化。
我自己常用的手段是给reward model加一个“简洁度”打分维度。
2025预测:
Self-Play会替代大部分手动标注。DeepSeek-R1已经示范了:用GRPO在可验证任务上自训练,不依赖任何人类偏好。
另一个方向是test-time computation介入对齐——在推理阶段用MCTS或PRM搜索最佳输出,而不是光靠训练。o1的火爆已经证明,把算力放在推理时,能绕过训练阶段的很多坑。
最后,GRPO和Online DPO会吃掉PPO的市场——因为谁都不想再伺候pair RM + critic的耦合魔鬼。
做alignment这一年,最大的感受是:
别迷信数学推导。 纸上推得再漂亮,到了线上环境一个batch的异常采样就能让它崩。
真正的改进,要么是降成本,要么是增量效果。
2024年这么多技术里,真正实用的也就两个半:GRPO、Online DPO,SimPO算半个。
剩下的?
当八卦看吧。
读者评论 2