PPO算法

article/2025/9/21 8:45:10

在线学习和离线学习

  • 在线学习:和环境互动的Agent以及和要学习的Agent是同一个, 同一个Agent,一边和环境做互动,一边在学习。
  • 离线学习: 和环境互动及的Agent以和要学习的Agent不是同一个,学习的Agent通过看别人完来学习。

利用新的参数\theta\prime去采样一次,然后更新\theta多次。那么怎么做呢?利用重要性采样的方法。

重要性采样

E_{x\sim p}[f(x)] \approx \frac{1}{N}\sum_{i=1}^{N}f(x^i)

x^i表示从分布p(x)中采样数据,但如果我们无法从p(x)分布中采样数据,只能从另一个分布中采样q(x)x^i。对期望值进行修正

E_{x\sim p}[f(x)] = \int f(x)p(x)dx = \int f(x)\frac{p(x)}{q(x)}q(x)dx

然后可以改成对分布q(x)中的取期望值。

\int f(x)\frac{p(x)}{q(x)}q(x)dx=E_{x\sim q}[f(x)\frac{p(x)}{q(x)}]

q(x)分布中采样数据, 需要再乘以一个weight\frac{p(x)}{q(x)}以修正两个分布之间的差异。

E_{x\sim p}[f(x)] \approx E_{x\sim q}[f(x)\frac{p(x)}{q(x)}]

通过重要性采样技巧将在线学习转换为离线学习

利用\theta\prime去和环境做互动,利用搜集到的数据对\theta进行更新。当\theta更新到一定次数之后,再利用\theta\prime重新去和环境做互动。

 推导出新的目标函数J^{\theta^{\prime}}({\theta}), 表示利用\theta \prime去采样进而更新参数\theta。引用重要性采用的前提是这两个分布不能相差太多,否则结果就会不好,那如何去避免相差太多呢?这就是PPO在做的事情,在训练的时候多加一个限制, 希望\theta\theta^{\prime}越像越好。PPO的前身是TRPO

就是两个限制的位置是不同的,PPO在实做上比TRPO要更加容易。KL距离不是指的参数上的距离,而是表现上的距离, 而是action上的距离。

