5 蒙特卡洛方法 (Monte Carlo Method)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/coffee_cream/article/details/66972281

【上一篇 4 动态编程(Dynamic Programming, DP)】【下一篇 6 Temporal-Difference (TD) Learning

与上一节动态编程(DP)方法不同的是,蒙特卡洛(Monte Carlo, MC)方法不需要环境的全部信息,而只需要 “experience”,这里的“experience”指的是 states、actions和环境的 rewards 的采样序列。在机器学习领域,不需要环境动态性的先验知识是非常重要的一个优点,蒙特卡洛方法从真实的或者仿真的 experience 中进行学习,虽然它也需要一个环境模型用来产生样本转换,但它不像动态编程一样需要所有可能转换的所有概率分布。蒙特卡洛方法主要是通过对样本的 returns 进行平均来解决增强学习问题的,有点类似于 Multi-armed bandit 的机制。

1、Monte Carlo Prediction

基于一个给定的规则,蒙特卡洛方法学习 state-value 函数的方法是将所有“visit”过该状态的经历中的 returns 进行平均,假设给定一个服从规则 π \pi 的 episodes 集合,在一个 episode 中每次处于在状态 s 就称为是对状态 s 的一次 visit,每个 episode 中第一次处于状态 s 就称为是 first visit to s。
  MC 中的预测方法可以分成两种:first-visit MC 与 every-visit MC,其中first-visit MC 方法是将 v π ( s ) v_{\pi}(s) 评估为 s 的所有 first visits 的平均值,而 every-visit MC 方法是将 v π ( s ) v_{\pi}(s) 评估为 s 的所有 visits 的平均值,这两种方法非常相似只具有微微不同的理论属性,当 s 被 visit 的次数趋于无穷时,这两种方法都会收敛到 v π ( s ) v_{\pi}(s) 。first-visit MC 的伪代码如下图所示,其每个返回值是一个独立的、对 v π ( s ) v_{\pi}(s) 的相同的分布估计,并且带有有限的方差,每个平均值本身都是一个无偏估计,误差的标准偏差为 1 n \frac{1}{\sqrt{n}} (其中 n n 为 returns 的数量),这个估计可以说是成平方收敛的(converge quadratically)。

蒙特卡洛夫方法估计 v π ( s ) v_{\pi}(s) 的 backup diagram 如下所示,从中可以看出,MC 方法的每一次 experience,都是从一个初始状态(即根节点)开始,沿着某个特定 episode 的转变轨迹遍历每一个经历过的节点,最终以终止状态结束。针对某一个节点,MC 方法只包含该特定 episode 选择的 action 的转换,而 DP 方法会将所有可能的转换都包含在内。从全局上来看,MC 方法包含了一个 episode 经历的所有转换,而 DP 方法只包含一步转换过程。

MP 方法的一个重要属性在于,它对每一个状态的估计是独立的,不依赖于对其他状态的估计。并且,MP 方法估计每一单一状态的 value 的计算成本是与状态的数量无关的,这从它的伪代码中也可以看出,它只需要希望计算的状态的 returns,而不需要计算的状态就可以忽略掉。

2、Monte Carlo Estimation of Action Values

