强化学习(二)马尔科夫决策过程(MDP) 强化学习(一)模型基础

    在强化学习(一)模型基础中,咱们讲到了强化学习模型的8个基本要素。可是仅凭这些要素仍是没法使用强化学习来帮助咱们解决问题的, 在讲到模型训练前,模型的简化也很重要,这一篇主要就是讲如何利用马尔科夫决策过程(Markov Decision Process,如下简称MDP)来简化强化学习的建模。html

    MDP这一篇对应Sutton书的第三章和UCL强化学习课程的第二讲。函数

1. 强化学习引入MDP的缘由

    强化学习的8个要素咱们在第一节已经讲了。其中的第七个是环境的状态转化模型,它能够表示为一个几率模型,即在状态$s$下采起动做$a$,转到下一个状态$s'$的几率,表示为$P_{ss'}^a$。post

    若是按照真实的环境转化过程看,转化到下一个状态$s'$的几率既与上一个状态$s$有关,还与上上个状态,以及上上上个状态有关。这一会致使咱们的环境转化模型很是复杂,复杂到难以建模。所以咱们须要对强化学习的环境转化模型进行简化。简化的方法就是假设状态转化的马尔科夫性,也就是假设转化到下一个状态$s'$的几率仅与上一个状态$s$有关,与以前的状态无关。用公式表示就是:$$P_{ss'}^a = \mathbb{E}(S_{t+1}=s'|S_t=s, A_t=a)$$学习

    对于马尔科夫性自己,我以前讲过的隐马尔科夫模型HMM(一)HMM模型条件随机场CRF(一)从随机场到线性链条件随机场以及MCMC(二)马尔科夫链都有讲到。它自己是一个比较简单的假设,所以这里就不专门对“马尔可夫性”作专门的讲述了。ui

    除了对于环境的状态转化模型这个因素作马尔科夫假设外,咱们还对强化学习第四个要素个体的策略(policy)$\pi$也作了马尔科夫假设。即在状态$s$时采起动做$a$的几率仅与当前状态$s$有关,与其余的要素无关。用公式表示就是$$\pi(a|s) = P(A_t=a | S_t=s)$$url

    对于第五个要素,价值函数$v_{\pi}(s)$也是同样, $v_{\pi}(s)$如今仅仅依赖于当前状态了,那么如今价值函数$v_{\pi}(s)$表示为:$$v_{\pi}(s) = \mathbb{E}_{\pi}(G_t|S_t=s ) = \mathbb{E}_{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s)$$spa

    其中,$G_t$表明收获(return), 是一个MDP中从某一个状态$S_t$开始采样直到终止状态时全部奖励的有衰减的之和。xml

2. MDP的价值函数与贝尔曼方程

    对于MDP,咱们在第一节里已经讲到了它的价值函数$v_{\pi}(s)$的表达式。可是这个表达式没有考虑到所采用的动做$a$带来的价值影响,所以咱们除了$v_{\pi}(s)$这个状态价值函数外,还有一个动做价值函数$q_{\pi}(s,a)$,即:$$q_{\pi}(s,a) = \mathbb{E}_{\pi}(G_t|S_t=s, A_t=a) = \mathbb{E}_{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s,A_t=a)$$htm

    根据价值函数的表达式,咱们能够推导出价值函数基于状态的递推关系,好比对于状态价值函数$v_{\pi}(s)$,能够发现:$$\begin{align} v_{\pi}(s) &= \mathbb{E}_{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s) \\ &=  \mathbb{E}_{\pi}(R_{t+1} + \gamma (R_{t+2} + \gamma R_{t+3}+...)|S_t=s) \\ &=  \mathbb{E}_{\pi}(R_{t+1} + \gamma G_{t+1} | S_t=s) \\ &=  \mathbb{E}_{\pi}(R_{t+1} + \gamma v_{\pi}(S_{t+1}) | S_t=s)  \end{align}$$blog

    也就是说,在$t$时刻的状态$S_t$和$t+1$时刻的状态$S_{t+1}$是知足递推关系的,即:$$v_{\pi}(s) = \mathbb{E}_{\pi}(R_{t+1} + \gamma v_{\pi}(S_{t+1}) | S_t=s) $$

    这个递推式子咱们通常将它叫作贝尔曼方程。这个式子告诉咱们,一个状态的价值由该状态的奖励以及后续状态价值按必定的衰减比例联合组成。

    一样的方法,咱们能够获得动做价值函数$q_{\pi}(s,a)$的贝尔曼方程:$$q_{\pi}(s,a) = \mathbb{E}_{\pi}(R_{t+1} + \gamma q_{\pi}(S_{t+1},A_{t+1}) | S_t=s, A_t=a) $$

