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

大模型强化学习中的 PPO、DPO、KTO、ORPO 全解析

大模型强化学习中的 PPO、DPO、KTO、ORPO 全解析

本文聚焦大语言模型(LLM)微调阶段中的强化学习方法,全面介绍四大主流算法:PPO(Proximal Policy Optimization)、DPO(Direct Preference Optimization)、KTO(Kullback-Leibler Preference Optimization)、ORPO(Offline RL with Preference Optimization)。通过原理、训练样例、公式与代码解析,帮助你理解它们在 RLHF(基于人类反馈的强化学习)中的定位与区别。


✨ 目录

  1. PPO:传统但强大的策略优化方法
  2. DPO:去奖励建模的偏好优化算法
  3. KTO:KL 指导的直接偏好优化
  4. ORPO:离线偏好监督强化学习
  5. 总结对比

1️⃣ PPO:Proximal Policy Optimization

✅ 原理

PPO 是强化学习中最常见的策略优化算法之一,适用于 RLHF 的最后一阶段。它通过约束新旧策略之间的距离,避免模型剧烈更新。

在 LLM 中,PPO 通常如下流程:

  • 提供一个问题 prompt
  • 当前策略生成多个候选回复
  • 使用奖励模型(Reward Model)打分
  • 将得分用于更新策略

✅ 样例数据

{"prompt": "Explain quantum computing in simple terms","completion": "Quantum computing uses qubits instead of bits...","reward": 6.2
}

✅ 公式

目标函数(clipped)如下:

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

其中:

  • r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) r_t(\theta) = \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{old}}(a_t | s_t)} rt(θ)=πθold(atst)πθ(atst)
  • A ^ t \hat{A}_t A^t 是 advantage(优势函数)

✅ 简单实现(使用 trl 库)

from trl import PPOTrainer
trainer = PPOTrainer(model, ref_model, tokenizer, args)
trainer.step(prompt_tensors, response_tensors, rewards)

2️⃣ DPO:Direct Preference Optimization

✅ 原理

DPO 不再训练奖励模型,而是直接使用人类偏好进行优化。输入为两条回复(chosen 和 rejected),目标是让模型直接学会偏好。

优势:

  • 无需训练额外 reward model
  • 与 SFT 类似的训练范式,稳定易实现

✅ 样例数据

{"prompt": "What is the capital of France?","chosen": "The capital of France is Paris.","rejected": "France's capital city is Germany."
}

✅ 公式

优化目标为最大化以下似然差异:

L DPO = log ⁡ exp ⁡ ( β f θ ( x , y + ) ) exp ⁡ ( β f θ ( x , y + ) ) + exp ⁡ ( β f θ ( x , y − ) ) \mathcal{L}_{\text{DPO}} = \log \frac{\exp(\beta f_\theta(x, y^{+}))}{\exp(\beta f_\theta(x, y^{+})) + \exp(\beta f_\theta(x, y^{-}))} LDPO=logexp(βfθ(x,y+))+exp(βfθ(x,y))exp(βfθ(x,y+))

其中:

  • f θ ( x , y ) f_\theta(x, y) fθ(x,y) 是模型输出对输入 x x x 生成 y y y 的打分(logit)
  • β \beta β 控制偏好强度

✅ 简单实现(trl)

from trl import DPOTrainer
trainer = DPOTrainer(model, args)
trainer.train(preference_dataset)

3️⃣ KTO:KL-guided Preference Optimization

✅ 原理

KTO 是 DPO 的改进版,引入了 KL 正则项,鼓励新模型不要偏离参考模型太远。

适用于奖励来源不稳定或参考模型非常可靠的场景。

✅ 样例数据

与 DPO 相同(prompt + chosen + rejected)

✅ 公式

KTO 的损失函数如下:

L K T O = L DPO + λ ⋅ K L ( π θ ∥ π ref ) \mathcal{L}_{KTO} = \mathcal{L}_{\text{DPO}} + \lambda \cdot KL(\pi_{\theta} \| \pi_{\text{ref}}) LKTO=LDPO+λKL(πθπref)

✅ 实现(类 DPO,可加 KL loss)

loss = dpo_loss + lambda_ * kl_divergence(new_logits, ref_logits)

4️⃣ ORPO:Offline RL with Preference Optimization

✅ 原理

ORPO 是 OpenChat 提出的 RLHF 替代方案。目标是用 offline dataset(已存在的人类偏好数据)一次性训练,无需在线 rollout。

核心思想:将奖励模型的偏好信息嵌入损失函数中,像 SFT 一样训练。

✅ 样例数据

{"prompt": "Define inflation.","response": "Inflation is the rate at which prices increase...","score": 0.85
}

✅ 公式

ORPO 的损失包含两个部分:

L ORPO = L MLE − λ ⋅ R ( y ) \mathcal{L}_{\text{ORPO}} = \mathcal{L}_{\text{MLE}} - \lambda \cdot R(y) LORPO=LMLEλR(y)

  • L MLE \mathcal{L}_{\text{MLE}} LMLE 是传统的最大似然损失
  • R ( y ) R(y) R(y) 是偏好得分(或奖励)

✅ 简单实现

loss = cross_entropy_loss - lambda_ * reward_score

✅ 总结对比

方法训练阶段是否需奖励模型是否用偏好数据在线策略优化适用场景
PPORLHF 后期✅ 是✅ 间接✅ 是高控制力
DPO替代 RLHF❌ 否✅ 是❌ 否稳定、易部署
KTODPO 增强❌ 否✅ 是❌ 否偏差控制好
ORPO替代 RLHF✅ 是✅ 是❌ 否离线数据训练

相关文章:

  • 【Linux】(1)—进程概念-③Linux进程概念与PCB
  • 2025推客系统小程序开发:独立部署源码交付,高性价比裂变增长引擎
  • 什么是系统调用
  • iVX 如何用 VL 中间语言构建程范式闭环?
  • 【速通RAG实战:进阶】16、AI生成思维导图全技术解析
  • 视频监控管理平台EasyCVR安防监控小知识:视频监控AI智能分析的常见部署方式有哪些?
  • RISC-V PMA、PMP机制深入分析
  • 基于qt5和stk10开发的互联调试
  • leetcode235.二叉搜索树的最近公共祖先:迭代法利用有序性高效寻根
  • 责任链模式:构建灵活可扩展的请求处理体系(Java 实现详解)
  • 数据结构 - 树相关计算题
  • Java中float和double的区别与用法解析
  • 通义灵码2.5——基于MCP实现我的12306火车票智能查询小助手
  • Selenium 测试框架 - Kotlin
  • RFID综合项目实训 | 基于C#的一卡通管理系统
  • 开疆智能Profinet转Profibus网关连接EC-CM-P1 PROFIBUS DP从站通讯模块配置案例
  • 计算机操作系统(十四)互斥锁,信号量机制与整型信号量
  • DTO、VO、DO、BO、PO 的概念与核心区别
  • 算法题(158):牛栏预定
  • 64、【OS】【Nuttx】任务休眠与唤醒:clock_nanosleep
  • 如何更新网站快照/重要新闻
  • 哪里建网站好/百度seo关键词优化费用
  • 小程序模板源下载/宁波seo推广平台
  • wordpress 短代码失效/seo关键词排名技术
  • 苏宁易购网站建设目标/磁力搜索引擎不死鸟
  • 动态网站建设与维护/seo技术外包