【强化学习】14 —— A3C(Asynchronous Advantage Actor Critic)

news2024/11/26 0:27:26

A3C算法( Asynchronous Methods for Deep Reinforcement Learning)于2016年被谷歌DeepMind团队提出。A3C是一种非常有效的深度强化学习算法,在围棋、星际争霸等复杂任务上已经取得了很好的效果。接下来,我们先从A3C的名称入手,去解析这个算法。
在这里插入图片描述

Diagram of A3C high-level architecture.

A3C代表了异步优势动作评价(Asynchronous Advantage Actor Critic)

  • 异步(Asynchronous):因为算法涉及并行执行一组环境。与DQN不同,DQN中单个神经网络代表的单个智能体与单个环境交互,而A3C利用上述多个化身来更有效地学习。在A3C中,有一个全局网络(global network)和多个工作智能体(worker),每个智能体都有自己的网络参数集。这些智能体中的每一个都与它自己的环境副本交互,同时其他智能体与它们的环境交互(并行训练)。这比单个智能体(除了加速完成更多工作)更好的原因在于,每个智能体的经验独立于其他智能体的经验。这样,可用于训练的整体经验多样化

  • 优势(Advantage):因为策略梯度的更新使用优势函数

  • 动作评价(Actor Critic):因为这是一种动作评价(actor-critic)方法,它涉及一个在学得的状态值函数帮助下进行更新的策略 ∇ θ ′ log ⁡ π ( a t ∣ s t ; θ ′ ) A ( s t , a t ; θ v ) A ( s t , a t ; θ v ) = ∑ i = 0 k − 1 γ i r t + i + γ k V ( s t + k ; θ v ) − V ( s t ; θ v ) \begin{gathered}\nabla_{\theta'}\log\pi(a_t|s_t;\theta')A(s_t,a_t;\theta_v)\\\\A(s_t,a_t;\theta_v)=\sum_{i=0}^{k-1}\gamma^ir_{t+i}+\gamma^kV(s_{t+k};\theta_v)-V(s_t;\theta_v)\end{gathered} θlogπ(atst;θ)A(st,at;θv)A(st,at;θv)=i=0k1γirt+i+γkV(st+k;θv)V(st;θv)

    • 可以用 k k k步的bootstrap进行更新。

下图是一个基于16个环境平行训练的图示说明。
在这里插入图片描述

Actor-Critic Methods: A3C and A2C

A3C图示说明

  • 16个并行环境
  • θ \theta θ指的是策略的参数(actor), θ v \theta_v θv指的是值函数的参数(critic),两者梯度分别更新, α \alpha α α v \alpha_v αv则是相应的学习率。
  • 该算法为了鼓励探索,在策略更新中加入了一个熵奖励正则化项(嵌入在 d θ d\theta dθ中)。
  • 使用Hogwild!作为更新方法。Hogwild!是一种并行更新的方法,其中多个线程可能会同时更新共享参数。这种并行更新可能会导致线程间的冲突,但在这里作者认为这不会造成太大问题。
  • 在计算策略的优势时,算法采用了前向视角(forward view)的n步回报,而不是后向视角(backward view)。前向视角与后向视角的区别在于如何计算多步的奖励。后向视角的计算需要用到资格迹(eligibility traces),详情参考Sutton的圣经。

A3C算法伪代码
在这里插入图片描述
A3C算法实现
在这里插入图片描述

Simple Reinforcement Learning with Tensorflow Part 8: Asynchronous Actor-Critic Agents (A3C)

  1. 每个worker从global network复制参数
  2. 不同的worker与环境去做互动
  3. 不同的worker计算出各自的gradient
  4. 不同的worker把各自的gradient传回给global network
  5. global network接收到gradient后进行参数更新

Tensorflow版本代码

代码结构:

  • AC_Network这个类包含了创建网络本身的所有Tensorflow操作。
  • Worker这个类包含了AC_Network的一个副本,一个环境类,以及与环境交互和更新全局网络的所有逻辑。
  • 用于建立Worker实例并并行运行它们的高级代码。

Pytorch版本代码

参考了莫烦python——https://github.com/MorvanZhou/pytorch-A3C/tree/master
以及https://github.com/cyoon1729/Policy-Gradient-Methods/blob/master/a3c/a3c.py
(代码基于gymnasium去做的,但还有些问题,之后修改完再放出来),下面是运行上述代码中产生的问题:

  1. 莫烦python理想的结果如下所示
    在这里插入图片描述
    但在实际运行中出现下面两幅图的情况,reward达到峰值后迅速下降,猜测可能是worker学习到不好的策略,同步给global,使得原本好的策略持续变坏?

