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

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

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


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

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

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

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} = 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+γnVt+n1(St+n)

动作价值的多步收益是:

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 ) 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}) Gt:t+n=Rt+1+γRt+2+...+γn1Rt+n+γnQt+n1(St+n,At+n)

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

2、n步时序差分预测

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

在这里插入图片描述
(1)首先输入一个固定的策略,初始化相关的参数。对于某一个episode,从头开始进行采样。根据当前的状态执行相应的动作,观察并存储得到的收益以及下一时刻转移的状态。

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

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

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

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

3、n步时序差分控制

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

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

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 ) 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}) Gt:t+n=Rt+1+γRt+2+...+γn1Rt+n+γnQt+n1(St+n,At+n)

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

G t : t + n = Q t − 1 ( S t , A t ) + ∑ k = t m i n ( t + n , T ) − 1 γ k − t [ R k + 1 + γ Q k ( S k + 1 , A k + 1 ) − Q k − 1 ( S k , A k ) ] 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)] Gt:t+n=Qt1(St,At)+k=tmin(t+n,T)1γkt[Rk+1+γQk(Sk+1,Ak+1)Qk1(Sk,Ak)]

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

G t : t + n = R t + 1 + γ R t + 2 + . . . + γ n − 1 R t + n + γ n ∑ a π ( a ∣ S t + n ) Q t + n − 1 ( S t + 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) Gt:t+n=Rt+1+γRt+2+...+γn1Rt+n+γnaπ(aSt+n)Qt+n1(St+n,a)

更新公式则是:

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

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

在这里插入图片描述

在这里插入图片描述
这里需要注意的是,对策略进行预测时,需要考虑到开发与探索两者矛盾,通常遵循同一个贪心策略,例如 ϵ − \epsilon- ϵ贪心策略。

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

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

ρ t : T − 1 = ∏ k = t T − 1 π ( A k ∣ S k ) p ( S k + 1 ∣ S k , A k ) ∏ k = t T − 1 b ( A k ∣ S k ) p ( S k + 1 ∣ S k , A k ) = ∏ k = t T − 1 π ( A k ∣ S k ) b ( A k ∣ S k ) \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)} ρt:T1=k=tT1b(AkSk)p(Sk+1Sk,Ak)k=tT1π(AkSk)p(Sk+1Sk,Ak)=k=tT1b(AkSk)π(AkSk)

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

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

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

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 ) ] 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)] Vt+n(St)=Vt+n1(St)+αρt:t+n1[Gt:t+nVt+n1(St)]

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

Q t + n ( S t ) = Q t + n − 1 ( S t ) + α ρ t : t + n − 1 [ G t : t + n − Q t + n − 1 ( S t , A t ) ] 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)] Qt+n(St)=Qt+n1(St)+αρt:t+n1[Gt:t+nQt+n1(St,At)]

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


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

©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页