Skip to content

Commit b05e7c3

Browse files
authored
update Chapter-7
1 parent 2f95e0d commit b05e7c3

7 files changed

Lines changed: 359 additions & 0 deletions

File tree

docs/Chapter-7/7-1.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
## 7.1 状态值估计: 时序查分算法
2+
3+
例如,本章介绍的所有算法都属于时序差分(TD)学习的范畴。然而,本节所述的时序差分学习特指一种用于估计状态值的经典算法。
4+
5+
### 7.1.1算法描述
6+
7+
给定策略 $\pi$,我们的目标是估计所有状态 $s \in S$对应的 $v_\pi(s)$。假设我们拥有遵循 $\pi$生成的若干经验样本 $(s_0, r_1, s_1, \ldots, s_t, r_{t+1}, s_{t+1}, \ldots)$,其中 $t$表示时间步。以下时序差分(TD)算法可利用这些样本来估计状态值:
8+
9+
$$v_{t+1}(s_t) = v_t(s_t) - \alpha_t(s_t) \left[ v_t(s_t) - \left( r_{t+1} + \gamma v_t(s_{t+1}) \right) \right],\tag{7.1}$$
10+
11+
$$v_{t+1}(s) = v_t(s),s \neq s_t,\tag{7.2}$$
12+
13+
其中 $t =0,1,2, \ldots$。此处 $v_t(s_t)$表示时刻 $t$时 $v_\pi(s_t)$的估计值;$\alpha_t(s_t)$为状态 $s_t$在时刻 $t$的学习率。
14+
15+
需要注意的是,在时刻 $t$时,仅更新已访问状态 $s_t$的值。未访问状态 $s \neq s_t$的值保持不变,如式$(7.2)$所示。为简洁起见,式$(7.2)$常被省略,但应牢记这一公式,因为缺少该式会导致算法在数学上不完整。
16+
17+
初次接触TD学习算法的读者可能会好奇其设计原理。实际上,该算法可视为求解贝尔曼方程的一种特殊随机逼近算法。为理解这一点,首先回顾状态值的定义:
18+
19+
$$v_\pi(s) = \mathbb{E}\left[ R_{t+1} + \gamma G_{t+1} \mid S_t = s \right], \quad s \in \mathcal{S}.\tag{7.3}$$
20+
21+
我们可以将式$(7.3)$改写为
22+
23+
$$v_\pi(s) = \mathbb{E}[R_{t+1} + \gamma v_\pi(S_{t+1})|S_t = s], s\in \mathcal{S}.\tag{7.4}$$
24+
25+
这是因为 $\mathbb{E}[G_{t+1}|S_t = s] = \sum_a \pi(a|s) \sum_{s'} p(s'|s, a)v_\pi(s') = \mathbb{E}[v_\pi(S_{t+1})|S_t = s]$。方程$(7.4)$是贝尔曼方程的另一种表达形式,有时也被称为**贝尔曼期望方程**
26+
27+
TD算法可通过将Robbins-Monro算法(第6章)应用于求解式$(7.4)$中的Bellman方程推导得出。感兴趣的读者可参阅Box 7.1了解具体细节。
28+
29+
### 7.1.2 性质分析
30+
31+
TD算法的一些重要特性讨论如下。首先,我们更详细地考察TD算法的表达式。具体而言,(7.1)式可表述为
32+
33+
$$v_{t+1}(s_t) = v_t(s_t) - \alpha_t(s_t) \left[ v_t(s_t) - \left( r_{t+1} + \gamma v_{t+1}(s_{t+1}) \right) \right]$$
34+
35+
在这里
36+
37+
$$\bar{v}_t = r_{t+1} + \gamma v_t(s_{t+1})$$
38+
39+
称为TD目标值(TD target)
40+
41+
$$\delta_t = v(s_t) - \tilde{v}_t = v(s_t) - \left( r_{t+1} + \gamma v(s_{t+1}) \right)$$
42+
43+
称为TD误差(TD error)。可以看出,新估计值$v_{t+1}(s_t)$是当前估计值$v_t(s_t)$与时序差分误差$\delta_t$的加权组合。
44+
45+
- 为什么$\bar{v}_t$被叫做TD目标值
46+
47+
这是因为$\bar{v}_t$是算法试图驱使$v(s_t)$趋近的目标值。为验证这一点,将 (7.6)式两边同时减去$\bar{v}_t$可得
48+
49+
$$\begin{gathered}v_{t+1}(s_{t})-\bar{v}_{t}=\left[v_{t}(s_{t})-\bar{v}_{t}\right]-\alpha_{t}(s_{t})\left[v_{t}(s_{t})-\bar{v}_{t}\right]\\=[1-\alpha_{t}(s_{t})]\left[v_{t}(s_{t})-\bar{v}_{t}\right].\end{gathered}$$
50+
51+
对上述等式两边取绝对值可得
52+
53+
$$|v_{t+1}(s_t) − \bar{v}_t| = |1 − \alpha_t(s_t)||v_t(s_t) − \bar{v}_t|.$$
54+
55+
由于$\alpha_t(s_t)$是一个小的正数,因此有$0 <1 - \alpha_t(s_t) <1$。由此可得
56+
57+
$$|v_{t+1}(s_t) − \bar{v}_t| < |v_t(s_t) − \bar{v}_t|.$$
58+
59+
上述不等式具有重要意义,因为它表明新值 $v_{t+1}(s_t)$比旧值 $v_t(s_t)$更接近 $\bar{v}_t$。因此,该算法在数学上会将 $v_t(s_t)$向 $\bar{v}_t$方向驱动。这正是 $\bar{v}_t$被称为 TD目标的原因。
60+
61+
- TD误差的解释是什么?
62+
63+
首先,这一误差之所以被称为时序差分(temporal-difference),是因为 $\delta_t = v_t(s_t) - (r_{t+1} + \gamma v_t(s_{t+1}))$反映了时间步 $t$与 $t +1$之间的差异。其次,当状态价值估计准确时,时序差分误差在期望意义上为零。具体而言,当 $v_t = v_\pi$时,时序差分误差的期望值为
64+
65+
$$\begin{aligned}\mathbb{E}[\delta_{t}|S_{t}=s_{t}]&=\mathbb{E}\left[v_{\pi}(S_{t})-(R_{t+1}+\gamma v_{\pi}(S_{t+1}))|S_{t}=s_{t}\right]\\&=v_{\pi}(s_{t})-\mathbb{E}\left[R_{t+1}+\gamma v_{\pi}(S_{t+1})|S_{t}=s_{t}\right]\\&=0.\quad\mathrm{(due~to~(7.3))}\end{aligned}$$
66+
67+
因此,时序差分误差不仅反映两个时间步之间的差异,更重要的是反映了估计值$v_t$与真实状态值$v_\pi$之间的差异。
68+
69+
在更抽象的层面上,时序差分(TD)误差可解释为**新息**(innovation),它表示从经验样本 $(s_t, r_{t+1}, s_{t+1})$中获得的新信息。时序差分学习的核心思想是基于新获得的信息来修正当前对状态值的估计。新息是卡尔曼滤波[33,34]等众多估计问题中的基础概念。
70+
71+
其次,$(7.1)$中的 TD算法只能估计给定策略的状态值。为了寻找最优策略,我们仍需进一步计算动作值并执行策略改进,这将在第$7.2$节中介绍。尽管如此,本节介绍的 TD算法对于理解本章其他算法具有基础性和重要性。
72+
73+
第三,虽然时序差分(TD)学习和蒙特卡洛(MC)学习均属于无模型方法,但二者各有哪些优劣?答案总结于表$7.1$。
74+
75+
| **TD学习** | **MC学习** |
76+
|--------------------|----------------------|
77+
| **增量**: TD学习是增量的。它可以在接收到经验样本后立即更新状态/动作值。 | **非增量**: MC学习是非增量的。它必须等到一个回合(episode)完全收集完毕才能更新。这是因为它必须计算回合的折扣回报。 |
78+
| **持续任务**: 由于TD学习是增量的,它可以处理回合制和持续任务。持续任务可能没有终止状态。 | **回合任务**: 由于MC学习是非增量的,它只能处理回合任务,即回合在有限的步骤后终止。 |
79+
| **自助法**: TD学习采用自助法,因为状态/动作值的更新依赖于该值的前一估计。因此,TD学习需要初始值猜测。 | **非自助法**: MC学习不是自助法,因为它可以直接估计状态/动作值,而无需初始猜测。 |
80+
| **低估计方差**: TD的估计方差低于MC,因为它涉及较少的随机变量。例如,估计一个动作值 \( q_n(s_t, a_t) \),Sarsa 仅需要三个随机变量的样本:\( R_{t+1} \), \( S_{t+1} \), \( A_{t+1} \)。 | **高估计方差**: MC的估计方差较高,因为涉及更多的随机变量。例如,为了估计一个动作值 \( q_n(s_t, a_t) \),我们需要样本 \( R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \dots \)。假设每个回合的长度为 \( L \),并且每个状态的动作数量相同,记作 \( |A| \),那么每个回合有 \( |A|^L \) 种可能的序列。如果我们仅估计少数几个回合,估计方差高是很自然的。
81+
82+
> 表7.1: TD学习与MC学习的比较。
83+
84+
### 7.1.3收敛性分析
85+
86+
下面给出$(7.1)$中TD算法的收敛性分析。
87+
88+
!!! info
89+
**定理7.1**(时序差分学习的收敛性)。给定策略 $\pi$,若对任意状态 $s \in \mathcal{S}$满足 $\sum_t \alpha_t(s) = \infty$且 $\sum_t \alpha_t^2(s) < \infty$,则通过$(7.1)$式的时序差分算法,$v_t(s)$几乎必然收敛到 $v_\pi(s)$(当 $t \to \infty$时)。
90+
91+
以下给出关于 $\alpha_t$的若干说明。首先,对于所有 $s \in S$,必须满足条件 $\sum_t \alpha_t(s) = \infty$且 $\sum_t \alpha^2_t(s) < \infty$。需注意,在时刻 $t$,若状态 $s$被访问则 $\alpha_t(s) >0$,否则 $\alpha_t(s) =0$。条件 $\sum_t \alpha_t(s) = \infty$要求状态 $s$被无限次(或充分多次)访问,这需要通过探索性起始条件或探索性策略来实现,从而确保每个状态-动作对都可能被多次访问。其次,学习率 $\alpha_t$在实际总通常选取为较小的正常数。此时,条件$\sum_t \alpha^2_t(s) < \infty$不再成立。当$\alpha$为常数时,仍可证明该算法在期望意义下收敛[24,第1.5节]

docs/Chapter-7/7-2.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
## 7.2 行动值估计:Sarsa算法
2+
3+
7.1节介绍的TD算法仅能估计状态值。本节将介绍另一种名为Sarsa的TD算法,该算法可直接估计行动值。行动值估计具有重要意义,因其可与策略改进步骤相结合来学习最优策略。
4+
5+
### 7.2.1算法描述
6+
7+
给定策略$\pi$,我们的目标是估计行动值。假设已有遵循$\pi$生成的若干经验样本:$(s_0, a_0, r_1, s_1, a_1, \ldots, s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1}, \ldots)$。可采用以下Sarsa算法进行动作价值估计:
8+
9+
$$q_{t+1}(s_t,a_t)=q_t(s_t,a_t)-\alpha_t(s_t,a_t)\left[q_t(s_t,a_t)-(r_{t+1}+\gamma q_t(s_{t+1},a_{t+1}))\right],\tag{7.12}$$
10+
11+
$$q_{t+1}(s,a)=q_t(s,a),\quad\mathrm{for~all}(s,a)\neq(s_t,a_t),$$
12+
13+
其中 $t =0,1,2, \dots$,$\alpha_t(s_t, a_t)$为学习率。此处 $q_t(s_t, a_t)$是 $q_\pi(s_t, a_t)$的估计值。在时刻 $t$,仅更新 $(s_t, a_t)$的 $q$值,其余状态的 $q$值保持不变。
14+
15+
Sarsa算法的重要性质如下
16+
17+
- 该算法为何命名为"Sarsa"?这是因为其每次迭代都需要五元组 $(s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1})$。Sarsa是"状态-动作-奖励-状态-动作"(state-action-reward-state-action)的缩写形式。该算法最早由文献[35]提出,其命名则由文献[3]确立。
18+
19+
- 为什么Sarsa要这样设计?读者可能已经注意到,Sarsa与(7.1)式中的TD算法非常相似。实际上,只需将TD算法中的状态值估计替换为行动值估计,就能直接推导出Sarsa算法。
20+
21+
- Sarsa算法的数学本质是什么?与(7.1)中的TD算法类似,Sarsa是一种用于求解给定策略贝尔曼方程的随机近似算法:
22+
23+
$$q_\pi(s,a)=\mathbb{E}\left[R+\gamma q_\pi(S^{\prime},A^{\prime})|s,a\right],\quad\mathrm{for~all}(s,a).\tag{7.13}$$
24+
25+
式$(7.13)$是以行动值函数表示的贝尔曼方程。具体证明见方框$7.3$。
26+
27+
- Sarsa算法是否收敛?由于Sarsa是$(7.1)$中TD算法的行动值函数版本,其收敛性结果与定理$7.1$相似,具体表述如下。
28+
29+
!!! info
30+
**定理7.2** (Sarsa算法的收敛性).给定策略 $\pi$,若对所有 $(s, a)$满足 $\sum_t \alpha_t(s, a) = \infty$且 $\sum_t \alpha^2_t(s, a) < \infty$,则通过 (7.12)式的 Sarsa算法,$q_t(s, a)$几乎必然收敛到行动值 $q_\pi(s, a)$(当 $t \to \infty$时)。
31+
32+
该证明过程与定理7.1类似,此处从略。需满足对所有状态-动作对$(s, a)$均有$\sum_t \alpha_t(s, a) = \infty$且$\sum_t \alpha_t^2(s, a) < \infty$的条件。特别地,$\sum_t \alpha_t(s, a) = \infty$要求每个状态-动作对必须被访问无限次(或足够多次)。在时刻$t$,若$(s, a) = (s_t, a_t)$,则$\alpha_t(s, a) >0$;否则$\alpha_t(s, a) =0$。
33+
34+
该证明过程与定理$7.1$类似,此处从略。需满足对所有状态-动作对$(s,a)$均有$\sum_t \alpha_t(s, a) = \infty$且$\sum_t \alpha_t^2(s, a) < \infty$的条件。特别地,$\sum_t \alpha_t(s, a) = \infty$要求每个状态-行动对必须被访问无限次(或足够多次)在时刻$t$,若$(s, a) = (s_t, a_t)$,则$\alpha_t(s, a) >0$;否则$\alpha_t(s, a) =0$。
35+
36+
### 7.2.2基于Sarsa算法的最优策略学习
37+
38+
(7.12)式中的Sarsa算法仅能估计给定策略的行动值。为寻找最优策略,可将其与策略改进步骤相结合。该组合方法通常仍称为Sarsa算法,其具体实现流程如算法7.1所示。
39+
40+
![](../img/07/1.png)
41+
> 算法$7.1$
42+
43+
如算法7.1所示,每次迭代包含两个步骤:第一步更新被访问状态-动作对的$q$值;第二步将策略更新为$\varepsilon$-贪婪策略。$q$值更新步骤仅针对时刻$t$访问的单个状态-行动对进行更新,随后立即更新状态$s_t$对应的策略。这意味着我们在策略更新前并未对给定策略进行充分评估,该设计基于广义策略迭代的思想。此外,策略更新后会立即用于生成下一个经验样本。此处采用的$\varepsilon$-贪婪策略具有探索性特征。
44+
45+
![](../img/07/2.png)
46+
> 图$7.2$:Sarsa算法的演示示例。所有训练回合均从左上角状态开始,并在到达目标状态(蓝色单元格)时终止。目标是找到从起始状态到目标状态的最优路径。奖励设置为 $r_{\text{target}} =0$,$r_{\text{forbidden}} = r_{\text{boundary}} = -10$,以及 $r_{\text{other}} = -1$。学习率 $\alpha =0.1$,$\epsilon$值为0.1。左图显示算法获得的最终策略,右图展示各训练回合的总奖励与路径长度。
47+
48+
图7.2展示了一个演示Sarsa算法的仿真示例。与本书之前讨论的所有任务不同,该任务的目标是从特定起始状态到目标状态寻找最优路径,而非为所有状态求解最优策略。这类任务在实际中经常出现——当起始状态(如家)和目标状态(如工作场所)固定时,我们仅需找到连接二者的最优路径。该任务的相对简单性在于:只需探索路径邻近状态,而无需遍历所有状态。但需注意的是,若未探索全部状态,最终路径可能仅是局部最优而非全局最优解。
49+
50+
仿真设置与仿真结果讨论如下。
51+
52+
- 仿真设置:在本示例中,所有训练回合均从左上角状态开始,并在目标状态终止。奖励设置为 $r_{\text{target}} =0$,$r_{\text{forbidden}} = r_{\text{boundary}} = -10$,以及 $r_{\text{other}} = -1$。此外,对所有时间步 $t$有 $\alpha_t(s, a) =0.1$,且 $\epsilon =0.1$。动作价值的初始估计值为 $q_0(s, a) =0$(对所有状态-动作对 $(s, a)$)。初始策略具有遵循均匀分布:$\pi_0(a|s) =0.2$对于所有$s,a$。
53+
54+
- 习得策略(Learned policy):图7.2左图展示了Sarsa算法学习得到的最终策略。如图所示,该策略能够成功地从起始状态引导至目标状态。然而,其他部分状态的策略可能并非最优,这是由于这些状态未被充分探索所致。
55+
56+
- 每回合总奖励(Total reward of each episode):图$7.2$右上角子图展示了各回合的总奖励值。此处的总奖励是指所有即时奖励的非折现总和。可以看出,每回合总奖励呈现逐步上升趋势。这是由于初始策略性能较差,导致频繁获得负奖励;随着策略不断优化,总奖励值随之增长。
57+
58+
- 每回合长度:图7.2右下子图显示每回合长度逐渐缩短。这是因为初始策略性能较差,在抵达目标前可能绕行较多。随着策略优化,轨迹长度随之减短。值得注意的是,每回合长度可能突然增加(例如第460幕),对应总奖励值也会急剧下降。这是由于策略采用$\varepsilon$-贪婪算法,存在选择非最优动作的概率。解决方法之一是采用衰减式$\varepsilon$,其数值会逐渐收敛至零。
59+
60+
最后,Sarsa算法还存在若干变体,例如Expected Sarsa。感兴趣的读者可参阅Box 7.4。