PPO算法

 对应的函数图像如下所示:(横轴为第一项的值,纵轴为clip函数的输出,当第一项小于(1- \varepsilon),输出1- \varepsilon,当第一项大于1+ \varepsilon,输出1+ \varepsilon, 否则介于两者之间的话直接输出第一项的值。

 示意图:在绿色的线和蓝色的线之间取最小的那个值。如果A>0,取左图中的红线,如果A<0,取右图中的红线为目标函数。

这个复杂公式的目的在于控制与环境交互的Model和跟新参数的Model之间的差距不要过大。具体为:

如果A>0, 意味着应该增加状态动作对的几率,也即希p_\theta望越大越好,但又限制其和p_{\theta \prime}的比值不能超过1+ \varepsilon。A<0的时候也是类似的。

 


http://chatgpt.dhexx.cn/article/qbNRZvJa.shtml

相关文章

PPO2代码 pytorch框架

PPO2代码玩gym库的Pendulum环境 2022-8-02更新 我发现这篇文章浏览量惨淡啊。 咋滴&#xff0c;是不相信的我代码能用是吗&#xff1f; 所以&#xff0c;我给出reward的收敛曲线图&#xff1a; 开玩笑&#xff0c;出来混&#xff0c;我能卖你生瓜码子吗&#xff1f; ———…

PPO实战

哈哈初学&#xff0c;复现龙龙老师的实例&#xff01; state&#xff1a;是平衡小车上的杆子&#xff0c;观测状态由 4 个连续的参数组成&#xff1a;推车位置 [-2.4&#xff0c;2.4]&#xff0c;车速 [-∞&#xff0c;∞]&#xff0c;杆子角度 [&#xff5e;-41.8&#xff0c…

PyTorch实现PPO代码

原理&#xff1a;Proximal Policy Optimization近端策略优化&#xff08;PPO&#xff09; 视频&#xff1a;Proximal Policy Optimization (PPO) is Easy With PyTorch | Full PPO Tutorial 代码来自github&#xff1a; Youtube-Code-Repository EasyRL 网站&#xff1a;Neural…

优化PPO

优化PPO 介绍core implementation details1.Vectorized architecture 量化结构Orthogonal Initialization of Weights and Constant Initialization of biases 算法权重的初始化以及恒定偏差的初始化The Adam Optimizer’s Epsilon Parameter Adam优化器的ε参数Adam Learning …

PPO Algorithm

‘‘目录 PPO ALGORITHM 进行看别人文章&#xff1a; 如何直观理解PPO算法?[理论篇] - 知乎 (zhihu.com) 【强化学习8】PPO - 知乎 (zhihu.com) PPO(OpenAI) Proximal Policy Optimization(PPO)算法原理及实现&#xff01; - 简书 (jianshu.com) 1-Critic的作用与效果.m…

PPO算法实战

原理简介 PPO是一种on-policy算法&#xff0c;具有较好的性能&#xff0c;其前身是TRPO算法&#xff0c;也是policy gradient算法的一种&#xff0c;它是现在 OpenAI 默认的强化学习算法&#xff0c;具体原理可参考PPO算法讲解。PPO算法主要有两个变种&#xff0c;一个是结合K…

Proximal Policy Optimization(近端策略优化)(PPO)原理详解

本节开始笔者针对自己的研究领域进行RL方面的介绍和笔记总结&#xff0c;欢迎同行学者一起学习和讨论。本文笔者来介绍RL中比较出名的算法PPO算法&#xff0c;读者需要预先了解Reinforcement-Learning中几个基础定义才可以阅读&#xff0c;否则不容易理解其中的内容。不过笔者尽…

【强化学习PPO算法】

强化学习PPO算法 一、PPO算法二、伪代码三、相关的简单理论1.ratio2.裁断3.Advantage的计算4.loss的计算 四、算法实现五、效果六、感悟 最近再改一个代码&#xff0c;需要改成PPO方式的&#xff0c;由于之前没有接触过此类算法&#xff0c;因此进行了简单学习&#xff0c;论文…

【深度强化学习】(6) PPO 模型解析,附Pytorch完整代码

大家好&#xff0c;今天和各位分享一下深度强化学习中的近端策略优化算法&#xff08;proximal policy optimization&#xff0c;PPO&#xff09;&#xff0c;并借助 OpenAI 的 gym 环境完成一个小案例&#xff0c;完整代码可以从我的 GitHub 中获得&#xff1a; https://gith…

autoit连接mysql数据库

原链接点我 一,准备工作 1, 下载mysql.au3(这个点击就下载了) 把mysql.au3放入到autoit的include目录下 2, 下载mysql驱动(根据自己系统选,下载完之后,双击运行会自动安装,一路next就行) 二,使用 #include "mysql.au3" #include <Array.au3> ;弹窗 Func aler…

AutoIt-v3的安装,和robotframework-autoitlibrary的导入

AutoIt 最新是v3版本&#xff0c;这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI&#xff08;图形用户界面)中进行自动化操作。它利用模拟键盘按键&#xff0c;鼠标移动和窗口/控件的组合来实现自动化任务。而这是其它语言不可能做到或无可靠方法实现的。 Au…

selenium 上传下载调用windows窗口--AutoIT

AutoIT解决自动化上传下载文件调用Windows窗口 AutoIT下载安装使用AotuIt 操作windows上传窗口1. 打开AutoIt定位窗口组件2. 定位上传窗口属性 &#xff08;鼠标选中Finder Tool 拖拽至属性窗口&#xff09;3. 打开autoIt编辑器&#xff0c;编写代码4. 将脚本文件转成exe文件5.…

软件质量保证与测试 实验十一:AutoIt的使用

目录 实验概述实验内容1. 下载安装AutoIT。2. 测试win系统自带计算器程序&#xff0c; 246&#xff0c;是否正确&#xff1f; 写出Script。&#xff08;小提示&#xff1a;使用WinGetText获得输出&#xff09;3.测试win系统自带计算器程序&#xff0c; 写出3个以上的测试用例的…

selenium 用autoIT上传下载文件

一、下载安装AutoIT 下载并安装AutoIT&#xff0c;下载链接&#xff1a;https://www.autoitscript.com/site/autoit/AutoIT安装成功后&#xff0c;可以在开始菜单下看到AutoIT的所有工具&#xff0c;如下图所示&#xff1a; 其中分为几类&#xff0c;AutoIT Window Info用来识…

selenium autoit java_selenium+java利用AutoIT实现文件上传

转载自&#xff1a;https://www.cnblogs.com/yunman/p/7112882.html?utm_sourceitdadao&utm_mediumreferral 1、AutoIT介绍 AutoIT是一个类似脚本语言的软件&#xff0c;利用此软件我们可以方便的实现模拟键盘、鼠标、窗口等操作&#xff0c;实现自动化。 2、实现原理 利用…

autoIT 自动化上传/下载文件图文详解【python selenium】

情景&#xff1a; 在用selenium进行web页面自动化时&#xff0c;时不时会遇到上传附件的情况&#xff0c;常见的情况就是一个上传按钮&#xff0c;点击后弹出windows窗口&#xff0c;选择文件后上传&#xff0c;如下图1所示 图1 这种情况超出了selenium的能力范围&#xff0c;需…

AutoIt介绍

AutoIt的下载网址&#xff1a; https://www.autoitscript.com/site/autoit/downloads/ AutoIt在线文档&#xff1a;http://www.autoit3.cn/Doc/ AutoIt的优势&#xff1a; 简单易懂的类BASIC 表达式模拟键盘,鼠标动作事件操作窗口与进程直接与窗口的”标准控件”交互(设置/获…

AutoIt的应用

少数情况下需要操作系统级的弹窗&#xff0c;可以使用AutoIt。 AutoIt现在最新版是V3版本&#xff0c;这是一个类似BASIC脚本语言的免费软件&#xff0c;用于Windows GUI中进行自动化操作。利用模拟键盘按键&#xff0c;鼠标移动&#xff0c;窗口和控件的组合来实现自动化任务…

java 调用autoit_java和autoit连接

autoit可以实现本机文件的上传&#xff0c;修改&#xff0c;新建&#xff0c;也可以实现网页上文件下载到本地 连接步骤&#xff1a; (1)下载autoitx4java 包&#xff0c;地址在code.google.com/p/autoitx4java。解压后直接将jar包添加到工程里面。然后需要使用jacob包&#xf…

AutoIt在线使用手册地址

AutoIt 在线文档https://autoitx.com/Doc/