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

  • 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 代码实现

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习 --- stanford cs231学习笔记八(训练神经网络之dropout)

6,dropout 6,1 线性分类器中的正则化 在线性分类器中,我们提到过正则化,其目的就是为了防止过度拟合。例如,当我们要用一条curve去拟合一些散点的数据时,常常是不希望训练出来的curve过所有的点&#xff0c…

鸿蒙 DevEcho Studio 查看设备文件

在菜单栏单击View > Tool Windows > Device File Browser,打开Device File Browser。 从下拉列表中选择设备(设备需已连接)。 选择设备后,显示文件/文件夹列表,可进行以下操作: 右键单击目录…

Qt界面中的子窗口实现鼠标拖动边缘改变大小以及移动(完整demo代码)

目录 效果 拖拽 移动​编辑 实现 DragResizeWgt类.h文件 DragResizeWgt类.cpp文件 使用 testwidget窗口.ui文件 testwidget窗口.h文件 testwidget窗口.cpp文件 参考 效果 想要的效果就是类似于QT IDE中的效果,可以拖动边缘改变大小,用户自身可…

Qt:7.QWidget属性介绍(cursor属性-光标形状、font属性-控件文本样式、tooltip属性-控件提示信息)

目录 一、cursor属性-光标形状: 1.1cursor属性介绍: 1.2获取当前光标形状——cursor(): 1.3 设置光标的形状——setCursor(): 1.4 设置自定义图片为光标: 二、font属性-控件文本样式: 2.1font属性介绍…

一句话介绍什么是AI智能体?

什么是AI智能体? 一句话说就是利用各种AI的功能的api组合,完成你想要的结果。 例如你希望完成一个关于主题为啤酒主题的小红书文案图片,那么它就可以完成 前面几个步骤类似automa的组件,最后生成一个结果。

信息学奥赛初赛天天练-41-CSP-J2021基础题-n个数取最大、树的边数、递归、递推、深度优先搜索应用

PDF文档公众号回复关键字:20240701 2021 CSP-J 选择题 单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项) 4.以比较作为基本运算,在N个数中找出最大数,最坏情况下所需要的最少比…

汽车内饰塑料件光照老化实验箱

塑料件光照老化实验箱概述 塑料件光照老化实验箱,又称为氙灯老化试验箱,是一种模拟自然光照条件下塑料材料老化情况的实验设备。它通过内置的氙灯或其他光源,产生接近自然光的紫外线辐射,以此来加速塑料及其他材料的光老化过程。…

进程,线程,虚拟内存,交换技术

参考资料: 参考视频1https://www.bilibili.com/video/BV1Hs421M78w/?spm_id_from333.999.0.0&vd_source97411b9a8288d7869f5363f72b0d7613 参考视频2https://www.bilibili.com/video/BV1jE411W7e8/?spm_id_from333.337.search-card.all.click&vd_source…

【创建者模式-建造者模式】

概要 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式包含以下角色 抽象建造者类(Builder):这个接口规定要实现复杂对象的那些部分的创建,并不涉及具体的部件对象的创建。具体建…

使用explain优化慢查询的业务场景分析

问:你最害怕的事情是什么?答:搓澡问:为什么?答:因为有些人一旦错过,就不在了 Explain 这个词在不同的上下文中有不同的含义。在数据库查询优化的上下文中,“EXPLAIN” 是一个常用的 …

基于PHP的初中数学题库管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的初中数学题库管理系统 一 介绍 此初中数学题库管理系统基于原生PHP开发,数据库mysql,系统角色分为学生,教师和管理员。(附带参考设计文档) 技术栈:phpmysqlphpstudyvscode 二 功能 …

YOLOv10改进教程|C2f-CIB加入注意力机制

一、 导读 论文链接:https://arxiv.org/abs/2311.11587 代码链接:GitHub - CV-ZhangXin/AKConv YOLOv10训练、验证及推理教程 二、 C2f-CIB加入注意力机制 2.1 复制代码 打开ultralytics->nn->modules->block.py文件,复制SE注意力机…

Android 大话binder通信

戳蓝字“牛晓伟”关注我哦! 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章 由于 Android 大话binder通信(上) 和 Android 大话binder通信(下) 分为两篇阅读体验不好,顾合并为一篇。 本文摘要 用故事的方式把binder通信的整个过程都描述…

分享一个在 WinForm 桌面程序中使用进度条展示报表处理进度的例子,提升用户体验

前言 在有些比较消耗时间的业务场景中,比如生成报表等,如果没有在操作的过程中向用户反馈操作进度,会让用户以为程序 “死” 掉了,用户体验非常不好。 WinForm 桌面程序项目与 Console 项目不一样,如果 Console 项目…

C++ initializer_list类型推导

目录 initializer_list C自动类型推断 auto typeid decltype initializer_list<T> C支持统一初始化{ }&#xff0c;出现了一个新的类型initializer_list<T>&#xff0c;一切类型都可以用列表初始化。提供了一种更加灵活、安全和明确的方式来初始化对象。 class…

MIT6.s081 2021 Lab Page tables

Speed up system calls 思路 题目要求在每个进程初始化时为它的页表插入一个页表项&#xff0c;内核通过这样预先缓存页表项的操作&#xff0c;来加速特定系统调用的执行速度。 由于前不久刚过完一遍《OSTEP》&#xff0c;因此我认为自己对页表机制还算比较熟悉&#xff0c;…

Open AI Stream Completion Set Variable Inside Function PHP With Openai-php SDK

题意&#xff1a;使用 OpenAI 的 PHP SDK&#xff08;例如 openai-php&#xff09;来在函数内部设置和完成一个流&#xff08;stream&#xff09;相关的变量 问题背景&#xff1a; How to set variable inside this openai-php sdk function in stream completion ? I am usi…

【笔记】手工部署之linux中开放已安装的mysql与tomcat端口

在需要打包的springboot项目中输入mvn clean package 在target下面获得jar包 进入linux中你想要该jar包存在的位置 将jar包上传至linux中 此时在浏览器中输入linux的ip地址&#xff1a;端口号/mapping路径为404 故&#xff1a; 在linux中另开一个标签页 检查mysql和tomcat已…

JavaFX布局-BorderPane

JavaFX布局-BorderPane 实现方式Java实现FXML实现 综合案例 将容器空间分成五个区域&#xff1a;顶部&#xff08;Top&#xff09;、底部&#xff08;Bottom&#xff09;、左侧&#xff08;Left&#xff09;、右侧&#xff08;Right&#xff09;和中心&#xff08;Center&#…

Java案例找素数(三种方法)

目录 一&#xff1a;问题&#xff1a; 二&#xff1a;思路分析&#xff1a; 三&#xff1a;具体代码&#xff1a; 四&#xff1a;运行结果&#xff1a; 一&#xff1a;问题&#xff1a; 二&#xff1a;思路分析&#xff1a; 三&#xff1a;具体代码&#xff1a; Ⅰ&#xf…