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

【多模态】46、通俗理解 RLHF/PPO/DPO/GRPO

大模型训练大体可以分为3种模式:

  • 预训练(Pretraining)
  • 有监督精调(Supervised Fine-Tuning, SFT)
  • 基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)。

其中,SFT让模型通过学习训练数据数据分布的方式来提高模型在特定任务或指令上的表现,与其不同的是,RLHF使用人类反馈来定义奖励函数,然后通过强化学习算法优化模型。让模型能生成符合人类喜好的回复。

主流的RLHF算法有PPO(Proximal Policy Optimization)、DPO(Direct Preference Optimization)、GRPO等。

一、通俗理解

1. RLHF(基于人类反馈的强化学习)

  • 是什么:像教小孩一样教AI。比如训练ChatGPT时,人类会判断哪些回答好、哪些不好,AI通过这种反馈学习。
  • 三步教学法
    1. 预训练:AI先读大量书,学会基础说话能力。
    2. 奖励模型:人类对多个回答排序(比如A > B > C),AI学会判断好坏的标准。
    3. 强化学习:AI不断调整自己,目标是让奖励模型给它打高分。

2. PPO(近端策略优化)

  • 核心思想:AI改动作业答案时,每次只改一点点,避免改错太多。
    • 比如学走路:
      • 传统方法:迈一大步可能摔倒
      • PPO:每次只调整一点步伐,保证安全
  • 数学小贴士:用了一个“剪切函数”限制变化幅度:
    L C L I P = E [ min ⁡ ( π 新 π 旧 A , clip ( π 新 π 旧 , 1 − ϵ , 1 + ϵ ) A ) ] L^{CLIP} = \mathbb{E} \left[ \min\left( \frac{\pi_{\text{新}}}{\pi_{\text{旧}}}A, \text{clip}\left(\frac{\pi_{\text{新}}}{\pi_{\text{旧}}}, 1-\epsilon, 1+\epsilon\right)A \right) \right] LCLIP=E[min(ππA,clip(ππ,1ϵ,1+ϵ)A)]

3. DPO(直接偏好优化)

  • 解决的问题:传统RLHF需要先训练奖励模型,再训练策略,太麻烦。
  • 创新点:直接用人给的偏好数据训练,省去中间步骤。
    • 就像学做菜:
      • RLHF:先学打分(这道菜80分),再根据分数改进
      • DPO:直接记住“宫保鸡丁比鱼香肉丝更受欢迎”
  • 优点:训练更快,资源消耗更少。

4. GRPO(Group Relative Policy Optimization)

  • 核心创新:把样本分组比较,而不是单个比较。
    • 比如选班干部:
      • 传统方法:给每个候选人打分
      • GRPO:把候选人分成几组(学霸组/体育组/文艺组),在组内比较
  • 优势
    • 减少个别极端样本的影响
    • 更适合处理复杂多样的数据
    • 数学上通过分组约束策略更新幅度,类似PPO但更稳定

生活化比喻总结

  • RLHF:老师批改作文 → 学生根据评语改进
  • PPO:戴着护膝学轮滑,防止摔太重
  • DPO:直接记住妈妈说的“西兰花比炸鸡健康”
  • GRPO:奥运会按游泳/田径/体操分组评选最佳运动员

二、概念性理解

1. RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)

  • 核心思想:RLHF 是一种通过人类反馈来优化智能体行为的强化学习方法。它通常用于训练模型生成符合人类期望的输出,例如在自然语言处理(NLP)中生成更符合人类偏好的文本。RLHF需要奖励模型的根本原因在于将复杂、多样和主观的人类反馈转化为强化学习算法可以直接优化使用的数值奖励信号。通过奖励模型,RLHF方法不仅能利用人类反馈,提升学习效率、确保奖励信号的一致性,还可以更好地处理多指标任务,实现自动化和可扩展的训练流程。
  • 工作流程
    1. 监督学习:使用人类标注的数据训练一个初始模型。
    2. 奖励模型训练:通过人类对模型输出的排序或评分,训练一个奖励模型(Reward Model)。
    3. 强化学习:使用奖励模型作为反馈信号,通过强化学习(如 PPO)优化模型。
  • 应用场景:OpenAI 的 ChatGPT、InstructGPT 等模型都使用了 RLHF 来对齐人类偏好。
  • 优点:能够生成更符合人类期望的输出。
  • 缺点:依赖高质量的人类反馈数据,训练成本较高。

奖励建模 Reward Modeling:

在RM架构中,使用基于Transformer的预训练语言模型,去掉最后unembedding层,并增加一个额外的线性层。

输入任意文本,奖励模型将最后一个token转换为标量奖励值:奖励值越大,代表样本越好。

训练奖励模型通常需要一个「针对相同输入生成的两个回复之间的成对比较」数据集。


2. PPO(Proximal Policy Optimization,近端策略优化)

  • 核心思想:PPO 是一种基于策略梯度的强化学习算法,旨在通过限制策略更新的步长来稳定训练过程。
  • 关键特点
    • 裁剪机制:通过裁剪策略更新的幅度,避免过大的更新导致训练不稳定。
    • 目标函数:使用 clipped surrogate objective 来平衡探索与利用。
  • 优点
    • 训练稳定,适用于多种任务。
    • 计算效率高,易于实现。
  • 缺点:在某些复杂任务中可能需要大量调参。
  • 应用场景:广泛应用于游戏 AI、机器人控制等领域。

