强化学习(七):n步自举法(多步引导法)

强化学习(七):n步自举法(多步引导法)

  在之前,我们知道求解有限马尔可夫决策过程可以通过蒙特卡洛和时序差分来通过与环境多次交互从经验中学习,然而,蒙特卡洛方法在一些不满足分幕式任务或连续型任务上无法获得最终的收益,因此我们引入时序差分方法。时序差分的思想就是将下一时刻的状态价值或下一时刻的状态动作价值作为估计值,用于估计当前状态价值或动作价值。时序差分是一种结合采样和自举的方法,那么一种介于二者之间的则是n步自举,也叫做多步引导(n step bootstraping)。


  本节将主要讲解n步时序差分。下面给出n步时序差分的回溯图:
强化学习(七):n步自举法(多步引导法)
白色圆圈表示状态,黑色圆圈表示(状态动作,Q)。当n=1时,即是上一节描述的TD(0),如果是分幕式任务,当n时幕的采样序列长度时,这时候则是经典的蒙特卡洛;如若n趋向于无穷,则是一种接近蒙特卡洛的近似。介于二者之间的则是n步自举。

1、n步时序差分的TD误差

  我们知道,对于单步时序差分的状态/动作TD误差分别是GtV(St)G_t-V(S_t)GtQ(St,At)G_t - Q(S_t,A_t) ,其中GtG_t是当前预测值与下一时刻状态或动作的带有折扣的估计值的和,即:Gt=Rt+1+γVt(St+1)G_t = R_{t+1} + \gamma V_t(S_{t+1})Gt=Rt+1+γQt(St+1,At+1)G_t = R_{t+1} + \gamma Q_t(S_{t+1},A_{t+1}) 。事实上我们可以推广到接下来的n个时刻,我们记做Gt:t+nG_{t:t+n},例如关于状态价值的多步收益为:

Gt:t+n=Rt+1+γRt+2+...+γn1Rt+n+γnVt+n1(St+n)G_{t:t+n} = R_{t+1} + \gamma R_{t+2} + ... + \gamma^{n-1} R_{t+n} + \gamma^{n}V_{t+n-1}(S_{t+n})

动作价值的多步收益是:

Gt:t+n=Rt+1+γRt+2+...+γn1Rt+n+γnQt+n1(St+n,At+n)G_{t:t+n} = R_{t+1} + \gamma R_{t+2} + ... + \gamma^{n-1} R_{t+n} + \gamma^{n}Q_{t+n-1}(S_{t+n},A_{t+n})

其中n1,0tTnn\geq 1,0\leq t\leq T-n。我们可以发现,前n1n-1个时刻都是将实际的即时奖励作为n步收益的真实值,而最后时刻对应的奖励则是一个估计值。例如在预测阶段,当前时刻tt的状态价值V(St)V(S_{t})的预测值是从当前时刻tt起一直到t+n1t+n-1执行相应动作获得的折扣即时奖励与第t+nt+n时刻的状态价值估计值的和。注意这里的Rt+1R_{t+1}应为状态StS_t的即时奖励,只不过其只有在t+1t+1时刻才能获得。

2、n步时序差分预测

  与单步TD(0)预测算法一样,只不过这里的TD误差是多步TD误差,算法流程如图所示:

强化学习(七):n步自举法(多步引导法)
(1)首先输入一个固定的策略,初始化相关的参数。对于某一个episode,从头开始进行采样。根据当前的状态执行相应的动作,观察并存储得到的收益以及下一时刻转移的状态。

(2)这里需要注意的是,τ=tn+1\tau=t-n+1表示一个临界时刻,在这个时刻之前,我们整个一幕的步数是达不到n-1步,所以不存在一个时刻是可以获得n-1步长的即时奖励(第n步在初始化时候是状态价值为0),因此在这之前仅仅只是遵循固定的策略做采样,并保存这些收益,并不对状态做更新。

(3)一旦达到或超越这个临界时刻,便执行下面的步骤:在第t+n1t+n-1时刻来更新tt时刻的状态价值Vt+n1(St)V_{t+n-1}(S_t),使用的估计值则是t+nt+n时刻的状态价值Vt+n1(St+n)V_{t+n-1}(S_{t+n})。这里会有人不理解Vt+n1(St)V_{t+n-1}(S_t)下标的含义,直观理解就是在t+n1t+n-1时刻的StS_t状态的价值,因为在前n1n-1步并没有更新这些值,而是等到过了n1n-1步后能够保证采样序列中存在一个状态使得其能够向后推延n步获得估计值,才更新这些状态价值。

  更新的方法和单步时序差分一样,公式为:

