# [0701] Task05 策略梯度、Actor-critic 算法

news2024/11/22 11:45:09
  • easy-rl PDF版本 笔记整理 P4、P9
  • joyrl 比对 补充 P9 - P10
  • 相关 代码 整理

在这里插入图片描述

最新版PDF下载
地址:https://github.com/datawhalechina/easy-rl/releases
国内地址(推荐国内读者使用)
链接: https://pan.baidu.com/s/1isqQnpVRWbb3yh83Vs0kbw 提取码: us6a

easy-rl 在线版本链接 (用于 copy 代码)
参考链接 2:https://datawhalechina.github.io/joyrl-book/

其它:
【勘误记录 链接】
——————
5、深度强化学习基础 ⭐️
开源内容:https://linklearner.com/learn/summary/11
——————————

随机性策略
输入: 状态
输出: 动作的概率分布

高维 或 连续动作空间 的问题

环境 和 奖励函数 无法控制
调 策略

神经网络的输入: 智能体 看到的东西
输出神经元的个数 和 动作数 一样

1、添加基线。 让奖励有正有负
2、分配合适的分数。
3、优势函数 1 + 2

REINFORCE 算法: 策略梯度、回合更新、蒙特卡洛。

P9:
actor-critic: 策略梯度 + 时序差分学习

异步优势演员-评论员算法 (asynchronous advantage actor-critic,A3C)
优势演员-评论员(advantage actor-critic,A2C)算法

在这里插入图片描述

joyrl:

基于 价值函数 的 RL 算法 的 3 个不足:
1、无法处理 具有连续动作空间 的问题
2、高方差。影响算法收敛性。
3、探索与利用的平衡 仍有改进空间

Asynchronous Advantage Actor Critic (A3C)
Advantage Actor Critic (A2C)       ~~~~~       No Asynchronous !!!

——————————————————

A2C VS A3C

OpenAI 关于 A2C 的博文链接

A2C VS A3C
A2C is a synchronous, deterministic variant of Asynchronous Advantage Actor Critic (A3C) which we’ve found gives equal performance.
A2C 是 A3C 的同步、确定性变体,其性能和 A3C 的性能相当。
——————————
Asynchronous Advantage Actor Critic method (A3C) 的 3 个关键思想:
1、一种对固定长度的经验片段(例如,20个时间步)进行操作的更新方案,并使用这些片段来计算 returns 和优势函数的估计。
2、在 策略 和 值函数 之间共享层的架构。
3、异步更新。
——————————
After reading the paper, AI researchers wondered whether the asynchrony led to improved performance (e.g. “perhaps the added noise would provide some regularization or exploration?”), or if it was just an implementation detail that allowed for faster training with a CPU-based implementation.
在阅读了关于 A3C 的论文后,AI 研究人员想知道异步是否会提高性能 (例如,“也许增加的 noise 会提供一些正则化或探索?”),或者这只是一个实现细节,允许使用基于 CPU 的实现进行更快的训练。
As an alternative to the asynchronous implementation, researchers found you can write a synchronous, deterministic implementation that waits for each actor to finish its segment of experience before performing an update, averaging over all of the actors. One advantage of this method is that it can more effectively use of GPUs, which perform best with large batch sizes. This algorithm is naturally called A2C, short for advantage actor critic.
作为异步实现的替代方案,研究人员发现 可以编写一个同步的、确定性的实现,在执行更新之前等待每个 actor 完成它的体验片段,对所有 actors 进行平均。
这种方法的一个优点是它可以更有效地使用 GPUs,这在大批量处理时表现最佳。
Our synchronous A2C implementation performs better than our asynchronous implementations—we have not seen any evidence that the noise introduced by asynchrony provides any performance benefit. This A2C implementation is more cost-effective than A3C when using single-GPU machines, and is faster than a CPU-only A3C implementation when using larger policies.
我们的同步 A2C 实现比异步实现性能更好——我们没有看到任何证据表明异步引入的 noise 提供了任何性能优势。
在使用单 GPU 机器时,这种 A2C 实现比 A3C 更具成本效益,在使用更大的策略时,比仅使用 CPU 的 A3C 实现更快。

——————————————————

A3C_2016_谷歌 DeepMind PDF 链接:Asynchronous Methods for Deep Reinforcement Learning

A3C 算法伪码

在这里插入图片描述

