强化学习系列(七):n-step Bootstrapping (步步为营)

一、前言

强化学习系列(五):蒙特卡罗方法(Monte Carlo)强化学习系列(六):时间差分算法(Temporal-Difference Learning)中,我们介绍了两种用于求解环境模型未知的MDP方法:MC和TD,MC是一种每episode更新一次的方法,TD是单步更新的方法,n-step Bootstrapping (步步为营)是一种介于TD和MC之间的方法,n-step更新一次。

本章我们仍然按照GPI思想,分prediction 和control 问题介绍n-step Bootstrapping (步步为营)方法。

二、n-step TD prediction

n-step TD prediction方法是一种介于蒙特卡罗方法(Monte Carlo)和时间差分算法(Temporal-Difference Learning)之间的方法,与MC和TD的Backup图如下:
强化学习系列(七):n-step Bootstrapping (步步为营)
最左侧的为我们在第六章中介绍的TD(0)算法,最右侧为我们在第五章中介绍的MC算法,当在一个采样数据中选择以n步数据来更新value function 时,采用的方法为 n-step TD prediction。

此处以更新St的state-value的估计值来说明n-step TD prediction,假设采样数据为St,Rt+1,St+1,Rt+2,...,RT,ST


MC:
强化学习系列(七):n-step Bootstrapping (步步为营)

TD:(one-step return)
强化学习系列(七):n-step Bootstrapping (步步为营)
其中γVt(St+1)代替了γRt+2+γ2Rt+3+...+γTt1RT

two-step return:
强化学习系列(七):n-step Bootstrapping (步步为营)

n-step return:
强化学习系列(七):n-step Bootstrapping (步步为营)


n-step 的state value更新公式为
强化学习系列(七):n-step Bootstrapping (步步为营)

算法伪代码:
强化学习系列(七):n-step Bootstrapping (步步为营)

三、n-step TD Control

上一小节介绍了n-step TD用于prediction问题,本节介绍n-step TD Control,主要介绍分为on-policy方法(n-step Sarsa)和off-policy方法,分别对使用Importance Sampling和不使用Importance Sampling(的方法 n-step Tree Backup Algorithm),以及部分使用Importance Sampling的方法(n-step Q(σ))做介绍。

3.1 n-step Sarsa

首先介绍on-policy方法n-step Sarsa,在第六章中我们介绍了one-step sarsa( sarsa(0) )方法,下面我们画出一系列Sarsa的backup 图。
强化学习系列(七):n-step Bootstrapping (步步为营)

我们重新定义n-step returns(update targets) :
强化学习系列(七):n-step Bootstrapping (步步为营)
当 t + n大于T时,
强化学习系列(七):n-step Bootstrapping (步步为营)

action-value function 更新公式为
强化学习系列(七):n-step Bootstrapping (步步为营)

算法伪代码为:
强化学习系列(七):n-step Bootstrapping (步步为营)

3.2 n-step Off-policy Learning by Importance Sampling

第六章中提到了两种off-policy的方法,我们首先来看基于 Importance Sampling 的off-policy方法。
回忆一下off-policy learning,用于采样的策略b (behavior policy) 和用于evlauate、improve的策略 π (target policy) 是两个不同的策略。为了用策略b的数据来估计策略 π,需要计算两策略之间的关系, 即 Importance Sampling ratio:
强化学习系列(七):n-step Bootstrapping (步步为营)

在n-step off-policy learning中,我们只需要考虑n个action,故state value function 更新公式如下:
强化学习系列(七):n-step Bootstrapping (步步为营)

在第五章中我们讨论过,在环境模型未知的情况下,仅仅估计state value function不能进行Policy improvement,因此,需要估计action value,此时,注意action value的更新需要state-action pair,即本时刻的state st选择的at是已知的,所以在估计action value时,Importance Sampling ratio从t+1时刻开始:
强化学习系列(七):n-step Bootstrapping (步步为营)

算法伪代码如下:
强化学习系列(七):n-step Bootstrapping (步步为营)

刚刚提到的基于Importance Sampling的off-Policy learning 非常简单,但不太实用,更常用的是采用per-decision importance sampleing 思想,接下来来介绍以下这种方法。
首先,普通的 n-step return可以写作:
强化学习系列(七):n-step Bootstrapping (步步为营)
再考虑 off-policy中,behavior policy和 target policy不同即 bπ ,假设在t时刻由b生成的action,永远不会被π选择,即强化学习系列(七):n-step Bootstrapping (步步为营)为0,这会导致这一组采样数据的Importance Sampling ratio为0,从而产生较大的方差。如果我们换一种方式表示update target Gt:h的话,会更好:
强化学习系列(七):n-step Bootstrapping (步步为营)