当有模型时,只需要 state values 就可以确定一个规则,这时只需要选择会引向最好的 reward 和 下一个状态的 action 即可,但是在没有模型的时候,单单具有 state values 是不足确定一个规则的,这时就需要明确地知道每个 action values。因此,当模型未知时,获得 action values (state-action 对的价值)比 state values 更重要,因此蒙特卡洛的一个重要目标就是评估 q q_{\ast}
  要评估 q q_{\ast} ,首先应该考虑的是 action value 的规则评价问题,也就是估计 q π ( s , a ) q_{\pi}(s,a) (在状态 s s 下执行行为 a a 的期望 return),MC 方法估计 q q_{\ast} 的思想与估计 state values 是一样的,在一个 episode 中,一对 s , a s,a 称为是被 visit 过只的是在该 episode 中,agent 经历过 s s 状态且选择执行了行为 a a
  同样,这里的 MC 预测方法也可以分成两种:first-visit MC 与 every-visit MC,其中 first-visit MC 方法是对 ( s , a ) (s,a) 的所有 first visits 进行平均,而 every-visit MC 方法是对 ( s , a ) (s,a) 的所有 visits 进行平均。当 visit 的次数趋于无穷时,这些方法也是成平方收敛的。
  这里唯一复杂的地方在于,有可能有很多 state-action 对从未被 visit 过,这样就没有 returns 来进行平均,就无法对该 state-action 对进行评估,这其实就可以归结于是一般的 m a i n t a i n i n g   e x p l o r a t i o n maintaining\ exploration 问题,也就是在指导 agent 的行为时要保持一定的探索精神。其中一种解决方法是 e x p l o r i n g   s t a r t s exploring\ starts ,不明思议,该方法就是通过每一个 episode 的起点来做到 exploration 的,也就是每一对 s t a t e a c t i o n   p a i r state-action\ pair 都会以非零的概率被选中作为 episode 的起点,exploring starts 方法有时有用,但不具有一般性,很多时候受问题或者环境的约束无法实现,另外一种可行的方法是采用一种随机的规则,对每个状态所有的行为被选中的概率都是非零的。下一节内容中暂且假设采用的是 exploring starts 方案。

3、Monte Carlo Control

在 DP 方法中我们知道,将 policy evaluation 与 policy improvement 相结合就构成了 policy iteration 过程,这里先回顾一下 DP 的 policy iteration 过程:
π 0 E v π 0 I π 1 E v π 1 I π 2 E I π E v π \pi_0 \xrightarrow{E} v_{\pi_0} \xrightarrow{I} \pi_1 \xrightarrow{E} v_{\pi_1} \xrightarrow{I} \pi_2 \xrightarrow{E} \cdots \xrightarrow{I} \pi_{\ast} \xrightarrow{E} v_{\pi_{\ast}}
  而在 MC 中,policy iteration 过程是这样的:
π 0 E q π 0 I π 1 E q π 1 I π 2 E I π E q π \pi_0 \xrightarrow{E} q_{\pi_0} \xrightarrow{I} \pi_1 \xrightarrow{E} q_{\pi_1} \xrightarrow{I} \pi_2 \xrightarrow{E} \cdots \xrightarrow{I} \pi_{\ast} \xrightarrow{E} q_{\pi_{\ast}}
  其中, E \xrightarrow{E} 代表的是一个完整的 policy evaluation 过程, I \xrightarrow{I} 代表的是一个完整的 policy improvement 过程。
  Policy evaluation 过程就如前面所介绍的一样,会产生很多 episodes,得到的 action-value 函数会近似接近真实的函数,假设我们已经观测得到了无穷多个 episodes,并且这些 episodes 采用了 exploring starts 机制,那么针对任意的规则 π k \pi_k ,MC 方法都可以计算出每一个准确的 q π k q_{\pi_k}
  这里的 policy improvement 过程是基于当前的 value function 来制定贪婪的 policy,在 MC 方法中,由于我们已经具备了 action-value 函数,因此我们不需要任何的模型就可以构建出一个贪婪的 policy。针对任一 action-value 函数 q q ,只需对每一个状态 s s 选择具有最大 action-value 的行为即可,用数学表达式,就是:
π ( s ) a r g m a x a q ( s , a ) \pi(s) \doteq argmax_a{q (s,a)}
  该方法的选择机理是基于的 policy improvement theorem,即对所有的 s S s\in\mathcal{S} 有:
q π k ( s , π k + 1 ( s ) ) = q π k ( s , a r g m a x a q π k ( s , a ) ) = m a x 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, argmax_a{q_{\pi_k}(s,a)}) \\ &= max_a q_{\pi_k}(s,a) \\ &\geq q_{\pi_k}(s, \pi_k(s)) \\ &\geq v_{\pi_k}(s) \end{aligned}
  根据这个定理就可以保证每一个 π k + 1 \pi_{k+1} 都严格优于或者同样好于规则 π k \pi_{k} ,因此最终该过程就会收敛于 optimal policy 和 optimal value function。
  根据上面的分析可以看出,为了保证 MC 方法的收敛性,我们做了两个假设:
  (1)我们获得的 episodes 具有 exploring starts;
  (2)policy evaluation 过程可以利用无限的 episodes 来完成。
  而在实际过程中,这两个假设是采用一定的方法来移除的,针对(1)在下一个小节中会介绍,针对(2)有两种方法来解决:
  (1)认为在每个 policy evaluation 过程中可以逼近 q π k q_{\pi_k} ,通过测量和假设来获得估计误差的边界和概率,并在每个 policy evaluation 过程中采取充分的措施来保证他们的边界充分的小。然而这种方法在实际中需要非常多的 episodes。
  (2)为了避免无限次的 episodes,可以放弃在返回到 policy improvement 之前完成 policy evaluation过程,也就是在每一个 evaluation 步骤中都让 value function 向 q π k q_{\pi_k} 逼近,但并不期望可以在 value function 很多步后就可以非常接近 q π k q_{\pi_k}
  这里将采用了 exploring starts 的MC 方法称为是 M o n t e   C a r l o   E S Monte\ Carlo\ ES ,算法的伪代码如下所示:

