强化学习之n步自举法

上一篇:时序差分学习

n-step bootstrapping n 步自举法

1、n步时序差分预测

我们已经知道TD(0)和MC的回溯图分别是这样:

在这里插入图片描述

在这里插入图片描述

自然会联想到中间的一些情况有没有什么意义呢?比如下方的一些回溯图:

在这里插入图片描述

其实中间的这些过度情况就是n步时序差分方法,它的两种极端情况就是TD(0)和MC。还是按照原来的思路,先研究预测再考虑控制。想要弄清楚n步时序差分的预测是怎么实现的,可以从MC和TD(0)入手。我们知道MC的向着完整回报的方向更新,即:
G t ≐ R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ + γ T − t − 1 R T (6.1.1) \begin{aligned}G_{t} \doteq R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\cdots+\gamma^{T-t-1} R_{T}\end{aligned}\tag{6.1.1} GtRt+1+γRt+2+γ2Rt+3++γTt1RT(6.1.1)
TD(0)则是采用的单步回报:
G t : t + 1 ≐ R t + 1 + γ V t ( S t + 1 ) (6.1.2) \begin{aligned}G_{t: t+1} \doteq R_{t+1}+\gamma V_{t}\left(S_{t+1}\right)\end{aligned}\tag{6.1.2} Gt:t+1Rt+1+γVt(St+1)(6.1.2)
依次类推,两次回报更新就是:
G t : t + 2 ≐ R t + 1 + γ R t + 2 + γ 2 V t + 1 ( S t + 2 ) (6.1.3) \begin{aligned}G_{t: t+2} \doteq R_{t+1}+\gamma R_{t+2}+\gamma^{2} V_{t+1}\left(S_{t+2}\right)\end{aligned}\tag{6.1.3} Gt:t+2Rt+1+γRt+2+γ2Vt+1(St+2)(6.1.3)
那么n步回报就是:
G t : t + n ≐ R t + 1 + γ R t + 2 + ⋯ + γ n − 1 R t + n + γ n V t + n − 1 ( S t + n ) (6.1.4) \begin{aligned}G_{t: t+n} \doteq R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{n-1} R_{t+n}+\gamma^{n} V_{t+n-1}\left(S_{t+n}\right)\end{aligned}\tag{6.1.4} Gt:t+nRt+1+γRt+2++γn1Rt+n+γnVt+n1(St+n)(6.1.4)
t + n > T t+n > T t+n>T G t : t + n = G t G_{t:t+n} = G_{t} Gt:t+n=Gt

所以n步状态价值函数的更新算法就是:
V t + n ( S t ) ≐ V t + n − 1 ( S t ) + α [ G t : t + n − V t + n − 1 ( S t ) ] , 0 ≤ t < T (6.1.5) \begin{aligned}V_{t+n}\left(S_{t}\right) \doteq V_{t+n-1}\left(S_{t}\right)+\alpha\left[G_{t: t+n}-V_{t+n-1}\left(S_{t}\right)\right], \quad 0 \leq t<T\end{aligned}\tag{6.1.5} Vt+n(St)Vt+n1(St)+α[Gt:t+nVt+n1(St)],0t<T(6.1.5)

2、n步Sarsa

搞明白了预测就可以仿照之前的思路将Sarsa变成n步Sarsa
G t : t + n ≐ R t + 1 + γ R t + 2 + ⋯ + γ n − 1 R t + n + γ n Q t + n − 1 ( S t + n , A t + n ) , n ≥ 1 , 0 ≤ t < T − n Q t + n ( S t , A t ) ≐ Q t + n − 1 ( S t , A t ) + α [ G t : t + n − Q t + n − 1 ( S t , A t ) ] , 0 ≤ t < T (6.2.1) \begin{aligned}&G_{t: t+n} \doteq R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{n-1} R_{t+n}+\gamma^{n} Q_{t+n-1}\left(S_{t+n}, A_{t+n}\right), n \geq 1,\quad 0 \leq t<T-n\\\\&Q_{t+n}\left(S_{t}, A_{t}\right) \doteq Q_{t+n-1}\left(S_{t}, A_{t}\right)+\alpha\left[G_{t: t+n}-Q_{t+n-1}\left(S_{t}, A_{t}\right)\right], \quad 0 \leq t<T\end{aligned}\tag{6.2.1} Gt:t+nRt+1+γRt+2++γn1Rt+n+γnQt+n1(St+n,At+n),n1,0t<TnQt+n(St,At)Qt+n1(St,At)+α[Gt:t+nQt+n1(St,At)],0t<T(6.2.1)
n步Sarsa和Sarsa的不同可以通过下面这个例子很好地体现出来:

在这里插入图片描述

假如我们从某一点出发想要到达G,并且初始化每个状态的初始价值都是0;只有走到G的那一步获得R=1,其他动作R=0。==单步Sarsa每一幕只会更新一个动作!==回想单步Sarsa控制:
Q ( S t , A t ) ← Q ( S t , A t ) + α [ R t + 1 + γ Q ( S t + 1 , A t + 1 ) − Q ( S t , A t ) ] \begin{aligned}Q\left(S_{t}, A_{t}\right) \leftarrow Q\left(S_{t}, A_{t}\right)+\alpha\left[R_{t+1}+\gamma Q\left(S_{t+1}, A_{t+1}\right)-Q\left(S_{t}, A_{t}\right)\right]\end{aligned} Q(St,At)Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]
在到达G之前每个R都是0,每个Q也都是0,只有G之前的那个网格,往上走一步获得了R=1,因此也仅有G正下方的那个状态的动作价值得到了增强。这就好比是我们只看重那个直接导致成功的行为而对之前的探索和努力都视而不见。因此单步Sarsa每一幕只能加强最后一个动作价值,等到下一幕Agent再不断探索时G下方的那个网格的价值已经不再为0所以倒数第二个动作的价值得到了加强,依此类推训练多幕之后才能找到最优的策略。不难分析出,导致单步Sarsa一幕只能更新一个动作的原因就是它只用了单步的回报,如果改成用两步回报:
Q ( S t , A t ) ← Q ( S t , A t ) + α [ R t + 1 + γ R t + 2 + γ 2 Q ( S t + 2 , A t + 2 ) − Q ( S t , A t ) ] \begin{aligned}Q\left(S_{t}, A_{t}\right) \leftarrow Q\left(S_{t}, A_{t}\right)+\alpha\left[R_{t+1}+ \gamma R_{t_+2} +\gamma^2 Q\left(S_{t+2}, A_{t+2}\right)-Q\left(S_{t}, A_{t}\right)\right]\end{aligned} Q(St,At)Q(St,At)+α[Rt+1+γRt+2+γ2Q(St+2,At+2)Q(St,At)]
那么同样是走一幕,再更新倒数第二个动作的时候就可以受到最后一步R的作用,所以一幕之内可以更新倒数两个动作。那么当使用n步回报的时候自然可以更新倒数n步,这么做比单步Sarsa更加高效!

3、参考资料

《Reinforcement Learning An Introduction》Sutton
RL Course by David Sliver

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值