Monte Carlo与TD算法
RL 博客:http://blog.sciencenet.cn/home.php?mod=space&uid=3189881&do=blog&view=me&from=space&srchtxt=RL&page=1
转自:http://blog.sciencenet.cn/home.php?mod=space&uid=3189881&do=blog&id=1128648,感谢分享
Monte carlo 和TD 都是model-free 的估值方法, TD 用于online RL 场景
强化学习中的Model-free问题主要的解决思路来源于统计方法。所谓统计方法又可分为Monte Carlo与TD算法。当学习任务可转化为episode task形式时,Monte Carlo与TD算法在实现上的不同主要体现在如何更新状态动作值函数。n-step TD算法则是由两种不同的值函数更新形式相结合所产生的,所以想要理解n-step TD算法,对Monte Carlo与TD进行透彻地的解析是十分有必要的。
Backup Diagram的区别
Monte Carlo方法:每个执行一个episode task,更新episode开始时的状态值函数。假设一个episode开始时的状态为StartStart,结束时的状态为EndEnd。如果将一个episode经过的状态写为状态集合StateState,则每个episode可更新的状态值函数集合可以写为V(State)V(State),用于更新状态值函数的Return=R(End)Return=R(End)。所以对Monte Carlo来说,一个episode中状态集合的值函数更新更像是对多个状态独立地更新,在强化学习中,可以称其为non-bootstrap,这也应证了Monte Carlo方法最为重要的性质:每一个状态的估计都是独立的,不依赖于其它状态的! 所以为了尽可能保证每个状态都可以被更新到,才有了Exploring Start策略(什么是Exploring Start?可以阅读【RL系列】从蒙特卡罗方法正式引入强化学习)下面将通过Backup Diagram将MC方法的更新形式更加清晰的表现出来:
Monte Carlo
TD方法:在任意一个episode task执行过程中所遇到的每个状态都会被更新,且每个状态的更新都依赖于下一个状态的值函数与到达下一个状态所获得的奖励。因为是边执行episode边更新值函数,这种方法又被称为on-line learning。实际上,类似MC方法将执行好的episode的轨迹(trajectory)保存在下来,再依照TD方法更新也可以达到与on-line learning相同的效果,但很明显,这个方法是off-line learning,也就是说线下与线上学习并不是区分Monte Carlo与TD算法的依据。TD算法的值函数更新可用下图表示出来:
TD
由上述示意图可以发现,TD方法的最后一步,也就是对状态SnSn的值函数更新与Monte Carlo方法并无任何区别。对状态SnSn的更新依赖于R(End)R(End)与V(End)V(End),但由于终止状态实际上不参与值函数更新过程,所以一般情况下都设V(End)=0V(End)=0,这样一来,这最后一步就与Monte Carlo方法一致了。
定步长与不定步长,TD方法
定步长与不定步长的更新方法在Bandit问题里就曾讨论过,定步长实际上为Recency-Weighted Average,不定步长则是Incremental形式。通常来说,Monte Carlo Prediction采用的是不定步长的值函数更新,TD方法则采用的是定步长形式,但也不是固定的,可以互换使用。理论上来说,定步长与不定步长的通用形式可以写为:
在这个式子中,αα通常小于1,若是常数不变则为定步长,若αα是变量则为不定步长。不论定步长与不定步长,该式皆可表示为对随机变量XX的均值估计,且该估计为无偏估计,也就是说当迭代次数无穷大时,这个估计的均值与期望E[X]E[X]是相同的。但是,αα越大估计值的方差就越大(特别注意,这是发生在当迭代次数较大进入收敛状态时),同时也存在着,αα越小收敛速度越慢的情况,所以对于αα的处理总是需要平衡收敛速度与均值方差。
Incremental Implementation作为不定步长的一种形式,可以说是比较好的平衡了收敛速度与均值方差之间的矛盾。对于Incremental形式来说,开始需要收敛速度时,αα很大,进入收敛状态后需要精确度时,αα又变的很小。但有时为了突出优化收敛速度,就必须要牺牲一定的精确度,最简单的方法就是提高αα的值,但需要估计的随机变量XX的方差大小给这种方法带来了不确定性。若是XX的方差D[X]D[X]较大,则估计均值的方差D[V(S)]D[V(S)]会对αα值的增大非常敏感,这样一来不但收敛速度未得到很大改善反而精确度下降得厉害。(举例:均匀分布与0-1分布)
为了解决这个问题,我们可以人为的构造出与原有需要估计的随机变量XX期望相同的新的随机变量YY,且希望随机变量YY的方差可以有所减小。在MC方法中,随机变量XX就是终态的Reward(除终态外各状态Reward为0),而人为构造出的随机变量YY在TD中被描述为:
为什么MC方法中的随机变量XX与TD方法中的随机变量YY的均值估计是等价的?我们使用一个简单例子来稍作计算(这里只考虑除终态Reward外其它Reward值为0的这种奖励设计,这样比较简单)。下图为一个以状态S1S1为起点的马尔可夫决策模型,每一条之路可以表示为一个episode。
例子一:
假设共执行了N个episode,其中到达终态的episode个数分别为N1~N7。估计状态S1S1的均值,先用Monte Carlo方法可以得出V(S1)V(S1)为:
如果使用TD方法,对状态S1S1的估计可以写为如下形式。假设episode经过状态S2S2的次数为K1K1,经过状态S3S3的次数为K2K2,其中K1=N1+N2+N3K1=N1+N2+N3与K2=N4+N5+N6K2=N4+N5+N6始终成立。
至于观察方差的变化,我们首先将通用的值函数更新方程做一个简单的化简:
值函数V(S)V(S)的不确定性全部来源于后一项αXαX。首先看αα对估计值方差的影响,有公式Var(cX+b)=c2Var(X)Var(cX+b)=c2Var(X)所以当αα扩大cc倍时,方差会变为原先的c2c2倍。让我们再举个例子,看一看随机变量XX本身对估计值方差的影响。
例子二:
如上图所示,终态只有End1与End2,让我们假设episode到达End1所获得的Reward为1,到达End2所获得的Reward为0。如按照MC方法更新,则值函数通用更新方程中的随机变量XX即为终态时所获得的Reward,该随机变量XX定然服从伯努利分布(0-1分布)。假设每一类episode发生的概率皆为1/6(共有6条支路,6类episode),则随机变量XX的概率分布可以写为:
依据方差计算公式,随机变量XX的方差为:
如果我们按照TD方法更新,则可先计算出V(S2)=13V(S2)=13,V(S3)=23V(S3)=23,则TD方法所构造的随机变量YY的概率分布可以写为如下形式,并依据方差公式计算Var(Y)Var(Y):
TD方法的估计均值误差是MC方法的1/10,这也就是TD方法通常可以在保持与MC方法相同的估计均值误差的前提下会以更快的速度收敛的原因(Random Walk问题就很好的应证了这一点,可以参考Sutton书的Figure 6.2与Figure 6.3)。但实际上这也并非是绝对的,MC方法的表现非常仰赖Reward设计与实际的环境,当终态数量很多时,Reward值之间比较接近时,MC方法的估计均值误差也不一定差。
n-step TD
对于上述的例子二,可将其episode前进的过程分为三个阶段或三层(如下图所示),所构造的待估计随机变量Y={V(S2),V(S3)}Y={V(S2),V(S3)},可以视为估计第一层而依赖于第二层的估计,这就是1-step TD。若构造的待估计随机变量为第三层估计的值函数,即Y={V(S4),V(S5),V(S6),V(S7)}Y={V(S4),V(S5),V(S6),V(S7)},也就是对第一层的估计依赖于第三层,而跳过了第二层(第二层的估计直接依赖于终态的Reward),这就是2-step TD。可以证明2-step TD的估计均值与1-step TD和MC方法完全一致,但均值估计误差却各不相同。
下面给出2-step TD的Backup Diagram:
2-Step TD
可以写出n-step TD的构造随机变量YY的通用表达形式:
通常来说,在进入收敛状态后,n-step TD的均值估计误差并不会一定优于1-step TD,但却可以很好的控制收敛的速度与RMSE之间的平衡,并且n-step TD的优势在于可以很好与eligibility traces相关联,这里就不再深入讨论,只探讨n-step TD本身。
转载本文请联系原作者获取授权,同时请注明本文来自管金昱科学网博客。
链接地址:http://blog.sciencenet.cn/blog-3189881-1128648.html
Monte Carlo与TD算法的更多相关文章
- 简析Monte Carlo与TD算法的相关问题
Monte Carlo算法是否能够做到一步更新,即在线学习? 答案显然是不能,如果可以的话,TD算法还有何存在的意义?MC算法必须要等到episode结束后才可以进行值估计的主要原因在于对Return ...
- 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)
1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...
- Monte Carlo方法简介(转载)
Monte Carlo方法简介(转载) 今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ...
- PRML读书会第十一章 Sampling Methods(MCMC, Markov Chain Monte Carlo,细致平稳条件,Metropolis-Hastings,Gibbs Sampling,Slice Sampling,Hamiltonian MCMC)
主讲人 网络上的尼采 (新浪微博: @Nietzsche_复杂网络机器学习) 网络上的尼采(813394698) 9:05:00 今天的主要内容:Markov Chain Monte Carlo,M ...
- Monte Carlo Approximations
准备总结几篇关于 Markov Chain Monte Carlo 的笔记. 本系列笔记主要译自A Gentle Introduction to Markov Chain Monte Carlo (M ...
- Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介)
Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介) 部分翻译自“Monte Carlo Tree Search and Its Applicati ...
- 强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)
强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods) 学习笔记: Reinforcement Learning: An Introduction, Richard S ...
- Monte Carlo Method(蒙特·卡罗方法)
0-故事: 蒙特卡罗方法是计算模拟的基础,其名字来源于世界著名的赌城——摩纳哥的蒙特卡罗. 蒙特卡罗一词来源于意大利语,是为了纪念王子摩纳哥查理三世.蒙特卡罗(MonteCarlo)虽然是个赌城,但很 ...
- FAST MONTE CARLO ALGORITHMS FOR MATRICES II (快速的矩阵分解策略)
目录 问题 算法 LINEARTIMESVD 算法 CONSTANTTIMESVD 算法 理论 算法1的理论 算法2 的理论 代码 Drineas P, Kannan R, Mahoney M W, ...
随机推荐
- Array flat的实现
if (!Array.prototype.flat) { Array.prototype.flat = function (num = 1) { if (!Number(num) || Number( ...
- 搭建django环境
一.安装django(两种方式) 1.pip install django 2.python setup.py install(下载gjango包:https://www.djangoproject. ...
- 安装TD出现Unknown user name or bad password问题
在Server 2003 sp2上安装TD8.0 出现Unknown user name or bad password,是因为2003启用了DEP保护. 关闭系统的DEP保护就可以了. 方法如下 ...
- JavaScript设计模式-15.适配器模式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Wireshark命令行工具tshark详解(含例子)-01
Wireshark命令行工具tshark使用小记 1.目的 写这篇博客的目的主要是为了方便查阅,使用wireshark可以分析数据包,可以通过编辑过滤表达式来达到对数据的分析:但我的需求是,怎么样把D ...
- C#(winform)设置窗体的启动位置
只需要设置窗体的StartPosition属性: registerForm.StartPosition = FormStartPosition.CenterScreen; FormStartPosit ...
- file_get_contents 抓取网页乱码。
iconv string iconv ( string $in_charset , string $out_charset , string $str ) mb_convert_encoding st ...
- java并发编程(8)原子变量和非阻塞的同步机制
原子变量和非阻塞的同步机制 一.锁的劣势 1.在多线程下:锁的挂起和恢复等过程存在着很大的开销(及时现代的jvm会判断何时使用挂起,何时自旋等待) 2.volatile:轻量级别的同步机制,但是不能用 ...
- [转]RDL(C) Report Design Step by Step 3: Mail Label
本文转自:http://www.cnblogs.com/waxdoll/archive/2006/09/02/493350.html Crystal Report在报表向导中提供了三种向导类型给用户进 ...
- e.pageX、e.clientX、e.screenX、e.offsetX的区别以及元素的一些CSS属性
e.pageX,e.pageY:返回的值是相对于文档的定位,文档的左上角为(0,0),向右为正,向下为正,IE不支持: e.clientX,e.clientY:返回的值是相对于屏幕可见区域的坐标,如果 ...