强化学习笔记(4)之蒙特卡洛法
标签(空格分隔): 未分类
文章目录
起源
蒙特卡洛法是一种统计随机数来解决计算问题的一种方法,即以概率为基础的方法,名字起源于著名赌城蒙特卡洛。如下图所示,圆周率的计算,还有不规则图形面积的计算,只要得知落在不同区域的随机点的个数,按比例能求出不规则图形的面积,这就是用统计随机数来解决计算问题,也就蒙特卡洛法。
蒙特卡洛法与动态规划法在强化学习中的区别
如果MDP的环境模型已知,也就状态转移矩阵
P
s
s
′
a
P_{ss'}^a
Pss′a 已知,可以用动态规划法来求解状态的值函数,从而评估策略的优劣,但在无模型的强化学习中,模型
P
s
s
′
a
P_{ss'}^a
Pss′a是未知的,如果还想利用策略评估和策略改善的框架解决MDP问题,那就必须采用其他方法对当前的策略进行评估,也就是计算值函数。
回到值函数的最原始的公式:
v
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
=
E
π
[
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
∣
S
t
=
s
]
v_{\pi}(s)=E_{\pi}[G_t|S_t=s]=E_{\pi}[\sum_{k=0}^{\infty}\gamma^kR_{t+k+1}|S_t=s]
vπ(s)=Eπ[Gt∣St=s]=Eπ[k=0∑∞γkRt+k+1∣St=s]
q
π
(
s
,
a
)
=
E
π
[
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
∣
S
t
=
s
,
A
=
a
]
q_{\pi}(s,a)=E_{\pi}[\sum_{k=0}^{\infty}\gamma^kR_{t+k+1}|S_t=s,A=a]
qπ(s,a)=Eπ[k=0∑∞γkRt+k+1∣St=s,A=a]
蒙特卡洛(MC)法在强化学习中的应用就是,直接根据“经验”(experience)中的"一幕幕"(episodes)进行学习的,完整的一幕(episode)不要求起始状态是某一个特定的状态,但要求agent最终进入环境的某个终止状态。
MC法是model-free(无环境模型)的,也就是agent是无法获知环境的中的状态转移矩阵P和立即回报函数R的。采用完整的一幕来学习。而无需“自举”(bootstrapping),由于不知道状态转移矩阵P,所以要求每一幕必须到达任务的终点,因为只有到达终点才能获得回报值,其基本思想: value就是return(回报)的平均值。
蒙特卡洛法中的经验 :经验是一组episodes的集合,其实就是该强化学习模型的训练样本。
策略评估:在整个episode中,用平均值回报值(return)代替价值V 。比如,在某一状态s,遵循策略
π
\pi
π,最终获得总的回报G,这就是一个样本。如果有许多这样的样本,根据统计学原理,可以估计在状态s下,遵循策略
π
\pi
π的期望回报,也就状态值函数
V
π
(
s
)
V_{\pi}(s)
Vπ(s)了。
根据统计学原理,episode越多,结果约准确。
多数情况下(多数应用中),蒙特卡洛法一个重要的目标就是评估状态-行为值函数q*。根据上一篇博客的描述,当状态转移矩阵已知时(有环境模型情况下),只要知道状态值函数(state values)就可以确定一个策略的规则,也就是在当前的状态下选择reward值高的而且下一个状态的值函数高的action作为一个最佳策略;但是在model-free(环境状态转移矩阵P未知)的情况下,仅仅有状态值函数(state value)不能够确定一个策略,而状态-行为值函数q* 就能确定选择什么行为动作作为当前策略,所以在model-free的情况下,获得“状态-行为值”更为重要了。
要评估最优状态-行为值函数q*,首先要评估状态行为值的评估问题,也就是评估
q
π
(
s
,
a
)
q_{\pi}(s,a)
qπ(s,a)(在状态s下执行行为a回报的期望。)
首次访问与每次访问
在蒙特卡洛法中,估计q* 的思想与估计状态值函数V的是一样的,在一个episode中,一对<s,a>称为被visit过,是指在该episode中,agent经历了状态s并且选择了行为a,多以求V的例子说问题。
考虑一个问题,如果在某一个episode中,状态s出现两次,分别在t1时刻和t2时刻,计算状态s的值时,就可以采用两种不同的统计方法计算模特卡罗的问题:首次访问(first visit)MC和每次访问(every visit)MC:
- 首次访问(first visit)MC方法是在各幕中,对<s,a>的所有第一次访问(first visit)进行求期望。在计算状态s下的值函数时,只利用每次试验中第一次访问到状态s时的回报返回值。如图,计算状态s的均值时,只利用
G
i
1
(
s
)
G_{i1}(s)
Gi1(s),公式为:
v ( s ) = G 11 ( s ) + G 21 ( s ) + . . . N ( s ) v(s)=\frac{G_{11}(s)+G_{21}(s)+...}{N(s)} v(s)=N(s)G11(s)+G21(s)+... - 每次访问(every visit)MC是在各幕中,对<s,a>的所有的visit进行求期望。在计算状态s下的值函数时,只利用每次试验中所有访问到状态s时的回报返回值。
v
(
s
)
=
G
11
(
s
)
+
G
12
(
s
)
+
.
.
.
G
21
(
s
)
+
.
.
.
N
(
s
)
v(s)=\frac{G_{11}(s)+G_{12}(s)+...G_{21}(s)+...}{N(s)}
v(s)=N(s)G11(s)+G12(s)+...G21(s)+...
根据大数定理,当 N → ∞ N\rightarrow \infty N→∞ 则有 v ( s ) → v π ( s ) v(s)\rightarrow v_{\pi}(s) v(s)→vπ(s)
增量计算均值
无论是首次访问MC还是每次访问MC,在计算回报期望时,都是利用总回报除以状态s的总访问次数。根据公式:
根据上式子,均值是可以通过增量的方式求得。
将均值的求取变换成一个增量式的过程,很容易就可应用到蒙特卡洛方法中,用增量方式求的状态值的期望:
N
(
S
t
)
←
N
(
S
t
)
+
1
N(S_{t})\leftarrow N(S_{t})+1
N(St)←N(St)+1
V
(
S
t
)
←
V
(
S
t
)
+
1
N
(
S
t
)
(
G
t
−
V
(
S
t
)
)
V(S_{t})\leftarrow V(S_{t})+\frac{1}{N(S_{t})}(G_t-V(S_{t}))
V(St)←V(St)+N(St)1(Gt−V(St))
以上的公式
←
\leftarrow
←符号不是等式,类似于程序语言中的变量赋值。待程序运行结束时,便可求得均值。
强化学习中的探索
蒙特卡洛法是利用经验平均来求得价值函数,这就要求要有足够多的经验才能求得正确的价值函数,所以,获得足够多的经验是无模型强化学习的关键。回想一下上一篇文章中,动态规划法中,为了保证价值函数的收敛性,算法会对状态空间中的所有状态进行扫描。因此,蒙特卡洛法中必须采用一定的方法保证每一个状态被访问到。
探索性初始化是保证每一个状态都能被访问到的最直接的方法。所谓探索性初始化是指每一个状态都有一定的几率作为初始状态。
策略改进法蒙特卡洛方法利用经验平均对策略的价值函数进行估计。当值函数被估计出来后,对于每个状态s,通过最大化动作值函数,来进行策略的改进。
在动态规划法中,将策略评估和策略改进相结合就构成了策略迭代过程(policy iteration):
其中箭头上的 E 表示完整的策略估计过程,箭头上的 I 代表的是一个完整的策略改进的过程。
而在蒙特卡洛方法中,policy iteration过程是这样的:
在上一篇文章中讲到有模型强化学习的动态规划法中的策略迭代包括两部分,策略估计和策略改进,其中策略估计是利用贝尔曼期望方程,策略改进用的是greedy方法。
然而在model-free的强化学习中,策略估计就不能在使用贝尔曼期望方程了,而是采样的方法(sample),比如MC法(或者TD法)。
如果用蒙特卡洛法对价值函数进行估计,得到策略对应的价值函数V,然后利用greedy方法得到新的策略:
然而在蒙特卡洛法中,其中的
P
s
s
′
a
P_{ss'}^a
Pss′a是未知的,所以不能用状态价值函数作为估计的对象。而对于状态-行为值函数,如果完成策略估计,那么只需要求一个argmax即可对策略进行改进,所以可以利用q函数作为估计对象。
探索性蒙特卡洛(exploring starts MC )控制,算法伪代码:
然而在无探索性初始化的MC控制中,如何保证初始状态不变的情况下,访问到所有状态?有两种方法:on-policy(同策略)方法和off-policy(异策略)方法,其中,
on-policy(同策略) 是指产生数据的策略与评估和改进的策略是同一个策略;
off-policy(异策略) 评估和改善的不是用来产生数据的策略policy,在off-policy中一般采用2个策略,一个用来学习并最后称为目标optimal policy。另一个策略则偏向于探索,用来产生训练数据。
同策略(on-policy)
如果要学习到一个确定性的策略,比如利用greedy方法得到的策略,若直接利用这个策略去采样训练数据,是不会有探索机制的。如果想要对各个动作和状态进行探索,可以采用一个带有一定随机性质的策略进行采样,比如epsilon-greedy得到的策略。
在同策略方法中,通常采用soft的规则,即对所有
s
∈
S
s \in S
s∈S与
a
∈
A
a \in A
a∈A均能够有
π
(
a
∣
s
)
>
0
\pi(a|s)>0
π(a∣s)>0(即在任一个状态下,所有的行为均有可能被选中)
ϵ
−
g
r
e
e
d
y
\epsilon-greedy
ϵ−greedy policies :
在
1
−
ϵ
1-\epsilon
1−ϵ的概率下会选择当前具有最大action-value估计值的行为,而在
ϵ
\epsilon
ϵ的概率下会从所有行为中随机选择一个action。因此,选择greedy-action的概率
1
−
ϵ
+
ϵ
∣
A
(
s
)
∣
1-\epsilon+ \frac{\epsilon}{|A(s)|}
1−ϵ+∣A(s)∣ϵ 而选择非greedy-action的概率是
ϵ
∣
A
(
s
)
∣
\frac{\epsilon}{|A(s)|}
∣A(s)∣ϵ 。
π
(
a
∣
s
)
=
{
1
−
ϵ
+
ϵ
∣
A
(
s
)
∣
i
f
a
=
A
∗
ϵ
∣
A
(
s
)
∣
i
f
a
!
=
A
∗
\pi(a|s)=\begin{cases} 1-\epsilon+ \frac{\epsilon}{|A(s)|} &if&a=A^*\\ \frac{\epsilon}{|A(s)|} &if&a!=A^*\\ \end{cases}
π(a∣s)={1−ϵ+∣A(s)∣ϵ∣A(s)∣ϵififa=A∗a!=A∗
同策略蒙特卡洛法的伪代码:
异策略(off-policy)
强化学习中控制方式的目标是学习一系列的优化行为的action-values,然而为了寻找优化的行为,采取的策略不能总选择“当前”最优的行为,而需要探索所有的动作,因此需要采用句有“探索精神”的策略,并能通过这中探索的过程找到最优的策略。
异策略在使用的过程中一般采用2个策略,一个学习并称为optimal policy,记为
π
\pi
π,另外一个则更偏向于探索,用生产训练数据,记为
μ
\mu
μ。
用来学习(评估与改进)的策略
π
(
a
∣
s
)
\pi(a|s)
π(a∣s)称为目标策略(target policy),而用来生产训练数据,探索状态-动作空间的策略称为行为策略(behavior policy)。相比与on-policy,off-policy 稍微复杂,需要更多的概念来表达,它常常有较大的方差且收敛较慢,但是off-policy 表现得根据一般性,往往更加强大。
用于益策略的目标策略
π
(
a
∣
s
)
\pi(a|s)
π(a∣s)和行为策略
μ
(
a
∣
s
)
\mu(a|s)
μ(a∣s)并非任一选择的,而是满足一定的条件,这个条件就是覆盖性条件,即:为了利用从规则
μ
\mu
μ产生的episodes来评估策略
π
\pi
π的value,则需要规则
π
\pi
π下所有行为在规则
μ
\mu
μ下都被执行过。
也就是说,行为策略
μ
\mu
μ下产生的行为覆盖或者包含目标策略
π
\pi
π产生的行为。
用式子表示:满足
π
(
a
∣
s
)
>
0
\pi(a|s)>0
π(a∣s)>0的任何<s,a>均满足
μ
(
a
∣
s
)
>
0
\mu(a|s)>0
μ(a∣s)>0。
几乎所有的异策略方法都是使用了重要性采样,这里根据轨迹在目标策略(target policy) 和 行为策略(behavior policy)下发生的概率比来对returns赋予权重,称为重要性权重(importance sample ratio),给定初始状态
S
t
S_t
St,状态-行为的轨迹
A
t
A_t
At,
S
t
+
1
S_{t+1}
St+1,
A
t
+
1
A_{t+1}
At+1…
S
T
S_T
ST在目标策略
π
\pi
π下发生的概率:
∏
k
=
t
T
−
1
π
(
A
t
∣
S
t
)
p
(
S
k
+
1
∣
S
k
,
A
k
)
\prod_{k=t}^{T-1}\pi(A_t|S_t)p(S_{k+1}|S_k,A_k)
k=t∏T−1π(At∣St)p(Sk+1∣Sk,Ak)
在异策略方法中,行为策略
μ
\mu
μ,即用来产生样本的策略,所产生的轨迹概率分布相当于相当于重要性采样中的
p
(
^
x
)
p\hat(x)
p(^x)
,用来评估和改进的的策略
π
\pi
π所对应的轨迹概率分布为
p
(
x
)
p(x)
p(x),因此,利用行为策略
μ
\mu
μ所产生的累积函数返回值来评估策略
π
\pi
π时,需要在累积函数返回值前面乘以重要性权重。
蒙特卡洛方法的增量式实现分为两种:(1)对同策略蒙特卡洛(on policy MC)方法,其增量式实现即为对returns的平均;(2)对增量式实现的异策略蒙特卡洛(off policy MC)还要分为两种:普通重要性采样和加权重要性采样。
普通重要性采样(ordinary importance sampling)中只是对returns赋予了权重
ρ
t
T
(
t
)
\rho_t^{T(t)}
ρtT(t),采用的还是简单平均的方法。因此,只需考虑off-policy MC(异策略蒙特卡洛)中的加权重要性采样形式即可。
假设有return序列
G
1
,
G
2
,
.
.
.
,
G
n
−
1
G_1,G_2,...,G_{n-1}
G1,G2,...,Gn−1,他们以同样的状态开始,并且每一个具有随机权重
W
i
W_i
Wi(例如:
W
i
=
ρ
t
T
(
t
)
W_i=\rho_t^{T(t)}
Wi=ρtT(t)),则希望估计的值为:
V
n
=
∑
k
=
1
n
−
1
W
k
G
k
∑
k
=
1
n
−
1
W
k
,
n
>
=
2
V_n=\frac{\sum_{k=1}^{n-1}W_kG_k}{\sum_{k=1}^{n-1}W_k} , n>=2
Vn=∑k=1n−1Wk∑k=1n−1WkGk,n>=2
假设已经有了估计值
V
n
V_n
Vn,以及当前的return值
G
n
G_n
Gn,则下一步就可以利用
V
n
V_n
Vn和
G
n
G_n
Gn来估计
V
n
+
1
V_{n+1}
Vn+1,此时还需要记录的值是前n个return的weights的和,即分母的和,这样就可以得到更新方程了:
V
n
+
1
=
V
n
+
W
n
C
n
[
G
n
−
V
n
]
,
n
>
=
1
,
C
n
+
1
=
C
n
+
W
n
+
1
V_{n+1}=V_n+ \frac{W_n}{C_n}[G_n-V_n],n>=1, C_{n+1}=C_n+W_{n+1}
Vn+1=Vn+CnWn[Gn−Vn],n>=1,Cn+1=Cn+Wn+1
异策略每次访问的蒙特卡洛法的预测方法(价值估计方法)如下伪代码:
异策略每次访问的蒙特卡洛法的控制方法(策略改进方法)如下伪代码:
MC与DP的区别
蒙特卡洛法的每一次experience,都是从初始状态(即根节点)开始的,沿着某个特定episode的转变轨迹遍历每一个经历过的节点,最终以终止状态结束。
针对某一个节点,MC方法只包含特定episode选择的action的转换,而DP方法将所有可能的转换都包含在内。从全局上看,MC方法将包含了一个episode经历的所有转换,而DP方法只包含一步转换过程。
MC方法一个重要的属性在于,它对于每一个状态的估计是独立的,不依赖于其他状态的估计。并且,DC方法估计的每一个单一的状态的value的计算成本是与状态的数量无关的。
MC的优点
MC直接从与环境的交互中进行学习,不需要环境的动态模型;
MC可以利用仿真或者采样模型,在很多实际应用中,仿真构建episodes很容易,而构建DP所需要的状态概率的确切模型很难;
如果只希望得到一部分state的估计值,蒙特卡洛方法可以很容易聚焦在这些states上,他只要不计算不关注的states即可,而DP方法中,对于某一个state的估计干涉到其他所有相关的states,不如蒙特卡洛方法方便;
当违背马尔科夫属性时,蒙特卡洛方法受到的影响较小,因为它不需要基于后续状态的value估计值来更新value的估计值,也就是说,它不进行“自举(bootstrap)”
===============
我的公众号会有更对学习笔记哦,欢迎关注: