Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5Mobile wallpaper 6
3122 字
16 分钟
【强化学习基础】#7 n步自举法

概述

  • n步时序差分方法是蒙特卡洛方法和时序差分方法更一般的推广。
  • 将单步Sarsa推广到n步Sarsa我们得到n步方法的同轨策略控制。
  • n步方法最基本的离轨策略控制是基于重要度采样的。
  • n步树回溯法是一种不需要重要度采样的离轨策略控制。

通过进一步归纳可见,动态规划和时序差分学习都根据对后继状态价值的估计来更新对当前状态价值的估计,这种基于其他估计来更新自己的估计的思想被称为自举法。通过将单步时序差分推广到nn步,我们可以得到一系列nn步自举法,甚至在极限状态下得到蒙特卡洛方法。

n步时序差分预测#

对于固定策略π\pi下的给定的多幕采样序列,从某一状态开始,蒙特卡洛方法利用直至终止状态的收益序列对该状态的价值进行更新,而时序差分方法只根据下一步的即时收益,在后继状态的价值估计值的基础上进行自举更新。

我们很容易想到一种介于二者之间的方法是利用该状态之后的多个中间时刻的收益来进行更新,但又不到达终止状态。对于nn步更新,我们利用当前状态之后的nn步收益和nn步之后的价值估计来更新当前状态价值估计。nn步更新仍然属于时序差分方法,因为前面状态的估计值仍根据它与后继状态估计值的差异进行更新,只不过后继状态可以是nn步之后的状态。时序差分量被扩展成nn的方法被称为n步时序差分方法。

利用回溯图可以直观地对算法进行图示总结。不同步数下的时序差分方法更新的回溯图如下,空心圈代表采样的状态,实心点代表采样的动作:

接下来我们考虑该方法的数学表示。我们知道,在蒙特卡洛方法中,更新目标GtG_t沿着完整回报的方向计算

Gt=˙Rt+1+γRt+2+γ2Rt+3++γTt1RTG_t\dot=R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\cdots+\gamma^{T-t-1}R_T

其中TT是终止状态的时刻。

而在单步时序差分中,更新的目标是即时收益加上后继状态的价值函数估计值乘以折扣系数,我们称其为单步回报

Gt:t+1=˙Rt+1+γVt(St+1)G_{t:t+1}\dot=R_{t+1}+\gamma V_t(S_{t+1})

其中VtV_t是在tt时刻vπv_\pi的估计值,后继状态的折后价值函数估计γVt(St+1)\gamma V_t(S_{t+1})可以视为对后续完整回报γRt+2++γTt1RT\gamma R_{t+2}+\cdots+\gamma^{T-t-1}R_T的估计。类似地,将这种想法扩展到两步的情况,我们有两步更新的目标两步回报

Gt:t+2=˙Rt+1+γRt+2+γ2Vt+1(St+2)G_{t:t+2}\dot=R_{t+1}+\gamma R_{t+2}+\gamma^2V_{t+1}(S_{t+2})

而任意nn步更新的目标是n步回报

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

其中n1n\geqslant10tTn0\leqslant t\leqslant T-nnn步回报即在nn步后截断完整回报,并用Vt+n1(St+n)V_{t+n-1}(S_{t+n})作为对剩余部分的估计。如果t+nTt+n\geqslant T,则超出终止状态的部分均为零,nn步回报等于完整回报。

计算时刻ttnn步回报需要在时刻t+nt+n时得到Rt+nR_{t+n}Vt+n1V_{t+n-1}后才能计算。最基础的基于nn步回报的状态价值函数更新算法即n步时序差分nn步TD)算法

Vt+n(St)=˙Vt+n1(St)+α[Gt:t+nVt+n1(St)],0t<TV_{t+n}(S_t)\dot=V_{t+n-1}(S_t)+\alpha[G_{t:t+n}-V_{t+n-1}(S_t)],0\leqslant t<T

在更新当前状态的过程中,其他状态sSts\neq S_t的价值估计保持不变

Vt+n(S)=Vt+n1(S)V_{t+n}(S)=V_{t+n-1}(S)

nn步回报在Vt+n1V_{t+n-1}的基础上更新Vt+nV_{t+n}的一个重要依据是,nn步回报的期望和真实状态价值函数vπ(s)v_\pi(s)之间的最大误差能保证不大于Vt+n1V_{t+n-1}vπ(s)v_\pi(s)之间的最大误差的γn\gamma^n