3. 状态价值函数与动做价值函数的递推关系

    根据动做价值函数$q_{\pi}(s,a)$和状态价值函数$v_{\pi}(s)$的定义,咱们很容易获得他们之间的转化关系公式:$$v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)q_{\pi}(s,a)$$

    也就是说,状态价值函数是全部动做价值函数基于策略$\pi$的指望。通俗说就是某状态下全部状态动做价值乘以该动做出现的几率,最后求和,就获得了对应的状态价值。

    反过来,利用上贝尔曼方程,咱们也很容易从状态价值函数$v_{\pi}(s)$表示动做价值函数$q_{\pi}(s,a)$,即:$$q_{\pi}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{\pi}(s')$$

    通俗说就是状态动做价值有两部分相加组成,第一部分是即时奖励,第二部分是环境全部可能出现的下一个状态的几率乘以该下一状态的状态价值,最后求和,并加上衰减。

    这两个转化过程也能够从下图中直观的看出:

    把上面两个式子互相结合起来,咱们能够获得:

$$v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)(R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{\pi}(s'))$$

$$q_{\pi}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^a\sum\limits_{a' \in A} \pi(a'|s')q_{\pi}(s',a')$$

4. 最优价值函数

    解决强化学习问题意味着要寻找一个最优的策略让个体在与环境交互过程当中得到始终比其它策略都要多的收获,这个最优策略咱们能够用 $\pi^{*}$表示。一旦找到这个最优策略$\pi^{*}$,那么咱们就解决了这个强化学习问题。通常来讲,比较难去找到一个最优策略,可是能够经过比较若干不一样策略的优劣来肯定一个较好的策略,也就是局部最优解。

    如何比较策略的优劣呢?通常是经过对应的价值函数来比较的,也就是说,寻找较优策略能够经过寻找较优的价值函数来完成。能够定义最优状态价值函数是全部策略下产生的众多状态价值函数中的最大者,即:$$v_{*}(s) = \max_{\pi}v_{\pi}(s)$$

    同理也能够定义最优动做价值函数是全部策略下产生的众多动做状态价值函数中的最大者,即:$$q_{*}(s,a) = \max_{\pi}q_{\pi}(s,a)$$

    对于最优的策略,基于动做价值函数咱们能够定义为:$$\pi_{*}(a|s)= \begin{cases} 1 & {if\;a=\arg\max_{a \in A}q_{*}(s,a)}\\ 0 & {else} \end{cases}$$

    只要咱们找到了最大的状态价值函数或者动做价值函数,那么对应的策略$\pi^{*}$就是咱们强化学习问题的解。同时,利用状态价值函数和动做价值函数之间的关系,咱们也能够获得:$$v_{*}(s) = \max_{a}q_{*}(s,a) $$

    反过来的最优价值函数关系也很容易获得:$$q_{*}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{*}(s')$$

    利用上面的两个式子也能够获得和第三节末尾相似的式子:

$$v_{*}(s) = \max_a(R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{*}(s'))$$

$$q_{*}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^a\max_{a'}q_{*}(s',a')$$

5. MDP实例

    上面的公式有点多,须要一些时间慢慢消化,这里给出一个UCL讲义上实际的例子,首先看看具体咱们如何利用给定策略来计算价值函数。

    例子是一个学生学习考试的MDP。里面左下那个圆圈位置是起点,方框那个位置是终点。上面的动做有study, pub, facebook, quit, sleep,每一个状态动做对应的即时奖励R已经标出来了。咱们的目标是找到最优的动做价值函数或者状态价值函数,进而找出最优的策略。

    为了方便,咱们假设衰减因子$\gamma =1, \pi(a|s) = 0.5$。

    对于终点方框位置,因为其没有下一个状态,也没有当前状态的动做,所以其状态价值函数为0。对于其他四个状态,咱们依次定义其价值为$v_1,v_2,v_3,v_4$, 分别对应左上,左下,中下,右下位置的圆圈。咱们基于$v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)(R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{\pi}(s'))$计算全部的状态价值函数。能够列出一个方程组。

    对于$v_1$位置,咱们有:$v_1 = 0.5*(-1+v_1) +0.5*(0+v_2)$

    对于$v_2$位置,咱们有:$v_2 = 0.5*(-1+v_1) +0.5*(-2+v_3)$

    对于$v_3$位置,咱们有:$v_3 = 0.5*(0+0) +0.5*(-2+v_4)$

    对于$v_4$位置,咱们有:$v_4 = 0.5*(10+0) +0.5*(1+0.2*v_2+0.4*v_3+0.4*v_4)$

    解出这个方程组能够获得$v_1=-2.3, v_2=-1.3, v_3=2.7, v_4=7.4$, 即每一个状态的价值函数以下图:

    上面咱们固定了策略$\pi(a|s)$,虽然求出了每一个状态的状态价值函数,可是却并不必定是最优价值函数。那么如何求出最优价值函数呢?这里因为状态机简单,求出最优的状态价值函数$v_{*}(s)$或者动做价值函数$q_{*}(s,a)$比较容易。

    咱们此次以动做价值函数$q_{*}(s,a)$来为例求解。首先终点方框处的好求。$$q_{*}(s_3, sleep) = 0, q_{*}(s_4, study) = 10$$

    接着咱们就可利用$q_{*}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^a\max_{a'}q_{*}(s',a')$列方程组求出全部的$q_{*}(s,a)$。有了全部的$q_{*}(s,a)$,利用$v_{*}(s) = \max_{a}q_{*}(s,a) $就能够求出全部的$v_{*}(s)$。最终求出的全部$v_{*}(s)$和$q_{*}(s,a)$以下图:

    从而咱们的最优决策路径是走6->6->8->10->结束。    

6. MDP小结

    MDP是强化学习入门的关键一步,若是这部分研究的比较清楚,后面的学习就会容易不少。所以值得多些时间在这里。虽然MDP能够直接用方程组来直接求解简单的问题,可是更复杂的问题却没有办法求解,所以咱们还须要寻找其余有效的求解强化学习的方法。

    下一篇讨论用动态规划的方法来求解强化学习的问题。

 

 (欢迎转载,转载请注明出处。欢迎沟通交流: liujianping-ok@163.com) 

相关文章
相关标签/搜索