在这里插入图片描述
在这里插入图片描述
另一个版本的代码收敛较快,运行良好。也是利用交叉熵去作为正则化项的。在这里插入图片描述

w0 | episode: 978 391.0
w5 | episode: 979 396.0
w3 | episode: 980 399.0
w7 | episode: 981 500.0
w4 | episode: 982 383.0
w1 | episode: 983 500.0
w6 | episode: 984 500.0
w2 | episode: 985 500.0
w0 | episode: 986 500.0
w5 | episode: 987 500.0
w3 | episode: 988 500.0
w4 | episode: 989 500.0
w7 | episode: 990 500.0
w1 | episode: 991 500.0
w6 | episode: 992 500.0
w2 | episode: 993 500.0
w0 | episode: 994 500.0
w5 | episode: 995 500.0
w3 | episode: 996 500.0
w7 | episode: 997 500.0
w4 | episode: 998 500.0
w1 | episode: 999 500.0
w6 | episode: 1000 500.0

参考

[1] 伯禹AI
[2] https://www.davidsilver.uk/teaching/
[3] 动手学强化学习
[4] Reinforcement Learning
[5] Asynchronous Methods for Deep Reinforcement Learning
[6] 第9章演员-评论员算法
[7] Simple Reinforcement Learning with Tensorflow Part 8: Asynchronous Actor-Critic Agents (A3C)
[8] Actor-Critic Methods: A3C and A2C
[9] https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/intro-A3C

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

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

相关文章

视频号的视频怎么保存到相册,第三方工具快速下载保存!

视频号是目前非常火爆的短视频平台之一,许多用户在上面发布了各种精彩的视频内容。然而,很多人都想把视频保存到自己的相册中,以便随时欣赏和分享。那么,如何将视频号的视频保存到相册呢? 我们需要了解一个专注于视频…

Nacos注册中心--适合小白体制

认识和安装NacosNacos快速入门Nacos服务分级存储模型Nacos环境隔离 代码获取:1693905917/springCloud: springCloud学习 (github.com) 认识和安装Nacos 认识Nacos Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富&…

voronoi diagram(泰森多边形) 应用 - Panda Preserve

欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击。 背景知识 voronoi 提出 voronoi 图一开始是由荷兰气候学家AHThiessen提出,是用来计算区域内的降雨量。 由于气象塔是离散放置的,该气候学家就…

大促来袭 线下门店查价同样重要

都说双十一是电商的狂欢,这话没错,但线下门店同样也会利用这波热度,做促销引流量,自然也会出现不同的低价,不管是线上还是线下低价,都会对各自的生意有所影响,当然也不是禁止低价,是…

C++17对if/switch的增强

C17之前不允许在if/switch语句中定义一个临时变量 但在C17之后可以了

Rocky9 上安装 redis-dump 和redis-load 命令

一、安装依赖环境 1、依赖包 dnf -y install perl gcc gcc-c zlib-devel2、编译openssl 1.X ### 下载编译 wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz tar xf openssl-1.1.1t.tar.gz cd openssl-1.1.1t ./config --prefix/usr/local/openssl make make ins…

公会发展计划(GAP):经过实战考验的 Web3 任务模式

2020 年 12 月,Yield Guild Games 踏上了一段征程,以表彰兢兢业业的 Web3 游戏玩家所付出的时间和努力,同时为他们提供利用自己的技能促进个人成长的机会。这一旅程的第一步是于 2022 年 7 月推出的公会发展计划(GAP)。…

利用端口映射技术快速搭建微力私人网盘并实现远程访问【内网穿透】

文章目录 1.前言2. 微力同步网站搭建2.1 微力同步下载和安装2.2 微力同步网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 私有云盘作为云存储概念的延伸,虽然谈不上多么新颖,但是其…

蓝桥杯每日一题2023.11.1

题目描述 乘积最大 - 蓝桥云课 (lanqiao.cn) 题目分析 先对a[1] ~ a[n]排序 分类讨论&#xff1a; 1.k n 全选 2.k < n ①k是偶数&#xff08;结果必然非负&#xff09; 负数有偶数个&#xff08;负负得正&#xff09; 负数有奇数个&#xff08;只用选取偶数个即可&…

