1. 背景

在大模型对齐(alignment)里,常见的两类方法是:

  • PPO:强化学习经典算法,OpenAI 在 RLHF 里用它来“用奖励模型更新策略”。

  • DPO:2023 年提出的新方法(参考论文《Direct Preference Optimization: Your Language Model is Secretly a Reward Model》),绕过了奖励模型,直接用偏好对 (chosen/rejected) 来优化。


2. PPO(Proximal Policy Optimization)

2.1 核心思想

  • 来自强化学习领域,是一种 on-policy 策略梯度方法

  • 用奖励模型(Reward Model)给生成的文本打分。

  • 目标是最大化期望奖励,同时用 KL 惩罚 约束策略不要偏离初始模型太远。

2.2 损失函数(简化)

LPPO(θ)=Et[min⁡(rt(θ)A^t,  clip(rt(θ),1−ϵ,1+ϵ)A^t)]L^{PPO}(\theta) = \mathbb{E}_t \Big[ \min( r_t(\theta) \hat{A}_t, \; \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)\hat{A}_t ) \Big]

其中:

  • rt(θ)=πθ(at∣st)πθold(at∣st)r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_\text{old}}(a_t|s_t)}(策略比值)

  • A^t\hat{A}_t:优势函数(由奖励模型给出)

  • clip:限制更新幅度,避免策略崩溃。

2.3 特点

  • 优点:稳定性较好;能处理连续更新。

  • 缺点:需要训练一个独立的奖励模型,流程复杂;计算成本大。


3. DPO(Direct Preference Optimization)

3.1 核心思想

  • 用人类/自我博弈生成的偏好对:

    • chosen = 更好的回答

    • rejected = 更差的回答

  • 不需要显式训练奖励模型,而是把“奖励隐含在概率分布里”。

  • 直接优化策略模型,使得它更偏向 chosen

3.2 损失函数(简化)

LDPO(θ)=−E(x,y+,y−)[log⁡σ(β⋅(log⁡πθ(y+∣x)−log⁡πθ(y−∣x)−log⁡πref(y+∣x)+log⁡πref(y−∣x)))]L^{DPO}(\theta) = - \mathbb{E}_{(x, y^+, y^-)} \Big[ \log \sigma\big(\beta \cdot (\log \pi_\theta(y^+|x) - \log \pi_\theta(y^-|x) - \log \pi_{\text{ref}}(y^+|x) + \log \pi_{\text{ref}}(y^-|x)) \big) \Big]

其中:

  • y+y^+:chosen

  • y−y^-:rejected

  • πref\pi_{\text{ref}}:参考模型(通常是初始 SFT 模型)

  • β\beta:温度参数,调节强度

  • 本质上是一个 对比学习(contrastive learning) 的形式。

3.3 特点

  • 优点

    • 不需要奖励模型,流程更简单。

    • 样本利用率高,对训练稳定。

  • 缺点

    • 需要偏好对 (chosen/rejected),不能直接用单个答案 + 分数。

    • 不适合在线优化,更适合离线批量训练。


4. 对比总结

特点PPODPO
提出时间2017(RL 算法)→ RLHF2023(斯坦福团队)
是否需要奖励模型✅ 需要❌ 不需要
输入形式答案 + 奖励分数偏好对 (chosen, rejected)
优化方式强化学习(on-policy)直接偏好对比(对比学习)
训练稳定性相对复杂,易发散更稳定,收敛快
适合场景在线训练,奖励函数明确(数学/代码/对话安全性)离线批量微调,数据是偏好对(人类标注/自我博弈)
代表案例OpenAI GPT-4 RLHFDeepSeek R1(自博弈 + DPO)

5. 与 RLHF、自我博弈的关系

  • RLHF + PPO = 经典路线(GPT-4、Claude):人类标注 → 奖励模型 → PPO 优化。

  • 自我博弈 + DPO = 新兴路线(DeepSeek R1):模型自己对弈 → 偏好对 → DPO 微调。

  • 混合范式

    • 有人类数据时用 PPO 强化价值观对齐;

    • 有大规模自生成数据时用 DPO 提升推理/逻辑能力。


6. 一句话理解

  • PPO:模型像在健身,奖励模型是教练,不断纠正姿势。

  • DPO:模型像在辩论,直接看“好答案 vs 坏答案”,学会站在胜方。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/96582.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96582.shtml
英文地址,请注明出处:http://en.pswp.cn/web/96582.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BLE6.0信道探测,如何重构物联网设备的距离感知逻辑?

在物联网(IoT)无线通信技术快速渗透的当下,实现人与物、物与物之间对物理距离的感知响应能力已成为提升设备智能高度与人们交互体验的关键所在。当智能冰箱感知用户靠近而主动亮屏显示内部果蔬时、当门禁系统感知到授权人士靠近而主动开门时、…

【计算机 UTF-8 转换为本地编码的含义】

UTF-8 转换为本地编码的含义 详细解释一下"UTF-8转换为本地编码"的含义以及为什么在处理中文时这很重要。 基本概念 UTF-8 编码 国际标准:UTF-8 是一种能够表示世界上几乎所有字符的 Unicode 编码方式跨平台兼容:无论在哪里,UTF-8 …

4.6 变体

1.变体简介 2.为什么需要变体 3.变体是如何产生的 4.变体带来的麻烦 5.multi_compile和shader_feature1.变体简介 比如我们开了一家餐厅, 你有一本万能的菜单(Shader源代码), 上面包含了所有可能的菜式; 但是顾客每次来点餐时, 不可能将整本菜单都做一遍, 他们会根据今天有没有…

