7.n步自举n-step bootstraping--阅读笔记【Reinforcement Learning An Introduction 2nd】

文章目录

  • n步自举n-step bootstraping
    • 前言
    • n-step TD预测
    • n-step Sarsa
    • n-step离线策略学习
    • *带控制变量的per-decision方法
    • n-step 树备份算法(无重要性采样的off-policy)
    • 统一的算法:n-step Q(sigma)
    • 总结

n步自举n-step bootstraping

内容简要梳理:
本章提出了n步自举的方法,按照之前的套路,分别从预测和控制两个方面进行分析,首先分析了n-step TD预测的更新目标,接着提出了n-step Sarsa算法(on-policy),然后又提出了n-step off-policy算法,接着又提出了一种无重要性采样的方法n-step tree backup算法。最后提出了一种统一的算法,把n-step sarsa、n-step excepted sarsa以及树备份方法糅合在一起,提出了n-step Q(sigma)算法。

前言

本章学习n-step bootstraping,对于之前介绍的MC和TD(0)这两个方法实际上是可以用同一个视角去看待,而MC和TD(0)就好像是两个极端,最好的方法往往处于两个极端中间,因此提出了n-step bootstrapping。TD(0)总是在单步观测之后利用下一个状态的估计值来更新目标值,所以称其为单步自举。实际上自举最好发生在一段时间之后,这段时间内状态发生明显的变化。n-step的方法使得我们能够在多步之间实现bootstrap。n-step bootstraping和资格迹之间有很强的关联,资格迹能够使bootstrap在多步之间同时进行。
按照之前的套路,探讨关于n-step bootstraping的预测问题和控制问题。

n-step TD预测

MC方法的更新依赖于从当前状态直到最终状态的所有观测,只有当一个episode结束之后才会进行更新,TD(0)是仅观测一步,然后用下一个状态的估计值更新当前状态。因此有一个折中的方法就是在n-step之后再进行bootstrap,这就是n-step TD的思想。

7.n步自举n-step bootstraping--阅读笔记【Reinforcement Learning An Introduction 2nd】_第1张图片

