目录

深度强化学习目录

简介

之前讲的PG算法和PPO算法,都是Policy-based的方法,接下来我们要讲Value-based的方法。之前说过了,P-B方法和V-B方法的区别在于前者训练的是策略本身(actor),而后者训练的是一种评判标准(critic)。critic能根据你输入的状态/动作,凭借策略π\piπ来输出对应的值函数。值函数有两种,一种是V(状态-值函数),一种是Q(状态-动作值函数),我们要讲的MC算法和TD算法是用来估计V值函数的。

符号

  • τ\tauτ:一轮游戏中的具体过程(trajectory),τ={s1,a1,r1,s2,a2,r2,…,sT,aT,rT}\tau=\{s_1,a_1,r_1,s_2,a_2,r_2,\ldots,s_T,a_T,r_T\}τ={s1​,a1​,r1​,s2​,a2​,r2​,…,sT​,aT​,rT​},是状态-行为-奖赏的时间序列。
  • GtG_tGt​:时间从t到结束的累积奖赏,由于t时刻的奖励是采取行动后t+1时刻才拥有的,所以GtG_tGt​满足:Gt=rt+1+rt+2+…G_t={r_{t+1}+r_{t+2}+\ldots}Gt​=rt+1​+rt+2​+…
  • Vπ(s)V_\pi(s)Vπ​(s):策略为π\piπ的状态-值函数,即状态s下预计累计回报的期望值,满足:Vπ(s)=E[Gt∣St=s]V_\pi(s)=\mathbb{E}[G_t\vert S_t=s]Vπ​(s)=E[Gt​∣St​=s]
  • Qπ(s,a)Q_\pi(s,a)Qπ​(s,a):策略为π\piπ的状态-动作值函数,即状态s下采取动作a预计累计回报的期望值,满足:Qπ(s,a)=E[Gt∣St=s,At=a]Q_\pi(s,a)=\mathbb{E}[G_t\vert S_t=s,A_t=a]Qπ​(s,a)=E[Gt​∣St​=s,At​=a]

蒙特卡洛(Monte-Carlo, MC)算法

MC算法就是通过采样来估计分布的一种算法。在一场游戏中,先让策略π\piπ去和环境进行交互获取数据,看到状态sss后计算整场游戏的累积奖赏GGG,记录下这些数据后训练一个回归问题来拟合Vπ(s)V_\pi(s)Vπ​(s)。如下图所示:

公式逼近为:Vπ(s)←Vπ(s)+α(Gt−Vπ(s))V_\pi(s)\leftarrow V_\pi(s)+\alpha(G_t-V_\pi(s))Vπ​(s)←Vπ​(s)+α(Gt​−Vπ​(s))

其中α\alphaα为学习率,越接近1学的越快。
显而易见,这样的训练需要大量的采样,并且每次update都需要一整轮的累积奖赏GtG_tGt​,因此实际情况下我们用TD算法会比较多。

时序差分(Temporal Difference, TD)算法

在MC算法中,我们每次都要算整场游戏的总和GGG。有的游戏很长,每次都要玩完游戏会花费很多时间。而TD算法只需要有…st,at,rt,st+1,…\ldots s_t,a_t,r_t,s_{t+1},\ldots…st​,at​,rt​,st+1​,…这样的序列,就可以应用。
这是基于一个显见的递推公式:Vπ(st)=Vπ(st+1)+rtV_\pi(s_t)=V_\pi(s_{t+1})+r_tVπ​(st​)=Vπ​(st+1​)+rt​

有了这样一个递推公式,我们只需要记录每一步的即时奖励rtr_trt​,通过神经网络直接训练VπV_\piVπ​函数,分别输入sts_tst​和st+1s_{t+1}st+1​,将两个结果相减,再将减后的结果与rtr_trt​进行回归拟合就行了。如下图所示:

