蒙特卡洛方法和TD都不需要环境模型,而DP方法需要依赖完整的环境模型,这是最重要的前提。
一、三种方法的更新方式
DP
基于策略迭代的DP可以表示成(严谨写法不是下面这样的,下面的写法主要是为了展示算法中的更新过程):
v
k
+
1
(
s
)
=
Σ
a
π
(
a
∣
s
)
Σ
s
′
,
r
′
p
(
s
′
,
r
∣
s
,
a
)
[
r
+
γ
v
k
(
s
′
)
]
v_{k+1}(s) = \Sigma_{a}\pi(a|s) \Sigma_{s',r'} p(s',r|s,a)[r+\gamma v_{k}(s')]
vk+1(s)=Σaπ(a∣s)Σs′,r′p(s′,r∣s,a)[r+γvk(s′)]
基于价值函数的DP可以表示成(非严谨写法):
v
k
+
1
(
s
)
=
m
a
x
a
Σ
s
′
,
r
′
p
(
s
′
,
r
∣
s
,
a
)
[
r
+
γ
v
k
(
s
′
)
]
v_{k+1}(s) = max_{a} \Sigma_{s',r'} p(s',r|s,a)[r+\gamma v_{k}(s')]
vk+1(s)=maxaΣs′,r′p(s′,r∣s,a)[r+γvk(s′)](k为迭代次数,可不用管)
**
蒙特卡洛方法
**
首次访问型的蒙特卡洛方法可以表示成:
V
(
S
t
)
V(S_{t})
V(St)
←
\gets
←
V
(
S
t
)
+
(
G
(
t
)
−
V
(
S
t
)
)
/
(
n
+
1
)
V(S_{t})+(G(t) -V(S_{t}))/(n+1)
V(St)+(G(t)−V(St))/(n+1)
适用于非平稳环境的每次访问型蒙特卡洛方法可以表示成:
V
(
S
t
)
V(S_{t})
V(St)
←
\gets
←
V
(
S
t
)
+
α
(
G
(
t
)
−
V
(
S
t
)
)
V(S_{t})+\alpha(G(t) -V(S_{t}))
V(St)+α(G(t)−V(St))
**
TD方法
**
V
(
S
t
)
V(S_{t})
V(St)
←
\gets
←
V
(
S
t
)
+
α
(
R
(
t
+
1
)
+
γ
V
(
S
t
+
1
)
−
V
(
S
t
)
)
V(S_{t})+\alpha(R(t+1) + \gamma V(S_{t+1}) -V(S_{t}))
V(St)+α(R(t+1)+γV(St+1)−V(St))
可以看到TD方法用 ( R ( t + 1 ) + γ V ( S t + 1 ) (R(t+1) + \gamma V(S_{t+1}) (R(t+1)+γV(St+1)近似替代了每次访问型蒙特卡洛中的G(t)。
二、三种方法的更新方式总结
-
蒙特卡洛方法通过采样得到G(t)来更新 V ( S t ) V(S_{t}) V(St),并且以 V ( S t ) V(S_{t}) V(St)的终值作为 V π V_{\pi} Vπ(s)的估计值;
-
DP则是通过环境模型给定的p(s’,r|s,a)以及 π \pi π(a|s)来迭代更新 v π v_{\pi} vπ(s),在更新时将 v π ( S t ) v_{\pi} (S_{t}) vπ(St)作为 v π v_{\pi} vπ(s)的估计值。
-
TD方法结合了二者,将 v π ( S t ) v_{\pi} (S_{t}) vπ(St)作为 v π v_{\pi} vπ(s)的估计值,从而在单步采样后得到G(t)的估计值,并用G(t)的估计值更新 V ( S t ) V(S_{t}) V(St),最后将 V ( S t ) V(S_{t}) V(St)的终止作为 v π ( s ) v_{\pi}(s) vπ(s)的终值。
-
TD和蒙特卡洛的更新又叫采样更新,采样更新和DP方法使用的更新方式的不同在于,采样更新依赖的是基于后继结点的样本数据;而DP是依赖于后继结点的分布状态(环境模型所决定的)。
三、更新方式的原理探究
1、蒙特卡洛方法
通过大量采样的模拟真实情况
2、DP
凭借环境模型保证了可靠性
3、TD
TD方法的背后理论究竟是什么呢?TD在更新方式上简单的融合了蒙特卡洛方法和DP,但是蒙特卡洛和DP适用的先决条件实际上有很大差异。这时候数学推导就发挥它奇妙作用,为TD理论进行了强有力的背书。
如果价值函数数组V在一幕内没有发生改变,那么蒙特卡洛误差实际上可以写成TD误差之和。其中TD误差是指
δ
t
=
R
(
t
+
1
)
+
γ
V
(
S
t
+
1
)
−
V
(
S
t
)
\delta_{t} = R(t+1) + \gamma V(S_{t+1}) -V(S_{t})
δt=R(t+1)+γV(St+1)−V(St), 蒙特卡洛误差是指
G
(
t
)
−
V
(
S
t
)
G(t) -V(S_{t})
G(t)−V(St), 推导如下。
G
(
t
)
−
V
(
S
t
)
=
G
(
t
)
−
V
(
S
t
)
+
γ
V
(
S
t
+
1
)
−
γ
V
(
S
t
+
1
)
=
R
(
t
+
1
)
+
γ
G
(
t
+
1
)
−
V
(
S
t
)
+
γ
V
(
S
t
+
1
)
−
γ
V
(
S
t
+
1
)
=
δ
t
+
γ
(
(
G
t
+
1
)
−
V
(
S
t
+
1
)
)
=
δ
t
+
γ
δ
t
+
1
+
δ
2
(
G
t
+
2
−
V
(
S
t
+
2
)
)
=
δ
t
+
γ
δ
t
+
1
+
γ
2
δ
t
+
2
+
⋯
+
γ
T
−
t
−
1
δ
T
−
1
+
γ
T
−
t
(
G
(
T
)
−
V
(
S
T
)
)
=
δ
t
+
γ
δ
t
+
1
+
γ
2
δ
t
+
2
+
⋯
+
γ
T
−
t
−
1
δ
T
−
1
+
γ
T
−
t
(
0
−
0
)
=
Σ
k
=
t
T
−
1
γ
k
−
t
δ
k
G(t) -V(S_{t}) \\= G(t) -V(S_{t}) + \gamma V(S_{t+1}) - \gamma V(S_{t+1}) \\= R(t+1) + \gamma G(t+1) - V(S_{t} ) + \gamma V(S_{t+1}) - \gamma V(S_{t+1}) \\= \delta_{t} + \gamma((G_{t+1})-V(S_{t+1})) \\= \delta_{t} + \gamma \delta_{t+1} + \delta^{2}(G_{t+2} - V(S_{t+2})) \\= \delta_{t} + \gamma \delta_{t+1} + \gamma^{2}\delta_{t+2} + \cdots +\gamma^{T-t-1}\delta_{T-1} + \gamma^{T-t}(G(T) - V(S_{T})) \\= \delta_{t} + \gamma \delta_{t+1} + \gamma^{2}\delta_{t+2} + \cdots +\gamma^{T-t-1}\delta_{T-1} + \gamma^{T-t}(0-0) \\= \Sigma^{T-1}_{k=t}\gamma^{k-t}\delta_{k}
G(t)−V(St)=G(t)−V(St)+γV(St+1)−γV(St+1)=R(t+1)+γG(t+1)−V(St)+γV(St+1)−γV(St+1)=δt+γ((Gt+1)−V(St+1))=δt+γδt+1+δ2(Gt+2−V(St+2))=δt+γδt+1+γ2δt+2+⋯+γT−t−1δT−1+γT−t(G(T)−V(ST))=δt+γδt+1+γ2δt+2+⋯+γT−t−1δT−1+γT−t(0−0)=Σk=tT−1γk−tδk
如果V在该幕中变化了,这个等式就不准确,但是如果时刻步长较小,则等式仍能近似成立。这个等式就是TD理论和算法的重要支撑。