V(St)=V(St)+α[Gt:t+nV(St)]V(S_t) = V(S_t) + \alpha[G_{t:t+n} - V(S_t)]

3、n步时序差分控制

  在控制阶段,我们依然像单步时序差分一样,引入经典的算法——SARSA和Q算法。在多步引导过程中,它们被称为n步SARSA和Q(σ\sigma)。

  在n步SARSA中,其前n1n-1步是即时奖励,最后一步则是对应的动作价值的估计值,n步回报:

Gt:t+n=Rt+1+γRt+2+...+γn1Rt+n+γnQt+n1(St+n,At+n)G_{t:t+n} = R_{t+1} + \gamma R_{t+2} + ... + \gamma^{n-1} R_{t+n} + \gamma^{n}Q_{t+n-1}(S_{t+n},A_{t+n})

n步SARSA的n步回报还可以写作:

Gt:t+n=Qt1(St,At)+k=tmin(t+n,T)1γkt[Rk+1+γQk(Sk+1,Ak+1)Qk1(Sk,Ak)]G_{t:t+n} = Q_{t-1}(S_t,A_t) + \sum_{k=t}^{min(t+n,T)-1}\gamma^{k-t}[R_{k+1} + \gamma Q_k(S_{k+1},A_{k+1}) - Q_{k-1}(S_k,A_k)]

同理对于n步期望SARSA,最后一步则是所有状态动作二元组价值的期望:

Gt:t+n=Rt+1+γRt+2+...+γn1Rt+n+γnaπ(aSt+n)Qt+n1(St+n,a)G_{t:t+n} = R_{t+1} + \gamma R_{t+2} + ... + \gamma^{n-1} R_{t+n} + \gamma^{n}\sum_{a}\pi(a|S_{t+n}) Q_{t+n-1}(S_{t+n},a)

更新公式则是:

Q(St,At)=Q(St,At)+α[Gt:t+nQ(St,At)]Q(S_t,A_t) = Q(S_t,A_t) + \alpha[G_{t:t+n} - Q(S_t,A_t)]

可以通过回溯图理解这个过程,对应的n步SARSA算法如下所示:

强化学习(七):n步自举法(多步引导法)

强化学习(七):n步自举法(多步引导法)
这里需要注意的是,对策略进行预测时,需要考虑到开发与探索两者矛盾,通常遵循同一个贪心策略,例如ϵ\epsilon-贪心策略。

4、n步时序差分离轨策略预测与控制

  对于离轨策略下,采用基于重要度采样的方法,通过观察行动策略的经验和收益来预测目标策略,重要度采样比是:

ρt:T1=k=tT1π(AkSk)p(Sk+1Sk,Ak)k=tT1b(AkSk)p(Sk+1Sk,Ak)=k=tT1π(AkSk)b(AkSk)\rho_{t:T-1}=\frac{\prod_{k=t}^{T-1}\pi(A_k|S_k)p(S_{k+1}|S_k,A_k)}{\prod_{k=t}^{T-1}b(A_k|S_k)p(S_{k+1}|S_k,A_k)}=\prod_{k=t}^{T-1}\frac{\pi(A_k|S_k)}{b(A_k|S_k)}

如果只对n步进行重要度采样,则是ρt:t+n1\rho_{t:t+n-1}

其中bb是行动策略,π\pi是目标策略。

  基于重要度采样的离轨策略的策略预测公式为:

Vt+n(St)=Vt+n1(St)+αρt:t+n1[Gt:t+nVt+n1(St)]V_{t+n}(S_t) = V_{t+n-1}(S_t) + \alpha\rho_{t:t+n-1}[G_{t:t+n} - V_{t+n-1}(S_t)]

  基于重要度采样的离轨策略的策略控制公式为:

Qt+n(St)=Qt+n1(St)+αρt:t+n1[Gt:t+nQt+n1(St,At)]Q_{t+n}(S_t) = Q_{t+n-1}(S_t) + \alpha\rho_{t:t+n-1}[G_{t:t+n} - Q_{t+n-1}(S_t,A_t)]

事实上,其与之前的同轨策略不同地方就是多乘一个重要度采样比。


  本节看似公式比较多,但基本上和单步TD很类似,只是在选择估计值上看的更长远。在基于表格型的有限马尔可夫决策时,n步时序差分是比较合理、有用的算法。基于这个还有一系列推广,比如n步树回溯、蒙特卡洛树回溯(MCTS)等,下一节将会主要对这两个算法进行讲解。