【强化学习理论基础-通用】(26)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) n-step Sarsa,极端体现(MC-蒙特卡洛)

若需观看机器人系列相关博客,请劳驾至:【足式机器人无死角系列之-【强化学习基础-通用】、【仿真及训练环境】、【强化学习】:isaac-gym 与 isaac-lab 从零开始

郑重声明:该系列博客为本人 ( W e n h a i Z h u ) 独家私有 , 禁止转载与抄袭 , 首次举报有谢 , 若有需请私信授权! \color{red}郑重声明:该系列博客为本人(WenhaiZhu)独家私有,禁止转载与抄袭,首次举报有谢,若有需请私信授权! 郑重声明:该系列博客为本人(WenhaiZhu)独家私有,禁止转载与抄袭,首次举报有谢,若有需请私信授权!

回顾: 在上一篇博客中,详细介绍且推导了 Expected Sarsa 算法,首先其是初始 Sarsa 算的一个改进版本,但是其需要与策略 π 的输出结果(决策-动作执行的概率分布)搭配使用。另外还回顾了之前分析过的 MC Epsilon Greedy 算法,且利用 Expected Sarsa 代替其中 MC 策略价值评估部分。最后以迷宫游戏示例,进行相关实例讲解。

本系列博客链接为: {\color{blue}本系列博客链接为:} 本系列博客链接为:【强化学习理论基础-通用】(01)从零开始白话给你讲,简单推导公式,深刻理解,一眼万年!:https://blog.youkuaiyun.com/weixin_43013761/article/details/143168169

本博客编写于: 20241229 ,台式机为 u b u n t u 20.04 , 3090 G e F o r c e R T X 显存 24 G { \color{purple} 本博客编写于:20241229,台式机为 ubuntu 20.04,3090 GeForce RTX 显存24G} 本博客编写于:20241229,台式机为ubuntu20.043090GeForceRTX显存24G:与你现在的代码,或者环境等存在一定差异也在情理之中,故切勿认为该系列博客绝对正确,且百密必有一疏,若发现错误处,恳请各位读者直接指出,本人会尽快进行整改,尽量使得后面的读者少踩坑,评论部分我会进行记录与感谢,只有这样,该系列博客才能成为精品,这里先拜谢各位朋友了。

文末正下方中心提供了本人 联系方式, 点击本人照片即可显示 W X → 官方认证,请备注 强化学习 。 {\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{blue}点击本人照片即可显示WX→官方认证,请备注\color{red} 强化学习}。 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX官方认证,请备注强化学习

一、前言