maxsEπ[Gt:t+nSt=s]vπ(s)γnmaxsVt+n1(s)vπ(s)\underset s\max|\mathbb E_\pi[G_{t:t+n}|S_t=s]-v_\pi(s)|\leqslant\gamma^n\underset s\max|V_{t+n-1}(s)-v_\pi(s)|

这被称为nn步回报的误差减少性质,其可以证明所有的nn步时序差分方法在合适的条件下都能收敛到正确的预测,且nn越大,收敛性越好。

nn步TD的伪代码如下:

  1. 参数:步长α(0,1]\alpha\in(0,1],正整数nn
  2. 对所有的sSs\in\mathcal S,任意初始化V(s)V(s)
  3. 对每幕循环:
    1. 初始化和存储S0终止状态S_0\neq终止状态
    2. TT\leftarrow\infty
    3. 循环t=0,1,2t=0,1,2\cdots
      1. 如果t<Tt<T,那么:
        1. 根据π(St)\pi(\cdot|S_t)采取动作
        2. 观察和存储下一时刻的收益Rt+1R_{t+1}和状态St+1S_{t+1}
        3. 如果St+1S_{t+1}是终止状态,则Tt+1T\leftarrow t+1
      2. τtn+1\tau\leftarrow t-n+1τ\tau是当前正在更新的状态所在时刻)
      3. 如果τ0\tau\geqslant0
        1. Gi=τ+1min(τ+n,T)γiτ1RiG\leftarrow\displaystyle\sum^{\min(\tau+n,T)}_{i=\tau+1}\gamma^{i-\tau-1}R_i
        2. 如果τ+n<T\tau+n<T,那么GG+γnV(Sτ+n)G\leftarrow G+\gamma^nV(S_{\tau+n})
        3. V(Sτ)V(Sτ)+α[GV(Sτ)]V(S_\tau)\leftarrow V(S_\tau)+\alpha[G-V(S_\tau)]
    4. 直到τ=T1\tau=T-1

该伪代码的逻辑较为晦涩,其进一步解释如下:在每一幕,我们从S0S_0根据策略π\pi选择动作直至终止状态STS_T,其中TT在一开始并不知道,直到遇到终止状态才能确定。S0S_0的更新需要等到时刻t=n+1t=n+1时才能执行,相应地,往后Sτ(τ0)S_\tau(\tau\geqslant0)的更新则在时刻t=n+1+τt=n+1+\tau执行,在代码中则表示为在时刻tt执行对Stn+1(τ=tn+10)S_{t-n+1}(\tau=t-n+1\geqslant0)的更新。在更新中,如果SτS_\tau距离终止状态STS_T不足nn步,则min(τ+n,T)=T\min(\tau+n,T)=T,回报只能在终止状态截断,即直接使用完整回报作为更新目标,此时也无需再加上后继状态的折后价值估计,因为终止状态的价值v(ST)=0v(S_T)=0

事实证明,对于大小为S|\mathcal S|的状态集合,nn取其中间大小的值时通常效果最好,这也证明了将单步时序差分方法和蒙特卡洛方法推广到nn步时序差分方法可能会得到更好的效果。

n步Sarsa#

nn步方法与Sarsa结合,我们可以得到同轨策略下的nn步时序差分学习控制方法。nn步版本的Sarsa被称为n步Sarsa,相应地,上一章介绍的初始版本的Sarsa被称为单步SarsaSarsa(0)。不同步数下的Sarsa方法更新的回溯图如下:

![[Pasted image 20250519191609.png]]

和单步TD到单步Sarsa的转换一样,nn步TD到nn步Sarsa的核心思想也是将状态替换为“状态-动作”二元组,并使用ϵ\epsilon-贪心策略。我们根据动作价值估计重新定义nn步Sarsa方法下的nn步回报

Gt:t+n=˙Rt+1+γRt+2++γn1Rt+n+γnQt+n1(St+n,At+n),n1,0t<TnG_{t:t+n}\dot=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{n-1}R_{t+n}+\gamma^nQ_{t+n-1}(S_{t+n},A_{t+n}),n\geqslant1,0\leqslant t<T-n

t+nTt+n\geqslant T时,Gt:t+n=GtG_{t:t+n}=G_t

nn步Sarsa的更新公式为

Qt+n(St,At)=˙Qt+n1(St,At)+α[Gt:t+nQt+n1(St,At)],0t<TQ_{t+n}(S_t,A_t)\dot=Q_{t+n-1}(S_t,A_t)+\alpha[G_{t:t+n}-Q_{t+n-1}(S_t,A_t)],0\leqslant t<T

在处理对应“动作-状态”二元组的更新时,所有其他二元组保持不变,即对于所有sSts\neq S_taAta\neq A_t,有

