【RL】(task3)A2C、A3C算法、JoyRL

note

文章目录

  • note
  • 一、A2C算法
  • 二、A3C算法
  • 时间安排
  • Reference

一、A2C算法

在强化学习中,有一个智能体(agent)在某种环境中采取行动,根据其行动的效果获得奖励。目标是学习一种策略,即在给定的环境状态下选择最佳行动,以最大化长期累积的奖励。

A2C(Advantage Actor-Critic)

  • Actor-Critic 框架:A2C 基于 Actor-Critic 框架。在这个框架中,有两个主要部分:Actor 和 Critic。Actor 负责选择行动,Critic 评估所选行动的好坏。简单来说,Actor 是决策者,而 Critic 是评价者。
  • Advantage 概念:在 A2C 中,“Advantage”指的是某个行动相对于平均行动的预期效果好多少。这有助于理解某些行动为什么比其他行动更好。
  • 工作原理:A2C 通过训练 Actor 和 Critic 来改善决策。Actor 根据 Critic 的评价来调整其策略,而 Critic 则根据实际结果来调整其对行动好坏的评估。
  • 通俗解释:可以把 A2C 想象成一个足球队,其中 Actor 是球员,Critic 是教练。球员(Actor)根据场上情况做出决策,而教练(Critic)则评估这些决策并指导球员如何改进。
import torch
import torch.optim as optim
import torch.nn as nn
import torch.nn.functional as F
from torch.distributions import Categorical
import numpy as np
from multiprocessing import Process, Pipe
import argparse
import gym# 建立Actor和Critic网络
class ActorCritic(nn.Module):''' A2C网络模型,包含一个Actor和Critic'''def __init__(self, input_dim, output_dim, hidden_dim):super(ActorCritic, self).__init__()self.critic = nn.Sequential(nn.Linear(input_dim, hidden_dim),nn.ReLU(),nn.Linear(hidden_dim, 1))self.actor = nn.Sequential(nn.Linear(input_dim, hidden_dim),nn.ReLU(),nn.Linear(hidden_dim, output_dim),nn.Softmax(dim=1),)def forward(self, x):value = self.critic(x)probs = self.actor(x)dist  = Categorical(probs)return dist, valueclass A2C:''' A2C算法'''def __init__(self,n_states,n_actions,cfg) -> None:self.gamma = cfg.gammaself.device = cfg.deviceself.model = ActorCritic(n_states, n_actions, cfg.hidden_size).to(self.device)self.optimizer = optim.Adam(self.model.parameters())def compute_returns(self,next_value, rewards, masks):R = next_valuereturns = []for step in reversed(range(len(rewards))):R = rewards[step] + self.gamma * R * masks[step]returns.insert(0, R)return returns

二、A3C算法

A3C(Asynchronous Advantage Actor-Critic)

  • 异步框架:A3C 在 A2C 的基础上增加了“异步”这一概念。这意味着多个智能体(即多个 Actor-Critic 对)同时在不同的环境副本中学习。
  • 并行学习:在 A3C 中,每个智能体独立地探索环境并学习。它们的学习结果会不时地汇总更新到一个全局模型中。
  • 效率和稳定性:由于是并行处理,A3C 可以更高效地学习,并且由于多个智能体探索不同策略,算法的稳定性和鲁棒性也得到提升。
  • 通俗解释:A3C 就像是许多足球队同时在不同的球场上训练。每个队都有自己的球员(Actor)和教练(Critic),他们独立训练并不断向一个中央团队报告他们的进步。中央团队汇总这些信息,以帮助每个队伍更好地训练。

时间安排

任务天数截止时间注意事项
Task01: 马尔可夫过程、DQN算法3天1月15周一-17日周三
Task02: 策略梯度算法3天1月18日周四-20周六
Task03: A2C、A3C算法、JoyRL开源文档(关注多进程)3天1月21日周日-23日周二
Task04: DDPG、TD3算法3天1月24日周三-26日周五
Task05: PPO算法,JoyRL代码实践(选择任一算法任一环境,研究算法不同参数给实验结果带来的影响,也可以用JoyRL上没有跑过的环境尝试)6天1月27日周六-2月1号周四

Reference

[1] 开源内容https://linklearner.com/learn/detail/91
[2] https://github.com/datawhalechina/joyrl-book

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

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

相关文章

Python多线程—threading模块

参考:《Python核心编程》 threading 模块的Thread 类是主要的执行对象,而且,使用Thread类可以有很多方法来创建线程,这里介绍以下两种方法: 创建 Thread 实例,传给它一个函数。派生 Thread 的子类&#xf…

计算机体系结构——多处理机系统

一、概述 重要概念 评估指标 通信延迟 通信延迟=发送开销+跨越时间+传输延迟+接收开销 跨越时间 数字信号从发送方的线路端传送到接收方的线路端所经过的时间。 传输时间 全部的消息量除以线路带宽。 多处理机的架构 根…

Unity 之 Addressable可寻址系统 -- HybridCLR(华佗)+Addressable实现资源脚本全热更 -- 实战(二)

Unity 之 Addressable可寻址系统 -- HybridCLRAddressable实现资源脚本全热更 -- 实战 前言实现原理一,HybridCLR相关操作1.1 安装HybridCLR1.2 打包程序集1.2 设置面板1.3 补充元数据1.4 代码加载流程 二,Addressable资源管理2.1 生成热更代码资源2.2 创…

【0246】深入分析PG内核Write-Ahead Log的实现机制