如上图,最左边实际上就是我们的单步更新,也就是TD(0),最右边实际上就是MC方法。n-step TD是指在 S t S_t St后观测或采样到n个R后再使用bootstrap。
首先我们要搞清楚MC、TD(0)以及后面我们要描述的n-stepTD的更新目标是什么:对于一个序列 S t , R t + 1 , S t + 1 , R t + 2 , . . . , R T , S T S_t,R_{t+1},S_{t+1},R_{t+2},...,R_T,S_T St,Rt+1,St+1,Rt+2,...,RT,ST,MC的更新目标是:
G t ≐ R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . + γ T − t − 1 R T G_t\doteq R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+...+\gamma^{T-t-1}R_T GtRt+1+γRt+2+γ2Rt+3+...+γTt1RT
T是episode的最后时间步长。在MC中更新的目标是返回值,在TD(0)中的更新目标是奖励加上下一状态的折扣估计值。
G t : t + 1 ≐ R t + 1 + γ V t ( S t + 1 ) G_{t:t+1}\doteq R_{t+1}+\gamma V_{t}(S_{t+1}) Gt:t+1Rt+1+γVt(St+1)
实际上是用 γ V t ( S t + 1 \gamma V_{t}(S_{t+1} γVt(St+1替代了实际的采样。因此很自然的对于2步更新的目标自然就是2步回报:
G t : t + 2 ≐ R t + 1 + γ R t + 2 + γ 2 V t + 1 ( S t + 2 ) G_{t:t+2}\doteq R_{t+1}+\gamma R_{t+2}+\gamma^2 V_{t+1}(S_{t+2}) Gt:t+2Rt+1+γRt+2+γ2Vt+1(St+2)
对于任意的n步更新就是:
G t : t + n ≐ R t + 1 + γ R t + 2 + . . . + γ n V t + n − 1 ( S t + n ) G_{t:t+n}\doteq R_{t+1}+\gamma R_{t+2}+...+\gamma^n V_{t+n-1}(S_{t+n}) Gt:t+nRt+1+γRt+2+...+γnVt+n1(St+n)
如果t+n>T,那么超出去的其余项都为0,此时可以看作是一个MC过程。需要注意一个问题,为了进行n-step更新,我们必须观测到 R t + n R_{t+n} Rt+n并计算出 V t + n − 1 V_{t+n-1} Vt+n1才能执行更新。当这些观测出现的时候时间步是t+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 V_{t+n}(S_t)\doteq V_{t+n-1}(S_t) + \alpha[G_{t:t+n}-V_{t+n-1}(S_t)],0≤tVt+n(St)Vt+n1(St)+α[Gt:t+nVt+n1(St)],0t<T
n-step TD方法的伪代码如下:
7.n步自举n-step bootstraping--阅读笔记【Reinforcement Learning An Introduction 2nd】_第2张图片
这里比较容易混乱的是后买你的更新步骤。在更新t时候的状态就必须等到t+n时刻才行,这就导致每个episode的前n-1个step无法更新,为了弥补这一问题,因此要在episode的尾部,在进入下个episode之前附加n-1次更新。
n-step TD方法主张用 G t : t + n G_{t:t+n} Gt:t+n替代原来的估计 V t + n − 1 V_{t+n-1} Vt+n1,n-step回报一个重要的性质如下:
m a x s ∣ E π [ G t : t + n ∣ S t = s ] − v π ( s ) ∣ ≤ γ n m a x s ∣ V t + n − 1 ( s ) − v π ( s ) ∣ \underset s{max}|\mathbb{E}_\pi[G_{t:t+n}|S_t=s]-v_\pi(s)|\leq \gamma^n \underset s{max}|V_{t+n-1}(s)-v_\pi(s)| smaxEπ[Gt:t+nSt=s]vπ(s)γnsmaxVt+n1(s)vπ(s)
v π ( s ) v_\pi(s) vπ(s)是状态s的真实值,上面的不等式说明,在最坏的情况下,利用n-step回报得到的估计误差是原始估计误差的 γ n \gamma^n γn倍,该特性就是误差缩减特性
n-step TD在随机游走例子上的使用:
7.n步自举n-step bootstraping--阅读笔记【Reinforcement Learning An Introduction 2nd】_第3张图片
通过grid search得到不同步长 α \alpha α和step n对应的误差。可以看到当n取中间值时误差最小。

n-step 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 ) ] Q(S_{t},A_t) \leftarrow Q(S_{t},A_t)+\alpha[R_{t+1}+\gamma Q(S_{t+1},A_t+1)-Q(S_{t},A_t)] Q(St,At)Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]
结合上节n-step TD估计的更新目标,可以得到n-step TD的更新目标是:
G t : t + n ≐ R t + 1 + γ R t + 2 + . . . + γ n Q t + n − 1 ( S t + n , A t + n ) , n ≥ 1 , 0 ≤ t < T − n G_{t:t+n}\doteq R_{t+1}+\gamma R_{t+2}+...+\gamma^n Q_{t+n-1}(S_{t+n},A_{t+n}), n≥1,0≤tGt:t+nRt+1+γRt+2+...+γnQt+n1(St+n,At+n),n10t<Tn
因此我们可以得到n-step Sarsa算法的更新公式:
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 ) ] Q_{t+n}(S_{t},A_t) \leftarrow Q_{t+n-1}(S_{t},A_t)+\alpha[G_{t:t+n}-Q_{t+n-1}(S_{t},A_t)] Qt+n(St,At)Qt+n1(St,At)+α[Gt:t+nQt+n1(St,At)]
对状态动作对 ( S t , A t ) (S_{t},A_t) (St,At)执行上述更新,其他状态动作对的Q值保持不变。
为什么n-step Sarsa算法可以加快学习呢?
7.n步自举n-step bootstraping--阅读笔记【Reinforcement Learning An Introduction 2nd】_第4张图片
这是一个网格世界的问题,G表示的是一个高回报值的状态。左图蓝色折线表示的是一个轨迹,假设到达G之外的所有状态得到的回报是0.因此对于的单步TD来讲,一个episode结束之后只有状态G的前一个状态的Q值会被更新,(假设更新不是in-place的,如果是in-place更新的话,选择合适的更新顺序,路径上的其他状态也是可以被更新到的。)蓝色箭头表示更新的状态,单步更新如中间图所示。对于n-step算法来说,在单条轨迹当中就会有n个状态动作对被更新。这n个状态动作对都是与目标G相关的。因此说,n-step方法能够有效的将回报传播出去,从而加快学习。
n-step期望Sarsa
之前我们讲过期望Sarsa的更新目标实际上是把Q-learning中更新目标的最大化操作改为求期望的操作。n-step期望Sarsa就是将其扩展到n步TD即可:
G t : t + n ≐ R t + 1 + γ R t + 2 + . . . + γ n V _ t + n − 1 ( S t + n ) , n ≥ 1 , 0 ≤ t < T − n G_{t:t+n}\doteq R_{t+1}+\gamma R_{t+2}+...+\gamma^n \overset\_V_{t+n-1}(S_{t+n}), n≥1,0≤tGt:t+nRt+1+γRt+2+...+γnV_t+n1(St+n),n10t<Tn
其中 V _ t ( s ) = E π [ Q t ( s , a ) ] = ∑ a π ( a ∣ s ) Q t ( s , a ) \overset\_V_{t}(s)=\mathbb {E}_\pi[Q_t(s,a)]=\sum_{a}\pi(a|s)Q_t(s,a) V_t(s)=Eπ[Qt(s,a)]=aπ(as)Qt(s,a).同sarsa和excepted sarsa的区别一样,只是将更新目标的最后一项换成期望值。
其backup diagram如下所示:
7.n步自举n-step bootstraping--阅读笔记【Reinforcement Learning An Introduction 2nd】_第5张图片

