当前位置: 首页 > java >正文

PPO、DPO和GRPO的区别

一、 核心思想一句话概括

首先,我们用三个比喻来快速理解它们的核心思想:

  1. PPO (近端策略优化)「比武招亲」

    • 模型(AI)通过试错和与裁判(奖励模型)的互动来学习。它生成多个回答,裁判给每个回答打分(奖励),模型的目标是调整自己,使自己更可能生成高分的回答,同时避免与之前的自己差别太大(“近端”的含义)。
  2. DPO (直接偏好优化)「父母撮合」

    • 直接给模型看人类标注的“好答案”和“坏答案”的成对样本((winner, loser))。模型不需要通过裁判打分,而是直接学习模仿“好答案”的风格和模式,并远离“坏答案”。它直接优化了偏好排序的概率。
  3. GRPO (全局回报优化)「非诚勿扰」

    • 这是 DeepSeek 团队提出的新方法。它像 DPO 一样使用成对偏好数据,但整个训练过程被组织成一场“竞赛”。模型生成的多个回答相互竞争,基于一个全局的、稀疏的奖励(比如只有一个回答被选中)来更新策略,更适合长文本、多回合的复杂对齐任务。

二、 详解其原理

1. PPO (Proximal Policy Optimization)

目标: 在不知道真实奖励函数的情况下,通过一个代理奖励模型 (Reward Model) 来优化策略(模型本身)。

流程(以微调LLM为例)

  1. 准备奖励模型 (RM): 首先需要训练一个独立的奖励模型。这个RM通过人类对回答的偏好(如 A > B)数据训练而成,学会给好的回答打高分,坏的回答打低分。
  2. 微调过程
    • 采样 (Sampling): 让当前需要微调的模型(策略模型)针对同一个提示 (Prompt) 生成多个回答。
    • 评分 (Scoring): 用训练好的奖励模型 (RM) 为每一个生成的回答计算一个奖励分数 (Reward)。
    • 优化 (Optimization): 模型的目标是最大化这个奖励的期望。关键约束是 「近端」:在更新参数时,要确保新的策略(模型)不会与旧的策略偏离太远,以防止训练崩溃(生成乱码)。这是PPO稳定性的核心。

优点: 非常通用和强大,是强化学习领域的标杆算法。
缺点

  • 流程复杂: 需要额外训练一个高精度的奖励模型 (RM),成本高。
  • 稳定性挑战: 虽然叫“近端”优化,但训练过程中仍需精心调参来保持稳定。
  • 奖励黑客 (Reward Hacking): 模型可能会学会生成迎合奖励模型但不合人类直觉的回答(例如,包含某些高分关键词但内容空洞)。
初始语言模型
训练奖励模型 RM
通过人类偏好数据
使用RM为模型生成的回答评分
近端策略优化PPO
最大化奖励并防止策略偏离
对齐后的模型

2. DPO (Direct Preference Optimization)

目标: 省去训练奖励模型 (RM) 的步骤,直接从人类偏好数据中优化模型。

核心洞察: 作者发现,在一定的约束条件下,最优策略(我们想要的对齐后的模型)和最优奖励函数之间存在着解析解关系。这意味着我们可以绕过奖励建模,直接通过数学变换将偏好数据嵌入到损失函数中。

流程

  1. 准备数据: 只需要成对的偏好数据 (x, y_w, y_l),其中对于提示 xy_w 是人类偏好的回答(winner),y_l 是被拒绝的回答(loser)。不需要奖励分数
  2. 优化损失函数: 使用一个非常巧妙的损失函数,其核心是 Bradley-Terry 模型
    L_DPO = -E[(x, y_w, y_l)] [ log σ( β * log(π_θ(y_w|x) / π_ref(y_w|x)) - β * log(π_θ(y_l|x) / π_ref(y_l|x)) ) ]
    • π_ref: 是初始的参考模型(SFT模型),在训练中固定不变。
    • π_θ: 是当前正在被优化的模型。
    • β: 是一个温度参数,控制模型偏离参考模型的程度。

直观理解: 这个损失函数是在最大化模型赋予“好回答” y_w 的概率与“坏回答” y_l 的概率之间的差距。模型通过不断拉大这个差距来学习人类的偏好。

优点

  • 极其简单: 无需训练奖励模型,直接端到端微调,大大简化了训练流程。
  • 非常稳定: 由于损失函数直接依赖于参考模型,训练过程比PPO稳定得多,不易崩溃。
  • 效果卓越: 在许多基准测试上,效果达到甚至超过了PPO。

缺点

  • 严重依赖于高质量的偏好数据。数据中的噪声会对训练产生较大影响。

在这里插入图片描述

3. GRPO (Global Reward Optimization)

目标: 解决在长文本、多回合对话等复杂任务中,奖励稀疏化和全局一致性的问题。

核心思想: 在复杂任务中,一个回答的“好”不是由局部决定的,而是需要全局考量。GRPO将对话或长文本生成视为一个竞赛环境