Qt+n(s,a)=Qt+n1(s,a)Q_{t+n}(s,a)=Q_{t+n-1}(s,a)

nn步Sarsa算法的伪代码如下:

  1. 参数:步长α(0,1]\alpha\in(0,1],很小的ϵ>0\epsilon>0,正整数nn
  2. 对所有的sS,aAs\in\mathcal S,a\in\mathcal A,任意初始化Q(s,a)Q(s,a)
  3. 初始化π\pi为基于QQϵ\epsilon-贪心策略或者某个给定策略
  4. 对每幕循环:
    1. 初始化和存储S0终止状态S_0\neq终止状态
    2. 选择和存储动作A0π(S0)A_0\sim\pi(\cdot|S_0)
    3. TT\leftarrow\infty
    4. 循环t=0,1,2t=0,1,2\cdots
      1. 如果t<Tt<T,那么:
        1. 采取动作AtA_t
        2. 观察和存储下一时刻的收益Rt+1R_{t+1}和状态St+1S_{t+1}
        3. 如果St+1S_{t+1}是终止状态:
          1. Tt+1T\leftarrow t+1
        4. 否则:
          1. 选择并存储动作At+1π(St+1)A_{t+1}\sim\pi(\cdot|S_{t+1})
      2. τtn+1\tau\leftarrow t-n+1τ\tau是当前正在更新的状态所在时刻)
      3. 如果τ0\tau\geqslant0
        1. Gi=τ+1min(τ+n,T)γiτ1RiG\leftarrow\displaystyle\sum^{\min(\tau+n,T)}_{i=\tau+1}\gamma^{i-\tau-1}R_i
        2. 如果τ+n<T\tau+n<T,那么GG+γnQ(Sτ+n,Aτ+n)G\leftarrow G+\gamma^nQ(S_{\tau+n},A_{\tau+n})
        3. Q(Sτ,Aτ)Q(Sτ,Aτ)+α[GQ(Sτ,Aτ)]Q(S_{\tau},A_{\tau})\leftarrow Q(S_{\tau},A_{\tau})+\alpha[G-Q(S_{\tau},A_{\tau})]
        4. 更新π\pi为基于QQϵ\epsilon-贪心策略
    5. 直到τ=T1\tau=T-1

nn步Sarsa相比单步Sarsa能够加速策略学习。假设在一个网格世界中,除了终点具有高收益,其余格子的收益均为零,则完成一幕序列的采样后,单步Sarsa的终点收益只能影响到达终点的前一个格子相应的动作价值,而nn步Sarsa却能更新路径上到达终点的前nn个格子相应的动作价值,学到了更多的知识。

![[Pasted image 20250519191717.png]]

nn步期望Sarsa则在Sarsa的基础上重新定义了nn步回报

Gt:t+n=˙Rt+1+γRt+2++γn1Rt+n+γnVˉt+n1(St+n),n1,0t<TnG_{t:t+n}\dot=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{n-1}R_{t+n}+\gamma^n\bar V_{t+n-1}(S_{t+n}),n\geqslant1,0\leqslant t<T-n

其中Vˉ(s)\bar V(s)表示状态ss期望近似价值,它通过在目标策略下tt时刻的动作价值估计的期望来计算

Vˉt(s)=˙aπ(as)Qt(s,a)\bar V_t(s)\dot=\sum_a\pi(a|s)Q_t(s,a)

终止状态的期望近似价值为零。

n步离轨策略学习#

nn步时序差分方法的离轨策略学习与蒙特卡洛方法中介绍的离轨策略控制相似,因为我们需要行动策略和目标策略在nn步上采取相同行动的相对概率(重要度采样比),进而由行动策略bbnn步回报来预测目标策略π\pinn步回报。

对于由策略bbtt时刻采样的nn步回报Gt:t+nG_{t:t+n},在对nn步之后t+nt+n时刻策略π\pi的状态价值估计Vt+n(St)V_{t+n}(S_t)进行更新时,可以简单地用重要度采样比ρt:t+n1\rho_{t:t+n-1}(两种策略采取AtAt+nA_t\sim A_{t+n}nn个动作的相对概率)进行修正

Vt+n(St)=˙Vt+n1(St)+αρt:t+n1[Gt:t+nVt+n1(St)],0t<TV_{t+n}(S_t)\dot=V_{t+n-1}(S_t)+\alpha\rho_{t:t+n-1}[G_{t:t+n}-V_{t+n-1}(S_t)],0\leqslant t<T

这里,重要度采样比的计算为