n-step离线策略学习

上一节我们把n-step TD算法和Sarsa结合在一起,sarsa算法on-policy,那么如何把n-step TD估计与off-policy结合在一起呢?

回顾off-policy的概念,off-policy就是我们需要学习target policy对应的值函数,但是我们使用的数据是依赖于另外一个策略behavior-policy。通常情况下目标策略是相对于当前值函数的贪婪策略,是一个确定性策略,行为策略是ε-greedy策略,这样就可以保证一定的探索。

off-policy之所以会带来偏差,这个偏差的原因是因为行为策略和目标策略选择同一个动作的概率不相同。为了弥补这个偏差,我们引入了重要性采样的概念,能够把行为策略获得的回报缩放到目标策略。实际上这是对于两个策略分布的一个纠正。同样,我们可以利用行为策略来估计n-step TD error。与之前所讲的n-step TD计算方法相同,只是最后用采样比来纠正一下偏差。对应的值函数的表达式是:
V t + n ( S t ) ≐ V t + n − 1 ( S t ) + α ρ t : t + n − 1 [ G t : t + n − V t + n − 1 ( S t ) ] , 0 ≤ t < T V_{t+n}\left(S_{t}\right) \doteq V_{t+n-1}\left(S_{t}\right)+\alpha \rho_{t: t+n-1}\left[G_{t: t+n}-V_{t+n-1}\left(S_{t}\right)\right], 0 \leq tVt+n(St)Vt+n1(St)+αρt:t+n1[Gt:t+nVt+n1(St)],0t<T
对应的重要性采样比定义为:
ρ t : h ≐ ∏ k = t min ⁡ ( h , T − 1 ) π ( A k ∣ S k ) b ( A k ∣ S k ) \rho_{t: h} \doteq \prod_{k=t}^{\min (h, T-1)} \frac{\pi\left(A_{k} \mid S_{k}\right)}{b\left(A_{k} \mid S_{k}\right)} ρt:hk=tmin(h,T1)b(AkSk)π(AkSk)
重要性采样比的理解:假设某个动作a其目标策略不会取到,即 π ( A k ∣ S k ) = 0 \pi(A_k|S_k)=0 π(AkSk)=0,因此采样比就是0,值函数的更新也就是0,符合逻辑。如果目标策略采取某动作的概率远远大于行为策略b,那么就会得到一个很大的权重从而增加了估计的回报,符合逻辑。因为目标策略采取该动作的概率很大,说明这是个典型的动作,并且在行为策略下,这个动作很少出现,为了弥补这种偏差,所以要给一个大的权重,让这个动作有更大的几率被采样。如果两个策略采取某个动作的概率是一样的,那么采样比就是1。这就退化成在线策略的形式。所以把n-step Sarsa算法扩展到离线策略上:
Q t + n ( S t , A t ) ← Q t + n − 1 ( S t , A t ) + α ρ t + 1 : t + n [ G t : t + n − Q t + n − 1 ( S t , A t ) ] , 0 ≤ t < T Q_{t+n}(S_{t},A_t) \leftarrow Q_{t+n-1}(S_{t},A_t)+\alpha\rho_{t+1:t+n}[G_{t:t+n}-Q_{t+n-1}(S_{t},A_t)],0≤tQt+n(St,At)Qt+n1(St,At)+αρt+1:t+n[Gt:t+nQt+n1(St,At)],0t<T
注意采样比这一项是比之前n-step Sarsa off-policy算法估计值函数时的采样比滞后一步。原因是:采样比主要是为了纠正选择动作所带来的误差,因此n-step中包含了哪些动作相应的采样比这一项也要包含那些项。对于Q函数来讲, A t A_t At是已知的,因此不需要采样,需要知道的是第t+1项到第t+n项。

