文章目录

  • 1.本章内容概要
  • 2.n-step TD预测
  • 3.n-step Sarsa
  • 4.n-step off-policy学习
  • 5.*带控制变量的per-decision方法
  • 6.无重要性采样的off-policy学习:n-step树backup算法
  • 7.*一个统一的框架: n-step Q(σ)
  • 8.总结
  • 参考文献

1.本章内容概要

这一章将结合MC方法和 one-step TD 方法,使之表现得更好,该方法称为n-step TD方法,而MC与one-step则是这种新方法的特殊情况。

有时,我们希望能更新快一些,而one-step只利用了当前信息(V(St))(V(S_t))(V(St​))和下一步信息(Rt+1,V(St+1)(R_{t+1}, V(S_{t+1})(Rt+1​,V(St+1​),n-step则可以利用后续多步信息,还可以根据变动大小决定向后迭代多少,加速学习过程。

n-step方法通常用来作为例子引入资格迹(eligibility traces)思想,使得bootstrapping能同时工作于多个时间步上。这里只讨论单纯的n-step bootstrapping思想,而eligibility-trace则推迟到后面讨论。

同样地,我们也先研究prediction问题,然后再研究control问题。即首先研究n-step方法如何预测fixed policy的returns(作为state的函数),然后扩展到action-value与control方法。

2.n-step TD预测

n-step TD prediction的过程:差分更新时,考虑后面的n步。例如,two-step更新需要当前step和下一个rewards以及下两步状态的估计值。因此,n-step是MC方法与TD(0)方法的折中。下图给出了示意。

n-step方法仍然是TD方法,因为它们还是用了bootstrapping的思想。

考虑从t到T的S和R的序列,我们分别列出MC、TD(0)以及n-step的公式。

MC:更新的target就是return,也叫full return;
Gt≐Rt+1+γRt+2+γ2Rt+3+⋯+γT−t−1RTG_{t} \doteq R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\cdots+\gamma^{T-t-1} R_{T}Gt​≐Rt+1​+γRt+2​+γ2Rt+3​+⋯+γT−t−1RT​

one-step TD:target是第一个reward加上折扣的后面第一个状态的值的估计;
Gt:t+1≐Rt+1+γVt(St+1)G_{t : t+1} \doteq R_{t+1}+\gamma V_{t}\left(S_{t+1}\right)Gt:t+1​≐Rt+1​+γVt​(St+1​)

two-step TD:target是前两个reward加上折扣的后面第二个状态的值的估计;
Gt:t+2≐Rt+1+γRt+2+γ2Vt+1(St+2)G_{t : t+2} \doteq R_{t+1}+\gamma R_{t+2}+\gamma^{2} V_{t+1}\left(S_{t+2}\right)Gt:t+2​≐Rt+1​+γRt+2​+γ2Vt+1​(St+2​)

n-step TD:n-step return是full return的近似,但是截短到n steps,并用Vt+n−1V_{t+n-1}Vt+n−1​作为remaining missing terms。注意如果t+n >= T,则把式子中相应的V和R变成0就行了。
Gt:t+n≐Rt+1+γRt+2+⋯+γn−1Rt+n+γnVt+n−1(St+n)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)Gt:t+n​≐Rt+1​+γRt+2​+⋯+γn−1Rt+n​+γnVt+n−1​(St+n​)
Vt+n(St)≐Vt+n−1(St)+α[Gt:t+n−Vt+n−1(St)],0≤t&lt;TV_{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&lt;TVt+n​(St​)≐Vt+n−1​(St​)+α[Gt:t+n​−Vt+n−1​(St​)],0≤t<T

注意,如果要更新t时刻的V,必须要到t+n时刻才行,这样我们才有足够的信息。注意每个episode的前n-1个steps无法更新(导致少更新了n-1次),为了弥补这个问题,则在episode尾部,下个episode之前附加n-1次更新,按照不存在就取0的原则。n-step TD算法如下:

n-step return使用Vt+n−1V_{t+n-1}Vt+n−1​这个value function来更正missing rewards,可以证明,n-step的最坏error比Vt+n−1V_{t+n-1}Vt+n−1​的最坏误差的γn\gamma ^ nγn倍小,因此n大一些可以加快收敛速度。这叫做n-step的error reduction property。因此n-step TD方法可以收敛到正确的predictions。

max⁡s∣Eπ[Gt:t+n∣St=s]−vπ(s)∣≤γnmax⁡s∣Vt+n−1(s)−vπ(s)∣\max _{s}\left|\mathbb{E}_{\pi}\left[G_{t : t+n} | S_{t}=s\right]-v_{\pi}(s)\right| \leq \gamma^{n} \max _{s}\left|V_{t+n-1}(s)-v_{\pi}(s)\right|maxs​∣Eπ​[Gt:t+n​∣St​=s]−vπ​(s)∣≤γnmaxs​∣Vt+n−1​(s)−vπ​(s)∣

example 7.1 n-step TD Methods on the Random Walk
用 n-step TD 分析五个状态的随机游走问题。初始时每个V(s)都是0.5。从中间C位置开始,随机选择两个方向。对于第一个episode,one-step只能传递最后的reward到V(E),而只有第二次episode才能传递到V(D)。对于two-step方法,则可以一次传递到V(D)和V(E)。

那么n-step中的n如何选择呢?对于一个19 states的问题,可以分析下不同n时,前十个episodes的平均RMS随着α的变化。可以看到当n处于中间某个值时效果最好,因此证明了n-step比两个极端MC和Sarsa都要好。

注意一个episode中的实际steps个数,可能会比states数目要长很多的。所以n可以取很大的数,仍然有一定的效果,但是这会导致方差放大,变成了求MSE而不是MLE了。注意贝叶斯公式中的先验知识在这里的体现。
还要注意,这里实际上分析的是收敛速度快慢(前10个episodes,interim)而不是最后收敛到效果(asymptotic)的RMS。

3.n-step Sarsa

本节讨论如何把 n-step 方法用于control,我们采用把n-step方法和Sarsa结合的方式,因此之前的Sarsa就叫做one-step Sarsa,或者Sarsa(0)。

这里首先给出 state-action 对的n-step更新公式。n-step Sarsa的backup diagram与n-step TD类似,但是以action节点(实心)开始,也以action节点终止,是个单向的链。因此得到估计action values的n-step returns的公式:
Gt:t+n≐Rt+1+γRt+2+⋯+γn−1Rt+n+γnQt+n−1(St+n,At+n),n≥1,0≤t&lt;T−nG_{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,0 \leq t&lt;T-nGt:t+n​≐Rt+1​+γRt+2​+⋯+γn−1Rt+n​+γnQt+n−1​(St+n​,At+n​),n≥1,0≤t<T−n

注意当t+n>T时则与MC相似了。自然的更新算法为:
Qt+n(St,At)≐Qt+n−1(St,At)+α[Gt:t+n−Qt+n−1(St,At)],0≤t&lt;TQ_{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&lt;TQt+n​(St​,At​)≐Qt+n−1​(St​,At​)+α[Gt:t+n​−Qt+n−1​(St​,At​)],0≤t<T

这就是n-step Sarsa,其伪代码为:

而n-step Expected Sarsa则在最后一步分支为多个可能的决策动作。这个算法也可以用n-step Sarsa的公式来描述,除了最后的V改成按概率取Q的期望。Vˉ\bar{V}Vˉ叫做状态s的expected approximate value,注意这不是直接估计V值,而是对Q值加权得来的。expected approximate values 在本书很多算法中都用到了,注意如果s是终止状态,则它的期望值是0。

Gt:t+n≐Rt+1+⋯+γn−1Rt+n+γnV‾t+n−1(St+n),t+n&lt;TG_{t : t+n} \doteq R_{t+1}+\cdots+\gamma^{n-1} R_{t+n}+\gamma^{n} \overline{V}_{t+n-1}\left(S_{t+n}\right), \quad t+n&lt;TGt:t+n​≐Rt+1​+⋯+γn−1Rt+n​+γnVt+n−1​(St+n​),t+n<T

其中:
V‾t(s)≐∑aπ(a∣s)Qt(s,a),\overline{V}_{t}(s) \doteq \sum_{a} \pi(a | s) Q_{t}(s, a), \quadVt​(s)≐∑a​π(a∣s)Qt​(s,a), for all s∈Ss \in \mathcal{S}s∈S

为什么 n-step 方法能加快收敛速度呢?下面的例子给出了说明:

example:

这是一个虚拟的gridworld问题,第一个图给出了某次episode的轨迹,第二个图给出了one-step Sarsa,对于这条路径,只有在G下面的那个格子,向上方向的动作值得到了加强;而第三个图则基于10-step Sarsa,则路径上10个格子在某个方向上的动作值得到了加强,因此n-step加快了学习的过程。

4.n-step off-policy学习

在off policy中,target policy通常是greedy的,而behavior policy通常是exploratory的,我们根据选择概率的比值进行加权(重要性采样)以通过behavior policy得到的经验更新target policy的值函数。在n-step方法中,我们只对构建returns的n个actions加权。对于简单的off-policy方法,可以用下面两个式子更新,其中ρ\rhoρ是重要性采样比率,是两个策略生成从AtA_tAt​到At+n−1A_{t+n-1}At+n−1​的概率之比值。

Gt:t+n≐Rt+1+γRt+2+⋯+γn−1Rt+n+γnVt+n−1(St+n)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)Gt:t+n​≐Rt+1​+γRt+2​+⋯+γn−1Rt+n​+γnVt+n−1​(St+n​)

Vt+n(St)≐Vt+n−1(St)+αρt:t+n−1[Gt:t+n−Vt+n−1(St)],0≤t&lt;TV_{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], \quad 0 \leq t&lt;TVt+n​(St​)≐Vt+n−1​(St​)+αρt:t+n−1​[Gt:t+n​−Vt+n−1​(St​)],0≤t<T

ρt:h≐∏k=tmin⁡(h,T−1)π(Ak∣Sk)b(Ak∣Sk)\rho_{t : h} \doteq \prod_{k=t}^{\min (h, T-1)} \frac{\pi\left(A_{k} | S_{k}\right)}{b\left(A_{k} | S_{k}\right)}ρt:h​≐∏k=tmin(h,T−1)​b(Ak​∣Sk​)π(Ak​∣Sk​)​

这里注意下,如果某个(Ak,Sk)(A_k, S_k)(Ak​,Sk​)被目标策略生成的概率为0,则重要性采样比率也就是0;其实如果让off-policy的目标策略和行为策略相同,则off-policy退化为on-policy,因此这样的形式可以把前面的on-policy情形也合并进来了。

类似的,可以把n-step Sarsa也写成off-policy的形式,也就是action-value的更新公式也可以依样修改。注意加权比率中的时间步区间都加1了,这是因action-pair与value定义的区别造成的。

Qt+n(St,At)≐Qt+n−1(St,At)+αρt+1:t+n[Gt:t+n−Qt+n−1(St,At)]Q_{t+n}\left(S_{t}, A_{t}\right) \doteq Q_{t+n-1}\left(S_{t}, A_{t}\right)+\alpha \rho_{t+1 : t+n}\left[G_{t : t+n}-Q_{t+n-1}\left(S_{t}, A_{t}\right)\right]Qt+n​(St​,At​)≐Qt+n−1​(St​,At​)+αρt+1:t+n​[Gt:t+n​−Qt+n−1​(St​,At​)]

off-policy n-step Sarsa完整的算法如下:

参考[1]怀疑这里的ρτ+1:τ+n−1\rho_{\tau+1:\tau+n-1}ρτ+1:τ+n−1​应该是ρτ+1:τ+n\rho_{\tau+1:\tau+n}ρτ+1:τ+n​,我同意这个意见。

对于off-policy版本的n-step Expected Sarsa,需要在重要性比率减少最后一个因子,也就是改成从t+1到t+n-1,并用的Expected Sarsa版本的n-step return作为target。

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

前面介绍的n-step off-policy方法可能不是最高效的,一个更好的方法是使用per-decision重要性采样思想,这可以降低方差(主要是考虑γ&lt;1\gamma &lt;1γ<1的影响)。

首先把n-step return写成递归的形式:
Gt:h=Rt+1+γGt+1:h,t&lt;h&lt;TG_{t : h}=R_{t+1}+\gamma G_{t+1 : h}, \quad t&lt;h&lt;TGt:h​=Rt+1​+γGt+1:h​,t<h<T

这里的h是horizon,相当于t+n,然后我们想到,如果某个(S, A)对在target policy的概率为0,那么导致ratio=0,方差扩大,我们用下式克服这个问题:

Gt:h≐ρt(Rt+1+γGt+1:h)+(1−ρt)Vh−1(St),t&lt;h&lt;TG_{t : h} \doteq \rho_{t}\left(R_{t+1}+\gamma G_{t+1 : h}\right)+\left(1-\rho_{t}\right) V_{h-1}\left(S_{t}\right), \quad t&lt;h&lt;TGt:h​≐ρt​(Rt+1​+γGt+1:h​)+(1−ρt​)Vh−1​(St​),t<h<T

即把重要性采样因子用于求G,这样当ratio=0时,目标G与h-1时刻的V(S)相等,从而不发生更新,降低了方差(ratio=0意味着我们需要忽略这个sample,所以这样做是没问题的);如果ratio=1.0,则忽略掉附加项。根据第五章的*Per-decision重要性采样一节,ρ\rhoρ的期望是1.0,由于独立性,(1−ρt)Vh−1(St)\left(1-\rho_{t}\right) V_{h-1}\left(S_{t}\right)(1−ρt​)Vh−1​(St​)的期望是0,我们把这个附加的项叫做控制变量control variate。当实际是on-policy情况时,ρ\rhoρ恒等于1,因此退化为on-policy n-step更新公式形式。

注意这种方法没有显式的重要性比率,因此与 on-policy 算法一致,区别只在G的计算上。

对于action values,也就是n-step off-policy Expected Sarsa,则稍有区别,因为第一个R我们不需要乘重要性采样比率了。GGG是与策略直接有关的,因此要乘ratio;而Vˉ\bar{V}Vˉ中只有Q(S,A)Q(S, A)Q(S,A)与策略直接相关,因此只有这一项需要考虑重要性采样。

Gt:h≐Rt+1+γ(ρt+1Gt+1:h+V‾h−1(St+1)−ρt+1Qh−1(St+1,At+1))=Rt+1+γρt+1(Gt+1:h−Qh−1(St+1,At+1))+γV‾h−1(St+1),t&lt;h≤T\begin{aligned} G_{t : h} &amp; \doteq R_{t+1}+\gamma\left(\rho_{t+1} G_{t+1 : h}+\overline{V}_{h-1}\left(S_{t+1}\right)-\rho_{t+1} Q_{h-1}\left(S_{t+1}, A_{t+1}\right)\right) \\ &amp;=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 \overline{V}_{h-1}\left(S_{t+1}\right), \quad t&lt;h \leq T \end{aligned}Gt:h​​≐Rt+1​+γ(ρt+1​Gt+1:h​+Vh−1​(St+1​)−ρt+1​Qh−1​(St+1​,At+1​))=Rt+1​+γρt+1​(Gt+1:h​−Qh−1​(St+1​,At+1​))+γVh−1​(St+1​),t<h≤T​

这个式子怎么来的呢?通过后面两个小节介绍的n-step Tree更新,尤其是*A Unifying Algorithm: n-step Q(σ)小节n-step Q(σ\sigmaσ)算法推导的中间结果,可以看到与这里的公式基本完全是一样的,除了用动作选择概率替换了这里的重要性采样因子。仔细思考,就能理解本节公式是如何得到的。

这一章介绍的方法可以使n-step方法off-policy地训练,但是为了降低方差不得不减小step-size,这使得学习速率变慢,这很可能是无法避免的,但是可以有改进的余地,例如本节介绍的方法,以及一系列近年来提出的较先进的方法。

6.无重要性采样的off-policy学习:n-step树backup算法

Q-learning和Expected Sarsa是针对one-step情形采用了无重要性采样的形式,这里介绍可用于n-step的无重要性采样的off-policy方法:tree-backup,其思想是受three-step tree-backup启发的,中间的主干是实际的序列,侧面的节点是没有实际采取的动作,对于最后一个状态,认为所有动作都是没采取的,这与之前介绍的backup图有所区别。

update是基于tree上所有leaf nodes的估计动作值的,注意中间那些实际采用的action node则不利用它的值(最终状态除外),因为我们利用了该动作的R。每个node的权重按照策略选择它的概率确定,例如第一层两个leaf节点,按照π(a∣St+1)\pi(a|S_{t+1})π(a∣St+1​)加权,而第二层则根据第一层实际采取节点的概率:π(At+1∣St+1)∗π(a′∣St+2)\pi(A_{t+1}|S_{t+1})*\pi(a'|S_{t+2})π(At+1​∣St+1​)∗π(a′∣St+2​),依此类推。

可以直接写出Gt:t+nG_{t:t+n}Gt:t+n​的递推式,如下所示,注意n=1和t=T-1的特殊情况。
t < T - 1, n = 1时,
Gt:t+1≐Rt+1+γ∑aπ(a∣St+1)Qt(St+1,a)G_{t : t+1} \doteq R_{t+1}+\gamma \sum_{a} \pi\left(a | S_{t+1}\right) Q_{t}\left(S_{t+1}, a\right)Gt:t+1​≐Rt+1​+γ∑a​π(a∣St+1​)Qt​(St+1​,a)
t < T - 1且n > 1时,
Gt:t+n≐Rt+1+γ∑a!=At+1π(a∣St+1)Qt+n−1(St+1,a)+γπ(At+1∣St+1)Gt+1:t+nG_{t : t+n} \doteq R_{t+1}+\red{\gamma \sum_{a != A_{t+1}} \pi\left(a | S_{t+1}\right) Q_{t+n-1}\left(S_{t+1}, a\right)}+\blue{\gamma \pi\left(A_{t+1} | S_{t+1}\right) G_{t+1 : t+n}}Gt:t+n​≐Rt+1​+γ∑a!=At+1​​π(a∣St+1​)Qt+n−1​(St+1​,a)+γπ(At+1​∣St+1​)Gt+1:t+n​
t=T-1时,
GT−1:t+n≐RTG_{T-1 : t+n} \doteq R_{T}GT−1:t+n​≐RT​

以上几个式子中的π\piπ是target policy(假设是greedy的,当然这其实也不一定,target也可以是概率的),而实际轨迹的生成是基于behavior policy的,因此我们可以设想,如果在At+1A_{t+1}At+1​时target与behavior就不一样了,那么蓝色部分就是0了,红色部分则只有实际采取的动作的那一项保留下来;反之,如果在At+1A_{t+1}At+1​时target与behavior一样,那么红色的部分就是0,蓝色的部分就保留,比如从At+2A_{t+2}At+2​开始不一样,那么实际上更新目标为:

Gt:t+n=Rt+1+γRt+2+γ2max⁡aQt+n−1(St+2,a)G_{t : t+n}=R_{t+1}+\gamma R_{t+2}+\gamma^{2} \max _{a} Q_{t+n-1}\left(S_{t+2}, a\right)Gt:t+n​=Rt+1​+γRt+2​+γ2maxa​Qt+n−1​(St+2​,a)

因此,这个方法是Q-learning的自然扩展,详细讨论见参考[2]。

可以通过n-step Sarsa进行更新:
Qt+n(St,At)≐Qt+n−1(St,At)+α[Gt:t+n−Qt+n−1(St,At)]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]Qt+n​(St​,At​)≐Qt+n−1​(St​,At​)+α[Gt:t+n​−Qt+n−1​(St​,At​)]

构造的算法如下:

7.*一个统一的框架: n-step Q(σ)

前面已经讨论了三种action-value算法,n-step Sarsa基于所有的sample transitions; tree-backup基于所有的state-to-action transitions,不仅仅是sample transitions; n-step Expected Sarsa则在最后一个state-to-action考虑全部的可能,其它只考虑sample transitions。这一小节希望给出一个统一的框架。

第四个图就是框架的backup diagram, σ\sigmaσ取值[0, 1],表示以多大概率直接选择sampling动作。因此这叫做n-step Q(σ\sigmaσ),σ\sigmaσ可以是state-action等的函数。这个参数可以用来均衡方差与偏差。

一致框架的更新公式推导,首先对tree-backup n-step return稍微变化一下:
Gt:h=Rt+1+γ∑a!=At+1π(a∣St+1)Qh−1(St+1,a)+γπ(At+1∣St+1)Gt+1:h=Rt+1+γV‾h−1(St+1)−γπ(At+1∣St+1)Qh−1(St+1,At+1)+γπ(At+1∣St+1)Gt+1:h=Rt+1+γπ(At+1∣St+1)(Gt+1:h−Qh−1(St+1,At+1))+γV‾h−1(St+1)\begin{aligned} G_{t : h} &amp;=R_{t+1}+\gamma \sum_{a != A_{t+1}} \pi\left(a | S_{t+1}\right) Q_{h-1}\left(S_{t+1}, a\right)+\gamma \pi\left(A_{t+1} | S_{t+1}\right) G_{t+1 : h} \\ &amp;=R_{t+1}+\gamma \overline{V}_{h-1}\left(S_{t+1}\right)-\gamma \pi\left(A_{t+1} | S_{t+1}\right) Q_{h-1}\left(S_{t+1}, A_{t+1}\right)+\gamma \pi\left(A_{t+1} | S_{t+1}\right) G_{t+1 : h} \\ &amp;=R_{t+1}+\gamma \pi\left(A_{t+1} | S_{t+1}\right)\left(G_{t+1 : h}-Q_{h-1}\left(S_{t+1}, A_{t+1}\right)\right)+\gamma \overline{V}_{h-1}\left(S_{t+1}\right) \end{aligned}Gt:h​​=Rt+1​+γa!=At+1​∑​π(a∣St+1​)Qh−1​(St+1​,a)+γπ(At+1​∣St+1​)Gt+1:h​=Rt+1​+γVh−1​(St+1​)−γπ(At+1​∣St+1​)Qh−1​(St+1​,At+1​)+γπ(At+1​∣St+1​)Gt+1:h​=Rt+1​+γπ(At+1​∣St+1​)(Gt+1:h​−Qh−1​(St+1​,At+1​))+γVh−1​(St+1​)​

然后利用σ\sigmaσ因子对控制变量形式与tree-backup n-step return进行加权融合,得到了的统一框架:

Gt:h≐Rt+1+γ(σt+1ρt+1+(1−σt+1)π(At+1∣St+1))(Gt+1:h−Qh−1(St+1,At+1))+γV‾h−1(St+1)\begin{aligned} G_{t : h} \doteq R_{t+1} &amp;+\gamma\left(\sigma_{t+1} \rho_{t+1}+\left(1-\sigma_{t+1}\right) \pi\left(A_{t+1} | S_{t+1}\right)\right)\left(G_{t+1 : h}-Q_{h-1}\left(S_{t+1}, A_{t+1}\right)\right) \\ &amp;+\gamma \overline{V}_{h-1}\left(S_{t+1}\right) \end{aligned}Gt:h​≐Rt+1​​+γ(σt+1​ρt+1​+(1−σt+1​)π(At+1​∣St+1​))(Gt+1:h​−Qh−1​(St+1​,At+1​))+γVh−1​(St+1​)​

观察公式,σ=1\sigma = 1σ=1,则就得到了带控制变量的per-decision方法的形式,σ=0\sigma = 0σ=0则就得到了n-step Tree的形式。

算法如下:

8.总结

本章研究了很多TD学习方法,这些方法是介于one-step TD和MC之间的综合方法,介于统计和bootstrapping之间的这种折中可以让算法的效果更好。

本章主要着眼于n-step方法,它考虑后续n个rewards、states和actions。state-value的更新方法是n-step TD with importance sampling,action-value更新方法则是n-step Q(σ\sigmaσ)(综合了Expected Sarsa和Q-learning)。注意所有n-step方法都是延迟n个steps再更新的,且计算量较大且对内存的要求也较大,后面会研究如何利用资格迹来减轻这些drawback。

本章的n-step方法虽然比基于eligibility traces的要复杂些,但是概念上比较清晰。对于off-policy n-step学习,基于importance sampling的方法概念上非常简单,但是方差可能较大,尤其是target和behavior策略相差较大的时候;而tree-backup更新则是Q-learning的自然扩展,它的方差就要小很多。

参考文献

[1].(知乎专栏)https://zhuanlan.zhihu.com/p/57910891
[2].(n-step Tree算法的深入分析)https://ai.stackexchange.com/questions/9518/questions-about-n-step-tree-backup-algorithm

[归纳]强化学习导论 - 第七章:n-step自举(Bootstrapping)相关推荐

  1. [归纳]强化学习导论 - 第十四章:心理学

    文章目录 1. 本章内容概要 2. 预测和控制 3. classical conditioning 3.1 阻塞和高阶的条件反射 3.2 Rescorla–Wagner模型 3.3 TD模型 3.4 ...

  2. 《强化学习导论》经典课程10讲,DeepMind大神David Silver主讲

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要5分钟 Follow小博主,每天更新前沿干货 这个经典的10部分课程,由强化学习(RL)的驱David Silver教授,虽然录制于2015年 ...

  3. 强化学习圣经:《强化学习导论》第二版(附PDF下载)

    今天推荐 Richard S. Sutton 教授与 Andrew G. Barto 教授合著的<强化学习导论(第二版)>, Richard S. Sutton 就职于iCORE大学计算机 ...

  4. 《SysML精粹》学习记录--第七章

    <SysML精粹>学习记录 第七章:序列图 序列图简介 序列图元素 消息 约束 组合片段 交互使用 小结 第七章:序列图 序列图简介   序列图是另一种可以用来说明系统动态行为信息的Sys ...

  5. 强化学习导论_Example 6.5: Windy Grid-world

    组会汇报时需要整理 <强化学习导论>第二版- Sutton一书中的例题代码,所以将理解过程记录了一下,并且巩固一遍python的基础知识. 书中页码:P130, 对应 Chapter 6: ...

  6. Effective C++ 学习笔记 第七章:模板与泛型编程

    第一章见 Effective C++ 学习笔记 第一章:让自己习惯 C++ 第二章见 Effective C++ 学习笔记 第二章:构造.析构.赋值运算 第三章见 Effective C++ 学习笔记 ...

  7. 《Go语言圣经》学习笔记 第七章 接口

    <Go语言圣经>学习笔记 第七章 接口 目录 接口是合约 接口类型 实现接口的条件 flag.Value接口 接口值 sort.Interface接口 http.Handle接口 erro ...

  8. 多伦多大学-强化学习导论-2022

    课程描述 这是一门关于不确定条件下强化学习和顺序决策的入门课程,重点在于理解理论基础.我们研究如何使用价值和策略迭代等动态规划方法来解决具有已知模型的顺序决策问题,以及如何扩展这些方法来解决模型未知的 ...

  9. 圣经书||《强化学习导论(2nd)》原书、代码、习题答案、课程视频大全

    深度强化学习实验室报道 作者:DeepRL 下载地址见文章末尾 强化学习是现在人工智能领域里面最活跃的研究领域之一,它是一种用于学习的计算方法,其中会有一个代理在与复杂的不确定环境交互时试图最大化其所 ...

最新文章

  1. ado.net连接mysql 类_C# ADO.NET 连接数据库常用到的类及基本操作格式
  2. hive启动mapreduce任务后,被killed
  3. python中if语句的实例_对python中if语句的真假判断实例详解
  4. 自动编译失效的Oracle数据库对象
  5. WebService初入
  6. 笨办法学 Python · 续 练习 37:小型 BASIC
  7. 深入浅出Shell编程: Shell 变量【ZT】
  8. 基于实验数据的轮胎模型
  9. BZOJ-1002 轮状病毒 高精度加减+Kirchhoff矩阵数定理+递推
  10. 开课吧课堂:Java的内置异常汇总列表!
  11. 使用VueJs开发单页面应用经验总结
  12. php xml网站地图生成,PHP代码自动生成XML版网站地图
  13. kaggle代码补全
  14. 纯HTML标签详解(摘自阿里西西)
  15. 基于OpenCV的人脸识别考勤系统(三)
  16. PO*创建标准采购订单
  17. Error: tunneling socket could not be established, cause=getaddrinfo ENOTFOUND 11000
  18. GO 常见环境变量与常用命令
  19. Python 浮点数的舍入,round与decimal舍入方式
  20. python 实现udp通信

热门文章

  1. pdf文件转换jpg转换器
  2. 声纹识别—让安全的声音听得见
  3. 抖音康辉机器人_抖音惊现新闻联播主持人康辉,翻白眼卖萌放飞自我,网友:真会玩...
  4. 【Ubuntu】Ubuntu安装安装opencv3.4.5
  5. vue怎么请求后端的图片_Vue向后端请求课程展示
  6. win7计算机加载项,详细教您win7禁用ie加载项
  7. Win10查看系统日志
  8. python 报价单_php产品报价单管理系统,源码免费分享
  9. RP Fiber Power 光纤激光器及光纤器件设计软件---简介
  10. 微分几何与活动标架法