大论文记录

news2024/11/24 3:26:49

基础知识回顾

1.强化学习(Agent、Environment)

在 RL 中,代理通过不断与环境交互、以试错的方式进行学习,在不确定性下做出顺序决策,并在探索(新领域)和开发(使用从经验中学到的知识)之间取得平衡。   (探索利用问题)

已经使用stable_baseline3做过一些列实验,sb3这个库相对简单,但是训练起来感觉并不是很好;

ElegantRL 在 Actor-Critic 框架下实现 DRL 算法,其中 Agent(又名 DRL 算法)由 Actor 网络和 Critic 网络组成。由于代码结构的完整性和简单性,用户能够轻松自定义自己的代理。

该开源库的框架很清楚的描述了运行流程,Run.py来实现Agent和Environment的交互;

ElegantRL 的文件结构如图 1 所示:

  1. Env.py:它包含代理与之交互的环境。
  • 用于健身房环境修改的 PreprocessEnv 类。
  • 以自建股票交易环境为例,进行用户自定义。

2. Net.py:有三种类型的网络:

  • Q-Net,
  • Actor Network、
  • 评论家网络,

每个 API 都包括一个用于继承的基本网络和一组用于不同算法的变体。

3. Agent.py:它包含不同 DRL 算法的代理。

4. Run.py:提供训练和评估过程的基本功能:

  • 参数初始化 /
  • 训练环 /
  • 计算器。

作为高级概述,文件之间的关系如下。在 Env.py 中初始化环境,在 Agent.py 中初始化代理。该代理是使用 Net.py 中的 Actor 和 Critic 网络构建的。在 Run.py 的每个训练步骤中代理与环境交互,生成存储到 Replay Buffer 中的转换。然后,代理从 Replay Buffer 获取转换以训练其网络。每次更新后,评估器都会评估代理的性能,如果性能良好,则会保存代理。

该库每个DRL算法代理都遵循其基类中的层次结构

如图 2 所示,DQN 系列算法的继承层次结构如下:

  • AgentDQN:标准 DQN Agent。
  • AgentDoubleDQN:继承自 AgentDQN 的双 DQN 代理,具有两个用于减少高估的 Q-Net。
  • AgentDuelingDQN:继承自 AgentDQN 的 Q 值计算不同 DQN 代理。
  • AgentD3QN:AgentDoubleDQN 和 AgentDuelingDQN 的组合,继承自 AgentDoubleDQN。
class AgentBase:
    def init(self); 
    def select_action(states); # states = (state, …) 
    def explore_env(env, buffer, target_step, reward_scale, gamma);
    def update_net(buffer, max_step, batch_size, repeat_times); 
    def save_load_model(cwd, if_save);
    def soft_update(target_net, current_net);
class AgentDQN: 
    def init(net_dim, state_dim, action_dim); 
    def select_action(states); # for discrete action space 
    def explore_env(env, buffer, target_step, reward_scale, gamma); 
    def update_net(buffer, max_step, batch_size, repeat_times);
    def save_or_load_model(cwd, if_save);
class AgentDuelingDQN(AgentDQN): 
    def init(net_dim, state_dim, action_dim);class AgentDoubleDQN(AgentDQN): 
    def init(self, net_dim, state_dim, action_dim);
    def select_action(states); 
    def update_net(buffer, max_step, batch_size, repeat_times);
class AgentD3QN(AgentDoubleDQN): # D3QN: Dueling Double DQN 
    def init(net_dim, state_dim, action_dim);

在构建 DRL 代理时应用这样的层次结构可以有效地提高轻量级有效性。用户可以在类似的流程中轻松设计和实施新代理。

 

基本上,一个智能体有两个基本功能,数据流如图所示:

  • explore_env():它允许代理与环境交互并为训练网络生成转换。
  • update_net() :它首先从 Replay Buffer 中获取一批 transitions,然后使用反向传播训练网络。

 

