基于Monte Carlo 的策略评估

基于Monte Carlo 的策略评估

在强化学习中,Monte Carlo 是一种被广泛用到的方法。这种方法主要是从经验 experience 中拟合数值,本质上就是从不同的采样中获得结果,然后将其平均。由于最后当采样的数量达到一定的数量级后,这种方法可以很好地拟合我们想要的函数。

这里有一个很有意思的demo,展现的是Monte Carlo 如何应用在评估 π \pi π 的数值上。
https://academo.org/demos/estimating-pi-monte-carlo/

基于Monte Carlo 的策略评估_第1张图片
如上图所示,如果我们随机在一个正方形中随机打入点,那么只要记录圈内的数量和圈外的数量,根据比值就可以得到 π \pi π 的结果。

那么Monte Carlo 是怎么应用在强化学习中的呢?那么比较经典的例子就是 BlackJack(21 )。 在BlackJack,游戏中,我们必须等到游戏最终结束的时候,才知道之前的策略是好还是坏。所以对一场游戏(episode),我们在游戏的过程中记录所有action 和对应的state。然后不断地学习 action value function Q π ( s , a ) Q_{\pi}(s,a) Qπ(s,a)。这里 s ∈ S , a ∈ A ( s ) s \in \mathcal{S}, a \in \mathcal{A}(s) sS,aA(s) 表示对应的状态和当前状态下的合法行为。 π \pi π 表示当前的策略。这个case 下,游戏的总目标就是学习两组参数:

  • 游戏的策略 π \pi π, 就是给定状态 s s s和对应的行为 action a a a,要返回对应的概率。
  • action value function Q π ( s , a ) Q_{\pi}(s,a) Qπ(s,a),在策略(policy) π \pi π下,的action value function。 也就是说当给定对应的 s , a s, a s,a 的时候,就返回对应的value数值。

那我们知道这个目的以后呢,接下来分别介绍如何更新 action value function 和 游戏的策略 π \pi π

  • Action value function Q π ( s , a ) Q_{\pi}(s,a) Qπ(s,a) 的更新如下所示。
    基于Monte Carlo 的策略评估_第2张图片
    实际上呢,首先我们对这个action value function的进行一个初始化,它实际上就是对每一个状态,都有一个对应的一个action,然后我们也对每一个 s , a s,a s,a对,有一个空的list。这个list呢是用于记录在整个游戏过程中被访问到的对应的状态 s s s和action s s s,所以我们最后会通过平均的方法把它的这个数字进行拟合。
    按照这个思路呢,我们就无限循环,就是说基于这个policy基于这个策略,我们会有一系列的行为,然后在一个在这个游戏过程中有总共有大T个步长,就是然后每一个步长里面都会有对应的这个状态和行为,然后我们会得到对应的结果,这个结果呢,我们会最后把它啊append到对应的List里面去,最后取平均,然后我们希望每一个状态呢都只访问一遍,因为实际上它这个访问一遍和访问多遍的这个实际情况都是一样的,所以我们只访问一遍。

  • 然后我们现在已经得到了这个action value function,那么我们如何去优化这个策略 π \pi π呢?实际上我们可以用 generalized policy iteratioin, GPI这个方法去进行优化 policy π \pi π,这个方法再强化学习中已经被广泛应用,就是说我们先优化这个action value function Q π ( s , a ) Q{\pi}(s,a) Qπ(s,a),然后接着去基于这个function ,预测对应的policy π \pi π然后通过这样子往复的形式呢去得到最终的一个结果.如下图所示:
    基于Monte Carlo 的策略评估_第3张图片
    就是说通过这种形式呢,我们能够保证对 action value function Q π ( s , a ) Q_{\pi}(s,a) Qπ(s,a)的优化,同时,第2步我们能够继续对policy进行一个优化,这样的一个交替迭代的一个方式,能够保证两个 function方式都能在最后得到我们想要的结果。虽然这个东西最终还没有经过证明,但是已经从大量的实验中已经经过了论证。

  • 还有一个问题就是如果说我们只是用这个policy π \pi π去优化的话,那么他有很多的状态他是不会被访问到的,因为我们已经得到了这个policy之后呢,在每次使用的时候我们都会去max的 policy,所以这样的问题就会导致很多状态也没有被访问到。所以在使用GPI 的时候,我们会引入一种 ε \varepsilon ε-greedy policy,这种policy能够让算法在学习的过程中,能够随机的去访问一些状态,也就是说它会随机的访问状态和一些对应的行为,所以这样子就能让一些更多的行为能够被访问到,这样子,能够更好的去帮助啊,算法去找到更好的一个决策。对应的算法如下所示:
    基于Monte Carlo 的策略评估_第4张图片
    这里会看到我们在算法1的基础上,就是加了一个对policy的一个优化。在 policy 优化的过程中,我们再里面加入了 ε \varepsilon ε-greedy policy去帮助网络能够对一些非最有的行为也进行探索。

参考:http://incompleteideas.net/book/first/ebook/node50.html

你可能感兴趣的:(机器学习,人工智能,强化学习,机器学习)