off-policy n-step Sarsa算法伪代码:
7.n步自举n-step bootstraping--阅读笔记【Reinforcement Learning An Introduction 2nd】_第6张图片

*带控制变量的per-decision方法

看本篇blog即可:https://blog.csdn.net/u013695457/article/details/89928290

n-step 树备份算法(无重要性采样的off-policy)

有没有一种办法可以避免n-step off-policy下的重要性采样?答案就是下面我们提到的n-step tree backup 方法。

backup就是通过后续状态的值更新当前状态的操作。
7.n步自举n-step bootstraping--阅读笔记【Reinforcement Learning An Introduction 2nd】_第7张图片
可以先看一下3步树备份算法备份图。
包含两个采样动作 A t + 1 , A t + 2 A_{t+1},A_{t+2} At+1,At+2这个图与之前的backup diagram不一样。MC中只有一个分支直到终止状态。TD方法也只有一个分支,只是采样有限步,把估计的值函数替代后面的采样回报。树备份算法,有采样,但是没有包含采样到的动作值函数(即图中的左右叶子节点)。
那么是如何更新( S t , A t S_t,A_t St,At)呢?
正常情况下我们是使用实际采样的序列中包含的状态动作奖励的值进行更新,但是在树备份中,不仅包含了采样的动作序列,同时还包含旁路。因此整个更新类似于从叶子节点回溯到根节点因此叫做树备份

那么如何构造这个方程:
我们给每个叶子节点都分配一个权重,这个权重大小正比于叶子节点所对应的动作a在目标策略下执行的概率。更新目标就是以次概率作为权重的所有叶子节点的加权和。对于与 A t + 1 A_{t+1} At+1处于同一层的其余叶子节点,权重是 π ( a ∣ S t + 1 ) \pi(a|S_{t+1}) π(aSt+1),对于非叶子结点也就是 A t + 1 A_{t+1} At+1来说,发生的概率是 π ( A t + 1 ∣ S t + 1 ) \pi(A_{t+1}|S_{t+1}) π(At+1St+1)。以它发生的概率来对第2层节点进行加权。
如图所示:
7.n步自举n-step bootstraping--阅读笔记【Reinforcement Learning An Introduction 2nd】_第8张图片