训练piple

train代理的两个主要步骤:

  1. 初始化
  • hyper-parameters 参数 args 的 Json 参数。
  • env = PreprocessEnv() :创建一个环境(以 OpenAI gym 格式)。
  • agent = AgentXXX() :为 DRL 算法创建代理。
  • evaluator = Evaluator() :评估并存储经过训练的模型。
  • buffer = ReplayBuffer() :存储过渡。

     2. 然后,训练过程由 while 循环控制:

  • agent.explore_env(...):代理在 Target Steps 中探索环境,生成转换,并将其存储到 ReplayBuffer 中。
  • agent.update_net(...):代理使用 ReplayBuffer 中的批处理来更新网络参数。
  • evaluator.evaluate_save(...):评估代理的性能,并保持经过训练的模型获得最高分。

while 循环将在满足条件时终止,例如,达到目标分数、最大步数或手动中断。

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

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

相关文章

五、Java 注释

一、Java 注释 在计算机语言中,注释是计算机语言的一个重要组成部分,用于在源代码中解释代码的作用,可以增强程序的可读性,可维护性。Java 注释是一种在 Java 程序中用于提供代码功能说明的文本。注释不会被编译器包含在最终的可…

数据清洗第3篇章 - 数据异常处理

数据清洗是数据分析过程中至关重要的一步,它确保数据的准确性、一致性和完整性。这不仅有助于提高分析结果的可靠性和有效性,还能为算法建模决策提供高质量的数据基础。在进行数据分析和建模的过程中,大量的时间花在数据准备上:加…

WebRTC Connection Negotiate解决

最近有个项目 ,部署之后一直显示,查了一些资料还是没有解决,无奈只有自己研究解决? 什么是内网穿透? 我们访问我们自己的官网产品页面,我们的服务器是一个单独的个体,有独立的公网ip&#xf…

【Canvas与徽章】金圈蓝底国庆75周年徽章

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>金边黑盾75周年</title><style type"text/css"&g…

关于深度学习torch的环境配置问题

已经下好了torch在虚拟环境中&#xff0c;结果在ipynb文件中无法运行 后来在终端直接用python语句编译 发现没有问题 在编辑测试py文件 发现runcode有问题 原来是插件默认base环境 具体操作参考VS Code插件Code Runner使用python虚拟环境_coderunner怎么在虚拟环境中使用-CSD…

“2024光明多多垂直农业挑战赛”决赛启动成功举办

由光明食品集团所属上花集团的光明花博邨基地&#xff0c;与拼多多携手&#xff0c;联合中国农业大学、浙江大学等共同举办的“2024光明多多垂直农业挑战赛暨第四届多多农研科技大赛”于9月20-21日正式启动决赛。来自上海交大、中国农大、上海农科院、国家农业智能装备工程技术…

资源《Arduino 扩展板4-单游戏摇杆》说明。

资源链接&#xff1a; Arduino 扩展板4-单游戏摇杆 1.文件明细&#xff1a; 2.文件内容说明 包含&#xff1a;AD工程、原理图、PCB。 3.内容展示 4.简述 该文件为PCB工程&#xff0c;采用AD做的。 该文件打板后配合Arduino使用&#xff0c;属于Arduino的扩展板。 该文件…

STM32 GPIO - 笔记

输出: - 推挽 - 输出高低电平都由芯片决定 - 开漏 - 输出低电平有芯片输出,输出高电平由外部电路决定 输入: - 浮空 - 输入电平不确定 - 上拉 - 输入电平拉高 - 下拉 - 输入电平拉低

【网路通信基础与实践番外二】TCP协议的流量控制和拥塞控制以及二者区别和例题

TCP协议是端对端的协议&#xff0c;因此在数据进行传输的过程受发送方&#xff0c;数据通道&#xff0c;接收方三方状态的影响。我们用水龙头来比喻数据发送方&#xff0c;水管来比喻数据通道&#xff0c;水桶来表示数据接收方。 图(a)表示水桶太小&#xff0c;来不及接受注入…