上一篇博客中,在基本 Sarsa 算法的基础上,推导了 Expected Sarsa 算法,该算法搭配策略 π \pi π 输出的动作概率分布使用,通过该方式减少了一个随机变量 A t + 1 A_{t+1} At+1,Expected Sarsa 算法每次迭代只需要采集输入数据即可:
{ s t , a t , r t + 1 , s t + 1 } t ,        t = 1 , 2 , 3 ⋯ (01) \color{green} \tag{01} \{s_t,a_t, r_{t+1},s_{t+1}\}_t,~~~~~~t=1,2,3\cdots {st,at,rt+1,st+1}t,      t=1,2,3(01)上式为实际采样,对应随机变量为 { S t , A t , R r + 1 , S t + 1 } \{S_t,A_t,R_{r+1},S_{t+1}\} {St,At,Rr+1,St+1},现对于初始的 Sarsa 要求的 5 个随机变量,更加少,意味着方差变小,当然这样会使得初始偏差变大,不过这是没有关系的,随着迭代优化偏差会逐步减少, Expected Sarsa 算法公式如下所示:
q k + 1 ( s t , a t ) = q k ( s t , a t ) − α k ( s t , a t ) [ q k ( s t , a t ) − [ r t + 1 + γ E [ q k ( s t + 1 , A t + 1 ) ∣ A t + 1 = a ] ] = q k ( s t , a t ) − α k ( s t , a t ) [ q k ( s t , a t ) − [ r t + 1 + γ ∑ a [ π ( a ∣ s t + 1 ) ∗ q k ( s t + 1 , a ) ] ] = q k ( s t , a t ) − α k ( s t , a t ) [ q k ( s t , a t ) − [ r t + 1 + γ v k ( s t + 1 ) ] (02) \color{green} \tag{02} \begin{aligned} q_{k+1}\left(s_{t}, a_{t}\right) & =q_{k}\left(s_{t}, a_{t}\right)-\alpha_{k}\left(s_{t}, a_{t}\right)\left[q_{k}\left(s_{t}, a_{t}\right)-\left[r_{t+1}+\gamma {\color{purple} \mathbb{E}[q_{k}\left(s_{t+1}, A_{t+1}\right)|A_{t+1}=a]}\right]\right. \\ & =q_{k}\left(s_{t}, a_{t}\right)-\alpha_{k}\left(s_{t}, a_{t}\right)\left[q_{k}\left(s_{t}, a_{t}\right)-\left[r_{t+1}+\gamma {\color{purple} \sum_{a}[\pi(a|s_{t+1})*q_k(s_{t+1},a)]}\right]\right.\\ & =q_{k}\left(s_{t}, a_{t}\right)-\alpha_{k}\left(s_{t}, a_{t}\right)\left[q_{k}\left(s_{t}, a_{t}\right)-\left[r_{t+1}+\gamma {\color{purple}v_k{(s_{t+1})}}\right]\right.\\ \end{aligned} qk+1(st,at)=qk(st,at)αk(st,at)[qk(st,at)[rt+1+γE[qk(st+1,At+1)At+1=a]]=qk(st,at)αk(st,at)[qk(st,at)[rt+1+γa[π(ast+1)qk(st+1,a)]]=qk(st,at)αk(st,at)[qk(st,at)[rt+1+γvk(st+1)](02)其中 π ( a ∣ s t + 1 ) \color{purple} \pi(a|s_{t+1}) π(ast+1) 表示策略 π \pi π 处于 s t + 1 s_{t+1} st+1 状态下,执行动作 a a a 的概率。 q k q_k qk 表示动作价值预测模型, q k ( s t + 1 , a ) q_k(s_{t+1},a) qk(st+1,a) 表示在状态 s t + 1 s_{t+1} st+1 下执行动作 a a a 的动作(行为)价值。 因为上式需要求期望,即多次运用动作价值预测模型 q k q_k qk,所以其比普通 Sarsa 算法计算量更大,但是迭代过程更加稳定。

回顾一下前面梯度下降的一系列博客如:【强化学习理论基础-通用】(20)从零开始白话给你讲[数学原理]:随机梯度下降系列:BGD、SGD、MBGD,深入探讨与对比,其中 BGD、SGD 两个算法属于 MBGD 算法的特例。最基础的 SGD 算法,每次迭代的时候只使用到一个数据。

进行类比,现在推导出来的 Sarsa 或 Expected Sarsa 算法,只使用到两个连续时刻的数据,那是否可以推广呢?比如说使用 3 3 3个、 4 4 4个亦或者 n n n 个时刻的连续数据进行一次迭代优化?当然是可以的,该篇博客讲解的 n-step Sarsa 算法,就是这种形式。不用多说,这里的 n = 1 n=1 n=1 就是 Expected Sarsa 或者 Sarsa 算法,为 n-step Sarsa 算法的一种极端表现。后面将看到 n = N ( ∞ ) n=N(\infty) n=N() 时,其等价于MC-蒙特卡洛算法。

二、引导

首先需要回顾一下前面的知识点,于 强化学习理论基础-通用】(24)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) - action values(Sarsa) 中(04)式与(23)式分别如下:
q ( s t , a t ) = q ( S t = s t , A t = a t ) = E [ G t ∣ S t = s t , A t = a t ] (03) \color{blue} \tag{03} q(s_t, a_t)=q(S_t=s_t, A_t=a_t)=\mathbb{E}\left[G_{t} \mid S_{t}=s_t, A_{t}=a_t\right] q(st,at)=q(St=st,At=at)=E[GtSt=st,At=at](03) q ( s t , a t ) = E [ R t + 1 + γ q ( S t + 1 , A t + 1 ) ∣ S t = s t , A t = a t ] (04) \color{blue} \tag{04} q(s_t, a_t)=\mathbb{E}[R_{t+1}+\gamma q(S_{t+1}, A_{t+1})|S_{t}=s_{t},A_{t}=a_{t}] q(st,at)=E[Rt+1+γq(St+1,At+1)St=st,At=at](04)因为上式需要求期望,所以都是以大写字母进行体现,上述由(04)式推导出(23)式的关系纽带为:
G t = R t + 1 + γ G t + 1 (05) \color{purple} \tag{05} G_t=R_{t+1}+\gamma G_{t+1} Gt=Rt+1+γGt+1(05)要知道 G t G_t Gt 的书写形式是有很多种的,如上所示其只体现了 t t t t + 1 t+1 t+1 两个时刻,比如还可以写成: G t ( 2 ) = R t + 1 + γ R t + 2 + γ 2 G t + 2 G t ( 3 ) = R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 G t + 3 ⋯ G t ( n ) = R t + 1 + γ R t + 2 + ⋯ + γ R t + n + γ 2 G t + n \color{green} \tag{06} \begin{align*} G_t^{(2)}=&R_{t+1}+\gamma R_{t+2}+\gamma^2G_{t+2}\\ G_t^{(3)}=&R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+\gamma^3G_{t+3}\\ &\cdots\\ G_t^{(n)}=&R_{t+1}+\gamma R_{t+2}+\cdots+\gamma R_{t+n}+\gamma^2G_{t+n}\\ \end{align*} Gt(2)=Gt(3)=Gt(n)=Rt+1+γRt+2+γ2Gt+2Rt+1+γRt+2+γ2Rt+3+γ3Gt+3Rt+1+γRt+2++γRt+n+γ2Gt+n(06)也就是说,回报 G t G_{t} Gt 可以写成任意个即时奖励 R R R 的组合,只要确认好折扣因子的幂次项即可,另外(05)式等价于 G t = G t 1 = R t + 1 + γ G t + 1 (07) \color{green} \tag{07} G_t=G^{1}_t=R_{t+1}+\gamma G_{t+1} Gt=Gt1=Rt+1+γGt+1(07)也就是 n = 1 n=1 n=1 的情况。接着还要讲解的一个核心点就是:

核心: 前面学习到的时序差分算法有几个,分为为 时序差分(Temporal-Difference) - state values(基础版本)、时序差分(Temporal-Difference) - action values(Sarsa)、时序差分(Temporal-Difference) - action values(Expected Sarsa)。具体使用哪种方式来实现所谓 n-step 算法,取决于回报 G 的定义。

有的朋友可能知道符号 G G G 表示回报,且两个时刻的回报存在关系 G t = R t + 1 + γ G t + 1 G_t=R_{t+1}+\gamma G_{t+1} Gt=Rt+1+γGt+1,但是更加具体一点,其应该又是如何定义的呢?或者说这里即时奖励 R t + 1 R_{t+1} Rt+1 应该如何定义?

三、TD-VS算法回顾

回顾一下算法【强化学习理论基础-通用】(22)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) - state values(基础版本) 之 公式推导 中(26)式:
v π ( s t ) = E [ R t + 1 + v π ( S t + 1 ) ∣ S t = s t ] ,      s t , s t + 1 ∈ S (08) \color{green} \tag{08} v_{\pi}(s_t)=\mathbb{E}[R_{t+1}+v_{\pi}(S_{t+1})|S_{t}=s_{t}],~~~~\quad s_t,s_{t+1} \in \mathcal{S} vπ(st)=E[Rt+1+vπ(St+1)St=st],    st,st+1S(08)再到基于其推导出来的(41)式:
v k + 1 ( s t ) = v k ( s t ) − α t ( s t ) [ v k ( s t ) − [ r t + 1 + γ v k ( s t + 1 ) ] ] (09) \color{green} \tag{09} \begin{aligned} v_{k+1}\left(s_{t}\right) & =v_{k}\left(s_{t}\right)-\alpha_{t}\left(s_{t}\right)\left[v_{k}\left(s_{t}\right)-\left[r_{t+1}+\gamma v_{k}\left(s_{t+1}\right)\right]\right] \end{aligned} vk+1(st)=vk(st)αt(st)[vk(st)[rt+1+γvk(st+1)]](09)可以知道,因为一次直接求解真正意义状态价值 v π ( s t ) = v π ( S t = s t ) = E [ R t + 1 + γ G t + 1 ∣ S t = s t ] , s t ∈ S (10) \color{green} \tag{10} v_{\pi}(s_t)=v_{\pi}(S_t=s_t)=\mathbb{E}[R_{t+1}+\gamma G_{t+1} \mid S_t=s_t], \quad s_t \in \mathcal{S} vπ(st)=vπ(St=st)=E[Rt+1+γGt+1St=st],stS(10)需所有的奖励与数据,然后根据回报递推,且求期望。所以构建了:
v π ( s t ) = r t + 1 + γ v k ( s t + 1 ) (11) \color{green} \tag{11} v_{\pi}(s_t)=r_{t+1}+\gamma v_{k}\left(s_{t+1}\right) vπ(st)=rt+1+γvk(st+1)(11)这样一个低配版本的贝尔曼转态价值关系式,通过利用采样数据迭代的方式逼近随机变量期望,这也是随机梯度下降的核心思想。

四、 Sarsa算法回顾

无论基础版本的 Sarsa 或者高配点的 Expected Sarsa 算法,他们都是基于 【强化学习理论基础-通用】(24)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) - action values(Sarsa) 中(21)式推导出来的,如下所示: q ( s t , a t ) = E [ R t + 1 + γ q ( S t + 1 , A t + 1 ) ∣ S t = s t , A t + 1 = a t ] (12) \color{green} \tag{12} q(s_t, a_t)=\mathbb{E}[R_{t+1}+\gamma q(S_{t+1}, A_{t+1})|S_{t}=s_{t},A_{t+1}=a_{t}] q(st,at)=E[Rt+1+γq(St+1,At+1)St=st,At+1=at](12)若是基础 Sarsa 算法,推导结果为:
q k + 1 ( s t , a t ) = q k ( s t , a t ) − α k ( s t , a t ) [ q k ( s t , a t ) − [ r t + 1 + γ q k ( s t + 1 , a t + 1 ) ] (13) \color{green} \tag{13} \begin{aligned} q_{k+1}\left(s_{t}, a_{t}\right) & =q_{k}\left(s_{t}, a_{t}\right)-\alpha_{k}\left(s_{t}, a_{t}\right)\left[q_{k}\left(s_{t}, a_{t}\right)-\left[r_{t+1}+\gamma q_{k}\left(s_{t+1}, a_{t+1}\right)\right]\right. \\ \end{aligned} qk+1(st,at)=qk(st,at)αk(st,at)[qk(st,at)[rt+1+γqk(st+1,at+1)](13)若是 Expected Sarsa 算法,推导结果为(02)式: q k + 1 ( s t , a t ) = q k ( s t , a t ) − α k ( s t , a t ) [ q k ( s t , a t ) − [ r t + 1 + γ E [ q k ( s t + 1 , A t + 1 ) ∣ A t + 1 = a t + 1 ] ] (14) \color{green} \tag{14} \begin{aligned} q_{k+1}\left(s_{t}, a_{t}\right) & =q_{k}\left(s_{t}, a_{t}\right)-\alpha_{k}\left(s_{t}, a_{t}\right)\left[q_{k}\left(s_{t}, a_{t}\right)-\left[r_{t+1}+\gamma {\color{purple} \mathbb{E}[q_{k}\left(s_{t+1}, A_{t+1}\right)|A_{t+1}=a_{t+1}]}\right]\right. \\ \end{aligned} qk+1(st,at)=qk(st,at)αk(st,at)[qk(st,at)[rt+1+γE[qk(st+1,At+1)At+1=at+1]](14)两者都直接求解(12)式的期望,同样是使用低配版的贝尔曼关系式去替补,如下:
q ( s t , a t ) = r t + 1 + γ q ( s t + 1 , s t + 1 ) (15) \color{green} \tag{15} q(s_t,a_t)=r_{t+1}+\gamma q(s_{t+1}, s_{t+1}) q(st,at)=rt+1+γq(st+1,st+1)(15) q ( s t , a t ) = r t + 1 + γ E [ q k ( s t + 1 , A t + 1 ) ∣ A t + 1 = a t + 1 ] (16) \color{green} \tag{16} q(s_t,a_t)=r_{t+1}+\gamma {\color{purple} \mathbb{E}[q_{k}\left(s_{t+1}, A_{t+1}\right)|A_{t+1}=a_{t+1}}] q(st,at)=rt+1+γE[qk(st+1,At+1)At+1=at+1](16)上两式中前者为 Sarsa,后者为 Expected Sarsa。他们都没有完全直接求得(12)的期望,而是利用随机梯度下降的方式,利用采样数据迭代优化逼近随机变量的期望值,这也是随机梯度下降的核心思想。

五、 n-step Sarsa推导

再来看(06)式,其大写符号表示这是随机变量,类似于 TD-VS 与 Sarsa 算法的推导过程,先建立好随机变量的完美关系式:
 Sarsa  ⟵ G t ( 1 ) = R t + 1 + γ G t + 1 , G t ( 2 ) = R t + 1 + γ R t + 2 + γ 2 G t + 2 , ⋮ n -step Sarsa  ⟵ G t ( n ) = R t + 1 + γ R t + 2 + ⋯ + γ n G t + n , ⋮ M C ⟵ G t ( ∞ ) = R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 R t + 4 ⋯ (17) \color{green} \tag{17} \begin{aligned} \text {\color{blue} Sarsa } \longleftarrow \quad G_{t}^{(1)} & =R_{t+1}+\gamma G_{t+1}, \\ G_{t}^{(2)} & =R_{t+1}+\gamma R_{t+2}+\gamma^{2} G_{t+2}, \\ \vdots & \\ {\color{blue} n \text {-step Sarsa }} \longleftarrow \quad G_{t}^{(n)} & =R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{n} G_{t+n}, \\ \vdots & \\ \mathrm{\color{blue} MC} \longleftarrow \quad G_{t}^{(\infty)} & =R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\gamma^{3} R_{t+4} \cdots \end{aligned}  Sarsa Gt(1)Gt(2)n-step Sarsa Gt(n)MCGt()=Rt+1+γGt+1,=Rt+1+γRt+2+γ2Gt+2,=Rt+1+γRt+2++γnGt+n,=Rt+1+γRt+2+γ2Rt+3+γ3Rt+4(17)通过前面的博客 【强化学习理论基础-通用】(07)从零开始白话给你讲[数学原理]:贝尔曼(BellmanEquation)之拓展,动作(行为)价值(Action value),优势(Advantage) 中(07)式,可知道:
v π ( s ) = E [ G ] = ∑ a [ p ( g ) ∗ g ] = ∑ a [ π ( a ∣ s ) q π ( s , a ) ] (22) \color{green} \tag{22} {v_{\pi}(s)}=\mathbb{E}[G]=\sum_a[p(g)*g]=\sum_{a} [\pi(a \mid s) {\color{red}q_{\pi}(s, a)}] vπ(s)=E[G]=a[p(g)g]=a[π(as)qπ(s,a)](22)上式进行对比,易得: p ( g ) = π ( a ∣ s )             g = q π ( s , a ) (19) \color{green} \tag{19} p(g)=\pi(a \mid s)~~~~~~~~~~~g=q_{\pi}(s, a) p(g)=π(as)           g=qπ(s,a)(19)上式中都使用小写表示,即代表实际采样形式,若涉及到期望,使用随机变量的形式表示(额外附加时间序列下标): G t = q π ( s t , a t ) (20) \color{green} \tag{20} G_t=q_{\pi}(s_t, a_t) Gt=qπ(st,at)(20)拓展可得: G t + 1 = q π ( s t + 1 , a t + 1 )           G t + m = q π ( s t + 2 , a t + 2 )          G t + n = q π ( s t + n , a t + n ) (21) \color{green} \tag{21} G_{t+1}=q_{\pi}(s_{t+1}, a_{t+1})~~~~~~~~~G_{t+m}=q_{\pi}(s_{t+2}, a_{t+2})~~~~~~~~G_{t+n}=q_{\pi}(s_{t+n}, a_{t+n}) Gt+1=qπ(st+1,at+1)         Gt+m=qπ(st+2,at+2)        Gt+n=qπ(st+n,at+n)(21)在把上式带入到(17)式可得:  Sarsa  ⟵ G t ( 1 ) = R t + 1 + γ q π ( S t + 1 , A t + 1 ) , G t ( 2 ) = R t + 1 + γ R t + 2 + γ 2 q π ( S t + 2 , A t + 2 ) , ⋮ n -step Sarsa  ⟵ G t ( n ) = R t + 1 + γ R t + 2 + ⋯ + γ n q π ( S t + n , A t + n ) , ⋮ M C ⟵ G t ( ∞ ) = R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 R t + 4 ⋯ (22) \color{green} \tag{22} \begin{aligned} \text {\color{blue} Sarsa } \longleftarrow \quad G_{t}^{(1)} & =R_{t+1}+\gamma {\color{purple}q_{\pi}\left(S_{t+1}, A_{t+1}\right)}, \\ G_{t}^{(2)} & =R_{t+1}+\gamma R_{t+2}+\gamma^{2} {\color{purple}q_{\pi}\left(S_{t+2}, A_{t+2}\right)}, \\ \vdots & \\ {\color{blue} n \text {-step Sarsa }} \longleftarrow \quad G_{t}^{(n)} & =R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{n} {\color{purple}q_{\pi}\left(S_{t+n}, A_{t+n}\right)}, \\ \vdots & \\ \mathrm{\color{blue} MC} \longleftarrow \quad G_{t}^{(\infty)} & =R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\gamma^{3} R_{t+4} \cdots \end{aligned}  Sarsa Gt(1)Gt(2)n-step Sarsa Gt(n)MCGt()=Rt+1+γqπ(St+1,At+1),=Rt+1+γRt+2+γ2qπ(St+2,At+2),=Rt+1+γRt+2++γnqπ(St+n,At+n),=Rt+1+γRt+2+γ2Rt+3+γ3Rt+4(22)对于回报 G G G 来说,可以根据 n n n 值的不同,可以写成多种形式,前面推导 Sarsa 算法就是建立在 n = 1 n=1 n=1 基础上进行推到的。现在为推导 时序差分(Temporal-Difference) n-step Sarsa 算法,则以 G t ( n ) = R t + 1 + γ R t + 2 + ⋯ + γ n q π ( S t + n , A t + n ) , (23) \color{green} \tag{23} \quad G_{t}^{(n)}=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{n} {\color{purple}q_{\pi}\left(S_{t+n}, A_{t+n}\right)}, Gt(n)=Rt+1+γRt+2++γnqπ(St+n,At+n),(23)为基准进行推导,具体细节部分就不再进行重复了,有兴趣的朋友可以参考 【强化学习理论基础-通用】(24)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) - action values(Sarsa) 推导过程,进而类似的推导出 n-step Sarsa 算法,总的来说分为如下几个步骤:

步骤一: {\color{blue} 步骤一:} 步骤一: 类似于 [三、TD-VS算法回顾] [四、 Sarsa算法回顾],根据: q ( s t , a t ) = q ( S t = s t , A t = a t ) = E [ G t ∣ S t = s t , A t = a t ] (24) \color{green} \tag{24} q(s_t, a_t)=q(S_t=s_t, A_t=a_t)=\mathbb{E}\left[G_{t} \mid S_{t}=s_t, A_{t}=a_t\right] q(st,at)=q(St=st,At=at)=E[GtSt=st,At=at](24)把(23)式的 G t = G t ( n ) G_t=G_{t}^{(n)} Gt=Gt(n) 带入到上式,利用期望条件概率公式 E [ X ∣ Y ] = E [ E [ X ∣ Y , Z ] ∣ Y ] E[X|Y] = E[E[X|Y,Z]|Y] E[XY]=E[E[XY,Z]Y],以及马尔科夫链可以推到出:
q ( s t , a t ) = E [ R t + 1 + ⋯ + R t + n + γ q ( S t + n , A t + n ) ∣ S t = s t , A t = a t ] (25) \color{red} \tag{25} q(s_t, a_t)=\mathbb{E}[R_{t+1}+\cdots+R_{t+n}+\gamma q(S_{t+n}, A_{t+n})|S_{t}=s_{t},A_{t}=a_{t}] q(st,at)=E[Rt+1++Rt+n+γq(St+n,At+n)St=st,At=at](25)

步骤二: {\color{blue} 步骤二:} 步骤二: 上式为期望形式,对比于 [三、TD-VS算法回顾] [四、 Sarsa算法回顾] 可以知道,其是一个相对来说比较理想的形式,现在基于 mode-free,也就是随机变量的概率分布都是未知的,这个时候,可以采用 MBGD 算法,这里涉及到多个随机变量的期望,可参考:添【强化学习理论基础-通用】(22)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) - state values(基础版本) 之 公式推导 的 [3.示例三],对其进行简单的推广即可,总的来说,最终 n-step Sarsa 算法的迭代形式为: q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − ( r t + 1 + γ r t + 2 + ⋯ + γ n q t ( s t + n , a t + n ) ) ] (26) \color{red} \tag{26} \begin{aligned} q_{t+1}\left(s_{t}, a_{t}\right)= q_{t}\left(s_{t}, a_{t}\right) & -\alpha_{t}\left(s_{t}, a_{t}\right)\left[q_{t}\left(s_{t}, a_{t}\right)-\left(r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^{n} q_{t}\left(s_{t+n}, a_{t+n}\right)\right)\right] \end{aligned} qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)(rt+1+γrt+2++γnqt(st+n,at+n))](26)

六、MC-蒙特卡洛联系

通过上面的推导,已得n-step Sarsa 算法结论,即上(26)式。容易知道,当 n = 1 n=1 n=1 时 对应于 Sarsa 算法,现在来考虑其另外一个极端形式,即 n → N ( ∞ ) n \to N(\infty) nN(),或者说采样 t + n t+n t+n 到回合结束时刻,那么上式可书写为如下形式:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − ( r t + 1 + γ r t + 2 + ⋯ + γ N − 1 r t + N ) ] (27) \color{green} \tag{27} \begin{aligned} q_{t+1}\left(s_{t}, a_{t}\right)= q_{t}\left(s_{t}, a_{t}\right) & -\alpha_{t}\left(s_{t}, a_{t}\right)\left[q_{t}\left(s_{t}, a_{t}\right)-{\color{blue}\left(r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^{N-1} r_{t+N}\right)}\right] \end{aligned} qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)(rt+1+γrt+2++γN1rt+N)](27)对比于 【强化学习理论基础-通用】(23)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) - state values(基础版本) 之深入探讨 中的(06)式,可以知道迭代至 t → ∞ t\to \infty t 时, q t + 1 q_{t+1} qt+1 的结果是趋向于目标值: g t = r t + 1 + γ r t + 2 + ⋯ + γ N − 1 r t + N (28) \color{green} \tag{28} g_{t}=r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^{N-1}r_{t+N} gt=rt+1+γrt+2++γN1rt+N(28)注意上式使用小写字母,代表实际采样,回顾一下博客的:【强化学习理论基础-通用】(13)从零开始白话给你讲[数学原理]:蒙特卡洛(Monte Carlo Basic),model-base 到 free 关键之处,episode_length 截断影响 中的需要解决的问题,即其中(06)式:
E ( G ) = ∑ t = 0 T P t G t = m e a n = 1 N ∑ n = 1 N g n (29) \color{green} \tag {29} \mathbb{E}(G)=\sum_{t=0}^TP_tG_t=mean=\frac{1}{N}\sum_{n=1}^N g_n E(G)=t=0TPtGt=mean=N1n=1Ngn(29)初步看起来来貌似不是一回事,因为上式求得的是回报 G t G_t Gt 期望,但是(27)式是逼近 G t G_t Gt,那么岂不是说 n-step Sarsa 在 n → ∞ n \to \infty n 时,也并不完全是 MC-蒙特卡洛 算法?因为看起来他们之间还差一个期望 E \mathbb{E} E

细节: \color{red} 细节: 细节: 为了深刻体会到两者之间的关系,这里详细阐述一下。首先要明白这么一个流程,假若说第 1 1 1 次以 s s s 状态出发,收集一个回合经验数据 τ 1 \tau_1 τ1,其中包含了所有时刻的状态动作奖励等。那么使用 τ 1 \tau_1 τ1 可以建立(27)式,进行一次(或者多次迭代)迭代,其会逼近 g t g_t gt,这里先记 g t g_t gt g t 1 g_t^1 gt1

不过上述过程,其仅仅是利用一个回合的数据 τ 1 \tau_1 τ1 去逼近 g t g_t gt。后续可以收集 K → ∞ K\to \infty K 的经验数据 { τ 1 , τ 2 , ⋯ , τ K } \{\tau_1,\tau_2,\cdots,\tau_K\} {τ1τ2τK},这些回合数据都是从 s s s 状态出发,直到回合结束。同样可以利用这些数据分别去逼近 g t g_t gt,分别记录为 { g t 1 , g t 2 , ⋯ , g t K } \{g_t^1,g_t^2,\cdots,g_t^K\} {gt1gt2gtK},需要注意:
g t 1 = r t + 1 1 + γ r t + 2 1 + ⋯ + γ N − 1 r t + N 1 ⋯ g t 2 = r t + 1 2 + γ r t + 2 2 + ⋯ + γ N − 1 r t + N 2 \color{green} \tag{30} \begin{align*} g_t^1=&r_{t+1}^1+\gamma r_{t+2}^1+\cdots+\gamma^{N-1}r_{t+N}^1 \\ &\cdots \\ g_t^2=&r_{t+1}^2+\gamma r_{t+2}^2+\cdots+\gamma^{N-1}r_{t+N}^2 \\ \end{align*} gt1=gt2=rt+11+γrt+21++γN1rt+N1rt+12+γrt+22++γN1rt+N2(30)与(28)式进行对比,要知道小写的字符 r r r 表示随机采样,那么两个回合的采样数据是不一样的,比如说 r t + 1 1 ≠ r t + 1 2 r_{t+1}^1\ne r_{t+1}^2 rt+11=rt+12,还需要注意的是,这里的 t t t 仅仅表示一个时序序列,无其他含义,比如 r t + 1 1 r_{t+1}^1 rt+11 r t + 1 2 r_{t+1}^2 rt+12 的下标 t t t 是没有任何关系的,可以相等,也可以不相等。因为初始状态都是从 s s s 出发,即有 s t 1 = s t 2 = s s_t^1=s_t^2=s st1=st2=s,但是后续时刻的状态可能是不一样的。

这个时候可以思考一个问题,就是每次迭代都是在逼近 g t g_t gt,但是实际上因为采样的不同,逼近的目标本质上为 { g t 1 , g t 2 , ⋯ , g t K } \{g_t^1,g_t^2,\cdots,g_t^K\} {gt1gt2gtK}。容易想到随着迭代过程中(26)式中 α t ( s t , a t ) \alpha_{t}\left(s_{t}, a_{t}\right) αt(st,at) 衰减,最终的结果会围绕 { g t 1 , g t 2 , ⋯ , g t K } \{g_t^1,g_t^2,\cdots,g_t^K\} {gt1gt2gtK} 的均值附近震荡,而他们均值就是:
E [ G t ] = 1 K ∑ k = 1 K g t k (31) \color{green} \tag{31}\mathbb{E}[G_t]=\frac{1}{K}\sum_{k=1}^Kg_t^k E[Gt]=K1k=1Kgtk(31)上市可以(29)式对照起来进行比较,可以知道当(26)式中的 n → N ( ∞ ) n \to N(\infty) nN() 时,n-step Sarsa 算法等价于 MC-蒙特卡洛 算法。不过 n-step Sarsa 算法并不要求 Exploring Starts,即从每个状态都要出发一次(其实个人觉得,MC-蒙特卡洛即使没有从所有状态都出发也是可以用的,只是非最优而已)。

七、结语

通过该篇博客,推导出了 n-step Sarsa 算法,其核心结果为(26)式,如下所示( n n n=1时其等价于Sarsa算法, n → N ( ∞ ) n \to N(\infty) nN() 时等价于MC-蒙特卡洛算法):
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − ( r t + 1 + γ r t + 2 + ⋯ + γ n q t ( s t + n , a t + n ) ) ] (32) \color{red} \tag{32} \begin{aligned} q_{t+1}\left(s_{t}, a_{t}\right)= q_{t}\left(s_{t}, a_{t}\right) & -\alpha_{t}\left(s_{t}, a_{t}\right)\left[q_{t}\left(s_{t}, a_{t}\right)-\left(r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^{n} q_{t}\left(s_{t+n}, a_{t+n}\right)\right)\right] \end{aligned} qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)(rt+1+γrt+2++γnqt(st+n,at+n))](32)当然还得附加上: q k + 1 ( s , a ) = q k ( s , a ) , ∀ ( s , a ) ≠ ( s t , a t ) (33) \color{red} \tag{33} q_{k+1}(s, a) =q_{k}(s, a), \quad \forall(s, a) \neq\left(s_{t}, a_{t}\right) qk+1(s,a)=qk(s,a),(s,a)=(st,at)(33)另外需要注意到的是, q k + 1 q_{k+1} qk+1 为迭代过程中不断被优化的神经网络,该神经网络的作用为,接受一个状态 s s s a a a 估算出行为价值,这里在说一下个人对行为价值与状态价值的理解,个人认为行为价值就是实际采样的即时奖励加上实际采样的回报 g t g_t gt,而状态价值就是回报 g t g_t gt 对应随机变量 G t G_t Gt 的期望 E ( G t ) \mathbb{E}(G_t) E(Gt)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南才尽,年少无知!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值