024、DPO(直接偏好优化):更高效的RLHF替代方案
DPO(直接偏好优化):扔掉RLHF的强化学习,偏好对齐还能这么玩上周在部署一个客服对话模型时遇到个头疼事:明明在测试集上各项指标都漂亮,一到真实用户环境就出幺蛾子——回答倒是流畅,但总在“过度谨慎”和“口无遮拦”两个极端之间摇摆。调了三天RLHF的PPO参数,不是KL散度爆炸就是奖励模型过拟合,最后看着GPU账单直冒冷汗。就在准备给产品经理写延期报告时,师弟扔来篇论文:“试试这个DPO?听说不用强化学习也能搞偏好对齐。”一、RLHF的暗伤:我们到底在优化什么?传统RLHF流程大家都熟:先训个奖励模型(RM),再用PPO这类强化学习算法让语言模型最大化奖励,同时加个KL惩罚防止模型跑偏。这套路理论上优雅,实践里却满是坑:# 典型的PPO训练循环(简化版)forbatchindataloader:# 1. 采样生成responses=model.generate(batch.prompts)# 这里显存容易炸# 2. 奖励打分rewards=reward_model(responses)-beta*kl_penalty# beta调到你怀疑人生# 3. PPO更新loss=ppo_loss(old_logprobs,new_logprobs,rewards)# 梯度偶尔会飘最大的痛点在于奖励模型的不确定性