Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >强化学习AC、A2C、A3C算法原理与实现!

强化学习AC、A2C、A3C算法原理与实现!

作者头像
石晓文
发布于 2018-12-21 02:49:52
发布于 2018-12-21 02:49:52
4.4K0
举报
文章被收录于专栏:小小挖掘机小小挖掘机

跟着李宏毅老师的视频,复习了下AC算法,新学习了下A2C算法和A3C算法,本文就跟大家一起分享下这三个算法的原理及tensorflow的简单实现。

视频地址:https://www.bilibili.com/video/av24724071/?p=4

1、PG算法回顾

在PG算法中,我们的Agent又被称为Actor,Actor对于一个特定的任务,都有自己的一个策略π,策略π通常用一个神经网络表示,其参数为θ。从一个特定的状态state出发,一直到任务的结束,被称为一个完整的eposide,在每一步,我们都能获得一个奖励r,一个完整的任务所获得的最终奖励被称为R。这样,一个有T个时刻的eposide,Actor不断与环境交互,形成如下的序列τ:

这样一个序列τ是不确定的,因为Actor在不同state下所采取的action可能是不同的,一个序列τ发生的概率为:

序列τ所获得的奖励为每个阶段所得到的奖励的和,称为R(τ)。因此,在Actor的策略为π的情况下,所能获得的期望奖励为:

而我们的期望是调整Actor的策略π,使得期望奖励最大化,于是我们有了策略梯度的方法,既然我们的期望函数已经有了,我们只要使用梯度提升的方法更新我们的网络参数θ(即更新策略π)就好了,所以问题的重点变为了求参数的梯度。梯度的求解过程如下:

上面的过程中,我们首先利用log函数求导的特点进行转化,随后用N次采样的平均值来近似期望,最后,我们将pθ展开,将与θ无关的项去掉,即得到了最终的结果。

所以,一个PG方法的完整过程如下:

我们首先采集数据,然后基于前面得到的梯度提升的式子更新参数,随后再根据更新后的策略再采集数据,再更新参数,如此循环进行。注意到图中的大红字only used once,因为在更新参数后,我们的策略已经变了,而先前的数据是基于更新参数前的策略得到的。

2、Actor-Critic(AC)

在PG策略中,如果我们用Q函数来代替R,同时我们创建一个Critic网络来计算Q函数值,那么我们就得到了Actor-Critic方法。Actor参数的梯度变为:

此时的Critic根据估计的Q值和实际Q值的平方误差进行更新,对Critic来说,其loss为:

AC代码的实现地址为:https://github.com/princewen/tensorflow_practice/tree/master/RL/Basic-AC-Demo

3、Advantage Actor-Critic(A2C)

我们常常给Q值增加一个基线,使得反馈有正有负,这里的基线通常用状态的价值函数来表示,因此梯度就变为了:

但是,这样的话我们需要有两个网络分别计算状态-动作价值Q和状态价值V,因此我们做这样的转换:

这样会是增加一定的方差,不过可以忽略不计,这样我们就得到了Advantage Actor-Critic方法,此时的Critic变为估计状态价值V的网络。因此Critic网络的损失变为实际的状态价值和估计的状态价值的平方损失:

A2C代码的实现地址为:https://github.com/princewen/tensorflow_practice/tree/master/RL/Basic-A2C-Demo

4、Asynchronous Advantage Actor-Critic (A3C)

我们都知道,直接更新策略的方法,其迭代速度都是非常慢的,为了充分利用计算资源,又有了Asynchronous Advantage Actor-Critic 方法,拿火影的例子来说,鸣人想要修炼螺旋手里剑,但是时间紧迫,因此制造了1000个影分身,这样它的学习速度也可以提升500倍:

A3C的模型如下图所示:

可以看到,我们有一个主网络,还有许多Worker,每一个Worker也是一个A2C的net,A3C主要有两个操作,一个是pull,一个是push: pull:把主网络的参数直接赋予Worker中的网络 push:使用各Worker中的梯度,对主网络的参数进行更新

A3C代码的实现地址为:https://github.com/princewen/tensorflow_practice/tree/master/RL/Basic-A3C-Demo

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小小挖掘机 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【强化学习】异步优势Actor-Critic, A3C算法(对比AC、A2C)
Asynchronous Advantage Actor-Critic, A3C(异步优势Actor-Critic)算法可以用通俗的方式解释为一种“团队协作”的强化学习方法,它的核心思想是通过多个线程(“团队成员”)同时工作,快速学习一个任务的最佳策略。
不去幼儿园
2024/12/26
3480
【强化学习】异步优势Actor-Critic, A3C算法(对比AC、A2C)
强化学习系列(九)--A3C
好久没有更新强化学习这个系列了,今天继续更新下强化学习系列的A3C技术,后面会结合当前最火大模型强化学习训练持续更新此系列。
languageX
2024/05/09
3060
强化学习(十五) A3C
    在强化学习(十四) Actor-Critic中,我们讨论了Actor-Critic的算法流程,但是由于普通的Actor-Critic算法难以收敛,需要一些其他的优化。而Asynchronous Advantage Actor-critic(以下简称A3C)就是其中比较好的优化算法。本文我们讨论A3C的算法原理和算法流程。
刘建平Pinard
2019/03/05
1.3K0
【强化学习】深入理解:基于价值(Value)VS 基于策略(Policy)
强化学习(Reinforcement Learning,RL) 大致可以分为两类:基于价值的算法 和 基于策略的算法、基于Actor-Critic(混合)以及基于模型的。这几类算法分别侧重于不同的学习方法和策略更新方式。
不去幼儿园
2025/04/22
6150
【强化学习】深入理解:基于价值(Value)VS 基于策略(Policy)
业界 | OpenAI开源算法ACKTR与A2C:把可扩展的自然梯度应用到强化学习
选自OpenAI Blog 作者:YUHUAI WU、ELMAN MANSIMOV、SHUN LIAO、ALEC RADFORD、JOHN SCHULMAN 近日,OpenAI 在其官方博客上发布了两个算法实现:ACKTR 和 A2C。A2C 是 A3C(Asynchronous Advantage Actor Critic)的一个同步变体,两者具有相同的性能。而 ACKTR 是一个比 A2C 和 TRPO 样本效率更高的强化学习算法,且每次更新仅比 A2C 略慢。 代码:https://github.co
机器之心
2018/05/09
2.2K0
强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等
在传统的方法中,我们有一个策略 $\pi$ 以及一个初始的演员与环境交互、收集数据以及反馈。通过每一步得到的反馈,我们进一步更新我们的策略 $\pi$ ,通常我们使用的更新方式是策略梯度。但是对于演员-评论员算法,我们不是直接使用每一步得到的数据和反馈进行策略 $\pi$ 的更新,而是使用这些数据和反馈进行价值函数的估计,这里我们通常使用的算法包括时序差分和蒙特卡洛等算法以及基于它们的优化算法。接下来我们再基于价值函数来更新策略,公式如下:
汀丶人工智能
2023/06/26
3590
深度强化学习智能交通 (I) :深度强化学习概述
随着城市化进程的加快和自动技术的最新发展,交通研究逐渐向智能化方向发展,称为智能交通系统(ITS)。人工智能(AI)试图用最少的人工干预来控制系统。智能交通系统与人工智能的结合为21世纪的交通研究提供了有效的解决方案。ITS 的主要目标是为参与者提供安全、有效和可靠的交通系统。为此,优化交通信号控制(TSC)、自动车辆控制、交通流控制等是研究的重点。
数据科学人工智能
2022/03/31
1.9K0
深度强化学习智能交通 (I) :深度强化学习概述
深度强化学习落地方法论算法选择:DQN、DDPG、A3C、PPO、TD3
虽然每年 RL 方向的 paper 满天飞,但真正具有普遍实用价值的突破性工作实在不多,大多数还是在经典框架基础上的改进和扩展。DRL 常规武器库里的存货主要还是老三样:DQN,DDPG 和 A3C,它们是深度学习时代最成熟、最能体现智慧结晶的三个 DRL 框架,你可以在 GitHub 上找到无数相关代码,有 OpenAI,DeepMind 和 Nvidia 这些大公司的,也有个人爱好者的。对于 DRL 初学者,它们是最佳的敲门砖;对于算法研究者,它们是最厚实的 “巨人肩膀”;对于算法工程师,它们是最顺手的试金石。你完全可以把三个框架都放到项目模拟器上跑一跑,看哪个效果好就用哪个。当然,这三个算法框架都有各自的特点和适用 domain,结合对项目的分析,是可以提前评估最合适的算法的。
汀丶人工智能
2023/10/11
6.1K0
深度强化学习落地方法论算法选择:DQN、DDPG、A3C、PPO、TD3
深度强化学习调研概览及最新论文成果(一)RL base & DQN-DDPG-A3C introduction
来源:https://zhuanlan.zhihu.com/p/25239682
CreateAMind
2018/07/24
1.3K0
深度强化学习调研概览及最新论文成果(一)RL base & DQN-DDPG-A3C introduction
【大咖读论文】田渊栋评 DeepMind 深度强化学习的异步算法
【新智元导读】在ICML2016上,谷歌 DeepMind 有9篇论文被接收,新智元特邀Facebook 人工智能实验室研究员田渊栋对其中的《 深度增强学习的异步算法》进行了点评。 作者介绍:田渊栋,
新智元
2018/03/22
1.3K0
【大咖读论文】田渊栋评 DeepMind 深度强化学习的异步算法
强化学习-A3C
loss由两部分组成,计算方式和第二篇其实大同小异,那篇文章里其实已经引入了Actor-Critic的思想。Actor就是策略网络(估计某个状态下每个动作的概率),Critic就是值函数网络(估计某个状态下的期望回报,也就是基准线),过程进行中得到的实际回报可以用MC或者TD计算得到。这些之前都有提到过了。
luxuantao
2021/02/24
4170
深度强化学习-DDPG算法原理和实现
在之前的几篇文章中,我们介绍了基于价值Value的强化学习算法Deep Q Network。有关DQN算法以及各种改进算法的原理和实现,可以参考之前的文章: 实战深度强化学习DQN-理论和实践 DQN三大改进(一)-Double DQN DQN三大改进(二)-Prioritised replay DQN三大改进(三)-Dueling Network 基于值的强化学习算法的基本思想是根据当前的状态,计算采取每个动作的价值,然后根据价值贪心的选择动作。如果我们省略中间的步骤,即直接根据当前的状态来选择动作。基
石晓文
2018/04/11
2.4K0
深度强化学习-DDPG算法原理和实现
深度强化学习智能交通 (I) :深度强化学习概述
随着城市化进程的加快和自动技术的最新发展,交通研究逐渐向智能化方向发展,称为智能交通系统(ITS)。人工智能(AI)试图用最少的人工干预来控制系统。智能交通系统与人工智能的结合为21世纪的交通研究提供了有效的解决方案。ITS 的主要目标是为参与者提供安全、有效和可靠的交通系统。为此,优化交通信号控制(TSC)、自主车辆控制、交通流控制等是研究的重点。
数据酷客
2020/05/09
1.9K0
深度强化学习智能交通 (I) :深度强化学习概述
A3C——一种异步强化学习方法
1、简介2、算法细节3、代码3.1 主结构3.2 Actor Critic 网络3.3 Worker3.4 Worker并行工作4、参考
CristianoC
2020/06/02
1.1K0
深度强化学习-DDPG算法原理和实现
基于值的强化学习算法的基本思想是根据当前的状态,计算采取每个动作的价值,然后根据价值贪心的选择动作。如果我们省略中间的步骤,即直接根据当前的状态来选择动作。基于这种思想我们就引出了强化学习中另一类很重要的算法,即策略梯度(Policy Gradient)。之前我们已经介绍过策略梯度的基本思想和实现了,大家可以有选择的进行预习和复习:
用户1332428
2023/03/28
1K0
深度强化学习-DDPG算法原理和实现
视频 | NIPS 2017线上分享第一期:新型强化学习算法ACKTR
上周我们发布了《攻略 | 虽然票早已被抢光,你可以从机器之心关注 NIPS 2017》,在 NIPS 2017 正式开始前,我们将选出数篇优质论文,邀请论文作者来做线上分享,聊聊理论、技术和研究方法。11 月 8 日,第一期分享已经结束。 周三晚上,多伦多大学三年级博士生 Yuhuai Wu(吴宇怀)为大家分享了 NIPS 2017 论文《Scalable trust-region method for deep reinforcement learning using Kronecker-factored
机器之心
2018/05/10
8800
强化学习基础篇3:DQN、Actor-Critic详细讲解
在之前的内容中,我们讲解了Q-learning和Sarsa算法。在这两个算法中,需要用一个Q表格来记录不同状态动作对应的价值,即一个大小为 $状态个数,动作个数$ 的二维数组。在一些简单的强化学习环境中,比如迷宫游戏中(图1a),迷宫大小为4*4,因此该游戏存在16个state;而悬崖问题(图1b)的地图大小为 4*12,因此在该问题中状态数量为48,这些都属于数量较少的状态,所以可以用Q表格来记录对应的状态动作价值。但当我们需要应用强化学习来解决实际问题时,比如解决国际象棋问题或围棋问题,那么环境中就会包含 $10^{47}$ 个state或 $10^{170}$ 个state,如此庞大的状态数量已经很难用Q表格来进行存储,更不要说在3D仿真环境中,机器人手脚弯曲的状态是完全不可数的。由此可以看到Q表格在大状态问题和不可数状态问题时的局限性。同时,在一个强化学习环境中,不是所有的状态都会被经常访问,其中有些状态的访问次数很少或几乎为零,这就会导致价值估计并不可靠。
汀丶人工智能
2023/06/03
2.5K0
强化学习基础篇3:DQN、Actor-Critic详细讲解
深度强化学习-Actor-Critic算法原理和实现
在之前的几篇文章中,我们介绍了基于价值Value的强化学习算法Deep Q Network。有关DQN算法以及各种改进算法的原理和实现,可以参考之前的文章: 实战深度强化学习DQN-理论和实践:https://www.jianshu.com/p/10930c371cac DQN三大改进(一)-Double DQN:https://www.jianshu.com/p/fae51b5fe000 DQN三大改进(二)-Prioritised replay:https://www.jianshu.com/p/db1
石晓文
2018/04/11
2.3K0
深度强化学习-Actor-Critic算法原理和实现
从框架到经典方法,全面了解分布式深度强化学习DDRL
AlphaGo 是一个在人机博弈中赢得众多职业围棋手的 agent 机器人。随着 AlphaGo 的突破,深度强化学习(Deep Reinforcement Learning,DRL)成为一种公认的解决连续决策问题的有效技术。人们开发了大量算法来解决介于 DRL 与现实世界应用之间的挑战性问题,如探索与开发困境、数据低效、多 agent 合作与竞争等。在所有这些挑战中,由于 DRL 的试错学习机制需要大量交互数据,数据低效(data inefficiency)是最受诟病的问题。为了应对这一问题,受到分布式机器学习技术的启发,分布式深度强化学习 (distributed deep reinforcement learning,DDRL) 已提出并成功应用于计算机视觉和自然语言处理领域。有观点认为,分布式强化学习是深度强化学习走向大规模应用、解决复杂决策空间和长期规划问题的必经之路。
机器之心
2024/02/26
1.2K0
从框架到经典方法,全面了解分布式深度强化学习DDRL
强化学习入门
强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。
用户2794661
2022/05/30
1.2K0
推荐阅读
相关推荐
【强化学习】异步优势Actor-Critic, A3C算法(对比AC、A2C)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档