4、Monte Carlo Control without Exploring Starts

为了避免 exploring starts 的假设,唯一的方法就是保证所有的 actions 都可以被选中,通常有两种方法: o n p o l i c y on-policy 方法和 o f f p o l i c y off-policy 方法,其中 on-policy 方法是通过评估和改善做决策的 policy,而 off-policy 方法评估和改善的不是用来产生数据的 policy,在 off-policy 方法中一般使用 2 个policy,一个学习并成为 optimal policy,另外一个则更偏向于探索,用来产生行为,off-policy 方法将在下一节中进行介绍。这里先介绍的是 on-policy 方法。
  在 on-policy 控制方法中,规则常常是 s o f t soft 的,即对所有的 s S s\in\mathcal{S} a A ( s ) a\in\mathcal{A}(s) ,均有 π ( a s ) > 0 \pi(a|s)>0 ,也就是说在任一状态下,所有的行为都有可能被选中,这里先介绍其中一种方法 ε g r e e d y \varepsilon-greedy policies,它的含义是指,在 1 ε 1- \varepsilon 的概率下会选择当前具有最大 action value 估计值的行为,而在 1 ε 1- \varepsilon 的概率下会随机从所有行为中随机选择一种 action,因此,总的算下来,选择 greedy action 的概率是 1 ε + ε A ( s ) 1-\varepsilon+\frac{\varepsilon }{|\mathcal{A}(s)|} ,而选择非 greedy action 的概率是 ε A ( s ) \frac{\varepsilon}{|\mathcal{A}(s)|} ε \varepsilon -greedy policies 属于 ε \varepsilon -soft policies 中的一种,在某种意义上来说,在所有 ε \varepsilon -soft policies 中, ε \varepsilon -greedy policies 属于最接近 greedy 的了。
  On-policy first-visit MC control的伪代码如下所示:

5、Off-policy Prediction via Importance Sampling

所有的学习控制方法都面临一个困境:它们的目标是学习一系列的优化行为的action values,然而为了寻找优化的行为,它们不能总选择最优化的行为,而需要探索所有的 actions,因此需要采用具有 exploratory 的 policy,并在探索的同时得到优化的 policy。上一节中介绍的 ϵ \epsilon -greedy policies 属于 on-policy 方法,这里将介绍 off-policy 方法。
  在 off-policy 方法中一般使用 2 个policy,一个学习并成为 optimal policy,另外一个则更偏向于探索,用来产生行为,用来学习的 policy 就称为是 target policy,而用来产生行为的 policy 则称为是 behavior policy,在这种机制下,学习来源于数据而“偏离”(off)了 target policy,因此将整个过程称为是 o f f p o l i c y   l e a r n i n g off-policy \ learning 。on-policy 相比之下更简单,off-policy 方法则需要更多的概念和数学符号,它常常有较大的方差且收敛较慢,但 off-policy 往往更强大,更具有一般性。
  下面将从一个 p r e d i c t i o n prediction problem 中来介绍 off-policy 方法,在该问题中,其 target 和behavior 规则都是固定的,令 target policy 为 π \pi ,behavior policy 为 μ \mu ,则这里我们希望评估的是 v π v_\pi 或者 q π q_\pi ,但是所有的 episodes 都是服从的规则 μ \mu ,并且 μ ̸ = π \mu \not= \pi ,为了利用从规则 μ \mu 产生的 episodes 来评估 π \pi 的value,则我们需要规则 π \pi 下的所有行为在规则 μ \mu 下被执行过,也就是要求对所有满足 π ( a s ) > 0 \pi(a|s)>0 ( s , a ) (s,a) 均有 μ ( a s ) > 0 \mu(a|s)>0 ,这个假设可以称为是“覆盖” ( c o v e r a g e coverage )。
  几乎所有的 off-policy 方法使用的都是 i m p o r t a n c e   s a m p l i n g importance \ sampling ,这是给定服从一种分布的样本情况下,估计另外一种分布下期望值的一般方法。这里根据轨迹在 target policies 和 behavior policies 下发生的相关概率来对 returns 赋予权重,称这种方法为 i m p o r t a n c e s a m p l i n g   r a t i o importance-sampling \ ratio 。给定初始状态 S t S_t ,state-action 轨迹 A t , S t + 1 , A t + 1 ,   , S T A_t,S_{t+1}, A_{t+1}, \cdots, S_T 在规则 π \pi 下发生的概率为