公式逼近为:Vπ(s)←Vπ(s)+α(rt+1+Vπ(s′)−Vπ(s))V_\pi(s)\leftarrow V_\pi(s)+\alpha(r_{t+1}+ V_\pi(s')-V_\pi(s))Vπ​(s)←Vπ​(s)+α(rt+1​+Vπ​(s′)−Vπ​(s))

其中s′s's′是下一步的状态。

MC v.s. TD

MC的问题在于其方差过大。我们用MC算法回归估计的是累积奖赏GGG,而累积奖赏是许多step的和,而游戏的每一步step的奖赏rrr都有随机性,这份随机性也通过方差积累下来了。
而TD中的即时奖赏rrr同样具有随机性,但是方差会小很多。TD的问题在于V的估计可能不准,那递归调用就会放大这份估计的误差。

例子

假设通过一个策略π\piπ玩游戏,获得了以下8轮的τ\tauτ:

  • sa,ra=0,sb,rb=0,Ends_a,r_a=0,s_b,r_b=0,Endsa​,ra​=0,sb​,rb​=0,End
  • sb,r=1,Ends_b,r=1,Endsb​,r=1,End
  • sb,r=1,Ends_b,r=1,Endsb​,r=1,End
  • sb,r=1,Ends_b,r=1,Endsb​,r=1,End
  • sb,r=1,Ends_b,r=1,Endsb​,r=1,End
  • sb,r=1,Ends_b,r=1,Endsb​,r=1,End
  • sb,r=1,Ends_b,r=1,Endsb​,r=1,End
  • sb,r=0,Ends_b,r=0,Endsb​,r=0,End

我们通过MC和TD算法分别估测a和b的状态值函数。
Monte-Carlo:Vπ(sa)=0Vπ(sb)=34V_\pi(s_a)=0\\V_\pi(s_b)=\frac{3}{4}Vπ​(sa​)=0Vπ​(sb​)=43​
Temporal Difference:Vπ(sa)=Vπ(sb)=34V_\pi(s_a)=V_\pi(s_b)=\frac{3}{4}Vπ​(sa​)=Vπ​(sb​)=43​
如之前所说,MC算法就是采样状态s,然后计算其V值。我们发现在这8轮游戏中,a在第一轮出现一次,且一整轮的累积奖赏G1=ra+rb=0G_1=r_a+r_b=0G1​=ra​+rb​=0,所以Vπ(sa)=E[Ga]=G1=0V_\pi(s_a)=\mathbb{E}[G_a]=G_1=0Vπ​(sa​)=E[Ga​]=G1​=0;而b在8轮中都出现过了,其中有六轮中累积奖赏G1,2,3,4,5,6=1G_{1,2,3,4,5,6}=1G1,2,3,4,5,6​=1,两轮中累积奖赏G0,7=0G_{0,7}=0G0,7​=0,所以Vπ(sb)=E[Gb]=18∑i=07Gi=34V_\pi(s_b)=\mathbb{E}[G_b]=\frac{1}{8}\sum_{i=0}^7 G_i=\frac{3}{4}Vπ​(sb​)=E[Gb​]=81​∑i=07​Gi​=43​。
TD算法则是根据动作的即时奖赏来估计V值。在8轮中,状态sbs_bsb​都是最后一个状态,所以对于每一轮都有Vπ(sb)=Vπ(End)+rV_\pi(s_b)=V_\pi(End)+rVπ​(sb​)=Vπ​(End)+r。而由定义易得Vπ(End)=0V_\pi(End)=0Vπ​(End)=0,所以Vπ(sb)=34V_\pi(s_b)=\frac{3}{4}Vπ​(sb​)=43​。对于Vπ(sa)V_\pi(s_a)Vπ​(sa​),在第一轮中有Vπ(sa)=Vπ(sb)+raV_\pi(s_a)=V_\pi(s_b)+r_aVπ​(sa​)=Vπ​(sb​)+ra​,且ra=0r_a=0ra​=0,所以Vπ(sa)=Vπ(sb)=34V_\pi(s_a)=V_\pi(s_b)=\frac{3}{4}Vπ​(sa​)=Vπ​(sb​)=43​。

其他的critic

如果不估计VπV_\piVπ​而是用动作-状态值函数QπQ_\piQπ​,也是可以用MC和TD方法的,过程基本一致,不过Q函数接收的参数除了状态还有动作,因此需要更改一下公式。

总结

实际运用中用TD算法比较多。接下来讲Q-learning。

4.蒙特卡洛(Monte-Carlo, MC)+时序差分(Temporal Difference, TD)相关推荐

  1. 蒙特卡洛(Monte Carlo)方法的介绍和应用

    蒙特卡洛(Monte Carlo)方法的介绍和应用 蒙特卡洛(Monte Carlo)方法 在渲染中,我们经常听到术语"蒙特卡洛"(通常缩写为MC).但是这是什么意思?实际上,它所 ...

  2. 蒙特卡洛python求解派_利用蒙特卡洛(Monte Carlo)方法计算π值[ 转载]

    圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能采用近似算法. 国际公认的π值计算采用蒙特卡洛方法. 一.蒙特卡洛方法 蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试 ...

  3. 利用蒙特卡洛(Monte Carlo)方法计算π值

    圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能采用近似算法. 国际公认的π值计算采用蒙特卡洛方法. 蒙特卡洛方法 蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试验方 ...

  4. 蒙特卡洛(Monte Carlo)方法简介

    蒙特卡洛(Monte Carlo)方法的本质 蒙特卡洛(Monte Carlo)方法,即蒙特卡洛采样,是一种根据某已知分布的概率密度函数f(x),产生服从此分布的样本X的方法. 蒙特卡洛采样有很多种, ...

  5. Matlab用向量误差修正VECM模型蒙特卡洛Monte Carlo预测债券利率时间序列和MMSE 预测...

    原文链接:http://tecdat.cn/?p=27246  此示例说明如何从 VEC( q ) 模型生成 Monte Carlo 预测.该示例将生成的预测与最小均方误差 (MMSE) 预测和来自V ...

  6. 15分钟入门蒙特卡洛 Monte Carlo

    来自 | 知乎   作者 | 薛定豆 链接 | https://zhuanlan.zhihu.com/p/223042372 编辑 | 深度学习这件小事公众号 本文仅作学术交流,如有侵权,请联系后台删 ...

  7. Matlab用向量误差修正VECM模型蒙特卡洛Monte Carlo预测债券利率时间序列和MMSE 预测

    最近我们被客户要求撰写关于VECM的研究报告,包括一些图形和统计输出. 此示例说明如何从 VEC( q ) 模型生成 Monte Carlo 预测.该示例将生成的预测与最小均方误差 (MMSE) 预测 ...

  8. Matlab用Copula模型进行蒙特卡洛(Monte Carlo)模拟和拟合股票收益数据分析

    最近我们被客户要求撰写关于Copula的研究报告,包括一些图形和统计输出. 最近,copula 在仿真模型中变得流行起来.Copulas 是描述变量之间依赖关系的函数,并提供了一种创建分布以对相关多元 ...

  9. 《强化学习》中的 时序差分学习 Temporal-Difference Learning (基于与动态规划 DP 、蒙特卡洛方法 MC 的对比)

    前言: 学习了 Sutton 的<强化学习(第二版)>中时序差分学习的"预测"部分内容.前两章中,书介绍了 动态规划 与 蒙特卡洛方法 ,我们从二者与 时序差分学习 的 ...

  10. 强化学习3:蒙特卡洛和时序差分

    有模型学习和无模型学习 前面介绍的求解MDP的方法属于有模型学习的范畴,我们称为是动态规划(DP)方法,但在实际的强化学习应用场景下,DP方法往往不适用,原因有二: DP方法应用的前提条件是环境完全已 ...

最新文章

  1. mysql 导入导出摘要
  2. 绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来
  3. acrobat xi pro 简体中文语言支持包_性能出众佳能PRO-561绘图仪西安优杰报价
  4. 利用 PGO 提升 .NET 程序性能
  5. JUnit ExpectedException规则:超越基础
  6. 洛阳师范学院计算机科学与技术专业怎么样,2019洛阳师范学院专业排名
  7. 前端学习(1887)vue之电商管理系统电商系统之通过路由的形式显示用户列表
  8. python资源管理器选择文件_Python:在资源管理器中获取选定文件的列表(windows7)...
  9. [译]C# 7系列,Part 7: ref Returns ref返回结果
  10. Skywalking-08:OAL原理——如何动态生成Class类
  11. 硕博经验——科研论文阅读与写作实战技巧
  12. 制作ftl文件通过FreeMarke生成PDF文件(含图片处理)
  13. mysql查询1999年后出生的_饭后笑笑 1999年出生的和2000年出生的秘密
  14. python画板——小猪佩奇
  15. 音质卓越颜值在线,五款高人气头戴式HIFI音质蓝牙耳机排名
  16. Linux部署Tomcat踩的坑以及解决方案【8080无法访问、日志显示XX端口被占用、修改默认端口、无法提供安全连接】
  17. 2011年1月22日 上野公园,秋叶原游记
  18. 【马红“名师+”】:【名师引路】聆听薛法根《语文学习任务设计》讲座学习活动(一)
  19. border渐变 ios_iOS给视图添加渐变色
  20. 【电力电子】【2011.09】30kW距离扩展器的双向三相变换器设计与实现

热门文章

  1. wikisql 数据集解释_【wiki维基百科中文数据集】抽取wiki数据集——实操
  2. 维多利亚计算机专业怎么样,维多利亚大学计算机科学专业 学生要学哪些内容...
  3. 一款可以通过经度纬度精确查询天气的工具
  4. dis的前缀单词有哪些_dis前缀的英语单词
  5. XILINX FPGA最小逻辑单元CLBs, Slices和LUT区别
  6. zigbee CC2530 系列教程 11 LCD Nokia 5110液晶实验
  7. flink的流处理的source
  8. html input 密文,HTML input text框显示为密文
  9. 新建工程,如何通过git上传到阿里云code
  10. Modbus协议中文pdf免费下载地址