强化学习-蒙特卡罗法

1. 前言

从本章起,咱们开始解决更贴近实际的问题。前面提到咱们接触过的问题有一个特色,即咱们能够知道环境运转的细节,具体说就是知道状态转移几率\(P(s_{t+1}|s_t,a_t)\)。对蛇棋来讲,咱们能够看到蛇棋的棋盘,也就能够了解到整个游戏的全貌,这时咱们至关于站在上帝视角,可以看清一切状况。算法

在不少实际问题中,咱们没法获得游戏的全貌,也就是说,状态转移的信息\(P(s_{t+1}|s_t, a_t)\)没法得到。函数

通常来讲,咱们知晓状态转移几率的问题称为“基于模型”的问题(Model-based),将不知晓的称为“无模型”问题(Model-free)。后面咱们要继续升级咱们的问题,模拟一个真人去玩游戏,没法知道全部游戏的全貌。学习

2. Model-free原理

  1. 肯定一个初始策略(这和前面的算法一致)。
  2. 用这个策略进行游戏,获得一些游戏序列(Episode):\({s_1,a_1,s_2,a_2,...,s_n,a_n}\)
  3. 一旦游戏的轮数达到必定数目,就能够认为这些游戏序列表明了当前策略与环境交互的表现,就能够将这些序列聚合起来,获得状态对应的值函数。
  4. 获得了值函数,就至关于完成了策略评估的过程,这样就能够继续按照策略迭代的方法进行策略改进的操做,获得更新后的策略。若是策略更新完成,则过程结束;不然回到步骤2。

上面的流程十分清晰地介绍了学习的过程,此时学习的关键就落在了下面两个问题上。spa

  1. 如何获得这些游戏序列?
  2. 如何使用序列进行评估?

咱们用2个方法介绍Model-free的过程,本篇介绍“蒙特卡罗法(Monte Carlo Method)”和下一篇介绍“时序差分法(Temporal Difference Method)blog

3. 蒙特卡罗法原理

3.1 如何使用序列进行评估

本节咱们介绍蒙特卡罗法。在前面的章节里,咱们曾介绍当环境信息,也就是状态转移几率已知时,可使用Bellman公式,经过不断迭代获得状态-行动值函数:
\[ q_{\pi}(s_t,a_t)=\sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{a_t}^{s_{t+1}} + \gamma * v_{\pi}(s_{t+1})] \]游戏

而后经过值函数进行策略改进。而在无模型问题中,状态转移几率将没法知晓。因而咱们须要把公式转变为class

\[ q_{\pi}(s_t,a_t)=E_{s_{t+1}-p \pi}[\sum_{k=0}^{\infty}\gamma^kr_{t+k}] \]
看到了等号右边的指望,咱们很天然地联想到了蒙特卡罗法,它是一种经过随机采样估计指望值的方法,假设咱们经过一些方法,从状态\(s_t\)和行动\(a_t\)开始不断地与环境交互,获得了大量的样本序列原理

\[ \{s_t,a_t,s_{t+1}^i,a_{t+1}^i,...,s_{t+K}^i,a_{t+K}^i\}_{i=1}^N \]
获得对应的回报序列
\[ \{r_t,r_{t+1}^i,...,r_{t+K}^i\}_{i=1}^N \]随机数

其中N表明随机采样的轮数,K表明到达结束的步数。sed

而后咱们有一个状态-行动值函数的公式:

\[ q(s,a) = \frac{1}{N}\sum_{i=0}^N\sum_{k=0}^K\gamma^kr^i_{t+k} \]

经过大量的随机采样,上面这个公式可以比较号的描述初始的状态-行动值函数。

3.2 状态-行动值函数更新

令状态行动价值为\(q\),当前的时间为\(t\),积累的数量为\(N\),咱们要求的值为\(q^N_t\),当前已知的值为\(q^{N-1}_t\)\(N\),每个时刻的价值为\(q'^i_t\),因而能够获得:

\[ q^N_t = q^{N-1}_t + \frac{1}{N}(q'^N_t - q^{N-1}_t) \]
咱们观察下,上面公式很像梯度降低法\(\theta_t=\theta_{t-1}-\alpha\nabla{J}\),由于咱们想要值函数尽可能大,因此这里是一个梯度上升的过程。

3.3 蒙特卡罗法步骤

以上就是蒙特卡罗法的所有内容,咱们能够将它的算法全过程总结以下。

  1. 让Agent和环境交互后获得交互序列。
  2. 经过序列计算出每一时刻的价值。
  3. 将这些价值累积到值函数中进行更新。
  4. 根据更新的值函数更新策略”

4. 探索与利用

4.1 如何获得这些游戏序列

那么,为了达到和基于模型的算法接近的效果,咱们首先要作的是确保当前的问题有遍历全部状态-行动对的可能。

在一些状态很是多的环境中,咱们很难遍历全部的状态,这里采用一种叫\(\epsilon-greedy\)的算法,首先随机生成一个0~1的数,而后用这个随机数进行判断,若是随机数小于某个值\(\epsilon\),就采用彻底随机的方式产生行动,此时每一个行动产生的几率是同样的;若是随机数不小于某个值\(\epsilon\),就选择当前的最优策略。

image

\(\epsilon-greedy\)算法其实是在解决强化学习中的一个经典问题:探索与利用。这是两种与环境交互的策略。

  • 探索:是指不拘泥于当前的表现,选择一些不一样于当前策略的行动。
  • 利用:就是持续使用当前的最优策略,尽量地得到更多的回报。

5. 总结

蒙特卡罗法是第一个不基于模型的强化问题求解方法。它能够避免动态规划求解过于复杂,同时还能够不事先知道环境转化模型,所以能够用于海量数据和复杂模型。可是它也有本身的缺点,这就是它每次采样都须要一个完整的状态序列。若是咱们没有完整的状态序列,或者很难拿到较多的完整的状态序列,这时候蒙特卡罗法就不太好用了,也就是说,咱们还须要寻找其余的更灵活的不基于模型的强化问题求解方法。

相关文章
相关标签/搜索