k = t T 1 π ( A t S t ) p ( S k + 1 S k , A k ) \prod^{T-1}_{k=t}\pi(A_t|S_t)p(S_{k+1}|S_k,A_k)
  其中, p p 代表的是 state-transition 概率函数,因此,轨迹在 target policies 和 behavior policies 下发生的相关概率(即 importance-sampling ratio)为
ρ t T k = t T 1 π ( A t S t ) p ( S k + 1 S k , A k ) k = t T 1 μ ( A t S t ) p ( S k + 1 S k , A k ) = k = t T 1 π ( A k S k μ ( A t S t ) \rho_t^T \doteq \frac{\prod^{T-1}_{k=t}\pi(A_t|S_t)p(S_{k+1}|S_k,A_k)} { \prod^{T-1}_{k=t}\mu (A_t|S_t)p(S_{k+1}|S_k,A_k)} = \prod^{T-1}_{k=t} \frac {\pi(A_k|S_k} {\mu (A_t|S_t)}
  从上式中可以看出,importance-sampling ratio 仅仅依赖于两个规则,而与 MDP 无关。现在假设我们有了一系列服从规则 μ \mu 的episodes,首先我们对这些 episodes 进行连接和标号,假设第一个 episode 在时刻 100 结束,则第二个 episode 就以时间 101 开始,以此类推。下面规定一些符号表示:
  $ {\mathcal T} (s)$: 对 every-visit 方法,它代表所有状态 s s 被 visit 的时刻的集合,对 first-visit 方法,它仅代表所有状态 s s 在某个 episode 中第一次被 visit 的时刻的集合。
   T ( t ) T(t) : 代表时刻 t t 之后第一个终止的时间。
   G t G_t : 代表从时刻 t t 一直到时刻 T ( t ) T(t) 的return。
   { G t } t T ( s ) \{G_t\}_{t\in{\mathcal T} (s)} : 代表属于状态 s s 的 return。
   { ρ t T ( t ) } t T ( s ) \{\rho ^{T(t)}_t \} _{t\in{\mathcal T} (s)} : 代表相应的 importance-sampling ratios。
  
  为了估计 v π ( s ) v_{\pi}(s) ,这里根据比例简单地对 returns 进行估计,并对估计值进行平均,即:
V ( s ) t T ( s ) ρ t T ( t ) G t T ( s ) V(s) \doteq \frac{\sum_{ t\in{\mathcal T} (s)} \rho_t^{T(t)}G_t} {|{\mathcal T} (s)|}
  上面这种简单的平均方法就称为是 o r d i n a r y   i m p o r t a n c e   s a m p l i n g ordinary \ importance \ sampling ,另外一种版本采用的是加权平均的方式,称为是 w e i g h t e d   i m p o r t a n c e   s a m p l i n g weighted \ importance \ sampling ,定义为:
V ( s ) t T ( s ) ρ t T ( t ) G t t T ( s ) ρ t T ( t ) V(s) \doteq \frac{\sum_{ t\in{\mathcal T} (s)} \rho_t^{T(t)}G_t} {\sum_{ t\in{\mathcal T} (s)} \rho_t^{T(t)}}
  当分母为 0 时,令 V ( s ) V(s) 为0。
  ordinary importance sampling 与 weighted importance sampling 的对比如下:
  ordinary importance sampling 估计是无偏的,而 weighted importance sampling 的估计是有偏的;ordinary importance sampling 的方差可以是无界的,而 weighted importance sampling 的方差常常较小

6、增量式实现

蒙特卡洛预测方法也可以采用增量式的实现方式,就如 Multi-armed bandit 问题 一样,不过多臂赌博机中是对 rewards 求平均,而这里是要对 returns 求平均。
Monte Carlo 方法的增量式实现分为两种:
  (1)对 on-policy Monte Carlo 方法,其增量式实现与 Multi-armed bandit 问题中的实现方式一样;
  (2)对 off-policy Monte Carlo 方法还要再分为两类:ordinary importance sampling 和 weighted importance sampling,其中 ordinary importance sampling 中只是对 returns 赋予了权重 ρ t T ( t ) \rho_t^{T(t)} ,采用的还是简单平均的方法,因此其增量式实现与 Multi-armed bandit 问题中的实现方式一样。
  因此,这里我们只需要考虑 off-policy Monte Carlo 方法中的 weighted importance sampling 形式即可。
  假设我们有的是 returns 的序列 G 1 , G 2 ,   , G n 1 G_1,G_2,\cdots,G_{n-1} ,它们均以同样的状态开始,并且每个具有的随机权重为 W i W_i (例如, W i = ρ t T ( t ) W_i=\rho_t^{T(t)} ),则我们希望估计的值为:
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_k G_k} {\sum_{k=1}^{n-1}W_k},\ \ \ \ n\geq 2
  假设我们有了估计值 V n V_n ,已经当前刚刚获得的 return 值 G n G_n ,则我们下一步的工作就是利用 V n V_n G n G_n 来估计 V n + 1 V_{n+1} ,此时我们还需要记录的值是前 n n 个 returns 的 weights 的和,即分母的和,这样就可以得到我们的更新方程:
V n + 1 V n + W n C n [ G n V n ] ,      n 1 V_{n+1} \doteq V_n + \frac{W_n}{C_n}[G_n – V_n],\ \ \ \ n\geq 1
C n + 1 C n + W n + 1 C_{n+1} \doteq C_n +W_{n+1}
  有了更新方程,很容易可以得到增量式的 off-policy 的伪代码:

7、Off-Policy Monte Carlo Control

上文中提到,off-policy Monte Carlo 方法中包含两个 policies,一个是 behavior policy 用于产生行为,还有一个是需要估计和提升的 target policy,这样的好处在于 target policy 与行为的产生无关,不用考虑 exploring 的问题,就可以将其设置为 greedy 的,而 exploring 的任务就交给了 behavior policy,因此 behavior policy 就必须能够覆盖所有的行为,即选择所有行为的概率非 0,即 behavior policy 要设置为 soft 的。
  off-policy Monte Carlo 方法的伪代码如下所示,为了保证规则 π \pi 最终可以收敛到 optimal policy,对每对 state 和 action 都需要获得无数次的 returns,可以令规则 μ \mu ε \varepsilon -soft 的。

8、总结

Monte Carlo 方法是利用采样得到的 episodes 进行学习得到 value function 和optimal policies,与 DP 方法相比,它具有以下优点:
  (1)它直接从与环境的交互中进行学习,不需要环境的动态模型;
  (2)它可以利用仿真或者采样模型,在很多实际应用中,仿真构建 sample episodes 很容易,而构建 DP 所需要的转换概率的确切模型很难;
  (3)如果只希望得到一部分 stated 的估计值,Monte Carlo 方法可以很容易的聚焦到这些 states 上,它只要不计算不关注的 states 即可,而 DP 方法中,对某个 state 的估计需要干涉到其他所有相关的 states,不如 Monte Carlo 方法简便。
  (4)当违背 Markov 属性时,Monte Carlo 方法受到的影响较小,因为它不需要基于后续状态的 value 估计值来更新 value 估计值,也就是说,它们不“bootstrap”。
  
  
  
    
参考文献
[1] Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto
[2] UCL Course on RL

猜你喜欢

转载自blog.csdn.net/coffee_cream/article/details/66972281