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

PPO(Proximal Policy Optimization)算法介绍

引言

       Proximal Policy Optimization(PPO) 算法,是强化学习领域的一种先进算法,由OpenAI的研究人员在2017年提出。它以其高效性、稳定性和易于实现等优点,广泛应用于各类强化学习任务,尤其是在大规模模型的策略优化中。

一、背景与动机

       在策略优化的强化学习中,目标是找到一个策略,使得在与环境交互时获得的累计奖励最大。早期的策略梯度方法如REINFORCE,虽然概念简单,但在实践中可能出现学习效率低、收敛慢等问题。

       为了解决策略更新过程中可能出现的剧烈变化和不稳定性,研究人员提出了 信赖域策略优化(Trust Region Policy Optimization,TRPO) 算法。TRPO通过限制新旧策略的KL散度,保证每次更新不会偏离过远。但TRPO实现复杂,计算代价高,不易于大规模应用。

       PPO的提出旨在以一种更简单、高效的方式,实现类似于TRPO的效果,避免策略更新过大导致的性能下降,同时保持实现上的简洁性。

二、PPO的核心思想

       PPO的核心思想是在策略更新时,通过修改损失函数,限制新旧策略之间的差异,从而防止策略更新过大导致不稳定性。这种方法被称为“接近策略优化”(Proximal Policy Optimization),因为每次更新都使得新策略仅在“接近”于旧策略的范围内改进。

三、PPO的关键技术细节

3.1 概率比率(Probability Ratio)

       在策略梯度方法中,我们通常需要计算策略的梯度。PPO引入了概率比率来度量新旧策略在某个状态下采取某动作的概率之比:

r t ( θ ) = π θ ( a t ∣ s t ) π θ old ( a t ∣ s t ) r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)} rt(θ)=πθold(atst)πθ(atst)

π θ \pi_\theta πθ:参数为 θ \theta θ 的新策略。
π θ old \pi_{\theta_{\text{old}}} πθold:旧策略。

3.2 损失函数设计

       PPO定义了一个新型的剪辑(Clipped)损失函数,以限制策略更新的范围:

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

  • A ^ t \hat{A}_t A^t:优势函数的估计,表示在状态 s t s_t st 采取动作 a t a_t at 相对于某基准策略的优势。
  • ϵ \epsilon ϵ:一个很小的正数,通常取值如0.1或0.2,用于限制策略更新的幅度。
  • clip ( ⋅ ) \text{clip}(\cdot) clip():剪辑函数,将概率比率 r t ( θ ) r_t(\theta) rt(θ)限制在 [ 1 − ϵ , 1 + ϵ ] [1 - \epsilon, 1 + \epsilon] [1ϵ,1+ϵ] 范围内。

剪辑机制的作用:
       当 r t ( θ ) r_t(\theta) rt(θ) 偏离1的程度超过 ϵ \epsilon ϵ时,损失函数会被剪辑,以避免对策略参数的过度更新。这种机制在增大收敛速度的同时,保证了策略更新的稳定性。

3.3 优化目标

       PPO的优化目标是最大化上述剪辑损失函数,即:

θ new = arg ⁡ max ⁡ θ L CLIP ( θ ) \theta_{\text{new}} = \arg\max_\theta L^{\text{CLIP}}(\theta) θnew=argθmaxLCLIP(θ)

通过梯度上升方法,对策略参数 ( \theta ) 进行迭代更新。

四、PPO的工作流程

  • 1.采集数据: 在当前策略 π θ old \pi_{\theta_{\text{old}}} πθold 下,与环境交互,生成一系列状态、动作、奖励数据。

  • 2.计算优势函数 A ^ t \hat{A}_t A^t 利用时间差分(TD)方法或广义优势估计(GAE)来估计优势函数。

  • 3.计算概率比率 r t ( θ ) r_t(\theta) rt(θ) 根据新旧策略计算概率比率。

  • 4.更新策略参数 θ \theta θ 通过优化剪辑损失函数 L CLIP ( θ ) L^{\text{CLIP}}(\theta) LCLIP(θ),使用梯度上升或优化器(如Adam)更新策略参数。

  • 5.重复迭代: 更新后的策略作为新的旧策略,重复上述过程,直到收敛或达到预定的训练轮数。