流程

  1. 采样: 对于同一个提示 x,让当前模型生成 K 个 完整的回答(例如 K=4)。这 K 个回答构成一个“竞赛组”。
  2. 评判: 由一个评判者 (Judge) 从这 K 个回答中选出一个唯一的优胜者 (Top-1)。这个评判者可以是人类标注员,也可以是一个强大的AI裁判(如GPT-4)。注意,这里只产生一个全局的、稀疏的奖励信号( winner = 1, losers = 0),而不是给每个回答打分。
  3. 优化: 使用一种称为 「分组策略梯度 (Group-wise Policy Gradient)」 的算法。只有获胜的回答会获得正反馈,模型会学习增加生成该回答的概率;而失败的回答获得负反馈,模型会降低生成它们的概率。同样,它也有约束来防止策略偏离太远。

为什么适合长文本? 因为它评判的是整个回答的全局质量,而不是一句话中的一个词或一个片段。这避免了在长文本生成中频繁进行不连贯的局部优化。

优点

  • 解决稀疏奖励: 特别适用于奖励信号稀疏的复杂任务(写小说、长对话)。
  • 全局一致性: 鼓励模型生成整体上更一致、更优秀的回答。
  • 高效: 相比需要为每个片段打分的某些方法,GRPO的评判成本相对较低(只需选最优)。

缺点

  • 需要能够进行可靠全局评判的“裁判”(人类或超强AI),成本可能较高。
  • 目前还比较新,实践和验证相对PPO/DPO较少。

在这里插入图片描述


三、 对比与总结

特性PPODPOGRPO
核心思想通过奖励模型代理优化直接从偏好数据中优化全局竞赛中优化
所需数据需要奖励模型(或人类评分)成对偏好数据 (winner, loser)成组回答及其全局排名/选择
训练复杂度(需先训RM,再PPO微调)(直接端到端训练)(需采样组并进行全局评判)
稳定性较低,需精心调参,得益于显式约束中等,依赖于评判质量
奖励信号稠密(每个回答都有分数)隐含在损失函数中稀疏(仅全局Top-1获胜)
适用场景通用,但更成熟通用,尤其适合迭代式偏好学习长文本、多回合复杂任务
比喻比武招亲父母撮合非诚勿扰

演进关系

可以看作是一个不断简化和专业化的过程:

  1. PPO 是奠基性的工作,证明了RLHF(基于人类反馈的强化学习)的可行性,但流程复杂。
  2. DPO 是革命性的突破,它发现了PPO目标的数学本质,省去了复杂的奖励建模步骤,极大地降低了偏好对齐的门槛,成为当前的主流方法。
  3. GRPO 是针对PPO/DPO在长上下文、稀疏奖励场景下的不足提出的专业化解决方案。它不是为了替代DPO,而是为了处理DPO可能不擅长的特定任务。

如何选择?

  • 对于大多数通用对话指令跟随任务,DPO 是目前的最佳选择,因为它简单、稳定、高效。
  • 如果你需要处理长文写作、多轮对话对齐等任务,并且有强大的评判能力,可以探索 GRPO
  • PPO 仍然非常强大和通用,在许多工业级应用中,由于其成熟度,依然被广泛使用。
http://www.xdnf.cn/news/19492.html

相关文章:

  • Python实现BP神经网络
  • 利用美团longcat.ai编写的C语言支持指定压缩算法通用ZIP压缩程序
  • 硬件工程师成长之路:从入门到精通的技术旅程
  • 科学研究系统性思维的方法体系:研究设计相关模版
  • go 开发环境配置 air + dlv debug 踩坑之旅
  • Linux shell 脚本基础 003
  • C6.7:输入电阻的负载效应及其CE负反馈放大器
  • android-studio 安装
  • Mysql中事务隔离级别有哪些?
  • Java实习:MySQL篇(黑马JavaWeb课程)
  • 简单的加密算法
  • PostgreSQL表膨胀的危害与解决方案
  • 人工神经网络(ANN)深度学习
  • 开源 C++ QT Widget 开发(九)图表--仪表盘
  • dayjs ​JavaScript 时间日期处理库
  • P2P技术应用:去中心化
  • Java全栈开发面试实战:从基础到微服务的全面解析
  • NAS Docker 安装N8N
  • 鸿蒙ArkTS 核心篇-18-@Builder 自定义构建函数
  • 上海交大具身导航中的感知智能、社会智能和运动智能全面综述
  • 数值分析——非线性方程与方程组的数值解法之二分法
  • APB协议​​ 构建一个完整的 ​​UVM验证VIP Agent介绍类的要素
  • 壁纸、logo、短视频去水印
  • 前端常见安全问题 + 防御方法 + 面试回答
  • Qt QML连接数据库如何解决重复创建连接问题
  • 大话 IOT 技术(3) -- MQTT篇
  • Qt中使用 GStreamer 播放视频文件
  • HikariCP vs DBCP2 vs Tomcat JDBC:多场景数据库连接池方案对比与实践指南
  • 局域网中使用Nginx部署https前端和后端
  • Qt中解析XML文件