本篇博客内容源于课程《强化学习的数学原理》 赵世钰老师 西湖大学,旨在记录学习强化学习的过程。
强化学习05——蒙特卡罗方法
给定模型的情况(即probability model p ( r ∣ s , a ) p(r|s, a) p(r∣s,a) 和 p ( s ′ ∣ s , a ) p(s'|s, a) p(s′∣s,a) 对于所有的 ( s , a ) (s, a) (s,a) 都是已知的)可以通过策略迭代算法求解贝尔曼最优公式,这种算法是model-based的,以下介绍的蒙特卡罗方法是model free的。注意学习这一章需要很好的理解策略迭代算法。
MC Basic算法
我们知道在策略迭代算法中需要计算
q
π
(
s
,
a
)
=
∑
r
p
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
p
(
s
′
∣
s
,
a
)
v
π
(
s
′
)
q_{\pi}(s,a)=\sum_{r} p(r|s,a)r+\gamma\sum_{s'} p(s'|s,a)v_{\pi}(s')
qπ(s,a)=r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπ(s′)做Policy evaluation,同时利用
q
π
(
s
,
a
)
q_{\pi}(s,a)
qπ(s,a)做Policy improvement。
所以说
q
π
k
(
s
,
a
)
q_{\pi_{k}}(s,a)
qπk(s,a)是算法的关键步骤,但依据这个式子
q
π
(
s
,
a
)
=
∑
r
p
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
p
(
s
′
∣
s
,
a
)
v
π
(
s
′
)
q_{\pi}(s,a)=\sum_{r} p(r|s,a)r+\gamma\sum_{s'} p(s'|s,a)v_{\pi}(s')
qπ(s,a)=r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπ(s′)计算
q
π
k
(
s
,
a
)
q_{\pi_{k}}(s,a)
qπk(s,a)是在依据模型的情况下,在不依据模型的情况下如何计算
q
π
k
(
s
,
a
)
q_{\pi_{k}}(s,a)
qπk(s,a)呢?我们可以回到
q
π
(
s
,
a
)
q_{\pi}(s,a)
qπ(s,a)的定义:
q
π
(
s
,
a
)
=
E
[
G
t
∣
S
t
=
s
,
A
t
=
a
]
q_{\pi}(s,a)=\mathbb{E}[G_{t}|S_{t}=s,A_{t}=a]
qπ(s,a)=E[Gt∣St=s,At=a]即它是给定
(
s
,
a
)
(s,a)
(s,a)后获得回报的期望。所以我们可以通过蒙特卡洛模拟去估计
q
π
k
(
s
,
a
)
q_{\pi_{k}}(s,a)
qπk(s,a)。所以简单来讲MC Basic算法和策略迭代算法的区别就是其中的
q
π
k
(
s
,
a
)
q_{\pi_{k}}(s,a)
qπk(s,a)不再是依靠模型公式计算,而是依据得到的试验数据(数据是什么?是很多个episode对应得到
q
π
k
(
s
,
a
)
q_{\pi_{k}}(s,a)
qπk(s,a)样本)通过蒙特卡罗方法去估计,所以说MC算法也就是策略迭代算法的变体。
MC Basic算法会收敛吗?答案是会的,因为策略迭代算法是收敛的,那么只要有足够多的episodes,MC Basic算法的收敛性也能得到保证。
MC Epsilon-Greedy算法
MC Epsilon-Greedy算法实际上就是MC Basic算法的变体,它比MC Basic算法效率更高。
先介绍“访问(visit)”:每当一对
(
s
,
a
)
(s,a)
(s,a)出现在一个episode中,便称作对这对
(
s
,
a
)
(s,a)
(s,a)的一次访问。
信息利用效率的提升:
在一个episode中,会访问很多对
(
s
,
a
)
(s,a)
(s,a),每访问到一个
(
s
,
a
)
(s,a)
(s,a)都可以利用后面的过程计算这个
(
s
,
a
)
(s,a)
(s,a)对应的
q
π
k
(
s
,
a
)
q_{\pi_{k}}(s,a)
qπk(s,a)。例如下图,MC Basic算法依靠这个episode只得到了初始访问
(
s
1
,
a
2
)
(s_{1},a_{2})
(s1,a2)一个
q
π
k
(
s
1
,
a
2
)
q_{\pi_{k}}(s_{1},a_{2})
qπk(s1,a2)的样本,而改进之后一个episode可以得到多个
q
π
k
(
s
,
a
)
q_{\pi_{k}}(s,a)
qπk(s,a)样本。
时间效率的提升:
MC Basic算法中,我们需要等到所有episode的遍历完后再做策略评估和策略更新,如何遍历很少的episode就做策略更新呢?这里需要克服一个问题,就是必须保证每一对
(
s
,
a
)
(s,a)
(s,a)都要以非零的概率出现在这些episode中,但
(
s
,
a
)
(s,a)
(s,a)的出现依赖于策略。MC Basic算法中greedy policy这一确定性策略无法保证每一对
(
s
,
a
)
(s,a)
(s,a)在一个episode中都能被访问,那么如何设计策略更新使这一可能成为现实呢?这里可以引入
ε
ε
ε-greedy policy。
可以看到,
ε
ε
ε-greedy policy使每一个action都有一定可能实现。如何将
ε
ε
ε-greedy policy嵌入到算法当中呢?和greedy policy类似,赋予在状态
s
s
s下动作值函数
q
(
s
,
a
)
q(s,a)
q(s,a)最大的所对应的动作
a
a
a最大的概率。
以下是MC Epsilon-Greedy算法的伪代码: