跟着李宏毅老师的视频,复习了下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


http://www.taodudu.cc/news/show-2260432.html

相关文章:

  • 论文笔记之A3C
  • A3C算法
  • A3C
  • 强化学习之AC、A2C和A3C
  • 强化学习基础 | (15) A3C
  • 强化学习的A3C算法应用(训练Atari游戏)
  • A3C的算法原理和算法流程
  • 拉卡拉支付最新支付方式预览——刷脸支付上线
  • 支付结算系统
  • 二清 VS 清结算
  • 教你免费使用刷脸支付设备,蜻蜓二代返还政策解析
  • 第二代支付系统专题之报文篇(一)小额支付报文完整版(含二代新增功能业务说明)...
  • 支付宝刷脸支付颠覆传统?网友:我不刷脸
  • 支付通道介绍
  • 第二代支付系统专题之报文篇(一)小额支付报文完整版(含二代新增功能业务说明)
  • Java订单接入支付宝二 支付回调
  • IBM8800存储,光钎交换机384B,主机Linux,二代支付前置
  • 浅析支付模块
  • 16/4/4二代支付硬盘故障处理
  • 加快二代支付系统建设
  • 第二代支付系统专题之报文篇(二)大额支付报文完整版(含二代新增功能业务说明)
  • 加快二代支付系统建设改进央行支付清算服务
  • other|2019最新PayPal二代支付接口Smart Payment Buttons开发
  • 银行二代支付
  • ABAQUS安装
  • abaqus2018+intel fortran2019+vs2015安装全记录
  • Abaqus6.14.4 Linux详细图文安装教程
  • centos7安装abaqus2020
  • ansys2017安装教程_abaqus2017安装教程 - 仿真模拟 - 小木虫 - 学术 科研 互动社区
  • testin云测试

深度强化学习算法 A3C (Actor-Critic Algorithm)相关推荐

  1. 17种深度强化学习算法用Pytorch实现(附链接)

    来源:新智元 本文约1300字,建议阅读5分钟. 本文为你介绍一个用PyTorch实现了17种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度RL算法. [ 导读 ]深度强化学习已经在许多领域 ...

  2. openssl 添加自定义算法_GitHub:用PyTorch实现17种深度强化学习算法

    [新智元导读]深度强化学习已经在许多领域取得了瞩目的成就,并且仍是各大领域受热捧的方向之一.本文推荐一个用 PyTorch 实现了 17 种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度 R ...

  3. 近端策略优化深度强化学习算法

    PPO:Proximal Policy Optimization Algorithms,其优化的核心目标是: ppo paper 策略梯度 以下是马尔可夫决策过程MDP的相关基础以及强化学习的优化目标 ...

  4. 【招聘推荐】启元世界招聘深度强化学习算法工程师

    深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 编辑.排版:DeepRL 深度强化学习算法工程师 ...

  5. 深度强化学习算法调参

    深度强化学习调参技巧:以D3QN.TD3.PPO.SAC算法为例 这个参考链接. 如何选择深度强化学习算法? 参考链接. 影响PPO算法性能的10个关键技巧(附PPO算法简洁Pytorch实现) 主要 ...

  6. 【假期学习计划】深度强化学习算法与应用培训班

    深度强化学习应用与实战培训班内容 一.强化学习概述 二.马尔科夫决策过程 1.马尔可夫性 2.马尔可夫决策过程 3.策略与价值 4.最优化原理 5.MDPs扩展 三.动态规划 1.动态规划 2.价值迭 ...

  7. 【重磅】Tensorflow2.0实现29种深度强化学习算法大汇总

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要3分钟 Follow小博主,每天更新前沿干货 来源:深度强化学习实验室 作者:王健树 [导读]今天给大家推荐一个超赞的强化学习项目资料,该项目 ...

  8. 学界 | 量化深度强化学习算法的泛化能力

    来源:AI 科技评论 OpenAI 近期发布了一个新的训练环境 CoinRun,它提供了一个度量智能体将其学习经验活学活用到新情况的能力指标,而且还可以解决一项长期存在于强化学习中的疑难问题--即使是 ...

  9. 基于值的深度强化学习算法

    目录 DQN2013 -- Playing Atari with Deep Reinforcement Learning DQN2015 -- Human-level control through ...

  10. 两种深度强化学习算法在网络调度上的应用与优化(DQN A3C)

    首先给出论文地址和代码, Reinforcement Learning Based Scheduling Algorithm for Optimizing Age of Information in ...

最新文章

  1. 新建本地仓库,同步远程仓场景,出现git branch --set-upstream-to=origin/master master 解决方法...
  2. atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js
  3. PostgreSQL9中stream同步与Slony同步的比较
  4. Laravel中一些要记住 的写法
  5. 在Python中操纵json数据的最佳方式
  6. 【Linux】一步一步学Linux——chmod命令(110)
  7. 详解 Spotlight on MySQL监控MySQL服务器
  8. python有哪些常用的package_个人Python常用Package及其安装
  9. 计算机专用英语词汇pdf,计算机专用英语词汇1500词.pdf
  10. git clone指定分支到本地
  11. web渗透中bypass防护系统
  12. 微信小程序——绘制时钟
  13. 看 AWS 如何通过 Nitro System 构建竞争优势
  14. z8350cpu linux,跑分 Intel Z8350小有提升_平板电脑评测-中关村在线
  15. 51个 Scratch 趣味小游戏(源码)
  16. 论文阅读笔记《Low-shot Visual Recognition by Shrinking and Hallucinating Features》
  17. 佳能MP4视频恢复方法
  18. 对Livox_avia内置IMU-BMI088进行内参标定
  19. python 等高线图标注_Pyplot等高线图-clabel间距
  20. 乐融致新不再纳入乐视网合并报表范围 融创已是最大股东

热门文章

  1. 多比特杯第四届ACM程序设计竞赛同步赛
  2. 矩阵分解-Cholesky分解
  3. 图片验证码是如何刁难用户的?一招教你彻底去除图片验证码!
  4. 斐讯K2P B1 博通TTL刷机方法
  5. FreeSWITCH之ESL接口
  6. 三菱plc编程2000个实例
  7. 机器视觉:线阵相机知识汇总
  8. mongos、nanomsg、zeroMQ简述和go-mongos使用实例
  9. 看书和写书,简单而复杂的反思-读书分享会感悟
  10. 教你如何测试U盘读写速度?