笔记整理自李宏毅老师的公开课

Asynchronous Advantage Actor-Critic (A3C)

回顾Policy Gradient的梯度参数:
∇Rˉθ≈1N∑n=1N∑t=1Tn(∑t′=tTnrt′−trt′n−b)∇log⁡pθ(atn∣stn)\nabla \bar{R}_{\theta}\approx \frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}\left(\sum_{t^{'}=t}^{T_n}r^{t^{'}-t_{r^{n}_{t^{'}}}}-b\right)\nabla\log{p_{\theta}(a_{t}^{n}|s_{t}^{n})} ∇Rˉθ​≈N1​n=1∑N​t=1∑Tn​​⎝⎛​t′=t∑Tn​​rt′−trt′n​​−b⎠⎞​∇logpθ​(atn​∣stn​)

如果令Gtn=∑t′=tTnrt′−trt′nG_{t}^{n}=\sum_{t^{'}=t}^{T_n}r^{t^{'}-t_{r^{n}_{t^{'}}}}Gtn​=∑t′=tTn​​rt′−trt′n​​,GtnG_t^{n}Gtn​是Actor跟环境互动而来的,那么GGG则会使不稳定的。因为数值本身具有随机性,而且环境也有随机性。不过,如果我们sample足够多的次数,那么均值会比较稳定。

其实,本质上来说,有下面的公式成立:
E[Gtn]=Qπθ(stn,atn)E\left[G_{t}^{n}\right]=Q^{\pi_{\theta}}(s_t^{n},a_t^{n}) E[Gtn​]=Qπθ​(stn​,atn​)
那么问题转换成了求解Qπθ(stn,atn)Q^{\pi_{\theta}}(s_t^{n},a_t^{n})Qπθ​(stn​,atn​);同时,bbb可以用Vπθ(stn)V^{\pi_{\theta}}(s_t^{n})Vπθ​(stn​)进行表示。但是,这样做的缺点在于,我们需要估计QπQ^\piQπ和VπV^\piVπ这两个神经网络,这样的训练量大,而且结果不稳定。引入一个代换法则:
Qπ(stn,atn)=E[rtn+Vπ(st+1n)]Q^\pi\left(s_t^n,a_t^n\right)=E\left[r_t^n+V^\pi\left(s_{t+1}^n\right)\right] Qπ(stn​,atn​)=E[rtn​+Vπ(st+1n​)]
实际使用时,可以去掉期望值,原作者的Paper实验这样做的效果比较好。
Qπ(stn,atn)=rtn+Vπ(st+1n)Q^\pi\left(s_t^n,a_t^n\right)=r_t^n+V^\pi\left(s_{t+1}^n\right) Qπ(stn​,atn​)=rtn​+Vπ(st+1n​)
可以这么理解,Q​Q​Q​的意思是为了表示st​s_t​st​​状态下,采取行动at​a_t​at​​后会获得的所有的奖励总和,那么和自然,这个公式可以表示成当前这一步行动的奖励rt​r_t​rt​​累加上下一个状态的奖励V​V​V​。r​r​r​是个随机值,由环境等的因素共同决定,这也是这个模型的缺点,由随机值的影响。

那么,最终的梯度可以表示为:
∇Rˉθ≈1N∑n=1N∑t=1Tn(rtn+Vπ(st+1n)−Vπ(stn))∇log⁡pθ(atn∣stn)\nabla \bar{R}_{\theta}\approx \frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}\left(r_t^n+V^\pi(s^n_{t+1})-V^\pi(s^n_t)\right)\nabla\log{p_{\theta}(a_{t}^{n}|s_{t}^{n})} ∇Rˉθ​≈N1​n=1∑N​t=1∑Tn​​(rtn​+Vπ(st+1n​)−Vπ(stn​))∇logpθ​(atn​∣stn​)
训练时候的QQQ和VVV网络可以共享前面几层的参数,只是在最后输出的时候,变换到不同的网络层中。训练的时候,可以使用输出参数的交叉熵作为π(s)\pi(s)π(s)的参数,那么交叉熵越大,说明越需要进行Exploration。

A3C是同时开多个环境进行产生数据,并不断更新。

Pathwise Derivative Policy Gradient

在之前的QπQ^\piQπ网络中,我们输入一个游戏状态sss和一个行动aaa,时候会得到一个Qπ(s,a)Q^\pi(s,a)Qπ(s,a)作为输出。而该方法的特别之处在于,专门产生一个Actorπ\piπ网络用于生成行动aaa,这样,一个网络的输出就会作为另一个网络的输入。训练的时候,需要先训练QπQ^\piQπ网络,之后固定住该网络,再去训练π\piπ网络。

那么,Actor网络的梯度是:
θπ′=θπ+η∇θπQπ(s,a)\theta^{\pi^{'}}=\theta^\pi+\eta\nabla_{\theta^\pi}Q^\pi(s,a) θπ′=θπ+η∇θπ​Qπ(s,a)

给出一般性的算法:

  • 初始化Q-function QQQ,target Q-function Q^=Q\hat{Q}=QQ^​=Q,actor π\piπ,target actor π^=π\hat{\pi}=\piπ^=π
  • 在每个episode中:
    • 对于每一步

      • 给定一个状态sts_tst​,基于π\piπ采取行动ata_tat​,注意这里需要Exploration
      • 获得一个奖励rtr_trt​,并到达一个新的状态st+1s_{t+1}st+1​
      • 把(si,ai,ri,si+1)(s_i,a_i,r_i,s_{i+1})(si​,ai​,ri​,si+1​)存储到buffer
      • buffer中随机获取一个批次的(si,ai.ri,si+1)(s_i,a_i.r_i,s_{i+1})(si​,ai​.ri​,si+1​)
      • 目标函数y=ri+Q^(si+1,π^(si+1))y=r_i+\hat{Q}(s_{i+1},\hat{\pi}(s_{i+1}))y=ri​+Q^​(si+1​,π^(si+1​))
      • 更新QQQ的参数,使得Q(si,ai)Q(s_i,a_i)Q(si​,ai​)接近yyy
      • 更新π\piπ的参数去最大化Q(si,π(si))Q(s_i,\pi(s_i))Q(si​,π(si​))
      • 每C步执行更新Q^=Q\hat{Q}=QQ^​=Q,π^=π\hat{\pi}=\piπ^=π

强化学习的数学基础4---Q-Learning进阶相关推荐

  1. 强化学习入门 : 一文入门强化学习 (Sarsa、Q learning、Monte-carlo learning、Deep-Q-Network等)

    最近博主在看强化学习的资料,找到这两个觉得特别适合入门,一个是"一文入门深度学习",一个是"莫烦PYTHON". 建议:看资料的时候可以多种资料一起参考,一边调 ...

  2. [强化学习实战]出租车调度-Q learning SARSA

    出租车调度-Q learning & SARSA 案例分析 实验环境使用 同策时序差分学习调度 异策时序差分调度 资格迹学习调度 结论 代码链接 案例分析 本节考虑Gym库里出租车调度问题(T ...

  3. 强化学习的数学基础2---PPO算法

    强化学习的数学基础2-PPO系列算法 这篇笔记来自于李宏毅老师的公开课 PPO算法全称是Proximal Policy Optimization算法.该类算法是为了解决Policy Gradient算 ...

  4. 强化学习 最前沿之Hierarchical reinforcement learning(一)

    强化学习-最前沿系列 深度强化学习作为当前发展最快的方向,可以说是百家争鸣的时代.针对特定问题,针对特定环境的文章也层出不穷.对于这么多的文章和方向,如果能撇一隅,往往也能够带来较多的启发. 本系列文 ...

  5. 【强化学习】双深度Q网络(DDQN)求解倒立摆问题 + Pytorch代码实战

    文章目录 一.倒立摆问题介绍 二.双深度Q网络简介 三.详细资料 四.Python代码实战 4.1 运行前配置 4.2 主要代码 4.3 运行结果展示 4.4 关于可视化的设置 一.倒立摆问题介绍 A ...

  6. 【论文笔记】分层强化学习鼻祖:Feudal Reinforcement Learning 1993

    1993年的分层强化学习:Feudal Reinforcement Learning 概括 1992年没有深度学习,人们研究RL的思路与现在并不相同.但不可否认,提出"分层强化学习" ...

  7. 分层强化学习综述:Hierarchical reinforcement learning: A comprehensive survey

    论文名称:Hierarchical reinforcement learning: A comprehensive survey 论文发表期刊:ACM Computing Surveys 期刊影响因子 ...

  8. 强化学习(九)Deep Q-Learning进阶之Nature DQN

    在强化学习(八)价值函数的近似表示与Deep Q-Learning中,我们讲到了Deep Q-Learning(NIPS 2013)的算法和代码,在这个算法基础上,有很多Deep Q-Learning ...

  9. 深度强化学习-基于价值的强化学习-TD算法和Q学习(三)

    本文主要介绍TD算法和Q学习算法 目录 TD算法: Q学习算法: 同策略,异策略: TD算法: 即时间差分 (Temporal Difference):此处用举例子方法来帮助大家理解 1.假设我从天津 ...

  10. 强化学习笔记(4)-深度Q学习

    以下为学习<强化学习:原理与python实现>这本书的笔记. 在之前学习到的强度学习方法中,每次更新价值函数只更新某个状态动作对的价值估计.但是有些情况下状态动作对的数量非常大,不可能对所 ...

最新文章

  1. Apollo分布式配置中心入门
  2. 如何用Python从数据库里面获取数据?4个步骤就能轻松实现
  3. python删除列表元素_追求简单C++之删除STL列表的元素
  4. java日历类add方法_Java日历computeTime()方法及示例
  5. javaweb解决编码问题_学习编码? 首先,学会解决问题。
  6. LG-Transformer:全局和局部建模Transformer结构新作
  7. mysql noinstall 5.5_mysqlnoinstall 手动安装
  8. H3C OSPF基本配置命令
  9. 模糊控制 进化算法 PID参数整定
  10. 【fiddler手机抓包不能上网问题解决】
  11. ssoj3991: 雪人(snowman)
  12. 2019 力扣杯全国秋季编程大赛:3. 机器人大冒险(模拟)
  13. 一些CSS兼容性处理写法汇总。
  14. centos系统添加桌面图标
  15. 突发!又一MCU大厂暂停接单!
  16. 动软代码生成器基础使用
  17. objc.io 3.1 图像是怎样绘制到屏幕的 (转)
  18. NFS挂载文件系统出现nfsnobody解决方式
  19. 【Git】GitHub flow笔记 | GitHub flow和Git flow的区别
  20. PHP——你应该知道的面试题

热门文章

  1. Python界面程序实例:按钮漂移,用Python小套路来撩女神
  2. 子序列问题sequence(【CCF】NOI Online能力测试2 提高组第二题 )
  3. CSDN Cookbook by Eric
  4. X86,X86_32,X86_64
  5. npm下载缓慢解决方法
  6. [转]mysql免安装版配置
  7. 「 博客迁移声明 」迫于想折腾个人博客
  8. MySQL学习记录 (五) ----- 存储函数、存储过程和触发器
  9. 【JVM】浅谈对OOM的认识
  10. POJ1741 Tree(点分治)