【李宏毅深度强化学习笔记】1、策略梯度方法(Policy Gradient)

【李宏毅深度强化学习笔记】2、Proximal Policy Optimization (PPO) 算法

【李宏毅深度强化学习笔记】3、Q-learning(Basic Idea)

【李宏毅深度强化学习笔记】4、Q-learning更高阶的算法

【李宏毅深度强化学习笔记】5、Q-learning用于连续动作 (NAF算法)

【李宏毅深度强化学习笔记】6、Actor-Critic、A2C、A3C、Pathwise Derivative Policy Gradient(本文)

【李宏毅深度强化学习笔记】7、Sparse Reward

【李宏毅深度强化学习笔记】8、Imitation Learning

-------------------------------------------------------------------------------------------------------

【李宏毅深度强化学习】视频地址:https://www.bilibili.com/video/av63546968?p=6

课件地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS18.html

-------------------------------------------------------------------------------------------------------

回顾

Policy gradient

G表示在采取一直玩到游戏结束所得到的cumulated reward。这个值是不稳定的,因为在某一个state采取同一个action,最后的结果不一定相同。因为state的变化也是有随机性的。

虽然经过多次实验后,可能会发现G最后会变成一个比较稳定的分布,那么理论上收集足够多的数据就能解决这一问题。但是因为policy gradient是一个on policy的方法,每次更新参数后又要重新收集数据。如果每次都要收集非常多的数据那也会造成效率的低下。