ρt:h=˙k=tmin(h,T1)π(AkSk)b(AkSk)\rho_{t:h}\dot=\prod^{\min(h,T-1)}_{k=t}\frac{\pi(A_k|S_k)}{b(A_k|S_k)}

其中min(h,T1)\min(h,T-1)在终止状态截断截断计算。

在蒙特卡洛方法的离轨策略控制中,我们使用贪心策略作为目标策略。但是尽管我们选择了具有试探性的行为策略,在重要度采样中,价值估计的更新仍然取决于目标策略是否有概率选择,因此在学习中使用绝对的贪心策略并不是一个好的选择。我们仍可以采取ϵ\epsilon-贪心策略使得所有价值估计都有被更新的可能,在合适的条件下,基于ϵ\epsilon-贪心策略收敛后的价值估计生成一个贪心策略也能得到最优策略。

离轨策略下的nn步Sarsa算法伪代码如下:

  1. 参数:步长α(0,1]\alpha\in(0,1],正整数nn
  2. 对所有的sS,aAs\in\mathcal S,a\in\mathcal A,任意初始化Q(s,a)Q(s,a)
  3. 初始化bb为一个任意的满足b(as)>0b(a|s)>0的策略
  4. 初始化π\pi为基于QQϵ\epsilon-贪心策略或者某个给定策略
  5. 对每幕循环:
    1. 初始化和存储S0终止状态S_0\neq终止状态
    2. 选择和存储动作A0b(S0)A_0\sim b(\cdot|S_0)
    3. TT\leftarrow\infty
    4. 循环t=0,1,2t=0,1,2\cdots
      1. 如果t<Tt<T,那么:
        1. 采取动作AtA_t
        2. 观察和存储下一时刻的收益Rt+1R_{t+1}和状态St+1S_{t+1}
        3. 如果St+1S_{t+1}是终止状态:
          1. Tt+1T\leftarrow t+1
        4. 否则:
          1. 选择并存储动作At+1b(St+1)A_{t+1}\sim b(\cdot|S_{t+1})
      2. τtn+1\tau\leftarrow t-n+1τ\tau是当前正在更新的状态所在时刻)
      3. 如果τ0\tau\geqslant0
        1. ρi=τ+1min(τ+n1,T1)π(AiSi)b(AiSi)\displaystyle\rho\leftarrow\prod^{\min(\tau+n-1,T-1)}_{i=\tau+1}\frac{\pi(A_i|S_i)}{b(A_i|S_i)}
        2. Gi=τ+1min(τ+n,T)γiτ1RiG\leftarrow\displaystyle\sum^{\min(\tau+n,T)}_{i=\tau+1}\gamma^{i-\tau-1}R_i
        3. 如果τ+n<T\tau+n<T,那么GG+γnQ(Sτ+n,Aτ+n)G\leftarrow G+\gamma^nQ(S_{\tau+n},A_{\tau+n})
        4. Q(Sτ,Aτ)Q(Sτ,Aτ)+αρ[GQ(Sτ,Aτ)]Q(S_{\tau},A_{\tau})\leftarrow Q(S_{\tau},A_{\tau})+\alpha\rho[G-Q(S_{\tau},A_{\tau})]
        5. 更新π\pi为基于QQϵ\epsilon-贪心策略
    5. 直到τ=T1\tau=T-1

n步树回溯法#

nn步树回溯法是一种不需要重要度采样的nn步离轨策略学习方法。普通的nn步离轨策略方法只依赖行动策略采样的具体动作,因此需要对行动策略的动作采取概率进行修正。而在nn步树回溯法中,行动策略的作用仅仅是产生状态转移,决定采样的动作-状态路径,在计算nn步回报时,行动策略选择的动作和未选择的动作都会以在目标策略下的选择概率被加权。一个三步树回溯更新的回溯图如下:

![[Pasted image 20250519201306.png|138]]

树回溯算法的单步回报与期望Sarsa相同,即对于t<T1t<T-1,有

Gt:t+1=˙Rt+1+γaπ(aSt+1)Qt(St+1,a)G_{t:t+1}\dot=R_{t+1}+\gamma\sum_a\pi(a|S_{t+1})Q_t(S_{t+1},a)

对于t<T2t<T-2,两步树回溯的回报将Q(St+1,At+1)Q(S_{t+1},A_{t+1})展开为在St+1S_{t+1}选择At+1A_{t+1}转移到St+2S_{t+2}的单步回报

