PPO(Proximal Policy Optimization)算法介绍

news2024/11/8 0:07:47

引言

       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.coloradmin.cn/o/2235384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【测试】【Debug】vscode中同一个测试用例出现重复

这种是正常的情况 当下面又出现一个 类似python_test->文件夹名->test_good ->test_pad 同一个测试用例出现两次,名称都相同,显然是重复了。那么如何解决? 这种情况是因为在终端利用“pip install pytest”安装 之后,又…

C++__XCode工程中Debug版本库向Release版本库的切换

Debug和Release版本分别设置编译后,就分别得到了对应的lib库,如下图: 再生成Release后如下图:

VisionPro —— CogIPOneImgeTool工具详解

CogIPOneImageTool工具主要用来对单张图像进行算法处理操作 CogIPOneImgeTool简介 CogIPOneImageTool 工具可完成高斯平滑、高通滤波和图像量化等基本图像处理操作。Image Processing One Image 工具编辑控件为此工具提供图形用户界面。 Image Processing Operations (图像处…

【Ai测评】GPT Search偷偷上线,向Google和微软发起挑战!

最近,OpenAI 又推出了一个令人兴奋的新功能——GPT Search,已经正式上线了! 功能介绍 GPT Search:为你带来全新搜索体验 目前,桌面端和移动端应用程序已经全面上线,所有 GPT Plus 和 Team 用户都可以立即…

基于SSM框架的乡村农户对口扶贫系统

基于SSM框架的乡村农户对口扶贫系统。 设计步骤: 项目架构创建:首先创建项目的基本架构,包括com.zc.xxx路径下的文件和resources资源文件夹。 SSM架构:使用Spring、SpringMVC、MyBatis作为后端架构,采用POJO—Dao—…

HANDLINK ISS-7000v2 网关 login_handler.cgi 未授权RCE漏洞复现

0x01 产品简介 瀚霖科技股份有限公司ISS-7000 v2网络网关服务器是台高性能的网关,提供各类酒店网络认证计费的完整解决方案。由于智慧手机与平板电脑日渐普及,人们工作之时开始使用随身携带的设备,因此无线网络也成为网络使用者基本服务的项目。ISS-7000 v2可登录300至1000…

【主板定制化服务】专业主板定制化服务,全流程覆盖,为客户打造独特硬件方案

在当今的科技环境中,标准化的硬件产品常常无法满足各种细分领域的特殊需求,尤其是工业控制、嵌入式系统、服务器等场景中,个性化设计的主板能够为用户带来更高的灵活性和性能优化。我们团队专注于主板研发,提供一系列标准产品&…

揭秘全向轮运动学:机动艺术与上下位机通信的智慧桥梁

✨✨ Rqtz 个人主页 : 点击✨✨ 🌈Qt系列专栏:点击 🎈Qt智能车上位机专栏: 点击🎈 本篇文章介绍的是有关于全向轮运动学分析,单片机与上位机通信C代码以及ROS里程计解算的内容。 目录 大纲 ROS(机器人操作系统&…

【TS】九天学会TS语法——3.TypeScript 函数

今天学习 TypeScript 的函数,包括函数类型、可选参数、默认参数、剩余参数。 函数声明和表达式函数类型可选参数和默认参数剩余参数 在 TypeScript 中,函数是编程的核心概念之一。它们允许我们将代码组织成可重用的块,并提供了强大的抽象能力…

stm32不小心把SWD和JTAG都给关了,程序下载不进去,怎么办?

因为想用STM32F103的PA15引脚,调试程序的时候不小心把SWD和JTAD接口都给关了,先看下罪魁祸首 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//关掉JTAG,不关SWGPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//关掉SW&am…

Rust重写万物之——从头开始编写浏览器引擎

一款用 Rust 编写的全新“轮子”最近备受关注—— 因不满大公司垄断,Gosub 项目团队用 Rust 从头开始编写了一个新的浏览器引擎,目前 star 数已超过 3k。 Gosub 项目的诞生是因为不少用户对当前的 Web 浏览器现状感到不满。 尽管市面上有许多浏览器可供选择,但其中大多数…

【设计模式系列】桥接模式(十三)

一、什么是桥接模式 桥接模式(Bridge Pattern)是一种结构型设计模式,其核心目的是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式主要用于处理那些在设计时无法确定实现细节的场合,或者需要在多个实现之间…

泷羽sec学习打卡-shodan扫描4

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于shodan的那些事儿-4 一、shodan4如何查看公网ip?如何查看自己的ip?如何查看出…

杨传辉:云+AI 时代的一体化数据库|OceanBase发布会实录

在 2024 OceanBase 年度发布会 上, OceanBase CTO 杨传辉进行了主题为《云和 AI 时代的一体化数据库战略思考》的演讲,本文为演讲实录,欢迎阅读。 视频观看可点击:https://www.oceanbase.com/video/9001825 各位 OceanBase 的客…

04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索

文章目录 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索一、多版本并发控制(MVCC)1.1 理论解析1.2 实践应用 二、锁与闩锁机制2.1 理论解析2.2 实践应用 三、事务隔离级别3.1 理论解析3.2 实践应用 四、死锁预防与解决…

Python-利用tkinter库编写一个exe伪恶意程序文件(下)

前言 接着上篇所讲的,我们已经完成了源代码的准备,并将其储存在了function_1.py文件中。接下来我们将把function_1.py文件编写为相对应的exe文件。那么好,废话不多说,我们直接开始。(温馨提示:由于整蛊的需…

vue使用canves把数字转成图片验证码

<canvas id"captchaCanvas" width"100" height"40"></canvas>function drawCaptcha(text) {const canvas document.getElementById(captchaCanvas);const ctx canvas.getContext(2d);// 设置背景颜色ctx.fillStyle #f0f0f0;ctx.f…

商标注册流程

个人名义&#xff08;自然人&#xff09;申请准备&#xff1a;身份证复印件(签字&#xff0c;PDF格式&#xff0c;小于2M)&#xff1b;个体户执照副本复印件(签字&#xff0c;PDF格式&#xff0c;小于2M)&#xff1b;商标图样(建议黑白JPG&#xff0c;建议尺寸800*800尺寸)。公…

《ElementPlus 与 ElementUI 差异集合》Icon 图标 More 差异说明

参考 《element plus 使用 icon 图标(两种方式)》使用 icon 升级 Vue2 升级 Vue3 项目时&#xff0c;遇到命名时的实心与空心点差异&#xff01; ElementUI&#xff1a; 实心是 el-icon-more空心是 el-icon-more-outline ElementPlus&#xff1a; 实心是 el-icon-more-fill…

如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?

以下是使用 Python 的爬虫技术获取淘宝天猫商品价格信息的两种常见方法&#xff1a; 方法一&#xff1a;使用 Selenium 一、环境准备&#xff1a; 安装 selenium 库&#xff1a;在命令行中运行 pip install selenium。下载浏览器驱动&#xff1a;如 ChromeDriver&#xff08;确…