强化学习的优化策略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)

Reward model训练

大模型会对一个问题回答出的多个不同答案,我们首先需要对这些答案进行优先级标注排序(不是直接打分,因为绝对分数很难统一,我们能更容易的判断出哪个回答更好,使用相对替代绝对),然后根据这个排序结果训练奖励模型。这个模型的底座就是第一阶段训练出的SFT模型,只是把最后一层改为一个神经元即可,就是输出的分数,为一个回归模型,后续将用这个模型对每个回答进行打分评估。

奖励模型的核心是它的损失函数

其中c代表chosen,是排名较高的回答,r代表reject,是排名较低的回答。最终的目的就是使排名靠前的回答得分相应的变高。

比如Q:苹果是什么?

A1:苹果是一种红色水果,可以润肺、解暑、开胃。

A2:苹果的品种繁多,根据颜色、大小、口感和用途等不同特点,可以分为多个品种。有的苹果品种适合鲜食,口感脆甜;有的适合烹饪,如做苹果派或苹果酱;还有的适合制酒或制醋。此外,美国苹果公司是全球知名的科技公司。

A3:苹果是水果。

人工标记员打分A2>A1>A3,我们把QA2&QA1、QA2&QA3、QA1&QA3两两放入模型进行打分,然根据损失函数对模型进行反向传播,最后就可以使A2的分数高于A1、A1的分数高于A3。根据不同答案的优先级顺序,就可以训练出奖励模型。

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

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

详解大模型PPO、DPO的训练过程_dpo大模型-CSDN博客

### PPO DPO 算法对比 #### 近端策略优化(Proximal Policy Optimization, PPO) 近端策略优化PPO)是一种基于策略梯度的强化学习方法,旨在通过减少更新过程中策略的变化幅度来提升训练稳定性。该算法可以使用 Python3 TensorFlow 实现,并支持并行化处理以加速数据传输[^1]。具体来说,PPO 使用一种称为信任区域的方法,在每次迭代中仅允许策略发生有限范围内的变化。这种方法不仅提高了收敛速度,还减少了计算资源的需求。 此外,OpenAI 提供了一种名为 PPO2 的 GPU 加速版本,其性能相较于传统 PPO 基准提升了约三倍,特别是在 Atari 游戏环境中表现尤为显著。因此,PPO 是当前强化学习领域中最常用的基础算法之一。 #### 直接偏好优化(Direct Preference Optimization, DPO) 直接偏好优化DPO)则属于另一种类型的强化学习算法,主要针对离线设置下的偏好优化问题。相比于传统的奖励函数定义方式,DPO 将奖励重新参数化为人类反馈的形式,从而简化了训练流程并增强了模型的稳定性[^2]。这种新方法能够更好地适应复杂的现实世界场景,尤其是在难以明确指定目标的情况下特别有用。 值得注意的是,DPO 并不依赖于显式的奖励信号,而是直接利用成对比较的结果来进行决策调整。这意味着它可以有效地规避因错误设定而导致的行为偏差问题。另外,还有研究者提出了 SimPO——一种更为简洁高效的新方案作为替代选项。 #### 主要区别总结 | 特性 | PPO | DPO | |---------------------|-----------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------| | **应用场景** | 在线/在线混合环境 | 离线环境 | | **核心机制** | 利用代理估计优势值并通过截断概率比率控制步长 | 依据配对偏好的软最大似然估计 | | **硬件需求** | 支持MPI并行运算 | 更加轻量级 | | **理论基础** | 需要精确建模状态转移动态 | 不需详细了解底层动力学 | 尽管两者都致力于解决不同形式的价值最大化难题,但它们各自侧重的方向存在明显差异:一方面,PPO 注重实时交互过程中的探索与开发平衡;另一方面,DPO 则强调如何充分利用已有历史记录完成高质量预测任务。 ```python import tensorflow as tf from stable_baselines import PPO2 # Example of initializing a PPO model with Tensorflow backend. model = PPO2('MlpPolicy', env, verbose=1) def direct_preference_optimization(preference_matrix): """ A simplified function to demonstrate how preferences might be optimized directly. Args: preference_matrix (numpy.ndarray): Matrix representing pairwise comparisons between items. Returns: numpy.ndarray: Optimized policy based on given preferences. """ pass # Placeholder for actual implementation logic according to specific requirements. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值