PPO代码研究(2)

news2024/11/26 1:57:48

好, 因为我没怎么看懂, 所以我决定再看一遍PPO的代码, 再研究一遍。

事实证明, 重复是一个非常好,非常好的方法。 学习方法。 

世界上几乎没有任何新知识是你一遍就能学会的。 你只能学一遍,再来一遍, 你才会理解。深刻的理解讲的是什么东西。 

那我们再来看一遍代码吧!!!!

先不论算法。 直接看代码。 

我们来看一个PPO的代码。 这份代码来自于蘑菇书。 

Releases · datawhalechina/easy-rl · GitHub 这里下载代码解压就可以看到。

上来是一些设置和参数, 

这个设置还挺关键的。 用PPO, 然后玩cart车, clip值等。

cart车这个游戏, 输入是4个数, 动作有两个。  

然后创建代理模型。 

动作网络就是一个非常普通的网络。  从4到256 再从256到256,再从256到2.

critic网络也差不多。 输入是4个状态, 输出是1维, 表示这个状态预期能够得到的奖励。 

memory是一个队列。  定义了这些就可以训练了。 

​这个就是训练流程, sample_action就是通过actor取一个动作。 

过程就是普通的让输入通过网络后得到输出的概率分布, 作为分布后再采样一个动作。  并且还要把这个动作的概率给记录下来。 

输入动作a_x 就会得到这一步的奖励R, 然后是否结束, 和下一步的状态。 

把他存入队列当中去。 

这里更新不是每次都更新, 而是经过一些轮次才更新。 多少呢? 就是100

采样一百次才更新一次。 

开始更新, 取出模型{\theta}' 采样的数据, 包括当时的s, 当时的动作a, 当时的动作对应对数概率, 当时的奖励r, 当时是否结束等。 这里要注意的是, 这100个数据都是在同一轮游戏中采样出来的, 这样真的可以吗????? 

看这里, done的时候就会结束这一轮的。 

算出乘以时间因子\gamma的优势函数 A(s,a),并且归一化, 原来是还需要归一化的。 对应下面这个。

优势函数除了归一化外还需要减去一个baseline。 这个baseline来自于critic预测的value值。 也就是这个状态能得到的奖励的期望。 

这里这个value就是这个baseline b 也就是这个状态平均能得到的奖励。 

这里应该是固定的套路了。 

实现的是这个优化目标。 

这个surr1 就是

ratio 也就是两个的概率log值的商。 乘上优势函数。 

下面就是那个剪

ratio第一次算出来全部都是1, 也就是说其实第一次肯定是一样的啦, 因为还没更新,这个时候, 两个都是一样的: surr1 和surr2是一样的, 因为他们比值都是1. 

然后是critic的更新, 因为这个critic预测的是这个状态将会的得到的奖励。因此用真实的return 和它的预测值做一个mseloss。 然后critic和actor同时更新。 

更新一轮之后, 基本上这个ratio就不是1了, 就需要徘徊一下了。 

然后4轮更新后, 清除上一轮的数据, 开启下一轮的收集。 

所以这里的{\theta}' 模型 就是什么呢, 就是这4轮更新前的模型。 

更新的那个模型是\theta。 他们其实是同一个模型。 不过采样的时候, 用了

好了 感觉理解了, 我们可以开始用在自己项目了。 

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

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

相关文章

大剧院订座系统源码,大剧院订票,大剧院场馆租赁,大剧院订票系统完整源码

大剧院订座系统源码,大剧院订票,大剧院场馆租赁,大剧院订票系统完整源码 大剧院系统1、管理后台--系统说明2、订票小程序--系统说明3、验票端--系统说明4、系统源码说明 大剧院系统 1、管理后台–系统说明 项目管理:用于创建剧院演出项目 2…

【广州华锐互动】AR技术在配电系统运维中的应用

随着科技的不断发展,AR(增强现实)技术逐渐走进了我们的生活。在电力行业,AR技术的应用也为巡检工作带来了许多新突破,提高了巡检效率和安全性。本文将从以下几个方面探讨AR配电系统运维系统的新突破。 首先,AR技术可以实现虚拟巡检…

Qt应用开发(基础篇)——按钮基类 QAbstractButton

一、前言 QAbstractButton类,继承于QWidget,是Qt按钮小部件的抽象基类,提供按钮常用的功能。 QAbstractButton按钮基类,它的子类(pushbutton、checkbox、toolbutton等)处理用户操作,并指定按钮的绘制方式。QAbstractBu…

el-table中加图标文字提示

<el-table :data"tableData" style"width: 100%" max-height"250"><el-table-column fixed prop"aaa" label"日期" width"150" /><el-table-column prop"bbb" label"日期" wi…

英语语法基础--思维导图

思维导图通常用于可视化和整理信息&#xff0c;而英文语法非常广泛且复杂&#xff0c;无法在一个简单的思维导图中完整表示。然而&#xff0c;我可以提供一个简化版本的英文语法思维导图&#xff0c;列出一些主要的语法概念和部分示例。 请注意&#xff0c;这只是一个基本的概…

多个pdf怎么合并在一起?跟着我的步骤一起合并

多个pdf怎么合并在一起&#xff1f;利用PDF文档合并功能可以帮助您更有效地管理文件&#xff0c;将多个相关文件整合成一个文件&#xff0c;避免分散在多个文件中。此外&#xff0c;合并后的文件更便于共享和传输&#xff0c;因为只需共享一个文件而不是多个文件。虽然合并文件…