对于单步backup算法来说,更新目标是:
G t : t + 1 = R t + 1 + γ ∑ a π ( a ∣ S t + 1 Q t ( S t + 1 , a ) ) , t < T − 1 G_{t:t+1}=R_{t+1}+\gamma \sum_{a}\pi(a|S_{t+1}Q_t(S_{t+1},a)),tGt:t+1=Rt+1+γaπ(aSt+1Qt(St+1,a)),t<T1
2步backup算法的更新目标是:
G t : t + 2 = R t + 1 + γ ∑ a ≠ A t + 1 π ( a ∣ S t + 1 ) Q t + 1 ( S t + 1 , a ) + γ π ( A t + 1 ∣ S t + 1 ) ( R t + 2 + γ ∑ a π ( a ∣ S t + 2 ) Q t + 1 ( S t + 2 , a ) ) = R t + 1 + γ ∑ a ≠ A k + 1 π ( a ∣ S t + 1 ) Q t + 1 ( S t + 1 , a ) + γ π ( A t + 1 ∣ S t + 1 ) G t + 1 : t + 2 , t < T − 2 \begin{array}{c} G_{t: t+2}=R_{t+1}+\gamma \sum_{a \neq A_{t+1}} \pi\left(a \mid S_{t+1}\right) Q_{t+1}\left(S_{t+1}, a\right) \\ +\gamma \pi\left(A_{t+1} \mid S_{t+1}\right)\left(R_{t+2}+\gamma \sum_{a} \pi\left(a \mid S_{t+2}\right) Q_{t+1}\left(S_{t+2}, a\right)\right) \\ =R_{t+1}+\gamma \sum_{a \neq A_{k}+1} \pi\left(a \mid S_{t+1}\right) Q_{t+1}\left(S_{t+1}, a\right)+\gamma \pi\left(A_{t+1} \mid S_{t+1}\right) G_{t+1: t+2}, \quad tGt:t+2=Rt+1+γa=At+1π(aSt+1)Qt+1(St+1,a)+γπ(At+1St+1)(Rt+2+γaπ(aSt+2)Qt+1(St+2,a))=Rt+1+γa=Ak+1π(aSt+1)Qt+1(St+1,a)+γπ(At+1St+1)Gt+1:t+2,t<T2
如图:7.n步自举n-step bootstraping--阅读笔记【Reinforcement Learning An Introduction 2nd】_第9张图片
公式中第一项对应的是第一层叶子节点的加权和,第二项表示的是阴影部分的加权值。阴影部分又构成了一颗子树,其值就是 G t + 1 : t + 2 G_{t+1:t+2} Gt+1:t+2,因此就可以得到任意一个n步树备份算法:
G t : t + n = R t + 1 + γ ∑ a ≠ A t + 1 π ( a ∣ S t + 1 ) Q t + n − 1 ( S t + 1 , a ) + γ π ( A t + 1 ∣ S t + 1 ) G t + 1 : t + n ( t < T − 1 , n ≥ 2 ) G_{t: t+n}=R_{t+1}+\gamma \sum_{a \neq A_{t+1}} \pi\left(a \mid S_{t+1}\right) Q_{t+n-1}\left(S_{t+1}, a\right) \\ +\gamma \pi\left(A_{t+1} \mid S_{t+1}\right)G_{t+1:t+n} \\ (tGt:t+n=Rt+1+γa=At+1π(aSt+1)Qt+n1(St+1,a)+γπ(At+1St+1)Gt+1:t+n(t<T1,n2)
n=1时, G t + 1 : t + n G_{t+1:t+n} Gt+1:t+n为0,t≥T-1时, G T − 1 : t + n ≐ R T G_{T-1:t+n}\doteq R_T GT1:t+nRT,表示的是终止状态的回报。

经过上面的分析我们已经得到了更新目标,下面就是设计一个控制策略。
可以根据n步sarsa算法构造一个控制算法。n步sarsa算法如下:

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 ) ] Q_{t+n}(S_{t},A_t) \leftarrow Q_{t+n-1}(S_{t},A_t)+\alpha[G_{t:t+n}-Q_{t+n-1}(S_{t},A_t)] Qt+n(St,At)Qt+n1(St,At)+α[Gt:t+nQt+n1(St,At)]
只需要利用我们本节分析得到的回报替代n步sarsa算法中的回报即可。

n-step tree backup算法伪代码如下:
7.n步自举n-step bootstraping--阅读笔记【Reinforcement Learning An Introduction 2nd】_第10张图片

自然的又引入一个问题为什么上述方式就可以避免重要性采样

这一点目前还没有理解,先保留参考资料,后续搞清楚了再说
参考资料

统一的算法:n-step Q(sigma)