docs/Chapter-7/7-3.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
## 行动值估计: n步Sarsa
2+
3+
本节介绍n步Sarsa算法——Sarsa的扩展形式。我们将看到,Sarsa与蒙特卡洛(MC)学习实际上是n步Sarsa的两个极端特例。
4+
5+
回顾行动值的定义为
6+
7+
$$q_\pi(s,a)=\mathbb{E}[G_t|S_t=s,A_t=a],\tag{7.16}$$
8+
9+
其中$G_t$为满足以下条件的折现回报:
10+
11+
$$G_{t}=R_{t+1}+\gamma R_{t+2}+\gamma^{2}R_{t+3}+\ldots.$$
12+
13+
事实上,$G_t$也可以分解为不同形式:
14+
15+
$$\begin{aligned}
16+
\text{Sarsa} \leftarrow &G^{(1)}_t = R_{t+1} + \gamma q_{\pi}(S_{t+1}, A_{t+1}), \\
17+
&G^{(2)}_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 q_{\pi}(S_{t+2}, A_{t+2}), \\
18+
&\vdots \\
19+
\text{n-step Sarsa} \leftarrow &G^{(n)}_t = R_{t+1} + \gamma R_{t+2} + \cdots + \gamma^n q_{\pi}(S_{t+n}, A_{t+n}), \\
20+
&\vdots \\
21+
\text{MC} \leftarrow &G^{(\infty)}_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \gamma^3 R_{t+4} + \cdots
22+
\end{aligned}$$
23+
24+
需注意 $G_t = G^{(1)}_t = G^{(2)}_t = G^{(n)}_t = G^{(\infty)}_t$,其中上标仅表示 $G_t$的不同分解结构。
25+
26+
将 $G^{(n)}_t$的不同分解形式代入 (7.16)式中的 $q_\pi(s, a)$会得到不同的算法。
27+
28+
- 当$n=1$,我们有
29+
30+
$$q_\pi(s,a)=\mathbb{E}[G_t^{(1)}|s,a]=\mathbb{E}[R_{t+1}+\gamma q_\pi(S_{t+1},A_{t+1})|s,a].$$
31+
32+
求解该方程的相应随机近似算法为
33+
34+
$$q_{t+1}(s_t,a_t)=q_t(s_t,a_t)-\alpha_t(s_t,a_t)\left[q_t(s_t,a_t)-(r_{t+1}+\gamma q_t(s_{t+1},a_{t+1}))\right],$$
35+
36+
即式$(7.12)$中的 Sarsa算法。
37+
38+
- 当$n=\infty$,我们有
39+
40+
$$q_\pi(s,a)=\mathbb{E}[G_t^{(\infty)}|s,a]=\mathbb{E}[R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\ldots|s,a].$$
41+
42+
求解该方程的对应算法为
43+
44+
$$q_{t+1}(s_t,a_t)=g_t\doteq r_{t+1}+\gamma r_{t+2}+\gamma^2r_{t+3}+\ldots,$$
45+
46+
其中$g_t$是$G_t$的一个采样样本。实际上,这是蒙特卡洛(MC)学习算法,该算法通过从$(s_t, a_t)$起始的完整回合的折现回报来近似估计$(s_t, a_t)$的动作价值。
47+
48+
- 对于一般的n值,我们有
49+
50+
$$q_\pi(s,a)=\mathbb{E}[G_t^{(n)}|s,a]=\mathbb{E}[R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^nq_\pi(S_{t+n},A_{t+n})|s,a].$$
51+
52+
求解上述方程的对应算法为
53+
54+
$$\begin{aligned}q_{t+1}(s_{t},a_{t})&=q_{t}(s_{t},a_{t})\\&-\alpha_{t}(s_{t},a_{t})\left[q_{t}(s_{t},a_{t})-\left(r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^{n}q_{t}(s_{t+n},a_{t+n})\right)\right].\end{aligned}\tag{7.17}$$
55+
56+
该算法称为n步Sarsa。
57+
58+
综上所述,$n$步Sarsa是一种更通用的算法:当$n=1$时退化为单步Sarsa算法;当$n=\infty$(通过设定$\alpha_t=1$)时则演化为MC学习算法。
59+
60+
为实现$(7.17)$式中的n步Sarsa算法,我们需要经验样本$(s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1}, ..., r_{t+n}, s_{t+n}, a_{t+n})$。由于时刻$t$尚未收集到$(r_{t+n}, s_{t+n}, a_{t+n})$,必须等到时刻$t+n$才能更新$(s_t, a_t)$的q值。因此,$(7.17)$式可改写为
61+
62+
$$\begin{aligned}q_{t+n}(s_{t},a_{t})&=q_{t+n-1}(s_{t},a_{t})\\&-\alpha_{t+n-1}(s_{t},a_{t})\left[q_{t+n-1}(s_{t},a_{t})-\left(r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^{n}q_{t+n-1}(s_{t+n},a_{t+n})\right)\right],\end{aligned}$$
63+
64+
其中$q_{t+n}(s_t, a_t)$是时刻 $t+n$对$q_\pi(s_t, a_t)$的估计值。
65+
66+
由于n步Sarsa算法将Sarsa与蒙特卡洛(MC)学习作为两种极端情况包含其中,其性能介于两者之间便不足为奇。具体而言:
67+
68+
- 当$n$取值较大时,n步Sarsa接近MC学习,此时估计值具有较高的方差但偏差较小;
69+
70+
- 当$n$取值较小时,n步Sarsa则接近Sarsa算法,此时估计值偏差较大但方差较低。
71+
72+
需特别说明的是,本文所述的n步Sarsa算法仅用于策略评估。要学习最优策略,必须结合策略改进步骤。其实现方式与Sarsa算法类似,此处不再赘述。感兴趣的读者可参阅文献[3,第7章]对多步时序差分(TD)学习的详细分析。
73+

0 commit comments

Comments
 (0)