(更多 policy gradient的内容,可以看我另一篇笔记:https://blog.csdn.net/ACL_lihan/article/details/104020259)

那么为了使G变得比较稳定,我们可以用G的期望值来代替,这就需要引入value based的方法。

Q-learning

代表使用actor  在遇到某一状态s后,接下来使用actor  一直玩到游戏结束的cumulated reward的期望值。

代表使用actor  在遇到某一状态s,强制使用a,然后使用actor  一直玩到游戏结束的cumulated reward的期望值。

(更多 Q-learning的内容,可以看我另一篇笔记: https://blog.csdn.net/ACL_lihan/article/details/104041905)

Actor-Critic

Actor-Critic 的 Actor 的前生是 Policy Gradients , 这能让它毫不费力地在连续动作中选取合适的动作, 而 Q-learning 做这件事会很吃力。 那为什么不直接用 Policy Gradients 呢? 因为 Actor Critic 中的 Critic 的前生是 Q-learning 或者其他的 以值为基础的学习法 , 能进行单步更新, 而传统的 Policy Gradients 则是回合更新, 这降低了学习效率。所以就想到把两者结合起来变成Actor-Critic。

文章前面提到G是一个不稳定的值,我们要使用它的期望值来代替G。所以可以很容易想到,直接用来代替G的期望值。

而baseline就可以使用来代替

Advantage Actor-Critic

上面说到使用Q和V,这样就会使误差增加得更多,因为使用了不止一个网络。所以希望只使用V就能估计出Q。

由于在state 执行action 得到多少的reward  ,和会跳到什么state都是具有随机性的,所以需要加上期望值,即

现在我们拿掉期望值(不要太纠结可不可以直接拿掉,因为实验结果发现影响不大),使,这样就变成,这样我们就实现了只用V就实现原来Q-V的式子。

由于刚才拿掉了期望值,所以现在的 r(某一个step得到的reward) 是有一定随机性的。但是相较于前文的G(从某一时间点t开始到结束的cumulated reward), r 的方差会比G小很多。

红线的部分就是advantage函数。

执行过程:

  1. actor 与环境做互动收集资料
  2. 使用TD或MC以这些资料去估计value function
  3. 套用去更新
  4. 形成新的actor ,一直重复123步……

Tip1:actor和critic的参数可共享

在advantage actor-critic中我们要训练actor和critic这两个网络,两个网络都是输入状态s,来输出各自的结果。

以游戏为例子,输入的是游戏画面,前面的网络都是CNN在提取特征,这部分对actor和critic这两个网络来说都是一样的,所以前面几个层的网络参数是可以共享的。

Tip2:对actor的输出进行限制

这个限制是使输出的分布的熵尽量大(均匀分布的熵最大),即让actor采取不同动作的几率都差不多。这样才会多尝试不同的动作进行探索,而不是一直局限于使用那些已知的reward比较高的动作。

强化学习有一个问题就是训练过程很慢,为了解决这个问题就可以使用A3C算法。

Asynchronous Advantage Actor-Critic (A3C)

A3C和图中漫画的意思差不多,就是:既然一个actor训练速度慢,那就开多个actor,最后这些actor会把各自学到的经验集合起来,这样就实现数倍的训练速度。

具体过程是这样:

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

注意:假设worker 1一开始从global network复制到的参数是 ,在worker 1传回gradient之前,global network先收到其他worker的gradient并把参数更新到 ,这时worker 1仍然可以再传回gradient。

Pathwise Derivative Policy Gradient

以棋魂为例子,阿光作为actor下棋,佐为做critic。在原始的actor-critic中,佐为只判断阿光下的某一步棋好还是不好。而在Pathwise Derivative Policy Gradient中,critic会引导actor,让它知道采取什么动作才是好的。

具体来看这个算法。训练一个Actor,以状态s为输入,动作a为输出。训练一个Q function,以状态s和Actor输出的动作a为输入,以Q value为输出。这样就变成把Actor和Q function连接起来形成的一个大的网络。

在训练整个网络的时候,会固定住Q的参数,用gradient ascend的方法去调Actor的参数,使它输出的a最后能输出尽可能大的Q value。(类似于GAN,这里的Q是GAN里的discriminator,Actor则是GAN里的generator)

它的执行过程如上图。

  1. actor  去和环境做互动收集资料。
  2. 根据这些资料来训练Q function的网络去估计Q value,训练好网络后把它的参数固定住。
  3. 训练Actor网络,使它输出的动作a送到Q function的网络中能得到大的Q value,一直沿着这个方向训练下去。
  4. 形成新的actor ,重复123步……

在这过程中,可以使用Q Learning使用到的技巧,比如exploration、replay buffer……

Q Learning 和 Pathwise Derivative Policy Gradient 的执行过程对比:

不同点:

  1. 在state  下,要采取动作 a 直接由actor  决定。而在Q Learning采取的动作由决定。
  2. 类似于第1点,Q Learning做法是要采取哪个动作,是看哪个动作在会使target Q function的Q value最大就选哪个动作,而在Pathwise Derivative Policy Gradient中,要采取的动作直接由target actor 决定,直接把代入中直接得到要采取的动作。
  3. 之前的Q Learning只需要训练Q function这个network,而Pathwise Derivative Policy Gradient中还要训练 Actor ,使它输出的动作能获得尽可能大的Q value。
  4. 之前的Q Learning只需要每隔一段时间覆盖掉Q的target network ,而Pathwise Derivative Policy Gradient中还要覆盖target actor 

【李宏毅深度强化学习笔记】6、Actor-Critic、A2C、A3C、Pathwise Derivative Policy Gradient相关推荐

  1. 机器学习-54-RL-06-Actor-Critic(强化学习-A2C,A3C,Pathwise Derivative Policy Gradient)

    文章目录 Actor-Critic Actor-Critic Review – Policy Gradient Review – Q-Learning Actor-Critic Advantage A ...

  2. 【李宏毅深度强化学习笔记】3、Q-learning(Basic Idea)

    [李宏毅深度强化学习笔记]1.策略梯度方法(Policy Gradient) [李宏毅深度强化学习笔记]2.Proximal Policy Optimization (PPO) 算法 [李宏毅深度强化 ...

  3. 【李宏毅深度强化学习笔记】5、Q-learning用于连续动作 (NAF算法)

    [李宏毅深度强化学习笔记]1.策略梯度方法(Policy Gradient) [李宏毅深度强化学习笔记]2.Proximal Policy Optimization (PPO) 算法 [李宏毅深度强化 ...

  4. 李宏毅深度强化学习笔记

    文章目录 增强学习(RL)的一些基本概念: RL的基本组成: 三者相互作用的过程: Policy: 轨迹的概率: Expected Reward: Policy gradient: On-policy ...

  5. 李宏毅深度强化学习(国语)课程(2018) 笔记(一)Policy Gradient (Review)

    李宏毅深度强化学习(国语)课程(2018) https://www.bilibili.com/video/BV1MW411w79n?spm_id_from=333.337.search-card.al ...

  6. 李宏毅深度强化学习(国语)课程(2018) 笔记(八)Imitation Learning

    李宏毅深度强化学习(国语)课程(2018) 李宏毅深度强化学习(国语)课程(2018)_哔哩哔哩_bilibili ​        机器是可以与环境进行交互的,但是大部分情况下,机器却不能从这个过程 ...

  7. 李宏毅深度强化学习(国语)课程(2018) 笔记(二)Proximal Policy Optimization(PPO)

    李宏毅深度强化学习(国语)课程(2018)_哔哩哔哩_bilibili on-policy:要learn的agent和环境互动的agent是同一个,即agent一边跟环境互动,一边学习: off-po ...

  8. 深度强化学习笔记之PPO实现细节(2)

    深度强化学习笔记之PPO实现细节(2) 本文主要参考于Coding PPO from Scratch with PyTorch系列,但本文并不会像该系列一样手把手讲解全部的实现细节,只是记录一下自己在 ...

  9. 深度强化学习笔记(二)——Q-learning学习与二维寻路demo实现

    深度强化学习笔记(二)--Q-learning学习与二维寻路demo实现 文章目录 深度强化学习笔记(二)--Q-learning学习与二维寻路demo实现 前言 理论 什么是Q-Learning 算 ...

最新文章

  1. Java高级程序员(5年左右)面试的题目集
  2. [漫画]~RAGNAROK~(I部II部.全收入)
  3. Visual C++——Visual C++ 6.0 转 Visual Studio[Visual C++]编译错误[错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容]解决方案
  4. 为什么要学习汇编语言?如何正确学习汇编语言?
  5. HDOJ 1010 HDU 1010 Tempter of the Bone ACM 1010 IN HDU
  6. JVM证书制作步骤+耶鲁 CAS 配置
  7. Python实现中文文档的简体与繁体互相转换
  8. 拓端tecdat|R语言最优聚类数目k改进kmean聚类算法
  9. ZOJ 1060 Count the Color
  10. 繁荣 幸福 和平 PHP,松下幸之助——纯朴的心
  11. 网吧客户信息查询c语言,网吧经营管理之客户定位
  12. ccf公共钥匙盒python_CCF python 201709-2 公共钥匙盒
  13. 微信小程序全局主题颜色设置
  14. 基于单片机的水塔水位检测系统
  15. html常用标签梳理
  16. (十)Scratch制作《贪吃蛇》,超详细
  17. CSS font-style斜体字体倾斜体样式
  18. cJSON 使用详解
  19. MQ响应码是2059该如何解决
  20. JS正则表达式完整教程(略长)

热门文章

  1. C++课程设计报告——简易五子棋游戏
  2. 工程师学乐理(二)音阶及倾向性
  3. 决策树(信息熵、增益率、基尼指数)
  4. DirectX12(D3D12)基础教程(二十)—— 纹理数组(Texture Array)非DDS初始化操作
  5. 城市防汛应急管理智慧:可视化平台之气象预警
  6. 保险项目核保的规则和所负责业务的逻辑【杭州多测师】【杭州多测师_王sir】...
  7. Android 跳转到新浪微博
  8. SQL 实验项目7_数据库设计
  9. 区块链基础理论模拟试卷三
  10. Unity学习笔记:Unity 3D 飞机大战