文章目录 1. 前言2. Write-Ahead Log2.1 WAL数据结构2.1.1 逻辑结构(Logical Structure)2.1.2 物理结构(Physical Structure)3. 参考文献1. 前言 Write-Ahead Log简写为WAL,即预写式日志,PG数据库内核引入WAL的原因基于以下几点: (1)如果发生停电、操作系统错误或数据…

攻防世界——answer_to_everything-writeup

__int64 __fastcall not_the_flag(int a1) {if ( a1 42 )puts("Cipher from Bill \nSubmit without any tags\n#kdudpeh");elseputs("YOUSUCK");return 0LL; } kdudpeh这个东西,根据题目提示sha1加密 import hashlib flagkdudpeh x hashlib…

网安防御保护入门

常见的网络安全术语: 漏洞(脆弱性):可能被一个或多个威胁利用的资产或控制的弱点 攻击:企图破坏、泄露、篡改、损伤、窃取、未授权访问或未授权使用资产的行为 入侵:对网络或联网系统的未授权访问&#xff…

【Springboot】日志

1.日志的使用 日志主要用于记录程序运行的情况。我们从学习javase的时候就使用System.out.println();打印日志了,通过打印的日志来发现和定位问题,或根据日志来分析程序运行的过程。在Spring的学习中,也经常根据控制台的⽇志来分析和定位问题 。 日志除…

k8s-pvc/pv扩容记录

背景 一次聊天过程中,对方提及pvc的扩容,虽然有注意过 storageclass 有个AllowVolumeExpansion的配置(有些csi插件是不支持该配置的,比如local-volume-provisoner),但是没有实际用过,所以还是心…

数据分析实战:城市房价分析

流程图: 1.读数据表 首先,读取数据集。 CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATtarget0.00632182.3100.5386.57565.24.09129615.3396.94.98240.0273107.0700.4696.42178.94.9671224217.8396.99.1421.60.0272907.0700.4697.18561.14.9671224217…

【MySQL数据库专项 一】一个例子讲清楚数据库三范式

好的,让我们以学校数据库中的一个表为例来说明第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的概念。 什么是数据库三范式 数据库的范式(Normalization)是一组关于数据…

UI -- Vue2

Vue2 模板 Vue2 UI package.json同级components/slButton/element.vue <template><div class"d1"><span>测试123</span></div> </template><script>export default {name:"sl-button",data() {return {};}} …

大英第四册课后翻译答案

目录 Unit 1Unit 2Unit 3Unit 4小结&#xff1a; Unit 1 中庸思想&#xff08;Doctrine of the Mean&#xff09;是儒家思想的核心内容。孔子所谓的“中”不是指“折中”&#xff0c;而是指在认识和处理客观事物时的一种“适度”和“恰如其分”的方法。孔子主张不仅要把这种思…

街机模拟游戏逆向工程(HACKROM)教程:[14]68K汇编-标志寄存器

在M68K中&#xff0c;有许多条件分支指令&#xff0c;和jmp指令一样也会修改PC达到程序跳转或分支的目的&#xff0c;不过这些会根据一些情况或状态来选择是否跳转。而在M68K中&#xff0c;有一个特别的寄存器来标记这些情况。 CCR(状态标志寄存器) CCR寄存器是用来保存一些对…

微前端-无界wujie

无界微前端方案基于 webcomponent 容器 iframe 沙箱&#xff0c;能够完善的解决适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户的核心诉求。 主项目安装无界 vue2项目&#xff1a;npm i wujie-vue2 -S vue3项目…

HttpServletRequest getHeader、getHeaders、getIntHeader、getDateHeader区别

request.getHeader(“name”)&#xff1a; 获取请求头中指定名称的单个值&#xff0c;多个值时通常是返回最先出现的那个值 String contentLength request.getHeader("Content-Length"); request.getHeaders(“name”)&#xff1a; 获取请求头中所有具有指定名称…

77. 组合 - 力扣(LeetCode)

题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 输入示例 n 4, k 2输出示例 [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ]解题思路 我们使用回溯、深度优先遍历的思想&#xff0c;我们使用一个栈 path…

Kotlin的数据类

引言 我们在做项目中涉及到各种数据类的处理&#xff0c;很多很杂乱。难免一个人的知识点有盲点&#xff0c;所以想着做个整理。 定义 在平时的使用中&#xff0c;我们会用到一些类来保持一些数据或状态&#xff0c;我们习惯上成为bean或者entity&#xff0c;也有的定义为mod…

SpringSecurity+OAuth2.0 搭建认证中心和资源服务中心

目录 1. OAuth2.0 简介 2. 代码搭建 2.1 认证中心&#xff08;8080端口&#xff09; 2.2 资源服务中心&#xff08;8081端口&#xff09; 3. 测试结果 1. OAuth2.0 简介 OAuth 2.0&#xff08;开放授权 2.0&#xff09;是一个开放标准&#xff0c;用于授权第三方应用程序…

【笔记】Helm-3 主题-13 Helm v2迁移到 v3

Helm v2 迁移到 v3 该指南介绍如何将Helm v2迁移到v3.Helm v2需要被安装且在一个或多个集群中管理版本。 Helm 3变化概述 Helm 2 to 3完整的变化列表在FAQ部分。以下是用户在迁移之前应该要注意的一些改变的概述&#xff1a; Helm | Docs 1.移除了Tiller&#xff1a; 1、用…

Leetcode的AC指南 —— 栈与队列:225.用队列实现栈

摘要&#xff1a; **Leetcode的AC指南 —— 栈与队列&#xff1a;225.用队列实现栈 **。题目介绍&#xff1a;请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 …