若需观看机器人系列相关博客,请劳驾至:【足式机器人无死角系列之-【强化学习基础-通用】、【仿真及训练环境】、【强化学习】: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.04,3090GeForceRTX显存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∑[π(a∣st+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})
π(a∣st+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[Gt∣St=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+3⋯Rt+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+1∈S(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+1∣St=st],st∈S(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)⋮MC⟵Gt(∞)=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∑[π(a∣s)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)=π(a∣s) 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)⋮MC⟵Gt(∞)=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[Gt∣St=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[X∣Y]=E[E[X∣Y,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)
n→N(∞),或者说采样
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+⋯+γN−1rt+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+⋯+γN−1rt+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=0∑TPtGt=mean=N1n=1∑Ngn(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\}
{gt1,gt2,⋯,gtK},需要注意:
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+⋯+γN−1rt+N1⋯rt+12+γrt+22+⋯+γN−1rt+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\}
{gt1,gt2,⋯,gtK}。容易想到随着迭代过程中(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\}
{gt1,gt2,⋯,gtK} 的均值附近震荡,而他们均值就是:
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=1∑Kgtk(31)上市可以(29)式对照起来进行比较,可以知道当(26)式中的
n
→
N
(
∞
)
n \to N(\infty)
n→N(∞) 时,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)
n→N(∞) 时等价于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)。