强化学习的优化策略PPO和DPO

DPO

DPO(直接偏好优化)简化了RLHF流程。它的工作原理是创建人类偏好对的数据集,每个偏好对都包含一个提示和两种可能的完成方式——一种是首选,一种是不受欢迎。然后对LLM进行微调,以最大限度地提高生成首选完成的可能性,并最大限度地减少生成不受欢迎的完成的可能性。与传统的微调方法相比,DPO 绕过了建模奖励函数这一步,设计一种包含正负样本对比的损失函数,通过直接在偏好数据上优化模型来提高性能。(即不训练奖励模型,语言模型直接做偏好优化)

工作原理:DPO在多个计算节点上并行运行,每个节点都有自己的一份策略副本,并在各自的环境实例中收集数据。在一定时间步或者周期之后,各个节点会将它们收集到的数据(如梯度信息或者策略更新)发送给中心节点。中心节点会聚合这些数据,并进行策略更新。更新后的策略参数随后会被分发回各个计算节点。由于每个节点可以独立探索不同的状态空间区域,DPO能够更加高效地进行探索和利用,从而加快学习过程。 

PPO(不是很懂,copy来的)

PPO的想法是,通过限制在每个训练阶段对策略所做的更改来提高策略的训练稳定性:我们希望避免过大的策略(参数)更新。我们从经验上知道,训练期间较小的策略更新更有可能收敛到最优解。策略更新步幅太大可能导致“坠崖”(获得糟糕的策略),并且需要很长时间甚至不可能恢复。

因此,使用PPO,我们要保守地更新策略。为此,我们需要通过计算当前策略与前一个策略之间的比率来衡量当前策略与前一个策略相比发生了多大的变化。我们将此比率限制在 [1−ϵ,1+ϵ] 的范围内,这意味着我们消除了当前策略偏离旧策略太远的动机(因此称为近端策略术语)。

加载4个模型,2个推理,2个训练

  • Actor Model:演员模型,想要训练的目标语言模型
  • Critic Model:评论家模型,它的作用是预估总收益
  • Reward Model:奖励模型,它的作用是计算即时收益
  • Reference Model:参考模型,它的作用是在RLHF阶段给语言模型增加一些“约束”,防止语言模型训歪(朝不受控制的方向更新,效果可能越来越差)

其中

  • Actor/Critic Model在RLHF阶段是需要训练的;而Reward/Reference Model是参数冻结的。
  • Critic/Reward/Reference Model共同组成了一个“奖励-loss”计算体系,我们综合它们的结果计算loss,用于更新Actor和Critic Model

PPO和DPO的不同

分布式训练:DPO的“Distributed”指的是它被设计为在分布式计算环境中运行,可以在多个处理器或机器上并行执行,而PPO通常指单机版本的算法。
扩展性和并行化:由于DPO是为分布式环境设计的,它在处理大规模并行化训练任务时具有更好的扩展性,而PPO则在这方面可能受到限制。
通信和同步:在分布式设置中,DPO需要有效的通信和同步机制来保证多个训练节点之间的协调,这是PPO在单机设置中不需要考虑的问题。

理解RLHF(奖励模型+PPO)

  1. 预训练的基础LLM
  2. 监督微调(SFT)LLM
  3. 奖励模型(LLM,但修改为奖励模型)
  4. PPO优化的语言模型(最终与偏好对齐的LLM)

这里奖励模型只是复制了SFT模型,并对其进行修改,删除最终层的非嵌入层(最终层的非嵌入层将文本的内部表示转换为可读的文本输出),并添加一个标量奖励头。该模型接收一个提示并输出一个标量奖励。该层不输出文本,而是输出一个标量值,即表示给定输入的“奖励”或“分数”的单个数字。(然后把这个分数融入到LLM的loss中?)

近端策略优化(PPO)模型也是SFT模型的副本,其中的参数将被更新以与人类偏好对齐。PPO优化“策略”,在这个上下文中指的是根据人类价值观生成文本响应的策略。PPO训练的目标是最大化从奖励模型获得的奖励。(即生成文本的风格能在奖励模型中获得最大奖励,即能够符合人类偏好)

DPO取代奖励模型+PPO