本章讲了几种多步TD算法,扩展了上一节的单步TD算法,但并不像MC那样需要一条完整的轨迹。具体的说有以下几种方式:n-step Sarsa(on-policy)、n-step excepted sarsa以及树备份算法(off-policy)
7.n步自举n-step bootstraping--阅读笔记【Reinforcement Learning An Introduction 2nd】_第11张图片
观察一下这些备份图我们可以看到,区别在于是使用采样还是求期望。Sarsa是都用采样的结果,excepted sarsa在最后一步求期望,其余的都是进行采样。树备份算法在每一步都使用期望。上图的最右边给出了一般的形式。
重写一下树备份算法的递推公式:
G t : h = R t + 1 + γ ∑ a ≠ A t + 1 π ( a ∣ S t + 1 ) Q h − 1 ( S t + 1 , a ) + γ π ( A t + 1 ∣ S t + 1 ) G t + 1 : h = R t + 1 + γ V ˉ h − 1 ( S t + 1 ) − γ π ( A t + 1 ∣ S t + 1 ) Q h − 1 ( S t + 1 , A t + 1 ) + γ π ( A t + 1 ∣ S t + 1 ) G t + 1 : h = R t + 1 + γ π ( A t + 1 ∣ S t + 1 ) ( G t + 1 : h − Q h − 1 ( S t + 1 , A t + 1 ) ) + γ V ˉ h − 1 ( S t + 1 ) \begin{aligned} G_{t: h} &=R_{t+1}+\gamma \sum_{a \neq A_{t+1}} \pi\left(a \mid S_{t+1}\right) Q_{h-1}\left(S_{t+1}, a\right)+\gamma \pi\left(A_{t+1} \mid S_{t+1}\right) G_{t+1: h} \\ &=R_{t+1}+\gamma \bar{V}_{h-1}\left(S_{t+1}\right)-\gamma \pi\left(A_{t+1} \mid S_{t+1}\right) Q_{h-1}\left(S_{t+1}, A_{t+1}\right)+\gamma \pi\left(A_{t+1} \mid S_{t+1}\right) G_{t+1: h} \\ &=R_{t+1}+\gamma \pi\left(A_{t+1} \mid S_{t+1}\right)\left(G_{t+1: h}-Q_{h-1}\left(S_{t+1}, A_{t+1}\right)\right)+\gamma \bar{V}_{h-1}\left(S_{t+1}\right) \end{aligned} Gt:h=Rt+1+γa=At+1π(aSt+1)Qh1(St+1,a)+γπ(At+1St+1)Gt+1:h=Rt+1+γVˉh1(St+1)γπ(At+1St+1)Qh1(St+1,At+1)+γπ(At+1St+1)Gt+1:h=Rt+1+γπ(At+1St+1)(Gt+1:hQh1(St+1,At+1))+γVˉh1(St+1)
其中h=t+n, V ˉ h − 1 ( S t + 1 ) \bar{V}_{h-1}\left(S_{t+1}\right) Vˉh1(St+1)表示 Q h − 1 ( S t + 1 , a ) Q_{h-1}(S_{t+1},a) Qh1(St+1,a)的期望值。