五、PPO在RLHF中的应用

       在RLHF中,PPO被用于微调预训练语言模型的策略,使其生成的内容更符合人类偏好。

  1. 策略模型 π θ \pi_\theta πθ
  • 预训练的语言模型,被视为生成文本的策略,其参数为 θ \theta θ
  1. 奖励模型( R )
  • 奖通过人类反馈训练得到的模型,用于评估策略模型生成的文本质量,输出一个奖励值。
  1. 优化过程
  • 生成文本:策略模型根据输入提示生成回复。
  • 计算奖励:奖励模型评估生成的回复,得到奖励值 R ( s t , a t ) R(s_t, a_t) R(st,at)
  • 优势估计:计算优势函数 A ^ t \hat{A}_t A^t,通常基于奖励和价值函数估计。
  • 策略更新:使用PPO算法,优化策略模型的参数 θ \theta θ,最大化预期奖励。
  1. 优势
  • 效率:PPO的高效性使得在大规模模型上进行策略优化成为可能。
  • 稳定性:剪辑机制保证了策略更新的稳定性,避免了生成质量的大幅波动。
  • 可控性:通过奖励模型,结合PPO,可以精细地调控模型生成的行为,使其更符合人类偏好。

六、PPO的优点与局限

优点

  • 易于实现:相比于TRPO等算法,PPO的实现更加简单明了。
  • 高效稳定:在保证策略更新稳定性的同时,保持了较高的样本效率。
  • 适用广泛:适用于离散和连续动作空间的任务。

局限

  • 超参数敏感:需要仔细调节超参数 ϵ \epsilon ϵ 以及学习率等。
  • 样本相关性:需要足够多的样本来估计优势函数,否则可能影响收敛性能。

七、总结

       PPO通过引入剪辑损失函数,有效地限制了策略更新的幅度,兼顾了学习效率和更新稳定性。在RLHF中,PPO作为微调预训练语言模型的关键算法,发挥了重要作用,使得模型能够从人类反馈中高效学习,生成更符合人类期望的内容。


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

相关文章:

  • 一款5k star的 Redis 客户端!!简洁高效!
  • Next.js 14 性能优化:从首屏加载到运行时优化的最佳实践
  • bypy上传配置
  • 基于Spring Boot的阿坝州旅游系统
  • stm32基础(keil创建、Proteus仿真、点亮LED灯,7段数码管)
  • JAVAweb学习日记(三)Ajax
  • Ubuntu Docker 安装
  • template和span标签的使用
  • Kafka相关知识点(上)
  • 删除GitLab仓库中项目下面的多个文件夹
  • 【数据库系统概论】第3章 关系数据库标准语言SQL(二)数据查询(超详细)
  • 【Python】轻松解析JSON与XML:Python标准库的json与xml模块
  • K8S篇(基本介绍)
  • 【Linux】centos7安装配置DHCP、FTP服务
  • 机器学习:使用协同过滤推荐算进行电影推荐
  • 算法每日练 -- 双指针篇(持续更新中)
  • 如何在服务器端对PDF和图像进行OCR处理
  • C#/.NET/.NET Core学习路线集合,学习不迷路!
  • 二叉树相关|单值二叉树|相同的树|对称二叉树|前序遍历|中序遍历|后序遍历|另一棵树的子树|二叉树遍历(C)
  • 【后端】登录页面的 <验证码> 操作
  • Linux 进程间通信 共享内存_消息队列_信号量
  • 用Dify搭建AI知识库
  • ORACLE数据库查询当前安装的语言是哪一种?
  • Python反射API:面向对象编程的“魔法镜”
  • 大语言模型(LLM)量化基础知识(一)
  • 后端SpringBoot及vue proxyTable解决跨域