这一章将结合MC方法和 one-step TD 方法,使之表现得更好,该方法称为n-step TD方法,而MC与one-step则是这种新方法的特殊情况。
有时,我们希望能更新快一些,而one-step只利用了当前信息 ( V ( S t ) ) (V(S_t)) (V(St))和下一步信息 ( R t + 1 , V ( S t + 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方法。
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;
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}+\cdots+\gamma^{T-t-1} R_{T} Gt≐Rt+1+γRt+2+γ2Rt+3+⋯+γT−t−1RT
one-step TD:target是第一个reward加上折扣的后面第一个状态的值的估计;
G t : t + 1 ≐ R t + 1 + γ V t ( S t + 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加上折扣的后面第二个状态的值的估计;
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}\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,并用 V t + n − 1 V_{t+n-1} Vt+n−1作为remaining missing terms。注意如果t+n >= T,则把式子中相应的V和R变成0就行了。
G t : t + n ≐ R t + 1 + γ R t + 2 + ⋯ + γ n − 1 R t + n + γ n V t + n − 1 ( S t + 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)
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}\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 Vt+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使用 V t + n − 1 V_{t+n-1} Vt+n−1这个value function来更正missing rewards,可以证明,n-step的最坏error比 V t + n − 1 V_{t+n-1} Vt+n−1的最坏误差的 γ n \gamma ^ n γn倍小,因此n大一些可以加快收敛速度。这叫做n-step的error reduction property。因此n-step TD方法可以收敛到正确的predictions。
max s ∣ E π [ G t : t + n ∣ S t = s ] − v π ( s ) ∣ ≤ γ n max s ∣ V t + 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。
本节讨论如何把 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的公式:
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 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,0 \leq t<T-n Gt: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相似了。自然的更新算法为:
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 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 Qt+n(St,At)≐Qt+n−1(St,At)+α[Gt:t+n−Qt+n−1(St,At)],0≤t<T
而n-step Expected Sarsa则在最后一步分支为多个可能的决策动作。这个算法也可以用n-step Sarsa的公式来描述,除了最后的V改成按概率取Q的期望。 V ˉ \bar{V} Vˉ叫做状态s的expected approximate value,注意这不是直接估计V值,而是对Q值加权得来的。expected approximate values 在本书很多算法中都用到了,注意如果s是终止状态,则它的期望值是0。
G t : t + n ≐ R t + 1 + ⋯ + γ n − 1 R t + n + γ n V ‾ t + n − 1 ( S t + n ) , t + n < T G_{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<T Gt:t+n≐Rt+1+⋯+γn−1Rt+n+γnVt+n−1(St+n),t+n<T
其中:
V ‾ t ( s ) ≐ ∑ a π ( a ∣ s ) Q t ( s , a ) , \overline{V}_{t}(s) \doteq \sum_{a} \pi(a | s) Q_{t}(s, a), \quad Vt(s)≐∑aπ(a∣s)Qt(s,a), for all s ∈ S s \in \mathcal{S} s∈S
为什么 n-step 方法能加快收敛速度呢?下面的例子给出了说明:
example:
这是一个虚拟的gridworld问题,第一个图给出了某次episode的轨迹,第二个图给出了one-step Sarsa,对于这条路径,只有在G下面的那个格子,向上方向的动作值得到了加强;而第三个图则基于10-step Sarsa,则路径上10个格子在某个方向上的动作值得到了加强,因此n-step加快了学习的过程。
在off policy中,target policy通常是greedy的,而behavior policy通常是exploratory的,我们根据选择概率的比值进行加权(重要性采样)以通过behavior policy得到的经验更新target policy的值函数。在n-step方法中,我们只对构建returns的n个actions加权。对于简单的off-policy方法,可以用下面两个式子更新,其中 ρ \rho ρ是重要性采样比率,是两个策略生成从 A t A_t At到 A t + n − 1 A_{t+n-1} At+n−1的概率之比值。
G t : t + n ≐ R t + 1 + γ R t + 2 + ⋯ + γ n − 1 R t + n + γ n V t + n − 1 ( S t + 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)
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], \quad 0 \leq t<T Vt+n(St)≐Vt+n−1(St)+αρt:t+n−1[Gt:t+n−Vt+n−1(St)],0≤t<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} | S_{k}\right)}{b\left(A_{k} | S_{k}\right)} ρt:h≐∏k=tmin(h,T−1)b(Ak∣Sk)π(Ak∣Sk)
这里注意下,如果某个 ( A k , S k ) (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定义的区别造成的。
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 ) ] 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。
前面介绍的n-step off-policy方法可能不是最高效的,一个更好的方法是使用per-decision重要性采样思想,这可以降低方差(主要是考虑 γ < 1 \gamma <1 γ<1的影响)。
首先把n-step return写成递归的形式:
G t : h = R t + 1 + γ G t + 1 : h , t < h < T G_{t : h}=R_{t+1}+\gamma G_{t+1 : h}, \quad t<h<T Gt:h=Rt+1+γGt+1:h,t<h<T
这里的h是horizon,相当于t+n,然后我们想到,如果某个(S, A)对在target policy的概率为0,那么导致ratio=0,方差扩大,我们用下式克服这个问题:
G t : h ≐ ρ t ( R t + 1 + γ G t + 1 : h ) + ( 1 − ρ t ) V h − 1 ( S t ) , t < h < T G_{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<h<T Gt: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 ) V h − 1 ( S t ) \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我们不需要乘重要性采样比率了。 G G G是与策略直接有关的,因此要乘ratio;而 V ˉ \bar{V} Vˉ中只有 Q ( S , A ) Q(S, A) Q(S,A)与策略直接相关,因此只有这一项需要考虑重要性采样。
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 ) , t < h ≤ T \begin{aligned} G_{t : h} & \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) \\ &=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<h \leq T \end{aligned} Gt:h≐Rt+1+γ(ρt+1Gt+1:h+Vh−1(St+1)−ρt+1Qh−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,这使得学习速率变慢,这很可能是无法避免的,但是可以有改进的余地,例如本节介绍的方法,以及一系列近年来提出的较先进的方法。
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 ∣ S t + 1 ) \pi(a|S_{t+1}) π(a∣St+1)加权,而第二层则根据第一层实际采取节点的概率: π ( A t + 1 ∣ S t + 1 ) ∗ π ( a ′ ∣ S t + 2 ) \pi(A_{t+1}|S_{t+1})*\pi(a'|S_{t+2}) π(At+1∣St+1)∗π(a′∣St+2),依此类推。
可以直接写出 G t : t + n G_{t:t+n} Gt:t+n的递推式,如下所示,注意n=1和t=T-1的特殊情况。
t < T - 1, n = 1时,
G t : t + 1 ≐ R t + 1 + γ ∑ a π ( a ∣ S t + 1 ) Q t ( S t + 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时,
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 G_{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时,
G T − 1 : t + n ≐ R T G_{T-1 : t+n} \doteq R_{T} GT−1:t+n≐RT
以上几个式子中的 π \pi π是target policy(假设是greedy的,当然这其实也不一定,target也可以是概率的),而实际轨迹的生成是基于behavior policy的,因此我们可以设想,如果在 A t + 1 A_{t+1} At+1时target与behavior就不一样了,那么蓝色部分就是0了,红色部分则只有实际采取的动作的那一项保留下来;反之,如果在 A t + 1 A_{t+1} At+1时target与behavior一样,那么红色的部分就是0,蓝色的部分就保留,比如从 A t + 2 A_{t+2} At+2开始不一样,那么实际上更新目标为:
G t : t + n = R t + 1 + γ R t + 2 + γ 2 max a Q t + n − 1 ( S t + 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+γ2maxaQt+n−1(St+2,a)
因此,这个方法是Q-learning的自然扩展,详细讨论见参考[2]。
可以通过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}\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)]
前面已经讨论了三种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稍微变化一下:
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 != 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} \\ &=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} \\ &=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进行加权融合,得到了的统一框架:
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} | S_{t+1}\right)\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+γ(σ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的形式。
算法如下:
本章研究了很多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