SpringBoot使用@Slf4j注解实现日志输出

Slf4j 是 Lombok 库中的一个注解&#xff0c;它极大地简化了日志记录的代码。通过使用这个注解&#xff0c;Lombok 会自动在你的类中注入一个静态的日志对象。通过在类上添加 Slf4j 注解后&#xff0c;可以直接在方法中使用 log.info() 等方法进行日志打印。 1、安装相关依赖 …

基于RBAC的通用权限管理系统的详细分析与实现(理念篇——权限对象、权限项、功能权限、数据权限、权限组、权限设计)

一、权限&#xff08;Permission&#xff09; 在与人沟通的过程中&#xff0c;我们很多次提到了权限&#xff0c;但是权限具体的含义每个人理解的含义都不明确&#xff0c;这样很容易造成双方信息不对称&#xff0c;有的人就只是把权限理解成某个页面的是否可访问&#xff0c;…

超级干货:Air780EP AT开发之FTP应用

是时候讲一讲Air780EP模组FTP应用的多个AT命令示例&#xff0c;因为很多小伙伴已经提出要求了。 Air780EP是低功耗4G模组之一&#xff0c;支持全系列的AT指令以及LuatOS脚本二次开发。 一、准备工作 1.1 硬件准备 合宙EVB_Air780EP开发板一套&#xff0c;包括天线、SIM卡&am…

TXT文本文档内容整理归档,一键批量操作管理避免出错

在当今的信息化时代&#xff0c;文档管理成为了企业日常运营中不可或缺的一部分。其内容的合并管理更是显得尤为重要。避免在合并过程中出现格式混乱或内容丢失的情况&#xff0c;本文将探讨如何实现TXT文档内容的合并管理。 1.运行软件切换到“文本批量操作”功能版块上 2.在…

基于单片机汽车尾灯控制系统

**单片机设计介绍&#xff0c;基于单片机汽车尾灯控制系统设计 文章目录 前言概要设计思路 软件设计效果图 程序文章目录 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、…

超轻巧modbus调试助手使用说明

一、使用说明 1.1 数据格式 和其他的modbus采集工具一样&#xff0c;本组件也支持各种数据格式&#xff0c;其实就是高字节低字节的顺序。一般是2字节表示一个数据&#xff0c;后面又有4字节表示一个数据&#xff0c;目前好像还有8字节表示一个数据的设备。不同厂家的设备对应…

[Linux]Shell基本

入门 变量 运算符 语句 循环 控制台输入 函数

薄膜凸起和开裂是同一种应力导致的吗?

知识星球里的学员问&#xff1a;我们产线上薄膜出了质量问题&#xff0c;都一概归结为应力过大。麻烦讲讲应力的种类&#xff0c;以及不同种类的应力会造成哪些薄膜问题&#xff1f; 内应力的种类&#xff1f; 内应力的分类很多&#xff0c;如果我们按作用的效果来分&#xff…

(IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案

系列文章目录 文章目录 系列文章目录一、&#xff08;IDEA&#xff09;spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案1.资料 一、&#xff08;IDEA&#xff09;spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案 1.资料…

【51单片机】点亮LED之经典流水灯

开发环境 开发板&#xff1a;普中51-单核-A2单片机&#xff1a;STC89C52RC&#xff08;双列直插40引脚 DIP40&#xff09;Keil uVision5 v9.61 最新版破解方法自行百度&#xff0c;相关文档和视频资料很多&#xff0c;我自己将这一操作记录下来当做博客发布&#xff0c;CSDN以…

C++系列-继承补充

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 继承和友元 友元关系不能继承&#xff0c;父亲的朋友不能是你的朋友 比如在这个例子当中&#xff1a; class Student; class Person { public:friend void Display(const Per…