Gt:t+2=˙Rt+1+γaAt+1π(aSt+1)Qt(St+1,a)+γπ(At+1St+1)(Rt+2+γaπ(aSt+2)Qt+1(St+2,a))=Rt+1+γaAt+1π(aSt+1)Qt(St+1,a)+γπ(At+1St+1)Gt+1:t+2\begin{split} G_{t:t+2}&\dot=R_{t+1}+\gamma\sum_{a\neq A_{t+1}}\pi(a|S_{t+1})Q_t(S_{t+1},a)+\gamma\pi(A_{t+1}|S_{t+1})(R_{t+2}+\gamma\sum_a\pi(a|S_{t+2})Q_{t+1}(S_{t+2},a))\\ &=R_{t+1}+\gamma\sum_{a\neq A_{t+1}}\pi(a|S_{t+1})Q_t(S_{t+1},a)+\gamma\pi(A_{t+1}|S_{t+1})G_{t+1:t+2} \end{split}

从这个公式中我们可以看出树回溯的nn步回报的递归形式,即对于t<T1,n2t<T-1,n\geqslant2,有

Gt:t+n=˙Rt+1+γaAt+1π(aSt+1)Qt(St+1,a)+γπ(At+1St+1)Gt+1:t+nG_{t:t+n}\dot=R_{t+1}+\gamma\sum_{a\neq A_{t+1}}\pi(a|S_{t+1})Q_t(S_{t+1},a)+\gamma\pi(A_{t+1}|S_{t+1})G_{t+1:t+n}

上式是我们在代码中更新nn步回报的基础。对于t+nt+n超出T1T-1的部分,我们仍使用终止状态的收益RTR_T截断,即GT1:t+n=RTG_{T-1:t+n}=R_T。价值估计的更新公式与nn步Sarsa一样

Qt+n(St,At)=˙Qt+n1(St,At)+α[Gt:t+nQt+n1(St,At)],0t<TQ_{t+n}(S_t,A_t)\dot=Q_{t+n-1}(S_t,A_t)+\alpha[G_{t:t+n}-Q_{t+n-1}(S_t,A_t)],0\leqslant t<T

nn步树回溯算法的伪代码如下:

  1. 参数:步长α(0,1]\alpha\in(0,1],正整数nn
  2. 对所有的sS,aAs\in\mathcal S,a\in\mathcal A,任意初始化Q(s,a)Q(s,a)
  3. 初始化bb为一个任意的满足b(as)>0b(a|s)>0的策略
  4. 初始化π\pi为基于QQϵ\epsilon-贪心策略或者某个给定策略
  5. 对每幕循环:
    1. 初始化和存储S0终止状态S_0\neq终止状态
    2. 根据S0S_0任意选择并存储动作A0A_0
    3. TT\leftarrow\infty
    4. 循环t=0,1,2t=0,1,2\cdots
      1. 如果t<Tt<T,那么:
        1. 采取动作AtA_t
        2. 观察和存储下一时刻的收益Rt+1R_{t+1}和状态St+1S_{t+1}
        3. 如果St+1S_{t+1}是终止状态:
          1. Tt+1T\leftarrow t+1
        4. 否则:
          1. 根据St+1S_{t+1}任意选择并存储动作At+1A_{t+1}
      2. τtn+1\tau\leftarrow t-n+1τ\tau是当前正在更新的状态所在时刻)
      3. 如果τ0\tau\geqslant0
        1. 如果t+1Tt+1\geqslant T
          1. GRTG\leftarrow R_T
        2. 否则
          1. GRt+1+γaπ(aSt+1)Q(St+1,a)G\leftarrow R_{t+1}+\gamma\displaystyle\sum_a\pi(a|S_{t+1})Q(S_{t+1},a)
        3. 循环kkmin(t,T1)\min(t,T-1)递减到τ+1\tau+1
          1. GRk+γaAkπ(aSk)Q(Sk,a)+γπ(AkSk)GG\leftarrow R_k+\gamma\displaystyle\sum_{a\neq A_k}\pi(a|S_k)Q(S_k,a)+\gamma\pi(A_k|S_k)G
        4. Q(Sτ,Aτ)Q(Sτ,Aτ)+α[GQ(Sτ,Aτ)]Q(S_{\tau},A_{\tau})\leftarrow Q(S_{\tau},A_{\tau})+\alpha[G-Q(S_{\tau},A_{\tau})]
        5. 更新π\pi为基于QQϵ\epsilon-贪心策略
    5. 直到τ=T1\tau=T-1
【强化学习基础】#7 n步自举法
https://inkem.space/posts/强化学习基础/7-n步自举法/
作者
一杯为品
发布于
2025-05-19
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00