猿辅导Android开发面试题及参考答案(下)

为什么开发中要使用线程池,而不是直接创建线程(如控制线程数量、复用线程、降低开销)? 开发中优先使用线程池而非直接创建线程,核心原因是线程池能优化线程管理、降低资源消耗、提高系统稳定性,而直接创建线程存在难以解决的缺陷,具体如下: 控制线程数量,避免资源耗尽…

【网络通信】IP 地址深度解析:从技术原理到企业级应用​

IP 地址深度解析:从技术原理到企业级应用​ 文章目录IP 地址深度解析:从技术原理到企业级应用​前言一、基础认知:IP 地址的技术定位与核心特性​1.1 定义与网络层角色1.2 核心属性与表示法深化二、地址分类:从类别划分到无类别路…

grafana实践

一、如何找到grafana的插件目录 whereis grafana grafana: /etc/grafana /usr/share/grafana插件安装目录、默认安装目录: 把vertamedia-clickhouse-datasource-3.4.4.zip解压到下面目录,然后重启就可以了 /var/lib/grafana/plugins# 6. 设置权限 sudo …

uniapp 文件查找失败:main.js

重装HbuilderX vue.config.js 的 配置 有问题main.js 框架能自动识别 到,不用多余的配置

KEIL烧录时提示“SWD/JTAG communication failure”的解决方法

最新在使用JTAG仿真器串口下载调试程序时,老是下载不成功,识别不到芯片,我尝试重启keil5或者重新插拔仿真器连接线、甚至重启电脑也都不行,每次下载程序都提示如下信息:在确定硬件连接没有问题之后,就开始分…

红日靶场(三)——个人笔记

环境搭建 添加一张网卡(仅主机模式),192.168.93.0/24 网段 开启centos,第一次运行,重启网络服务 service network restart192.168.43.57/24(外网ip) 192.168.93.100/24(内网ip&am…

车载网关框架 --- 车内网关IP转CAN链路解析 done

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

lvgl修改输入设备驱动使其支持鼠标右键、双击、滑轮...

我在前几章移植 lvgl 到linux上时讲过注册鼠标驱动部分,那时候使用的时默认提供的驱动,支持的鼠标功能很少,只有左键点击,那时候我提过我们可以修改驱动使其支持,下面是具体的实现。看上面代码,我们当时是直…

SpringBoot 中单独一个类中运行main方法报错:找不到或无法加载主类

1. 报错SpringBoot项目,在随机某个类使用main方法,点击运行/调试报错错误: 找不到或无法加载主类 com.central.workorder.config.PropertyEncrypt 原因: java.lang.ClassNotFoundException: com.central.workorder.config.PropertyEncrypt2. 原因缩短命令…

React 核心 Hook 与冷门技巧:useReducer、useEffect、useRef 及 is 属性全解析

📚 前言React 的函数组件 Hooks 模式已经成为现代前端开发的主流。相比类组件,Hooks 让状态管理和副作用处理更加简洁和可复用。但在实际开发中,除了常用的 useState 和 useEffect,还有很多“进阶武器”值得我们掌握。本文将深入…

通义灵码产品演示: 数据库设计与数据分析

作者:了哥 演示主题:AI 进行数据库设计以及做数据分析 演示目的 演示通义灵码对于数据库的设计能力以及数据分析能力。 演示准备 准备数据库,这里为了简单实用 sqlite3 brew install sqlite3使用 vscode,同时安装好通义灵码的插件…

MySQL主从同步参数调优案例

#作者:stackofumbrella 文章目录一、前言二、故障概述2.1 基础信息2.2 故障现象描述三、故障诊断分析3.1 排查过程3.2 问题根因四、故障解决方案 📊4.1 解决方案 🛠️五、总结附件一、前言 在磐基系统中大量使用MySQL作为后端的数据存储&…

【代码随想录算法训练营——Day10】栈与队列——232.用栈实现队列、225.用队列实现栈、20.有效的括号、1047.删除字符串中的所有相邻重复项

LeetCode题目链接 https://leetcode.cn/problems/implement-queue-using-stacks/ https://leetcode.cn/problems/implement-stack-using-queues/description/ https://leetcode.cn/problems/valid-parentheses/description/ https://leetcode.cn/problems/remove-all-adjacent-…

Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL

在 .NET 或 .NET Core 应用中,若需在不依赖 Windows 服务、独立进程的前提下实现后台处理,Hangfire 是最成熟、简单的方案之一 —— 它可直接嵌入现有应用(如 ASP.NET Core Web 应用),无需额外部署,同时提供…

网站漏洞扫描要怎么处理?

在网络安全领域,网站漏洞是黑客攻击的重要突破口,而网站漏洞扫描能及时发现这些隐患。但很多小白在完成漏洞扫描后,不清楚后续该如何处理,导致漏洞一直存在,给网站安全埋下风险。下面从准备工作、处理步骤、验证维护等…

淘宝RecGPT:通过LLM增强推荐

导论背景 (Background)​​推荐系统的核心挑战​​:怎么 准确推断 用户行为背后快速变化的真实意图,以实现用户、商户和平台的三赢。​​现有方法的局限性​​:传统的基于历史日志共现模式(“从点击学习点击”)的模型&…

【Go系统编程】07 网络化IPC:Go的王牌——Socket编程

大家好,我是Tony Bai。欢迎来到我们《Go 系统编程》专栏的最后一讲。在过去的旅程中,我们探索了管道、消息队列、共享内存等一系列强大的 IPC 机制。它们各有所长,但都有一个共同的、致命的局限性:它们都只能在同一台物理机上工作…