DPO通过完全移除奖励模型来简化这个过程。

  1. 预训练的基础LLM
  2. 监督微调(SFT)LLM
  3. DPO优化的语言模型(最终与偏好对齐的LLM)

参考:强化学习的优化策略PPO和DPO详解并分析异同_dpo ppo-CSDN博客

使用DPO将LLM与人类偏好对齐_llm dpo-CSDN博客 

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

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

相关文章

数字水印 | 奇异值分解 SVD 的定义、原理及性质

目录 1 为什么使用 SVD?2 SVD 的定义是什么?2.1 特征值分解2.2 奇异值分解 3 如何求解奇异值 SV?3.1 求解过程3.2 证明过程 4 什么是 SVD 的性质? 参考博客: Python 机器学习笔记:奇异值分解&…

读人工智能时代与人类未来笔记04_理性时代

1. 理性时代 1.1. 康德在《永久和平论》一文中带着些许的怀疑主义提出,和平可以通过应用达成一致的规则管理独立国家之间的关系来实现 1.2. 理性则借助高等理论物理学的形式,开始进一步探索康德的“自在之物”,并产生…

为什么买的蓝牙串口模块不能实现蓝牙键盘给手机文本框或记事本打字或控制手机?

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言1、原因2、蓝牙键盘制作流程 前言 送给大学毕业后找不到奋斗方向的你(每周不定时更新) 【…

海狐外卖多商户O2O商城系统前端技术实现与探索

摘要: 随着外卖市场的快速发展,多商户O2O商城系统成为餐饮行业数字化转型的重要工具。本文基于海狐外卖多商户O2O商城系统的前端技术实现,探讨了前端技术在高并发、多端适配、自定义装修等方面的应用与挑战,并分享了系统前端架构…

5万字带你一文看懂自动驾驶之高精度地图前世今生

在讲解高精度地图之前,我们先把定位这个事情弄清楚,想明白,后面的事情就会清晰很多,自古哲学里面讨论的人生终极问题,无非就三个,我是谁,我从哪里来,我要去哪里,这里的位…

工作高效记事软件是什么 好用的高效记事软件

阳光斜洒在办公桌上,我埋头于一堆杂乱的文件中,头脑里充斥着各种待办事项。电话铃声突然响起,是老板打来的,提醒我下午三点有个重要会议。挂断电话后,我赶紧拿起笔想在便签上记下,却发现桌面已经被各种便签…

QT多线程的使用

目录 一.介绍 二.第一种多线程方式 1.创建一个线程子类,继承QT中的QThread 2.重新父类的run( )方法 3.在线程中创建子线程对象 4.run( )方法 5.启动子线程 三.第二种多线程方式 1.创建一个新类(这个类是QObject的派生) 2.在这个类中…

[数据集][目标检测]肺结节检测数据集VOC+YOLO格式1186张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1186 标注数量(xml文件个数):1186 标注数量(txt文件个数):1186 标注…

贷款借钱平台 贷款源码 小额贷款系统 卡卡贷源码 小额贷款源码 贷款平台

贷款平台源码/卡卡贷源码/小贷源码/完美版 , 数据库替换application/database.php 源码下载:https://download.csdn.net/download/m0_66047725/89268533 更多资源下载:关注我。

绝地求生:29.2商城更新内容预览:挣脱尘网通行证,经典皮肤返场,空投活动

就在今天历经9小时维护,29.2版本终于上线,柠檬茶带大家一起看看,这次游戏里都更新了哪些内容吧。 挣脱尘网通行证 豪华版:$14.99 普通版:$4.99 豪华版比普通版多10级升级券和2套生存者宝箱 分支一 分支二 分支三 额外…

PostMan 测试

创建一个集合管理测试接口 token获取 Tests:后置脚本 Api 请求后的操作,一般写断言脚本的地方 Pre-request Script :后置脚本 请求前的操作 以下代码放进Tests 后置脚本当中。 var respObj JSON.parse(responseBody); // 获取到TOK…

自定义类似vite的命令行

一、第一步 随便新建一个文件夹,终端执行npm init,生成如图的结构 其中name就是命令行的名字 二、第二步 新建一个js文件,在其顶部加入这串代码#!/usr/bin/env node,#!就是告诉系统这个是可执行脚本,/usr/bin/env就是系统环境变量&#x…