自学Python01-创建文件写入内容

此处省去安装和前言&#xff0c;需要两个东西 一个去下载安装python官方库 Welcome to Python.org 一个是编译器pycharm PyCharm 安装教程&#xff08;Windows&#xff09; | 菜鸟教程 PyCharm: the Python IDE for Professional Developers by JetBrains 第一节 练习print…

18--Elasticsearch

一 Elasticsearch介绍 1 全文检索 Elasticsearch是一个全文检索服务器 全文检索是一种非结构化数据的搜索方式 结构化数据&#xff1a;指具有固定格式固定长度的数据&#xff0c;如数据库中的字段。 非结构化数据&#xff1a;指格式和长度不固定的数据&#xff0c;如电商网站…

rocky(centos) 安装redis,并设置开机自启动

一、下载并安装 1、官网下载Redis 并安装 Download | RedisRedisYou can download the last Redis source files here. For additional options, see the Redis downloads section below.Stable (7.2)Redis 7.2 …https://redis.io/download/ 2、上传下载好的redis压缩包到 /…

电气工程中重要的测量术语:“kVRMS” | 百能云芯

在电气工程和电子领域&#xff0c;术语“kVRMS”至关重要。它是工程师和技术人员用来准确评估电气系统电压的关键测量方法。在这篇综合文章中&#xff0c;我们将深入探讨 kVRMS 的含义、其意义、应用。 kVRMS 代表“千伏均方根”。为了理解这个术语&#xff0c;我们来分解一下&…

【Java Web】统一处理异常

一个异常处理的ControllerAdvice类。它用于处理Controller注解的控制器中发生的异常。 具体代码功能如下&#xff1a; 导入相关类和方法。声明一个Logger对象&#xff0c;用于日志记录。使用ExceptionHandler注解标记handleException方法&#xff0c;用于处理所有异常。 -嘛在…

管网水位监测的必要性

城市燃气、桥梁、供水、排水、热力、电力、电梯、通信、轨道交通、综合管廊、输油管线等&#xff0c;担负着城市的信息传递、能源输送、排涝减灾等重要任务&#xff0c;是维系城市正常运行、满足群众生产生活需要的重要基础设施&#xff0c;是城市的生命线。基础设施生命线就像…

centos+jenkins+pycharm

思路&#xff1a;架构 一. 在centos上搭建jenkins环境 二. pycharm与gitee建立连接 三. 访问jenkins&#xff0c;添加任务 3.1 添加一个自由风格的任务 3.2 添加git项目路径及访问git的账号和密码 3.3 执行start.sh脚本 四. 浏览器访问jenkins执行任务

leetcode-779. 第K个语法符号(java)

第K个语法符号 题目描述递归代码演示 题目描述 难度 - 中等 LC- 779. 第K个语法符号 我们构建了一个包含 n 行( 索引从 1 开始 )的表。首先在第一行我们写上一个 0。接下来的每一行&#xff0c;将前一行中的0替换为01&#xff0c;1替换为10。 例如&#xff0c;对于 n 3 &#…

个人博客系统-测试用例+自动化测试

一、个人博客系统测试用例 二、自动化测试 使用selenium4 Junit5单元测试框架&#xff0c;来进行简单的自动化测试。 1. 准备工作 &#xff08;1&#xff09;引入依赖&#xff0c;此时的pom.xml文件&#xff1a; <?xml version"1.0" encoding"UTF-8&quo…

在Mac电脑的终端程序中打开进入指定的系统/文件目录

例如&#xff1a;想直接在终端中打开repository目录&#xff0c;可以使用open 使用后可以看到打开了文件目录&#xff1a;

敏捷开发:适应变化的核心能力

​在当今高度变化的时代&#xff0c;软件开发的环境和要求也在不断变化。传统的开发方法往往难以适应这种快速变化&#xff0c;因此&#xff0c;一种新的软件开发方法——敏捷开发逐渐得到了广泛的关注和应用。 本文将介绍敏捷开发的概念、优势、实践经验、敏捷开发工具以及注…

三相三线电表和三相四线电表有什么区别

三相三线电表和三相四线电表是两种常见的电能计量仪表&#xff0c;它们在结构、接线方式和使用范围上有所不同。本文将从以下几个方面详细介绍两者之间的区别。 一、结构上的区别 1.三相三线电表&#xff1a;三相三线电表主要由电压线圈、电流线圈、转子、铝盘和外壳等部分组成…

技能大赛物联网赛项参赛软件建设方案

一、概述 信息与通信技术的目标已经从任何时间、任何地点连接任何人&#xff0c;发展到连接任何物品的阶段&#xff0c;而万物的连接就形成了物联网。物联网的主要特征是通过条码识读设备、射频识别 (RFID&#xff09;装置、红外感应器、全球定位系统、激光扫描器等信息传感设备…

舟山OV泛域名SSL证书申请需要注意什么

OV泛域名SSL证书是泛域名SSL证书中申请难度较大的&#xff0c;但它的加密等级比较高&#xff0c;适合一些需要对传输信息加密的企事业单位&#xff0c;比如大型商城网站&#xff0c;或者银行等金融网站。那么我们该如何申请OV泛域名SSL证书呢&#xff1f;今天就随SSL盾小编了解…