n-步引导
n-步 TD 预测
考虑使用策略
π
\pi
π 生成样本回合估计
v
π
v_\pi
vπ,蒙特卡洛法基于从该状态直到回合结束生成的完整的奖励序列来更新每个状态
而一步 TD 法,基于下一个奖励,从一步之后的状态的价值进行引导,作为剩余价值的代理
一种中间的方法是,基于中间数量的奖励:超过一个,但少于直到结束前的所有,来完成更新
例如,两步更新法,将会基于前两个奖励以及两个时间步之后的状态的估计值,来完成更新
使用 n-步更新的方法仍是 TD 法,因为它们仍然基于之前的估计值和稍后的估计值的变化来更新之前的估计值,只不过这个 “稍后” 不仅仅是一步之后,而是 n 步之后
这种将时序差分延伸到 n 步的就叫作 n-步 TD 法
考虑对状态
S
t
S_t
St 的估计值的更新,其作为状态-奖励序列的结果:
S
t
,
R
t
+
1
,
S
t
+
1
,
R
t
+
2
,
…
,
R
T
,
S
T
S_t, R_{t+1}, S_{t+1}, R_{t+2}, \dots , R_T, S_T
St,Rt+1,St+1,Rt+2,…,RT,ST (省略动作)
我们知道,蒙特卡洛法更新
v
π
(
S
t
)
v_\pi(S_t)
vπ(St) 基于完整的回报:
G
t
≐
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
⋯
+
γ
T
−
t
−
1
R
T
G_t \doteq R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots + \gamma^{T-t-1} R_T
Gt≐Rt+1+γRt+2+γ2Rt+3+⋯+γT−t−1RT
将这个量叫作更新的目标
在蒙特卡洛法里,更新的目标是回报,而一步更新中,目标是第一次奖励加上下一个状态的估计值的折扣,我们叫作一步回报:
G
t
:
t
+
1
≐
R
t
+
1
+
γ
V
t
(
S
t
+
1
)
G_{t:t+1} \doteq R_{t+1} + \gamma V_t (S_{t+1})
Gt:t+1≐Rt+1+γVt(St+1)
其中
V
t
:
S
→
R
V_t : \mathcal{S} \to \mathbb{R}
Vt:S→R 在这里是指
v
π
v_\pi
vπ 在时间
t
t
t 的估计值
G
t
:
t
+
1
G_{t:t+1}
Gt:t+1 的下标表示它是时间
t
t
t 的截断回报,使用直到时间
t
+
1
t+1
t+1 的奖励,用折扣估计
γ
V
t
(
S
t
+
1
)
\gamma V_t(S_{t+1})
γVt(St+1) 代替其他项:
γ
R
t
+
2
+
γ
2
R
t
+
3
+
⋯
+
γ
T
−
t
−
1
R
T
\gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots + \gamma^{T-t-1} R_T
γRt+2+γ2Rt+3+⋯+γT−t−1RT 的完全回报
因此,两步更新的目标是两步回报:
G
t
:
t
+
2
≐
R
t
+
1
+
γ
R
t
+
2
+
γ
2
V
t
+
1
(
S
t
+
2
)
G_{t:t+2} \doteq R_{t+1} + \gamma R_{t+2} + \gamma^2 V_{t+1} (S_{t+2})
Gt:t+2≐Rt+1+γRt+2+γ2Vt+1(St+2)
这里
γ
2
V
t
+
1
(
S
t
+
2
)
\gamma^2 V_{t+1}(S_{t+2})
γ2Vt+1(St+2) 纠正了项:
γ
2
R
t
+
3
+
γ
3
R
t
+
4
+
⋯
+
γ
T
−
t
−
1
R
T
\gamma^2 R_{t+3} + \gamma^3 R_{t+4} + \cdots + \gamma^{T-t-1} R_T
γ2Rt+3+γ3Rt+4+⋯+γT−t−1RT 的缺失
类似地,任意 n-步更新的目标是 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} \doteq R_{t+1} + \gamma R_{t+2} + \cdots + \gamma^{n-1} R_{t+n} + \gamma^n V_{t+n-1} (S_{t+n})
Gt:t+n≐Rt+1+γRt+2+⋯+γn−1Rt+n+γnVt+n−1(St+n)
对所有的
n
,
t
n,t
n,t,使:
n
⩾
1
n \geqslant 1
n⩾1 和
0
⩽
t
<
T
−
n
0 \leqslant t < T - n
0⩽t<T−n
所有 n-步回报可以被认为是对全回报的近似,在 n-步之后被截断并对剩余缺失的项用
V
t
+
n
−
1
(
S
t
+
n
)
V_{t+n-1}(S_{t+n})
Vt+n−1(St+n) 来纠正
如果
t
+
n
⩾
T
t + n \geqslant T
t+n⩾T(n-步回报超过了终止点),那么所有缺失的项被当作为零,因此 n-步回报和原始全回报等同:
(
G
t
:
t
+
n
≐
G
t
if
t
+
n
⩾
T
)
(G_{t:t+n} \doteq G_t \quad \text{if} \ t+n \geqslant T)
(Gt:t+n≐Gtif t+n⩾T)
注意,对于
n
>
1
n > 1
n>1 的 n-步回报,涉及到在从
t
t
t 转移到
t
+
1
t+1
t+1 还未知的,未来的奖励和状态
在直到得到
R
t
+
n
R_{t+n}
Rt+n 和计算出
V
t
+
n
−
1
V_{t+n-1}
Vt+n−1 之前,没有算法能够使用 n-步回报,而第一次能够计算这些是在时间点
t
+
n
t+n
t+n
因此,一个为了使用 n-步回报的自然状态-价值学习算法是:
V
t
+
n
(
S
t
)
≐
V
t
+
n
−
1
(
S
t
)
+
α
[
G
t
:
t
+
n
−
V
t
+
n
−
1
(
S
t
)
]
,
0
⩽
t
<
T
V_{t+n}(S_t) \doteq V_{t+n-1} (S_t) + \alpha [G_{t:t+n} - V_{t+n-1} (S_t)] \ , \quad 0 \leqslant t < T
Vt+n(St)≐Vt+n−1(St)+α[Gt:t+n−Vt+n−1(St)] ,0⩽t<T
而所有其他状态的价值保持不变:对于所有
s
≠
S
t
s \not = S_t
s=St,有
V
t
+
n
(
s
)
=
V
t
+
n
−
1
(
s
)
V_{t+n}(s) = V_{t+n-1}(s)
Vt+n(s)=Vt+n−1(s)
我们把这个算法叫做 n-步 TD
注意到,在每个回合的前
n
−
1
n-1
n−1 步,根本不进行任何更改,为了弥补这一点,在回合结束时,终止后和开始下一个回合之前,会进行一个相等数量的额外更新
完整过程的伪代码:
n-步回报使用价值函数
V
t
+
n
−
1
V_{t+n-1}
Vt+n−1 来纠正超出
R
t
+
n
R_{t+n}
Rt+n 的缺失奖励
n-步回报的一个重要特性是,即使在最差的状态下,它们的期望保证是比
V
t
+
n
−
1
V_{t+n-1}
Vt+n−1 更好的
v
π
v_\pi
vπ 的估计
也就是说,对所有
n
⩾
1
n \geqslant 1
n⩾1,预期 n-步回报的最差误差也保证小于或等于
V
t
+
n
−
1
V_{t+n-1}
Vt+n−1 下的最差误差的
γ
n
\gamma^n
γn 倍:
max
s
∣
E
π
[
G
t
:
t
+
n
∣
S
t
=
s
]
−
v
π
(
s
)
∣
⩽
γ
n
max
s
∣
V
t
+
n
−
1
(
s
)
−
v
π
(
s
)
∣
\max_s | \mathbb{E}_\pi [G_{t:t+n} | S_t = s] - v_\pi(s) | \leqslant \gamma^n \max_s | V_{t+n-1} (s) - v_\pi (s) |
smax∣Eπ[Gt:t+n∣St=s]−vπ(s)∣⩽γnsmax∣Vt+n−1(s)−vπ(s)∣
这叫作 n-步回报的误差减少属性
n-步 Sarsa
我们将 n-步方法与 Sarsa 结合起来,产生
on-policy
\text{on-policy}
on-policy TD 控制方法
主要思想是简单地切换动作状态(状态-动作对),接着使用
ε
\varepsilon
ε-贪婪策略
根据估计的动作价值重新定义 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
)
,
n
⩾
1
,
0
⩽
t
<
T
−
n
G_{t:t+n} \doteq R_{t+1} + \gamma R_{t+2} + \cdots + \gamma^{n-1} R_{t+n} + \gamma^n Q_{t+n-1} (S_{t+n}, A_{t+n}) \ , \quad n \geqslant 1 , 0 \leqslant t < T-n
Gt:t+n≐Rt+1+γRt+2+⋯+γn−1Rt+n+γnQt+n−1(St+n,At+n) ,n⩾1,0⩽t<T−n
如果
t
+
n
⩾
T
t+n\geqslant T
t+n⩾T 那么
G
t
:
t
+
n
≐
G
t
G_{t:t+n} \doteq G_t
Gt:t+n≐Gt
那么自然算法是:
Q
t
+
n
(
S
t
,
A
t
)
≐
Q
t
+
n
−
1
(
S
t
,
A
t
)
+
α
[
G
t
:
t
+
n
−
Q
t
+
n
−
1
(
S
t
,
A
t
)
]
,
0
⩽
t
<
T
Q_{t+n} (S_t, A_t) \doteq Q_{t+n-1} (S_t, A_t) + \alpha [G_{t:t+n} - Q_{t+n-1}(S_t, A_t)] \ , \quad 0 \leqslant t < T
Qt+n(St,At)≐Qt+n−1(St,At)+α[Gt:t+n−Qt+n−1(St,At)] ,0⩽t<T
而对于所有使
s
≠
S
t
s \not = S_t
s=St 或
a
≠
A
t
a \not = A_t
a=At 的
s
,
a
s,a
s,a ,所有其他状态的价值保持不变:
Q
t
+
n
(
s
,
a
)
=
Q
t
+
n
−
1
(
s
,
a
)
Q_{t+n}(s,a) = Q_{t+n-1}(s,a)
Qt+n(s,a)=Qt+n−1(s,a)
这就是我们叫作 n-步 Sarsa 的算法
伪代码如下:
预期的 Sarsa 的算法和 n-步 Sarsa 差不多,除了将 n-步回报重新定义为:
G
t
:
t
+
n
≐
R
t
+
1
+
⋯
+
γ
n
−
1
R
t
+
n
+
γ
n
V
ˉ
t
+
n
−
1
(
S
t
+
n
)
,
t
+
n
<
T
G_{t:t+n} \doteq R_{t+1} + \cdots + \gamma^{n-1} R_{t+n} + \gamma^n \bar{V}_{t+n-1} (S_{t+n}) \ , \quad t+n < T
Gt:t+n≐Rt+1+⋯+γn−1Rt+n+γnVˉt+n−1(St+n) ,t+n<T
对
t
+
n
⩾
T
t+n \geqslant T
t+n⩾T 有:
G
t
:
t
+
n
≐
G
t
G_{t:t+n} \doteq G_t
Gt:t+n≐Gt,而
V
ˉ
t
(
s
)
\bar{V}_t(s)
Vˉt(s) 是状态
s
s
s 的预期近似值,使用了目标策略下时间
t
t
t 的估计动作价值:
V
ˉ
t
(
s
)
≐
∑
a
π
(
a
∣
s
)
Q
t
(
s
,
a
)
,
∀
s
∈
S
\bar{V}_t(s) \doteq \sum_a \pi(a|s) Q_t (s,a) \ , \quad \forall \ s \in \mathcal{S}
Vˉt(s)≐a∑π(a∣s)Qt(s,a) ,∀ s∈S
n-步 Off-policy \text{Off-policy} Off-policy 学习
在 n-步方法中,回报是在 n 步之上构建的,所以我们只对这 n 个动作的相对概率感兴趣
例如,在构建 n-步 TD 的简单
off-policy
\text{off-policy}
off-policy 版本时,时间
t
t
t 的更新(实际上在第
t
+
n
t+n
t+n 时进行)可以简单地用
ρ
t
:
t
+
n
−
1
\rho_{t:t+n-1}
ρt:t+n−1 来加权:
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
)
]
,
0
⩽
t
<
T
V_{t+n}(S_t) \doteq V_{t+n-1} (S_t) + \alpha \rho_{t:t+n-1} [G_{t:t+n} - V_{t+n-1} (S_t)] \ , \quad 0 \leqslant t < T
Vt+n(St)≐Vt+n−1(St)+αρt:t+n−1[Gt:t+n−Vt+n−1(St)] ,0⩽t<T
这里的
ρ
t
:
t
+
n
−
1
\rho_{t:t+n-1}
ρt:t+n−1 叫作重要性采样率,是在两个策略下从
A
t
A_t
At 到
A
t
+
n
−
1
A_{t+n-1}
At+n−1 采取
n
n
n 个动作的相对概率:
ρ
t
:
h
≐
∏
k
=
t
min
(
h
,
T
−
1
)
π
(
A
k
∣
S
k
)
b
(
A
k
∣
S
k
)
\rho_{t:h} \doteq \prod_{k=t}^{\min (h, T-1)} \dfrac{\pi(A_k | S_k)}{b(A_k | S_k)}
ρt:h≐k=t∏min(h,T−1)b(Ak∣Sk)π(Ak∣Sk)
注意到,如果两个策略实际上是相同的(
on-policy
\text{on-policy}
on-policy 的情况),那么重要性采样率总是 1,因此我们的更新概括并且完全取代了先前的 n-步 TD 更新
同样,先前的 n-步 Sarsa 更新也可以被简单的
off-policy
\text{off-policy}
off-policy 形式所取代:
Q
t
+
n
(
S
t
,
A
t
)
≐
Q
t
+
n
−
1
(
S
t
,
A
t
)
+
α
ρ
t
+
1
:
t
+
n
[
G
t
:
t
+
n
−
Q
t
+
n
−
1
(
S
t
,
A
t
)
]
,
f
o
r
0
⩽
t
<
T
Q_{t+n}(S_t, A_t) \doteq Q_{t+n-1} (S_t, A_t) + \alpha \rho_{t+1:t+n} [G_{t:t+n} - Q_{t+n-1}(S_t, A_t)] \ , \quad for \ 0 \leqslant t < T
Qt+n(St,At)≐Qt+n−1(St,At)+αρt+1:t+n[Gt:t+n−Qt+n−1(St,At)] ,for 0⩽t<T
这里的重要性采样率比 n-步 TD 里的晚一步开始和结束,因为这里我们在更新状态-动作对
伪代码如下:
具有控制变量的 per-decision \text{per-decision} per-decision 方法
首先注意到,原始 n-步回报可以递归写就,对于在 h 结束的 n 步,n-步回报可以写成:
G
t
:
h
=
R
t
+
1
+
γ
G
t
+
1
:
h
,
t
<
h
<
T
G_{t:h} = R_{t+1} + \gamma G_{t+1:h} \ , \quad t < h < T
Gt:h=Rt+1+γGt+1:h ,t<h<T
其中
G
h
:
h
≐
V
h
−
1
(
S
h
)
G_{h:h} \doteq V_{h-1} (S_h)
Gh:h≐Vh−1(Sh)
现在考虑遵循与目标策略
π
\pi
π 不同的行为策略
b
b
b 的效果,所有得到的经验,包括第一个奖励
R
t
+
1
R_{t+1}
Rt+1 以及下一个状态
S
t
+
1
S_{t+1}
St+1,必须用时间
t
t
t 的重要性采样率加权:
ρ
t
=
π
(
A
t
∣
S
t
)
b
(
A
t
∣
S
t
)
\rho_t = \frac{\pi(A_t | S_t)}{b(A_t | S_t)}
ρt=b(At∣St)π(At∣St)
在这个复杂的方法中,可以使用在
h
h
h 结束的 n-回报的
off-policy
\text{off-policy}
off-policy 定义:
G
t
:
h
≐
ρ
t
(
R
t
+
1
+
γ
G
t
+
1
:
h
)
+
(
1
−
ρ
t
)
V
h
−
1
(
S
t
)
,
t
<
h
<
T
G_{t:h} \doteq \rho_t (R_{t+1} + \gamma G_{t+1:h}) + (1-\rho_t) V_{h-1} (S_t) \ , \quad t < h < T
Gt:h≐ρt(Rt+1+γGt+1:h)+(1−ρt)Vh−1(St) ,t<h<T
其中
G
h
:
h
≐
V
h
−
1
(
S
h
)
G_{h:h} \doteq V_{h-1} (S_h)
Gh:h≐Vh−1(Sh)
上式中额外的项被叫作控制变量
控制变量不改变期望的更新,重要性采样率具有期望值 1 并且和估计不相关,因此控制变量的期望值是零
另外,上式的定义是先前
on-policy
\text{on-policy}
on-policy 对 n-步回报定义的严格概括,因为两者在
on-policy
\text{on-policy}
on-policy 情况下是一样的,此时
ρ
t
=
1
\rho_t = 1
ρt=1
对于动作价值,n-步回报的 off-policy \text{off-policy} off-policy 定义略有不同,因为第一个动作在重要性采样里不发挥作用
具有控制变量的
off-policy
\text{off-policy}
off-policy 形式是:
G
t
:
h
≐
R
t
+
1
+
γ
(
ρ
t
+
1
G
t
+
1
:
h
+
V
ˉ
h
−
1
(
S
t
+
1
)
−
ρ
t
+
1
Q
h
−
1
(
S
t
+
1
,
A
t
+
1
)
)
=
R
t
+
1
+
γ
ρ
t
+
1
(
G
t
+
1
:
h
−
Q
h
−
1
(
S
t
+
1
,
A
t
+
1
)
)
+
γ
V
ˉ
h
−
1
(
S
t
+
1
)
,
t
<
h
⩽
T
G_{t:h} \doteq R_{t+1} + \gamma (\rho_{t+1} G_{t+1:h} + \bar{V}_{h-1} (S_{t+1}) - \rho_{t+1} Q_{h-1} (S_{t+1}, A_{t+1})) \\[5pt] = R_{t+1} + \gamma \rho_{t+1} (G_{t+1:h} - Q_{h-1} (S_{t+1}, A_{t+1})) + \gamma \bar{V}_{h-1} (S_{t+1}) \ , \quad t < h \leqslant T
Gt:h≐Rt+1+γ(ρt+1Gt+1:h+Vˉh−1(St+1)−ρt+1Qh−1(St+1,At+1))=Rt+1+γρt+1(Gt+1:h−Qh−1(St+1,At+1))+γVˉh−1(St+1) ,t<h⩽T
如果
h
<
T
h < T
h<T,那么递归以
G
h
:
h
≐
Q
h
−
1
(
S
h
,
A
h
)
G_{h:h} \doteq Q_{h-1} (S_h, A_h)
Gh:h≐Qh−1(Sh,Ah) 结尾,而如果
h
⩾
T
h \geqslant T
h⩾T,那么以
G
T
−
1
:
h
≐
R
T
G_{T-1:h} \doteq R_T
GT−1:h≐RT 结尾
无重要性采样的 off-policy \text{off-policy} off-policy 学习:n-步树备份算法
下图是3-步树备份备份图:
沿中央脊柱下去是标记出来的三个样本状态和奖励以及两个样本动作
这些代表了在初始状态-动作对
S
t
,
A
t
S_t, A_t
St,At 之后发生的事件的随机变量
悬挂在每个状态两侧的是未选取的动作
因为我们没有对于未选取动作的样本数据,我们引导,并使用对它们价值的估计来形成更新的目标
我们将图表顶部节点的估计值朝着目标更新,其中包括了沿途的奖励(适当折扣)以及底部节点的估计值
在树形备份更新中,目标包括所有这些,再加上所有悬空的动作节点的估计值
这就是它被叫作树形备份更新的缘故;它是整棵估计动作价值树的更新
更准确地说,更新来自树的叶节点的估计动作价值
内部的动作节点,对应于实际采取的动作,并不参与其中
每个叶节点对目标的贡献与其在目标策略
π
\pi
π 下发生的概率成比例
因此,每一个第一级动作
a
a
a 贡献的权重为
π
(
a
∣
S
t
+
1
)
\pi(a|S_{t+1})
π(a∣St+1),除了实际采取的动作
A
t
+
1
A_{t+1}
At+1 并不参与贡献,它的概率
π
(
A
t
+
1
∣
S
t
+
1
)
\pi(A_{t+1} | S_{t+1})
π(At+1∣St+1) 被用来加权所有第二级动作价值
因此,每一个未选择第二级动作的权值为:
π
(
A
t
+
1
∣
S
t
+
1
)
π
(
a
′
∣
S
t
+
2
)
\pi(A_{t+1} | S_{t+1}) \pi(a'|S_{t+2})
π(At+1∣St+1)π(a′∣St+2),以此类推
就好像每一个动作节点的箭头被动作在目标策略下选中的概率加权,并且如果该动作下有一棵树,则该权值适用于这棵树的所有叶节点
一步回报(目标)和预期 Sarsa 的一样:
G
t
:
t
+
1
≐
R
t
+
1
+
γ
∑
a
π
(
a
∣
S
t
+
1
)
Q
t
(
S
t
+
1
,
a
)
,
f
o
r
t
<
T
−
1
G_{t:t+1} \doteq R_{t+1} + \gamma \sum_a \pi(a|S_{t+1}) Q_t (S_{t+1} , a) \ , \quad for \ t < T-1
Gt:t+1≐Rt+1+γa∑π(a∣St+1)Qt(St+1,a) ,for t<T−1
而两步树备份回报是:
G
t
:
t
+
2
≐
R
t
+
1
+
γ
∑
a
≠
A
t
+
1
π
(
a
∣
S
t
+
1
)
Q
t
+
1
(
S
t
+
1
,
a
)
+
γ
π
(
A
t
+
1
∣
S
t
+
1
)
(
R
t
+
2
+
γ
∑
a
π
(
a
∣
S
t
+
2
)
Q
t
+
1
(
S
t
+
2
,
a
)
)
=
R
t
+
1
+
γ
∑
a
≠
A
t
+
1
π
(
a
∣
S
t
+
1
)
Q
t
+
1
(
S
t
+
1
,
a
)
+
γ
π
(
A
t
+
1
∣
S
t
+
1
)
G
t
+
1
:
t
+
2
,
f
o
r
t
<
T
−
2
G_{t:t+2} \doteq R_{t+1} + \gamma \sum_{a \not = A_{t+1}} \pi(a|S_{t+1}) Q_{t+1} (S_{t+1}, a) \\[5pt] + \gamma \pi(A_{t+1} | S_{t+1}) \left( R_{t+2} + \gamma \sum_a \pi(a|S_{t+2}) Q_{t+1} (S_{t+2}, a) \right) \\[5pt] = R_{t+1} + \gamma \sum_{a \not = A_{t+1}} \pi(a|S_{t+1}) Q_{t+1} (S_{t+1}, a) + \gamma \pi (A_{t+1} | S_{t+1}) G_{t+1 : t+2} \ , \quad for \ t < T - 2
Gt:t+2≐Rt+1+γa=At+1∑π(a∣St+1)Qt+1(St+1,a)+γπ(At+1∣St+1)(Rt+2+γa∑π(a∣St+2)Qt+1(St+2,a))=Rt+1+γa=At+1∑π(a∣St+1)Qt+1(St+1,a)+γπ(At+1∣St+1)Gt+1:t+2 ,for t<T−2
后一种形式表明了树备份 n-步回报的一般递归形式定义:
G
t
:
t
+
n
≐
R
t
+
1
+
γ
∑
a
≠
A
t
+
1
π
(
a
∣
S
t
+
1
)
Q
t
+
n
−
1
(
S
t
+
1
,
a
)
+
γ
π
(
A
t
+
1
∣
S
t
+
1
)
G
t
+
1
:
t
+
n
,
f
o
r
t
<
T
−
1
,
n
⩾
2
G_{t : t+n} \doteq R_{t+1} + \gamma \sum_{a \not = A_{t+1}} \pi(a|S_{t+1}) Q_{t+n-1} (S_{t+1}, a) + \gamma \pi(A_{t+1} |S_{t+1}) G_{t+1:t+n} \ , \quad for \ t < T - 1 \ , \ n \geqslant 2
Gt:t+n≐Rt+1+γa=At+1∑π(a∣St+1)Qt+n−1(St+1,a)+γπ(At+1∣St+1)Gt+1:t+n ,for t<T−1 , n⩾2
当
n
=
1
n=1
n=1 时,由前式给出除了
G
T
−
1
:
t
+
n
≐
R
T
G_{T-1:t+n} \doteq R_T
GT−1:t+n≐RT
这个目标被来自 n-步 Sarsa 的通常的动作-价值更新规则所使用:
Q
t
+
n
(
S
t
,
A
t
)
≐
Q
t
+
n
−
1
(
S
t
,
A
t
)
+
α
[
G
t
:
t
+
n
−
Q
t
+
n
−
1
(
S
t
,
A
t
)
]
,
f
o
r
0
⩽
t
<
T
Q_{t+n} (S_t, A_t) \doteq Q_{t+n-1} (S_t, A_t) + \alpha [G_{t:t+n} - Q_{t+n-1}(S_t, A_t)] \ , \quad for \ 0 \leqslant t < T
Qt+n(St,At)≐Qt+n−1(St,At)+α[Gt:t+n−Qt+n−1(St,At)] ,for 0⩽t<T
而对于所有使
s
≠
S
t
s \not = S_t
s=St 或
a
≠
A
t
a\not = A_t
a=At 的
s
,
a
s, a
s,a ,所有其他状态-动作对的价值保持不变:
Q
t
+
n
(
s
,
a
)
=
Q
t
+
n
−
1
(
s
,
a
)
Q_{t+n}(s,a) = Q_{t+n-1}(s, a)
Qt+n(s,a)=Qt+n−1(s,a)
伪代码如下:
统一算法:n-步 Q ( σ ) Q(\sigma) Q(σ)
我们考虑采样和期望之间的连续变化,令
σ
t
∈
[
0
,
1
]
\sigma_t \in [0, 1]
σt∈[0,1] 表示步骤
t
t
t 的采样率,当
σ
=
1
\sigma=1
σ=1 时,表示全采样,而
σ
=
0
\sigma=0
σ=0 表示纯期望
随机变量
σ
t
\sigma_t
σt 可以被用作状态,动作,或者状态-动作对的函数,我们把这个新算法叫作 n-步
Q
(
σ
)
Q(\sigma)
Q(σ)
首先,根据结束点
h
=
t
+
n
h=t+n
h=t+n 写出树备份 n-步回报,然后根据预期的近似值
V
ˉ
\bar{V}
Vˉ:
G
t
:
h
=
R
t
+
1
+
γ
∑
a
≠
A
t
+
1
π
(
a
∣
S
t
+
1
)
Q
h
−
1
(
S
t
+
1
,
a
)
+
γ
π
(
A
t
+
1
∣
S
t
+
1
)
G
t
+
1
:
h
=
R
t
+
1
+
γ
V
ˉ
h
−
1
(
S
t
+
1
)
−
γ
π
(
A
t
+
1
∣
S
t
+
1
)
Q
h
−
1
(
S
t
+
1
,
A
t
+
1
)
+
γ
π
(
A
t
+
1
∣
S
t
+
1
)
G
t
+
1
:
h
=
R
t
+
1
+
γ
π
(
A
t
+
1
∣
S
t
+
1
)
(
G
t
+
1
:
h
−
Q
h
−
1
(
S
t
+
1
,
A
t
+
1
)
)
+
γ
V
ˉ
h
−
1
(
S
t
+
1
)
G_{t:h} = R_{t+1} + \gamma \sum_{a \not = A_{t+1}} \pi (a|S_{t+1}) Q_{h-1} (S_{t+1}, a) + \gamma \pi (A_{t+1} | S_{t+1}) G_{t+1:h} \\[5pt] = R_{t+1} + \gamma \bar{V}_{h-1} (S_{t+1}) - \gamma \pi(A_{t+1} | S_{t+1}) Q_{h-1} (S_{t+1}, A_{t+1}) + \gamma \pi (A_{t+1} | S_{t+1}) G_{t+1:h} \\[5pt] = R_{t+1} + \gamma \pi(A_{t+1} | S_{t+1}) (G_{t+1:h} - Q_{h-1} (S_{t+1}, A_{t+1})) + \gamma \bar{V}_{h-1} (S_{t+1})
Gt:h=Rt+1+γa=At+1∑π(a∣St+1)Qh−1(St+1,a)+γπ(At+1∣St+1)Gt+1:h=Rt+1+γVˉh−1(St+1)−γπ(At+1∣St+1)Qh−1(St+1,At+1)+γπ(At+1∣St+1)Gt+1:h=Rt+1+γπ(At+1∣St+1)(Gt+1:h−Qh−1(St+1,At+1))+γVˉh−1(St+1)
之后它与带控制变量的 Sarsa n-步回报相同,除了动作概率
π
(
A
t
+
1
∣
S
t
+
1
)
\pi(A_{t+1} |S_{t+1})
π(At+1∣St+1) 代替重要性采样率
ρ
t
+
1
\rho_{t+1}
ρt+1
对于
Q
(
σ
)
Q(\sigma)
Q(σ) ,我们在两种情况之间线性滑动:
G
t
:
h
≐
R
t
+
1
+
γ
(
σ
t
+
1
ρ
t
+
1
+
(
1
−
σ
t
+
1
)
π
(
A
t
+
1
∣
S
t
+
1
)
)
(
G
t
+
1
:
h
−
Q
h
−
1
(
S
t
+
1
,
A
t
+
1
)
)
+
γ
V
ˉ
h
−
1
(
S
t
+
1
)
,
f
o
r
t
<
h
⩽
T
G_{t:h} \doteq R_{t+1} + \gamma \left( \sigma_{t+1} \rho_{t+1} + (1 - \sigma_{t+1}) \pi(A_{t+1} | S_{t+1}) \right) \left( G_{t+1:h} - Q_{h-1} (S_{t+1}, A_{t+1}) \right) + \gamma \bar{V}_{h-1} (S_{t+1}) \ , \quad for \ t < h \leqslant T
Gt:h≐Rt+1+γ(σt+1ρt+1+(1−σt+1)π(At+1∣St+1))(Gt+1:h−Qh−1(St+1,At+1))+γVˉh−1(St+1) ,for t<h⩽T
递归结束于:
G
h
:
h
≐
Q
h
−
1
(
S
h
,
A
h
)
G_{h:h} \doteq Q_{h-1} (S_h, A_h)
Gh:h≐Qh−1(Sh,Ah) 如果
h
<
T
h < T
h<T 或者结束于
G
T
−
1
:
T
≐
R
T
G_{T-1:T} \doteq R_T
GT−1:T≐RT 如果
h
=
T
h=T
h=T
下面是完整的伪代码:
参考
《Reinforcement Learning An Introduction》(second edition)