此时,如果ρt=0,target Gt:h=Vh1(St)不为零且保持不变,所以不会引起较大的方差。这种方法叫做control variate。

对action-value的更新如下:
强化学习系列(七):n-step Bootstrapping (步步为营)

3.3 Off-policy Learning Without Importance Sampling:The n-step Tree Backup Algorithm

off-policy可以不通过importance sampleing的方式进行更新吗?在第六章中我们提到的Q learning 和 Expected sarsa都是Off-policy Learning Without Importance Sampling,可以将这一思想引申到n-step TD 中吗?本节将介绍一种不需要Importance Sampling 的 Off-policy Learning 方法:n-step Tree Backup Algorithm。该算法的backup图如下:
强化学习系列(七):n-step Bootstrapping (步步为营)
该算法构建了一个树状结构,每一层的action,除了选定的action Ai外,还有潜在的未被选择的action。从叶节点处反馈来更新action value 的估计值。简单来说,用所有叶节点的加权和来更新action value 的估计值。所有的叶节点均为未被选择的action,而被选择的action作为中间节点存在。

从上往下看,从St,AtSt+1At+1,所有未被选择的action a可能被选择的概率为π(a|St+1),对action value 的估计值的贡献权重为π(a|St+1),第二层,从St+1At+1St+2At+2,所有未被选择的action a’ 可能被选择的概率为π(a|St+2),所有叶节点(未被选择的action)对action value 的估计值的贡献权重为π(At+1,St+1)π(a|St+2),第三层,所有叶节点(未被选择的action a”)对action value 的估计值的贡献权重为 π(At+1,St+1)π(At+2|St+2)π(a|St+3)。明确了权重的分配,我们来看具体的计算过程:


target for on-step tree backup algorithm(Expected Sarsa)
强化学习系列(七):n-step Bootstrapping (步步为营)

target for two-step tree backup algorithm
强化学习系列(七):n-step Bootstrapping (步步为营)

target for n-step tree backup algorithm
强化学习系列(七):n-step Bootstrapping (步步为营)


action value的更新公式为
强化学习系列(七):n-step Bootstrapping (步步为营)

算法伪代码如下:
强化学习系列(七):n-step Bootstrapping (步步为营)

其实,这个算法的思想在于平衡了action之间的探索问题,将采样数据中没有选择到的action以选择概率的形式体现在了target 中,相当于使得Policy b的采样数据得到扩展。

3.4 A Unifying Algorithm: n-step Q(σ)

上文中我们介绍了n-step sarsa 和 n-step tree backup algorithm,一种是只on-policy的方法,另一种是off-policy的方法,我们观察他们的backup 图发现很有意思,n-step sarsa的backup 图是一颗没有分叉的树,而 n-step tree backup algorithm的backup 图是一颗每个state选择action时都有分叉的树,那么能不能找到一个介于他们之间的算法呢?这就是n-step Q(σ),他的backup 图如下:
强化学习系列(七):n-step Bootstrapping (步步为营)

使得树的一节分叉一节不分叉我们可以获得n-step Q(σ),他的backup 图,那么n-step Q(σ)的target,也可以看做n-step sarsa 和 n-step tree backup algorithm的结合。引入一个切换变量σ,当σ=1时,采用sarsa,当σ=0时,采用 tree backup。

由于target for n-step sarsa可以写作:
强化学习系列(七):n-step Bootstrapping (步步为营)

我们可以构造TD error如下:
强化学习系列(七):n-step Bootstrapping (步步为营)
其中强化学习系列(七):n-step Bootstrapping (步步为营)

可以定义n-steps Q(σ) 的returns 如下:
强化学习系列(七):n-step Bootstrapping (步步为营)

在off-policy中,需要在importance sample ratio中也引入σ:
强化学习系列(七):n-step Bootstrapping (步步为营)

算法伪代码如下:
强化学习系列(七):n-step Bootstrapping (步步为营)

四、总结

本章中我们介绍了介于MC和TD(0)之间的方法,这些方法在性能上比MC和TD(0)优秀。但是这些方法也有缺点计算相比MC和TD(0)过于复杂,和TD(0)相比,这些算法需要更大的存储空间用来存储state,action和reward,在第12章中我们会介绍如何用小计算量和小存储空间来运用multi-step TD。

David Silver 课程
Reinforcement Learning: an introduction