1、蒙特卡罗预测
首先考虑给定策略的状态价值函数的蒙特卡罗方法。一个状态的价值就是从该状态开始的期望收益(期望的未来折扣奖励之和),因此一个显而易见的方法是,多次访问该状态后对观察到的收益进行平均,当访问次数足够多时,平均值会收敛于期望收益值(即该状态的价值),这就是所有蒙特卡罗方法的基础。
假设给定一组遵循策略
π
\pi
π 并包含状态
s
s
s 的经验序列,我们希望估计该策略下状态
s
s
s 的价值
v
π
(
s
)
v_\pi(s)
vπ(s),每个序列中,状态
s
s
s 的出现称为对
s
s
s 的访问,一个序列
s
s
s 可能被多次访问。因此存在两类蒙特卡罗预测方法:首次访问蒙特卡罗方法与一般访问蒙特卡罗方法,其区别为,在统计收益时是从序列末尾向前的,前者第一次访问到
s
s
s 即停止统计,而后者继续统计。下图为首次访问蒙特卡罗方法伪代码,一般访问蒙特卡罗方法的区别就是不检查
S
t
S_t
St 是否出现。
1.1 案例(纸牌游戏 21 点)
游戏目标是获得点数总和尽可能大且不能超过 21 点,具体规则如下:
- 牌组中没有王牌
- J、Q、K 的点数为 10 点,A 的点数可以是 11 点或 1 点
- 游戏开始每个人发两张牌,庄家一张牌面向上,一张向下
- 如果发牌时获得 21 点(即一张 A 和一张 10),则直接获胜;若庄家也是 21 点,则是平局
- 若玩家不是 21 点,那么他可以选择继续要牌,或者停止要牌;接着轮到发牌人,庄家策略固定(例如点数 < 20 继续要牌)
- 双方要牌的过程中,若点数超过 21 点,则直接输掉该局游戏,否则最后取决于双方最终点数之和大小
1.2、代码
待补充
1.3、结果展示
待补充
1.4、小结
虽然 21 点游戏的环境模型完全已知,但是应用动态规划的方法计算价值函数并不容易,因为确定下一个事件的分布很困难且繁琐,而蒙特卡罗方法处理样本集的能力十分强大,即便环境模型完全已知。蒙特卡罗方法对每个状态价值的估计是相互独立的,因此计算单个状态价值的计算成本与总的状态数量无关,这使得蒙特卡罗方法可以从感兴趣的状态开始生成大量的样本集,只从这些状态计算平均收益。
2、蒙特卡罗方法估计动作价值
若环境模型已知,那么状态价值就可以确定策略(如上节所述);若环境模型未知,那么估计动作价值(状态-动作对的价值)比状态价值更加有用,因为需显式地估计每个动作的价值,从而确定策略。因此我们使用蒙特卡罗方法的主要目标之一就是估计 q ∗ q_\ast q∗,所以先考虑基于动作价值的策略评估问题。
基于动作价值的策略评估问题也就是估计 q π ( s , a ) q_\pi(s,a) qπ(s,a),即从状态 s s s 开始,采取动作 a a a,遵循策略 π \pi π 的预期收益,这与第一节的方法本质上相同,现在我们讨论的是对状态-动作对的访问而不是对状态的访问。为使动作价值服务于策略评估,我们必须确保不断探索,保证所有状态-动作对被访问无限次,有两种方法:1)每一个状态-动作对都有非零概率被指定为回合开始,称之为起始探索(Exploring Starts)。2)每个状态中所有动作均为非零的随机策略。
3、蒙特卡罗控制
现在我们考虑如何在控制中使用蒙特卡罗估计,即近似最优策略,总体思路与动态规划的模式相似,即广义策略迭代(GPI)的思想。在该方法中,我们交替执行策略评估和策略改进的完整步骤,从任意策略
π
0
\pi_0
π0 开始,以最优策略和最优动作价值函数结束:
π
0
⟶
E
q
π
0
⟶
I
π
1
⟶
E
q
π
1
⟶
I
π
2
⟶
E
⋯
⟶
I
π
∗
⟶
E
q
∗
\pi_0\stackrel{E}{\longrightarrow}q_{\pi_0}\stackrel{I}{\longrightarrow}\pi_1\stackrel{E}{\longrightarrow}q_{\pi_1}\stackrel{I}{\longrightarrow}\pi_2\stackrel{E}{\longrightarrow}\cdots\stackrel{I}{\longrightarrow}\pi_\ast\stackrel{E}{\longrightarrow}q_\ast
π0⟶Eqπ0⟶Iπ1⟶Eqπ1⟶Iπ2⟶E⋯⟶Iπ∗⟶Eq∗
训练了很多回合后,近似动作价值函数逐渐收敛于真实函数,策略改进是通过贪心来完成的,对于每一个状态
s
s
s,确定性地选择动作价值最大的动作:
π
(
s
)
≐
arg
max
a
q
(
s
,
a
)
\pi(s)\doteq \arg\max_a q(s,a)
π(s)≐argamaxq(s,a)
则导出策略改进定理:
q
π
k
(
s
,
π
k
+
1
(
s
)
)
=
q
π
k
(
s
,
arg
max
a
q
π
k
(
s
,
a
)
)
=
max
a
q
π
k
(
s
,
a
)
≥
q
π
k
(
s
,
π
k
(
s
)
)
≥
v
π
k
(
s
)
\begin{aligned} q_{\pi_k}(s,\pi_{k+1}(s))&=q_{\pi_k}(s,\arg\max_aq_{\pi_k}(s,a))\\ &=\max_aq_{\pi_k}(s,a)\\ &\geq q_{\pi_k}(s,\pi_k(s))\\[1ex] &\geq v_{\pi_k}(s) \end{aligned}
qπk(s,πk+1(s))=qπk(s,argamaxqπk(s,a))=amaxqπk(s,a)≥qπk(s,πk(s))≥vπk(s)
通过这种方式,蒙特卡罗方法可以用于仅给定样本事件而不知道环境模型的情况下找到最优策略。但是上面做了两个不太可能的假设:1)每个状态-动作对都有非零概率被指定为回合开始;2)策略评估可以用无限多的回合来完成。我们先去除第二个假设:
与动态规划一样,有两种方法来解决这个问题,1)在策略评估期间采取足够的步骤确保估计值的变化足够小,即估计值近似不变;2)在策略改进前放弃完成完整的策略评估,每次评估步骤中,直接将价值函数移动到
q
π
k
q_{\pi_k}
qπk,该方法的极端形式就是值迭代。
4、非起始探索的蒙特卡罗控制
如何避免不太可能的 Exploring Starts 假设呢?确保所有动作被无限重复地选择有两种方法,我们称为 同策略(on-policy)方法和 异策略(off-policy)方法。同策略方法在在策略改进时只考虑当前策略下的经验,而异策略方法在策略改进时可以考虑非当前策略下的经验。上面的蒙特卡罗 ES 方法就是同策略方法,在本节中考虑设计非起始探索的蒙特卡罗控制方法,异策略方法在下一节中考虑。
在同策略控制方法中,策略通常是软的,即
π
(
a
∣
s
)
>
0
,
s
∈
S
,
a
∈
A
(
s
)
\pi(a|s)>0,s\in\mathcal{S},a\in\mathcal{A}(s)
π(a∣s)>0,s∈S,a∈A(s),逐渐向确定性策略靠近。本节中介绍的同策略方法使用
ϵ
\epsilon
ϵ-贪心策略,同策略蒙特卡罗控制的总体思想仍然是 GPI,与蒙特卡罗 ES 一样,我们使用首次访问蒙特卡罗方法来估计当前策略的动作价值函数。
5、通过重要性采样进行异策略预测
异策略方法是使用两种策略,一种是正在学习的策略,称为目标策略;另一种更具有探索性用于产生行为,称为行为策略。也就是说学习的数据不是来自于目标策略,整个过程称为异策略学习(off-policy learning)。
本节,我们通过考虑预测问题开始研究异策略方法,其中目标策略和行为策略都是固定不变的。也就是说,若我们想估计 v π v_\pi vπ 或 q π q_\pi qπ,但是所有的回合数据来自另一策略 b b b,且 b ≠ π b\neq\pi b=π,其中, π \pi π 为目标策略, b b b 为行为策略。
为了使用来自策略 b b b 的数据来估计策略 π \pi π 的价值,我们要求策略 π \pi π 下的每个动作至少偶尔在策略 b b b 上采取,
几乎所有的异策略方法都使用重要性抽样,我们根据目标策略和行为策略下轨迹发生的相对概率(称为重要抽样比率)对结果进行加权,将重要性抽样应用于异策略学习。在任一策略
π
\pi
π 下,当给定起始状态
S
t
S_t
St,后续状态-动作轨迹
A
t
,
S
t
+
1
,
A
t
+
1
,
⋯
,
S
t
A_t,S_{t+1},A_{t+1},\cdots,S_t
At,St+1,At+1,⋯,St 的概率为
P
r
{
A
t
,
S
t
+
1
,
A
t
+
1
,
⋯
,
S
T
∣
S
t
,
A
t
:
T
−
1
∼
π
}
=
π
(
A
t
∣
S
t
)
p
(
S
t
+
1
∣
S
t
,
A
t
)
π
(
A
t
+
1
∣
S
t
+
1
)
⋯
p
(
S
T
∣
S
T
−
1
,
A
T
−
1
)
=
∏
k
=
t
T
−
1
π
(
A
k
∣
S
k
)
p
(
S
k
+
1
∣
S
k
,
A
k
)
\begin{aligned} \mathrm{Pr}\{&A_t,S_{t+1},A_{t+1},\cdots,S_T|S_t,A_{t:T-1\sim\pi}\}\\ &=\pi(A_t|S_t)p(S_{t+1}|S_t,A_t)\pi(A_{t+1}|S_{t+1})\cdots p(S_T|S_{T-1},A_{T-1})\\ &=\prod_{k=t}^{T-1}\pi(A_k|S_k)p(S_{k+1}|S_k,A_k) \end{aligned}
Pr{At,St+1,At+1,⋯,ST∣St,At:T−1∼π}=π(At∣St)p(St+1∣St,At)π(At+1∣St+1)⋯p(ST∣ST−1,AT−1)=k=t∏T−1π(Ak∣Sk)p(Sk+1∣Sk,Ak)
因此,目标策略和行为策略下轨迹的相对概率(重要性采样比)为:
ρ
t
:
T
−
1
≐
∏
k
=
t
T
−
1
π
(
A
k
∣
S
k
)
p
(
S
k
+
1
∣
S
k
,
A
k
)
∏
k
=
t
T
−
1
b
(
A
k
∣
S
k
)
p
(
S
k
+
1
∣
S
k
,
A
k
)
=
∏
k
=
t
T
−
1
π
(
A
k
∣
S
k
)
b
(
A
k
∣
S
k
)
\rho_{t:T-1}\doteq\frac{\prod_{k=t}^{T-1}\pi(A_k|S_k)p(S_{k+1}|S_k,A_k)}{\prod_{k=t}^{T-1}b(A_k|S_k)p(S_{k+1}|S_k,A_k)}=\prod_{k=t}^{T-1}\frac{\pi(A_k|S_k)}{b(A_k|S_k)}
ρt:T−1≐∏k=tT−1b(Ak∣Sk)p(Sk+1∣Sk,Ak)∏k=tT−1π(Ak∣Sk)p(Sk+1∣Sk,Ak)=k=t∏T−1b(Ak∣Sk)π(Ak∣Sk)
由于我们希望估计目标策略下的预测收益,而数据是来自于行为策略,这就是重要性采样的用武之地:
E
[
ρ
t
:
T
−
1
G
t
∣
S
t
=
s
]
=
v
π
(
s
)
\Bbb E [\rho_{t:T-1}G_t|S_t=s]=v_{\pi}(s)
E[ρt:T−1Gt∣St=s]=vπ(s)
6、增量实现
假设我们有一个返回序列
G
1
,
G
2
,
⋯
,
G
n
−
1
G_1,G_2,\cdots,G_{n-1}
G1,G2,⋯,Gn−1 所有的收益都以相同的状态开始,并且每个都有相应的随机权值
W
i
(
e
.
g
.
,
W
i
=
ρ
t
i
:
T
(
t
i
)
−
1
)
W_i(\mathrm{e.g.},W_i=\rho_{t_i:T(t_i)-1})
Wi(e.g.,Wi=ρti:T(ti)−1)。我们希望估计
V
n
≐
∑
k
=
1
n
−
1
W
k
G
k
∑
k
=
1
n
−
1
W
k
,
n
≥
2
V_n\doteq\frac{\sum_{k=1}^{n-1}W_kG_k}{\sum_{k=1}^{n-1}W_k},\quad n\geq2
Vn≐∑k=1n−1Wk∑k=1n−1WkGk,n≥2
并更新它,因为我们得到了一个额外的收益
G
n
G_n
Gn,
V
n
V_n
Vn 的更新规则如下
V
n
+
1
≐
V
n
+
W
n
C
n
[
G
n
−
V
n
]
,
n
≥
1
a
n
d
C
n
+
1
≐
C
n
+
W
n
+
1
\begin{aligned} &V_{n+1}\doteq V_n+\frac{W_n}{C_n}\left[G_n-V_n\right],\quad n\geq1\\ \mathrm{and}\\ &C_{n+1}\doteq C_n+W_{n+1} \end{aligned}
andVn+1≐Vn+CnWn[Gn−Vn],n≥1Cn+1≐Cn+Wn+1
其中,
C
0
≐
0
C_0\doteq0
C0≐0,如下为用于蒙特卡罗策略评估的完整的增量算法,该算法适用于异策略情况,也使用于同策略情况(即
π
=
b
,
W
n
=
1
\pi=b,W_n=1
π=b,Wn=1)
7、异策略蒙特卡罗控制
如下为基于 GPI 和加权重要性采样的异策略蒙特卡罗控制算法,用于估计
π
∗
\pi_\ast
π∗ 和
q
∗
q_\ast
q∗