正常情况下我们的更新目标是 ρ t G t : h \rho_tG_{t:h} ρtGt:h,写成迭代的形式就是 ρ t ( R t + 1 + γ G t + 1 : h ) \rho_t(R_{t+1}+\gamma G_{t+1:h}) ρt(Rt+1+γGt+1:h).这个更新方式有一定问题,是什么呢?倘若我们的行为策略的某个动作a在目标策略下无法获得,那么此时ρ=0,更新目标就变为0,这样会引起很大波动,所以要采样下面的更新目标:
G t : h = ρ t ( R t + 1 + γ G t + 1 : h ) + ( 1 − ρ t ) V h − 1 ( S t ) G_{t:h}=\rho_t(R_{t+1}+\gamma G_{t+1:h})+(1-\rho_t)V_{h-1}(S_t) Gt:h=ρt(Rt+1+γGt+1:h)+(1ρt)Vh1(St)
实际上就是加了后面一项,称之为控制变量。这样即使ρ=0,更新目标也是等于V。如果对于动作值函数,略有区别,因为动作值函数是( S t , A t S_t,A_t St,At)之后才需要考虑重要性采样,所以采样比是从t+1起作用的,所以带有控制变量的Q函数的更新公式是:
G t : h = R t + 1 + γ ( ρ t + 1 G t + 1 : h + V ˉ h − 1 ( S t + 1 ) − ρ t + 1 Q h − 1 ( S t + 1 , A t + 1 ) ) = R t + 1 + γ ρ t + 1 ( G t + 1 : h − Q h − 1 ( S t + 1 , A t + 1 ) ) + γ V ˉ h − 1 ( S t + 1 ) \begin{aligned} G_{t: h} &=R_{t+1}+\gamma\left(\rho_{t+1} G_{t+1: h}+\bar{V}_{h-1}\left(S_{t+1}\right)-\rho_{t+1} Q_{h-1}\left(S_{t+1}, A_{t+1}\right)\right) \\ &=R_{t+1}+\gamma \rho_{t+1}\left(G_{t+1: h}-Q_{h-1}\left(S_{t+1}, A_{t+1}\right)\right)+\gamma \bar{V}_{h-1}\left(S_{t+1}\right) \end{aligned} Gt:h=Rt+1+γ(ρt+1Gt+1:h+Vˉh1(St+1)ρt+1Qh1(St+1,At+1))=Rt+1+γρt+1(Gt+1:hQh1(St+1,At+1))+γVˉh1(St+1)
可以看到二者的区别在于 ( G t + 1 : h − Q h − 1 ( S t + 1 , A t + 1 ) ) \left(G_{t+1: h}-Q_{h-1}\left(S_{t+1}, A_{t+1}\right)\right) (Gt+1:hQh1(St+1,At+1))的权重是 ρ t + 1 \rho_{t+1} ρt+1还是 π ( A t + 1 ∣ S t + 1 ) \pi(A_{t+1}|S_{t+1}) π(At+1St+1),所以说Q(σ)是基于这两种情况的一种更新机制。表达式是:
G t : h ≐ R t + 1 + γ ( σ t + 1 ρ t + 1 + ( 1 − σ t + 1 ) π ( A t + 1 ∣ S t + 1 ) ) ( G t + 1 : h − Q h − 1 ( S t + 1 , A t + 1 ) ) + γ V ˉ h − 1 ( S t + 1 ) \begin{aligned} G_{t: h} \doteq R_{t+1} &+\gamma\left(\sigma_{t+1} \rho_{t+1}+\left(1-\sigma_{t+1}\right) \pi\left(A_{t+1} \mid S_{t+1}\right)\right)\left(G_{t+1: h}-Q_{h-1}\left(S_{t+1}, A_{t+1}\right)\right) \\ &+\gamma \bar{V}_{h-1}\left(S_{t+1}\right) \end{aligned} Gt:hRt+1+γ(σt+1ρt+1+(1σt+1)π(At+1St+1))(Gt+1:hQh1(St+1,At+1))+γVˉh1(St+1)
可以从两个方面来理解Q(σ),一是备份图。其次就是从表达式中,把树备份和一般的sarsa更新表达式写成一个统一的方式发现区别在于 ( G t + 1 : h − Q h − 1 ( S t + 1 , A t + 1 ) ) \left(G_{t+1: h}-Q_{h-1}\left(S_{t+1}, A_{t+1}\right)\right) (Gt+1:hQh1(St+1,At+1))的权重是 ρ t + 1 \rho_{t+1} ρt+1还是 π ( A t + 1 ∣ S t + 1 ) \pi(A_{t+1}|S_{t+1}) π(At+1St+1),因此介于这两者中间的算法就应该是 ( σ t + 1 ρ t + 1 + ( 1 − σ t + 1 ) π ( A t + 1 ∣ S t + 1 ) ) ( G t + 1 : h − Q h − 1 ( S t + 1 , A t + 1 ) ) \left(\sigma_{t+1} \rho_{t+1}+\left(1-\sigma_{t+1}\right) \pi\left(A_{t+1} \mid S_{t+1}\right)\right)\left(G_{t+1: h}-Q_{h-1}\left(S_{t+1}, A_{t+1}\right)\right) (σt+1ρt+1+(1σt+1)π(At+1St+1))(Gt+1:hQh1(St+1,At+1))

总结

本章提出了n步自举的方法,按照GPI的模式,分别从预测和控制两个方面进行分析,首先分析了n-step TD预测的更新目标,接着提出了n-step Sarsa算法(on-policy),然后又提出了n-step off-policy算法,接着又提出了一种无重要性采样的方法n-step tree backup算法。最后提出了一种统一的算法,把n-step sarsa、n-step excepted sarsa以及树备份方法糅合在一起,提出了n-step Q(sigma)算法。

你可能感兴趣的:(#,RL,An,Introduction,2nd读书笔记,深度学习,强化学习)