RL 博客:http://blog.sciencenet.cn/home.php?mod=space&uid=3189881&do=blog&view=me&from=space&srchtxt=RL&page=1php
转自:http://blog.sciencenet.cn/home.php?mod=space&uid=3189881&do=blog&id=1128648,感谢分享html
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进行透彻地的解析是十分有必要的。bootstrap
Backup Diagram的区别dom
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算法的值函数更新可用下图表示出来:优化
TDui
由上述示意图能够发现,TD方法的最后一步,也就是对状态SnSn的值函数更新与Monte Carlo方法并没有任何区别。对状态SnSn的更新依赖于R(End)R(End)与V(End)V(End),但因为终止状态实际上不参与值函数更新过程,因此通常状况下都设V(End)=0V(End)=0,这样一来,这最后一步就与Monte Carlo方法一致了。atom
定步长与不定步长,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自己。