四、无模型预测
1.蒙特卡罗强化学习Monte-Carlo Reinforcement Learning
MC方法可直接从分幕(episodes)的经验中学习
MC是无模型(Model-free)的算法:MDP的转换和奖励是未知的
MC从完整的episodes(回合)中学习
MC使用最简单的想法:价值(value)=平均回报(mean return)
注意:MC只能应用于分幕的MDP中,所有的episodes必须终止
蒙特卡罗策略评估
目标:在给定策略
π
\pi
π下,从一系列episodes经验中学习价值函数
v
π
v_\pi
vπ
S
1
,
A
1
,
R
2
,
…
,
S
k
∼
k
S_1, A_1, R_2, \dots,S_k \sim k
S1,A1,R2,…,Sk∼k
回顾:回报是带折扣总奖励
G
t
=
R
t
+
1
+
γ
R
t
+
2
+
…
+
γ
T
−
1
R
T
G_t=R_{t+1}+\gamma R_{t+2}+\ldots+\gamma^{T-1} R_T
Gt=Rt+1+γRt+2+…+γT−1RT
回顾:价值函数是回报的期望
v
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
v_\pi(s)=\mathbb E_\pi[G_t \mid S_t=s]
vπ(s)=Eπ[Gt∣St=s]
蒙特卡罗策略评估使用每个状态的平均回报来代替回报的期望
首次访问型(First-Visit)蒙特卡罗策略评估
目标:评估状态s
每幕中,状态s第一次出现时,进行如下操作一次
- 增加计数个数 N ( s ) ← N ( s ) + 1 N(s) \leftarrow N(s)+1 N(s)←N(s)+1
- 增加回报总和 S ( s ) ← S ( s ) + G t S(s) \leftarrow S(s)+G_t S(s)←S(s)+Gt
- 价值由平均回报估算 V ( s ) = S ( s ) / N ( s ) V(s)=S(s)/N(s) V(s)=S(s)/N(s)
根据大数定律: V ( s ) → V π ( s ) a s N ( s ) → ∞ V(s)\rightarrow V_\pi(s) \quad as \quad N(s) \rightarrow \infin V(s)→Vπ(s)asN(s)→∞
每次访问型(Every-Visit)蒙特卡罗策略评估
目标:评估状态s
每幕中,状态s每出现一次时,进行如下操作一次
- 增加计数个数 N ( s ) ← N ( s ) + 1 N(s) \leftarrow N(s)+1 N(s)←N(s)+1
- 增加回报总和 S ( s ) ← S ( s ) + G t S(s) \leftarrow S(s)+G_t S(s)←S(s)+Gt
- 价值由平均回报估算 V ( s ) = S ( s ) / N ( s ) V(s)=S(s)/N(s) V(s)=S(s)/N(s)
根据大数定律: V ( s ) → V π ( s ) a s N ( s ) → ∞ V(s)\rightarrow V_\pi(s) \quad as \quad N(s) \rightarrow \infin V(s)→Vπ(s)asN(s)→∞
累进式均值更新
序列
x
1
,
x
2
.
.
.
x_1,x_2...
x1,x2...的平均值
μ
1
,
μ
2
,
.
.
.
\mu_1,\mu_2,...
μ1,μ2,...可以增量计算
μ
k
=
μ
k
−
1
+
1
k
(
x
k
−
μ
k
−
1
)
\mu_k=\mu_{k-1}+\frac{1}{k}(x_k-\mu_{k-1})
μk=μk−1+k1(xk−μk−1)
累进式蒙特卡罗更新
在episode S 1 , A 1 , R 2 , . . . , R T S_1,A_1,R_2,...,R_T S1,A1,R2,...,RT后逐步更新 V ( s ) V(s) V(s)
对于每个具有回报
G
t
G_t
Gt的状态
S
t
S_t
St
N
(
S
t
)
←
N
(
S
t
)
+
1
V
(
S
t
)
←
V
(
S
t
)
+
1
N
(
S
t
)
(
G
t
−
V
(
S
t
)
)
N(S_t) \leftarrow N(S_t) + 1 \\ V(S_t) \leftarrow V(S_t) + \frac{1}{N(S_t)}(G_t-V(S_t))
N(St)←N(St)+1V(St)←V(St)+N(St)1(Gt−V(St))
在非平稳问题中,跟踪连续平均值(即忘掉旧episodes)可能很有用
V
(
S
t
)
←
V
(
S
t
)
+
α
(
G
t
−
V
(
S
t
)
)
V\left(S_t\right) \leftarrow V\left(S_t\right)+\alpha\left(G_t-V\left(S_t\right)\right)
V(St)←V(St)+α(Gt−V(St))
2.时序差分学习(Temporal-Difference Learning)
TD方法可直接从经验中学习
TD是无模型的:不了解MDP转换/奖励
TD通过自举(bootstrapping)从不完整的episodes中学习,对于没有完成的幕也可以学习,这与蒙特卡罗不同,自举是指新的是根据旧的来进行学习
猜测episode的结果,同时持续更新这个猜测
MC和TD
目标:根据策略 π \pi π得到的经验学习价值函数 v π v_\pi vπ
增量式every-visit蒙特卡罗
- 朝着实际回报 G t G_t Gt的方向更新价值 V ( S t ) V(S_t) V(St), G t G_t Gt是指整轮游戏结束后,才能算得的t时刻的回报,是一个能得到的确定的数
V ( S t ) ← V ( S t ) + α ( G t − V ( S t ) ) V\left(S_t\right) \leftarrow V\left(S_t\right)+\alpha\left(G_t-V\left(S_t\right)\right) V(St)←V(St)+α(Gt−V(St))
最简单的时序差分算法:TD(0)
朝着估计回报
R
t
+
1
+
γ
V
(
S
t
+
1
)
R_{t+1}+\gamma V(S_{t+1})
Rt+1+γV(St+1)的方向更新
V
(
S
t
)
V(S_t)
V(St)
V
(
S
t
)
←
V
(
S
t
)
+
α
(
R
t
+
1
+
γ
V
(
S
t
+
1
)
−
V
(
S
t
)
)
V\left(S_t\right) \leftarrow V\left(S_t\right)+\alpha\left(R_{t+1}+\gamma V\left(S_{t+1}\right)-V\left(S_t\right)\right)
V(St)←V(St)+α(Rt+1+γV(St+1)−V(St))
(
R
t
+
1
+
γ
V
(
S
t
+
1
)
)
\left(R_{t+1}+\gamma V\left(S_{t+1}\right)\right)
(Rt+1+γV(St+1))被称为TD target
δ t = R t + 1 + γ V ( S t + 1 ) − V ( S t ) \delta_t=R_{t+1}+\gamma V\left(S_{t+1}\right)-V(S_t) δt=Rt+1+γV(St+1)−V(St)被称为TD error
自举: 猜测episode的结果,同时持续更新这个猜测,这里就是猜测 V ( S t + 1 ) V(S_{t+1}) V(St+1)来更新 V ( S t ) V(S_t) V(St)
例子:开车回家
MC和TD的优点和缺点
TD可以在知道最终结果之前学习
-
TD可以在每一步之后在线学习
-
MC必须等到episode结束才能知道回报
TD可以在没有最终结果的情况下学习
-
TD可以从不完整的序列中学习
-
MC只能从完整序列中学习
-
TD在连续(非终止)环境中工作
-
MC仅适用于episode(终止)环境
偏差/方差的平衡
回报 G t = R t + 1 + γ R t + 2 + ⋯ + γ T − 1 R t + T G_t=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{T-1} R_{t+T} Gt=Rt+1+γRt+2+⋯+γT−1Rt+T是 v π ( S t ) v_\pi(S_t) vπ(St)的无偏估计
真实的TD target R t + 1 + γ v π ( S t + 1 ) R_{t+1}+\gamma v_\pi\left(S_{t+1}\right) Rt+1+γvπ(St+1)是 v π ( S t ) v_\pi(S_t) vπ(St)的无偏估计
TD target R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V\left(S_{t+1}\right) Rt+1+γV(St+1)是 v π ( S t ) v_\pi(S_t) vπ(St)的有偏估计
TD target R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V\left(S_{t+1}\right) Rt+1+γV(St+1)的方差比回报 G t G_t Gt低得多
- 回报取决于一系列随机的动作、转移与奖励
- TD target取决于一个动作及其对应的转移与奖励
v π v_\pi vπ是真实的价值函数, V V V是预测的价值函数,只有 V V V收敛了,才是真实的价值函数
MC和TD的优点和缺点(2)
MC具有高方差,零偏差
-
良好的收敛性
-
对初始值不太敏感
-
很容易理解和使用
MC方法具有高方差的原因是:我们在玩游戏的时候,游戏本身是有随机性的,所以我们可以把 G a G_a Ga看成一个随机变量。因为我们每次到 s a s_a sa的时候,最后得到的 G a G_a Ga其实是不一样的。我们看到同样的状态 s a s_a sa,最后到游戏结束的时候,因为游戏本身是有随机性的,玩游戏的模型可能也有随机性,所以我们每次得到的 G a G_a Ga是不一样的,每一次得到的 G a G_a Ga的差别其实会很大。为什么会很大呢?因为 G a G_a Ga是很多个不同的步骤的奖励的和。假设我们每一个步骤都会得到一个奖励, G a G_a Ga是从状态 s a s_a sa开始一直到游戏结束,每一个步骤的奖励的和。
TD方差低,但存在偏差
-
通常比MC更高效
-
TD(0)收敛至 v π ( S t ) v_\pi(S_t) vπ(St)
-
对初始值更敏感
MC和TD的优点和缺点(3)
TD利用了马尔可夫性
- 通常在马尔可夫环境中效率更高
MC没有利用马尔可夫性
- 通常在非马尔可夫环境中更有效
MC、TD、DP的比较
MC:
TD:
DP:
3.TD( λ \lambda λ)
n步TD
让TD target看更多步未来的状态
考虑n步回报
n
=
1
(
T
D
)
G
t
(
1
)
=
R
t
+
1
+
γ
V
(
S
t
+
1
)
n
=
2
G
t
(
2
)
=
R
t
+
1
+
γ
R
t
+
2
+
γ
2
V
(
S
t
+
2
)
⋮
n
=
∞
(
M
C
)
G
t
(
∞
)
=
R
t
+
1
+
γ
R
t
+
2
+
…
+
γ
T
−
1
R
T
\begin{aligned} & n=1 \quad (TD) \quad G_t^{(1)}=R_{t+1}+\gamma V\left(S_{t+1}\right) \\ & n=2 \quad \quad \quad \quad G_t^{(2)}=R_{t+1}+\gamma R_{t+2}+\gamma^2 V\left(S_{t+2}\right) \\ & \vdots \\ & n=\infin \quad (MC) \quad G_t^{(\infty)}=R_{t+1}+\gamma R_{t+2}+\ldots+\gamma^{T-1} R_T \end{aligned}
n=1(TD)Gt(1)=Rt+1+γV(St+1)n=2Gt(2)=Rt+1+γRt+2+γ2V(St+2)⋮n=∞(MC)Gt(∞)=Rt+1+γRt+2+…+γT−1RT
定义n步回报为:
G
t
(
n
)
=
R
t
+
1
+
γ
R
t
+
2
+
…
+
γ
n
−
1
R
t
+
n
+
γ
n
V
(
S
t
+
n
)
G_t^{(n)}=R_{t+1}+\gamma R_{t+2}+\ldots+\gamma^{n-1} R_{t+n}+\gamma^n V\left(S_{t+n}\right)
Gt(n)=Rt+1+γRt+2+…+γn−1Rt+n+γnV(St+n)
n步时序差分算法:
V
(
S
t
)
←
V
(
S
t
)
+
α
(
G
t
(
n
)
−
V
(
S
t
)
)
V\left(S_t\right) \leftarrow V\left(S_t\right)+\alpha\left(G_t^{(n)}-V\left(S_t\right)\right)
V(St)←V(St)+α(Gt(n)−V(St))
TD( λ \lambda λ)
G t λ G_t^\lambda Gtλ整合了所有的n步回报 G t ( n ) G_t(n) Gt(n)
加和时,使用权重
(
1
−
λ
)
λ
n
−
1
(1-\lambda)\lambda^{n-1}
(1−λ)λn−1
G
t
λ
=
(
1
−
λ
)
∑
n
=
1
∞
λ
n
−
1
G
t
(
n
)
G_t^\lambda=(1-\lambda) \sum_{n=1}^{\infty} \lambda^{n-1} G_t^{(n)}
Gtλ=(1−λ)n=1∑∞λn−1Gt(n)
得到
T
D
(
λ
)
TD(\lambda)
TD(λ)
V
(
S
t
)
←
V
(
S
t
)
+
α
(
G
t
(
n
)
−
V
(
S
t
)
)
V\left(S_t\right) \leftarrow V\left(S_t\right)+\alpha\left(G_t^{(n)}-V\left(S_t\right)\right)
V(St)←V(St)+α(Gt(n)−V(St))
λ
=
0
\lambda=0
λ=0时就是TD(0),
λ
=
1
\lambda=1
λ=1时就是MC
4.参考资料
强化学习基础 北京邮电大学 鲁鹏 强化学习基础 (本科生课程) 北京邮电大学 鲁鹏_哔哩哔哩_bilibili
深度强化学习 台湾大学 李宏毅 DRL Lecture 1_ Policy Gradient (Review)_哔哩哔哩_bilibili
蘑菇书EasyRL datawhalechina/easy-rl: 强化学习中文教程(蘑菇书),在线阅读地址:https://datawhalechina.github.io/easy-rl/