3. DPO(Direct Preference Optimization,直接偏好优化)

  • 核心思想:DPO 是一种直接优化人类偏好的方法,旨在通过显式建模人类偏好来训练模型,而不需要显式的奖励模型。
  • 关键特点
    • 直接使用人类偏好数据(如成对比较)来优化模型。
    • 避免了 RLHF 中奖励模型的训练步骤,简化了流程。
  • 优点
    • 训练更简单,计算成本更低。
    • 能够直接对齐人类偏好。
  • 缺点:依赖高质量的人类偏好数据。
  • 应用场景:适用于需要对齐人类偏好的任务,如对话生成、内容推荐等。

4. GRPO(Group Relative Policy Optimization,群体相对策略优化)

  • 核心思想:GRPO 是一种通过群体内样本的相对比较来优化策略的方法,利用群体整体的表现差异指导模型学习,而非依赖单一样本或显式奖励模型。
  • 关键特点
    • 将样本划分为不同群体(例如分组的对话回复或决策序列),通过群体间的相对表现差异调整策略。
    • 无需显式设计奖励函数,而是通过群体内的排序或偏好数据间接反映目标。
  • 优点
    • 更高效地捕捉群体偏好,降低对单一高质量数据的依赖。
    • 训练过程相对稳定,适合复杂任务中的多目标优化。
    • 计算成本可能低于需要迭代训练奖励模型的方法(如 RLHF)。
  • 缺点
    • 群体划分需要合理设计,不当分组可能导致优化偏差。
    • 对群体数据的覆盖性和多样性要求较高。
  • 应用场景:适用于需要平衡群体偏好或协作决策的任务,例如多智能体交互、群体内容生成等场景。

通俗解释

GRPO(Group Relative Policy Optimization)是一种强化学习算法,专门用于优化大语言模型的推理能力。在GRPO中,"group"的作用是通过相对评估机制来提高模型的效率和性能。具体来说,GRPO不依赖外部评估器(critic)来指导学习,而是通过对比一组回答之间的相对优劣来优化模型。这种机制使得模型能够更直观地识别哪些回答更优,并通过组内竞争不断推动模型优化推理能力。

此外,GRPO通过组内比较取代了独立评估器,从而大幅降低了计算成本。结合剪枝和KL正则化,GRPO保证了模型在更新过程中不会出现剧烈波动,使得学习过程更加稳健和高效。这种方法不仅提升了训练效率,还通过组内竞争不断推动模型优化推理能力,进而赋能模型在复杂任务中取得卓越表现。

想象老师要评选班级最佳小组,但不是给每个小组打分,而是让小组之间互相比较,选出整体表现更好的那一组。GRPO 类似这种思路——通过比较不同“群体”(比如一组对话回复)的整体表现,让模型学习如何生成更受偏好的结果,而不是依赖复杂的评分规则呢。也像班级里不直接给分数,而是通过"你比80%同学表现好"这样的相对评价来激励学生。模型不需要精确计算绝对得分,只需要关注自己在群体中的相对位置就能进步哦~


对比总结

方法核心思想优点缺点应用场景
RLHF通过人类反馈优化模型对齐人类偏好依赖高质量数据,成本高对话生成、内容生成
PPO限制策略更新步长以稳定训练稳定、高效需要调参游戏 AI、机器人控制
DPO直接优化人类偏好简化流程,成本低依赖偏好数据对话生成、推荐系统
GRPO通过群体相对表现优化策略降低绝对奖励依赖,增强泛化性需要群体对比数据多智能体系统、复杂决策场景

这些方法各有优劣,选择哪种方法取决于具体任务的需求和资源限制。


http://www.kler.cn/a/560255.html

相关文章:

  • Linux-SaltStack配置
  • Plantsimulation中机器人怎么通过阻塞角度设置旋转135°
  • 基于Python和Neo4j开发的医疗辅助诊断系统的详细实现步骤和代码示例
  • 网页制作08-html,css,javascript初认识のhtml使用框架结构,请先建立站点!
  • RocketMq\Kafka如何保障消息不丢失?
  • 腾讯云大模型知识引擎×DeepSeek赋能文旅
  • ssh被暴力访问了,怎么拦截ip
  • matlab数学建模
  • 11_17日项目笔记——制作“全屏播放页面”
  • 数仓搭建实操(传统数仓oracle):[构建数仓层次|ODS贴源层]
  • 用HTML5+CSS+JavaScript实现新奇挂钟动画
  • JVM可用的垃圾回收器
  • LeetCode - 23 合并 K 个升序链表
  • 【拥抱AI】GPT Researcher 源码试跑成功的心得与总结
  • STM32-智能小车项目
  • mysql对中文列值进行排序
  • HOW - 个人创业(融资篇)
  • 【JavaScript】JavaScript 常见概念 - 变量与数据类型 - 运算符 - 条件语句 - 循环 - 函数 - 数组操作 - 对象
  • Rust学习~tokio简介
  • Java集合并发安全面试题