PC页面-企业微信扫码登录

vue代码引入企业微信扫码登录 企业微信后台管理配置。前端vue 代码使用的配置信息 项目需求PC端登录需要对接企业微信扫码登录功能。 根据同事研究成果&#xff0c;记录该功能的流程。 前端代码用的是vue。 企业微信后台管理配置。 企业微信后台管理登录连接 1、扫码登录企业…

店铺消费短信通知模板,可以自定义编辑内容群发

店铺消费短信通知模板&#xff0c;可以自定义编辑内容群发 上图可以对短信的发送情况进行查询&#xff0c;可以通过该软件群发短信。 下图为 佳易王 会员管理系统软件&#xff0c;在会员充值或消费的时候&#xff0c;可以设置自动发送短信通知信息。 可以自由设置&#xff0c;…

系列六、Mybatis的一级缓存

一、概述 Mybatis一级缓存的作用域是同一个SqlSession&#xff0c;在同一个SqlSession中执行两次相同的查询&#xff0c;第一次执行完毕后&#xff0c;Mybatis会将查询到的数据缓存起来&#xff08;缓存到内存中&#xff09;&#xff0c; 第二次执行相同的查询时&#xff0c;会…

文件字符流的使用

文件字符输入流 概述 文件字符输入流&#xff1a;FileReader。 作用&#xff1a;以内存为基准&#xff0c;把磁盘文件中的数据以字符的形式读取到内存中去。 为什么要用&#xff1f; 字节流读取中文时为了避免乱码需要一次性读到字节数组里&#xff0c;如果文件很大的话&a…

linux profile文件环境变量配置

1、profile 文件 profile 文件位于/etc/目录下 /etc/profile &#xff0c; 当登入系统时候获得一个 shell 进程时&#xff0c;其读取环境profile 文件时候会读取&#xff0c;/etc/bash.bashrc&#xff0c;/etc/profile.d 文件下配置的sh文件&#xff0c;所以我们也可以在profi…

一分钟了解:什么是Image Matting?

1. 基本概念 Image Matting是图像处理领域的一个基本任务&#xff0c;意为“图像背景抠出”或者“抠图”。这项任务在图像处理、影视制作领域广泛应用。比如&#xff0c;拍电影时常用的扣绿&#xff0c;就是演员在绿幕前面表演&#xff0c;后期再把人物抠出来放到一个新的背景…

java网上阅读网站系统eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 网上阅读网站系统是一套完善的web设计系统&#xff0c;对理解JSP java SSM框架 mvc编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发&#xff0c;数据库为Mysql5.0&a…

基于深度学习的菠萝与果叶视觉识别及切断机构设计

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、课题内容二、总体方案确定2.1 方案选择2.2 菠萝的视觉识别流程2.3 菠萝果叶切断机构设计流程 三 基于深度学习的菠萝检测模型3.1 卷积神经网络简介3.2 YOLO卷积神经网络3.3 图像采集与数据制作3.4 数据训练与…

学习笔记三十一:k8s安全管理:认证、授权、准入控制概述SA介绍

K8S安全实战篇之RBAC认证授权-v1 k8s安全管理&#xff1a;认证、授权、准入控制概述认证k8s客户端访问apiserver的几种认证方式客户端认证&#xff1a;BearertokenServiceaccountkubeconfig文件 授权Kubernetes的授权是基于插件形成的&#xff0c;其常用的授权插件有以下几种&a…

垃圾分类箱通过工业4G路由器实现无人值守远程管理

据今年发布的相关数据统计&#xff0c;人们日常生活中每人每天至少能制造1.2kg垃圾&#xff0c;在环保事业中日常垃圾处理已经成为一项紧迫且不可忽视的任务。为了实现城市清洁和环境保护&#xff0c;越来越多的地区开始引入垃圾分类箱。传统的垃圾分类箱管理方式存在着一些不便…

第十五章 EM期望极大算法及其推广

文章目录 导读符号说明混合模型伯努利混合模型(三硬币模型)问题描述三硬币模型的EM算法1.初值2.E步3.M步初值影响p,q 含义 EM算法另外视角Q 函数BMM的EM算法目标函数LEM算法导出 高斯混合模型GMM的EM算法1. 明确隐变量, 初值2. E步,确定Q函数3. M步4. 停止条件 如何应用GMM在聚…