算法: Asynchronous Advantage Actor Critic (A3C)       ~~~~~       每一个 actor 学习者线程
// 设 全局共享参数向量 θ \theta θ θ v \theta_v θv,全局共享计数 T = 0 T=0 T=0
//设 线程特定参数向量 θ ′ \theta^\prime θ θ v ′ \theta^\prime_v θv
初始化 线程步数计数 t ← 1 t\leftarrow1 t1
重复以下步骤:
       ~~~~~~        重置梯度: d θ ← 0 d\theta\leftarrow0 dθ0 d θ v ← 0 d\theta_v\leftarrow0 dθv0
       ~~~~~~        同步线程特定参数 θ ′ = θ \theta^\prime=\theta θ=θ θ v ′ = θ v \theta^\prime_v=\theta_v θv=θv
       ~~~~~~        t s t a r t = t t_{\rm start}=t tstart=t
       ~~~~~~        获取 状态 s t s_t st
       ~~~~~~       重复以下步骤:
             ~~~~~~~~~~~~              根据策略 π ( a t ∣ s t ; θ ′ ) \pi(a_t|s_t;\theta^\prime) π(atst;θ) 执行动作 a t a_t at
             ~~~~~~~~~~~~              得到 奖励 r t r_t rt 和 新的状态 s t + 1 s_{t+1} st+1
             ~~~~~~~~~~~~              t ← t + 1 t\leftarrow t+1 tt+1
             ~~~~~~~~~~~~              T ← T + 1 T\leftarrow T+1 TT+1
       ~~~~~~        直到 s t s_t st 为终止状态 或 t − t s t a r t = = t max ⁡ t-t_{\rm start}==t_{\max} ttstart==tmax
       ~~~~~~        R = { 0                    终止状态  s t V ( s t , θ v ′ )      非终止状态  s t    / / 最后一个状态  B o o t s t r a p R=\left\{\begin{aligned} &0 ~~~~~~~~~~~~~~~~~~~终止状态~ s_t\\ &V(s_t,\theta_v^\prime)~~~~~非终止状态 ~s_t~~//最后一个状态 ~{\rm Bootstrap}\end{aligned}\right. R={0                   终止状态 stV(st,θv)     非终止状态 st  //最后一个状态 Bootstrap
       ~~~~~~       对于 i ∈ { t − 1 , ⋯   , t s t a r t } i\in\{t-1,\cdots,t_{\rm start}\} i{t1,,tstart}
             ~~~~~~~~~~~~              R ← r i + γ R R\leftarrow r_i+\gamma R Rri+γR
             ~~~~~~~~~~~~              关于 θ ′ \theta^\prime θ 的累积梯度: d θ ← d θ + ∇ θ ′ log ⁡ π ( a i ∣ s i ; θ ′ ) ( R − V ( s i ; θ v ′ ) ) d\theta\leftarrow d\theta+\nabla_{\theta^\prime}\log\pi(a_i|s_i;\theta^\prime)(R-V(s_i;\theta_v^\prime)) dθdθ+θlogπ(aisi;θ)(RV(si;θv))
             ~~~~~~~~~~~~              关于 θ v ′ \theta^\prime_v θv 的累积梯度: d θ v ← d θ v + ∂ ( R − V ( s i ; θ v ′ ) ) 2 ∂ θ v ′ d\theta_v\leftarrow d\theta_v+\frac{\partial(R-V(s_i;\theta_v^\prime))^2}{\partial\theta_v^\prime} dθvdθv+θv(RV(si;θv))2
       ~~~~~~        d θ dθ dθ 异步更新 θ θ θ,用 d θ v dθ_v dθv 异步更新 θ v θ_v θv
直到   T > T max ⁡ ~T>T_{\max}  T>Tmax

参考链接 1: https://github.com/datawhalechina/joyrl-book/tree/main/notebooks
参考链接 2: https://github.com/datawhalechina/easy-rl/tree/master/notebooks

  • A2C 代码实现

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

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

相关文章

LeetCode中MySQL题目 176.第二高的薪水

题目图片: 题目解答: SELECTIFNULL((SELECT DISTINCT SalaryFROM EmployeeORDER BY Salary DESCLIMIT 1 OFFSET 1),NULL) AS SecondHighestSalary解答解析: 就是用了一个叫做IFNULL的函数进行判断,如果查找出来的内容为空&…

信息系统的安全模型

1. 信息系统的安全目标 信息系统的安全目标是控制和管理主体(含用户和进程)对客体(含数据和程序)的访问。作为信息系统安全目标,就是要实现: 保护信息系统的可用性; 保护网络系统服务的…

第1章 人工智能的基础概念与应用导论

亲爱的读者朋友们,你们好!欢迎来到这个充满神奇与奥秘的人工智能世界。我知道,对于很多人来说,人工智能(AI)可能是个既神秘又高大上的词汇,仿佛遥不可及,只存在于科幻电影或者顶级科…

大数据学习之Clickhouse

Clickhouse-23.2.1.2537 学习 一、Clickhouse概述 clickhouse 官网网址:https://clickhouse.com/ ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 OLTP(联机事务处理系统)例如mysql等关系型数据库,在对于存储小数据量的时候&#xff…

Linux内核——Linux内核体系模式(二)

1 Linux系统的中断机制 Linux内核将中断分为两类:硬件中断和软件中断(异常)。每个中断是由0-255之间的一个数字进行标识。 中断int0-int31(0x00-0x1f)作为异常int32-int255由用户自己设定 int32-int47对应与8259A中断…

怎么永久禁止win10系统自动更新?一键屏蔽系统自动更新

现在 Windows 10 系统是很多办公用户的主力操作系统,可是 Windows 系统会自动更新,这会严重影响系统稳定性。因为微软虽然以提供更新为服务,但并不是每次更新它都是安全的。 接下来和我一起看看如何使用联想开发的小工具一键屏蔽系统自动更新…

数据库定义语言(DDL)

数据库定义语言(DDL) 一、数据库操作 1、 查询所有的数据库 SHOW DATABASES;效果截图: 2、使用指定的数据库 use 2403 2403javaee;效果截图: 3、创建数据库 CREATE DATABASE 2404javaee;效果截图: 4、删除数据…

Datax快速使用之牛刀小试

前言 一次我发现业务他们在用 datax数据同步工具,我尤记得曾经 19 年使用过,并且基于当时的版本还修复了个 BUG并且做了数据同步管道的集成开发。没想到时间过的飞快,业务方基于海豚调度 2.0.6 的版本中有在使用,由于业务方还没有…

光伏设计的原则和必备要素

光伏设计是一项复杂的工程任务,它涉及到将太阳能转换为电能的过程,并在各种环境条件下确保系统的稳定、高效运行。以下是光伏设计应遵循的原则和必备的要素。 一、光伏设计的原则 1、最大化能量产出:光伏设计的首要原则是通过合理的布局和选…

RedHat9 | 内部YUM本地源服务器搭建

服务器参数 标识公司内部YUM服务器主机名yum-server网络信息192.168.37.1/24网络属性静态地址主要操作用户root 一、基础环境信息配置 修改主机名 [rootyum-server ~]# hostnamectl hostname yum-server添加网络信息 [rootyum-server ~]# nmcli connection modify ens160 …

Python和tkinter单词游戏

Python和tkinter单词游戏 数据字典文本文件,文件名为Dictionary.txt,保存编码格式为:utf-8。文本内容:每行一个 单词 ,单词和解释用空格分隔,如 a art.一(个);每一(个) ability n.能力&#…

EKF+UKF+CKF+PF的效果对比|三维非线性滤波|MATLAB例程

前言 标题里的EKF、UKF、CKF、PF分别为:扩展卡尔曼滤波、无迹卡尔曼滤波、容积卡尔曼滤波、粒子滤波。 EKF是扩展卡尔曼滤波,计算快,最常用于非线性状态方程或观测方程下的卡尔曼滤波。 但是EKF应对强非线性的系统时,估计效果不如…

MySQL5.7安装初始化错误解决方案

问题背景 今天在给公司配数据库环境时,第一次报initializing database 数据库初始化错误? 起初没管以为是安装软件原因,然后就出现以下错误:如下图 点开log,我们观察日志会发现 无法识别的参数 ‘mysqlx_port=0.0’,???,官方的安装程序还能出这问题?

排序(堆排序、快速排序、归并排序)-->深度剖析(二)

前言 前面介绍了冒泡排序、选择排序、插入排序、希尔排序,作为排序中经常用到了算法,还有堆排序、快速排序、归并排序 堆排序(HeaSort) 堆排序的概念 堆排序是一种有效的排序算法,它利用了完全二叉树的特性。在C语言…

【Linux】:环境变量

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux环境变量的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门…

万字总结随机森林原理、核心参数以及调优思路

万字总结随机森林原理、核心参数以及调优思路 在机器学习的世界里,随机森林(Random Forest, RF)以其强大的预测能力和对数据集的鲁棒性而备受青睐。作为一种集成学习方法,随机森林通过构建多个决策树并将它们的预测结果进行汇总&…

SpringCloud_Eureka注册中心

概述 Eureka是SpringCloud的注册中心。 是一款基于REST的服务治理框架,用于实现微服务架构中的服务发现和负载均衡。 在Eureka体系中,有两种角色: 服务提供者和服务消费者。 服务提供者将自己注册到Eureka服务器,服务消费者从Eureka服务器中…

禹神electron学习~

最近时间比较富裕 咱们浅浅来学习下electron 视频在这禹神:一小时快速上手Electron,前端Electron开发教程_哔哩哔哩_bilibili 先看下流程模型 先决条件 首先第一步 查看你的node和npm版本 创建你的应用 创建一个文件夹 我创建的名称为my-electron-…

在Zotero中使用Deepl翻译

文章目录 Zotero简介Zotero下载插件下载在Zotero中安装插件获取Deepl密钥在Zotero中使用deepl 参考链接 Zotero简介 Zotero是一款非常实用的文献管理软件,可以快速帮助我们下载、分类和标注文献。由于专业需要,很多使用者需要阅读外文文献,Z…

无锁编程——从CPU缓存一致性讲到内存模型(1)

一.前言 1.什么是有锁编程,什么是无锁编程? 在编程中,特别是在并发编程的上下文中,“无锁”和“有锁”是描述线程同步和资源访问控制的两种不同策略。有锁(Locked): 有锁编程是指使用锁(例如互…