1、策略与环境模型

  强化学习是继监督学习和无监督学习之后的第三种机器学习方法。强化学习的整个过程如下图所示:

    

  具体的过程可以分解为三个步骤:

  1)根据当前的状态 $s_t$ 选择要执行的动作 $ a_t $。

  2)根据当前的状态 $s_t $ 和动作 $ a_t$ 选择转移后的状态 $s_{t+1} $。

  3)根据在当前状态 $s_t$ 采取动作 $a_t$ 给出对应的奖励 $ r_{t+1} $。

  因此我们可以得到强化学习中三个重要的要素:环境的状态 $S$,个体的动作 $A$,环境的奖励 $R$。

  通过不断的重复上述三个过程就可以得到一条状态—动作链,其表示如下:

     $ {s_0, a_0, s_1, a_1, ......s_{t-1}, a_{t-1}, s_t} $

  现在我们来具体看看是如何生成动作—状态链的:

  1)从状态到动作

    从状态到动作是有Agent 的策略 $\pi$ 决定的,从条件概率上来说当前的动作选择应该和之前的所有状态和动作都有关系,如下在时刻 $t$ 的动作应该是:

    $ {a_t}^* = argmax_{a_{t, i}} p(a_{t, i}|{s_0, a_0, ..., s_t}) $

    然而对于上面的式子计算复杂度太高了,引入马尔科夫理论,认为当前的动作选择之和当前的状态有关,于是上面的公式就变成了:

    $ {a_t}^* = argmax_{a_{t, i}} p(a_{t, i}|s_t) $

    个体的策略函数 $\pi$ 可以表示为:

    $ \pi(a|s) = P(A_t=a | S_t=s)$

  2)从状态到状态

    在当前状态转移到下一状态时,我们同样假设下一状态之和当前状态以及当前动作相关,具体表达式如下:

    $ P(S_{t+1} | S_t, a_t)$

2、值函数与贝尔曼公式

  在强化学习中我们该如何评价我们每一步动作的好坏呢?这就需要值函数了。在执行每一个动作时都会有一个对应的奖赏,我们的目的就是要使得最终的加起来的奖赏最高。表达式如下:

    $ max \sum\limits_{t=0}^n r_t $  

  当n无限大时,上链的式子是一个无穷数列,且无法收敛,因此我们也无法计算出最高的奖赏。针对这个问题引入了奖励衰减因子 $\gamma$,表达式变成:

    $ max \sum\limits_{t=0}^n \gamma^t\, r_t $

  根据上面的结果可以给出 $t$ 时刻的状态价值函数,状态价值函数是期望值。在下式中的$G_t$表示从状态$S_t$出发到终点一条完整的序列的回报值,从$S_t$通过随机性采样到终点会得到无数条随机的$G_t$,而我们要得到一个确定的状态价值函数,那就是对随机值取期望即可。

    $ 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) $

  上面的公式又可以称为贝尔曼公式。对状态价值函数使用代换消元法可以推导出状态价值函数 $ v_{\pi}(s)$ 的递推关系:

    $ v_{\pi}(s) = \mathbb{E}_{\pi}(r_{t+1} + \gamma v_{\pi}(S_{t+1}) |S_t=s) $

  根据上式可知在 $t$ 时刻的状态 $S_T$ 和 $t+1$ 时刻的状态 $S_{T+1}$ 是满足递推关系的。

  除了上述的状态价值函数之外,还有一个状态-动作价值函数 $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) $

    $ 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) $

  状态价值函数和状态-动作价值函数之间也存在递推关系,状态价值函数可以用状态-动作价值函数表示:

    $v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)q_{\pi}(s,a)$

  根据上面式子可知状态价值函数其实就是在该状态下基于策略 $\pi$ 得到的所有动作的状态-动作价值函数的期望。

  反过来,状态-动作价值函数也可以用状态价值函数表示:

    $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')$

  

 3、策略迭代与值迭代

  解决强化学习的一个问题就是要寻找最优策略使得个体在与环境的交互过程中获得最高的奖赏。用 $\pi^*$ 来表示这个最优策略,一旦找到该最优策略,强化学习的问题就解决了。

  首先提出强化学习的两个基本问题:

  1)预测问题。给定强化学习的状态集$S$, 动作集 $A$ ,模型状态转化概率矩阵 $ P$,即时奖励 $R$,奖励衰减因子 $\gamma$,策略 $\pi$。求解该策略的状态价值函数 $v(\pi)$。

  2)控制问题。也就是求解最优的价值函数和策略。只给定了强化学习的状态集$S$, 动作集 $A$ ,模型状态转化概率矩阵 $ P$,即时奖励 $R$,奖励衰减因子 $\gamma$。求解最优策略 $\pi^*$ 和最优状态价值函数 $v^*$。

  现在来看看如何解决这些问题:

  1)预测问题也称为策略评估。

  其整体步骤如下:

  首先给定策略,状态转移概率,回报和衰减因子,对状态集中的所有状态初始化状态价值。

  然后从$t=0$时刻开始迭代:

  假设在第 $t$ 轮迭代已经计算出所有的状态的状态价值,那么在 $t+1$轮就可以利用之前计算出的状态价值计算当前的状态价值,在已知状态转移概率的情况下,可以通过贝尔曼方程来实现:

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

  因此策略评估的求解问题本质上迭代解法,而且用的是高斯-赛德尔迭代法。

  2)控制问题的解决方案有两个:策略迭代和值迭代。这个两个方法都包含策略评估和策略改善两个步骤,具体的解决方案如下:

  策略迭代的过程:

    1)初始化策略 $\pi = \pi_0$,$t=0$时刻的状态集合中各状态的价值函数。

    2)for 1 to l(策略更新迭代至收敛的步数):

      3)for 1 to m(高斯-赛德尔迭代求解的步数):

        4)根据下面的方程更新状态空间中状态的价值函数:

          $v_{t+1}(s) = \max_{a \in A}(r_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{t}(s'))$

      5)利用该状态价值函数计算出状态-动作价值函数 $q(s, a)$,然后找到更好的策略 $\pi^*$(备注:此时的状态价值函数是完全收敛的结果,求解方案和上面的策略评估是完全一样的)。

        $\pi' = argmax_{a} q(s, a)$

    6)重复2)到5),直至$\pi_{l+1} = \pi+l$,则得到最优策略 $\pi^* = \pi_l$。

    策略迭代在每一个策略下都要得到收敛后的状态价值函数,然后根据该状态价值函数来更新策略(实际上是一个策略评估过程),因此收敛会比较慢。

  值迭代的过程:

    1)初始化策略 $\pi = \pi_0$,$t=0$时刻的状态集合中各状态的价值函数。

    2)for 1 to l(策略更新迭代至收敛的步数):

      3)for 1 to m(高斯-赛德尔迭代求解的步数):

        4)根据下面的方程更新状态空间中状态的价值函数:

          $v_{t+1}(s) = \max_{a \in A}(r_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{t}(s'))$

        5)利用该状态价值函数计算出状态-动作价值函数 $q(s, a)$,然后找到更好的策略 $\pi^*$(备注:此时的状态价值函数是完全收敛的结果,求解方案和上面的策略评估是完全一样的)。

          $\pi' = argmax_{a} q(s, a)$

    6)重复2)到5),直至$\pi_{l+1} = \pi+l$,则得到最优策略 $\pi^* = \pi_l$。

    值迭代和策略迭代唯一不同的是随着状态价值的迭代及时调整策略,也就是上面第5步时紧跟着第4步发生的,而不是等到第3步循环完,即状态价值函数收敛的情况下才更新策略。这种做法的收敛更快。

  

强化学习(一)—— 基本概念及马尔科夫决策过程(MDP)的更多相关文章

  1. 强化学习(二)马尔科夫决策过程(MDP)

    在强化学习(一)模型基础中,我们讲到了强化学习模型的8个基本要素.但是仅凭这些要素还是无法使用强化学习来帮助我们解决问题的, 在讲到模型训练前,模型的简化也很重要,这一篇主要就是讲如何利用马尔科夫决策 ...

  2. 【转载】 强化学习(二)马尔科夫决策过程(MDP)

    原文地址: https://www.cnblogs.com/pinard/p/9426283.html ------------------------------------------------ ...

  3. 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程

    写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列.课程包含视频和文字,课堂笔记会按视频为单位 ...

  4. 强化学习 1 --- 马尔科夫决策过程详解(MDP)

    强化学习 --- 马尔科夫决策过程(MDP) 1.强化学习介绍 ​ 强化学习任务通常使用马尔可夫决策过程(Markov Decision Process,简称MDP)来描述,具体而言:机器处在一个环境 ...

  5. 隐马尔科夫模型HMM学习最佳范例

    谷歌路过这个专门介绍HMM及其相关算法的主页:http://rrurl.cn/vAgKhh 里面图文并茂动感十足,写得通俗易懂,可以说是介绍HMM很好的范例了.一个名为52nlp的博主(google ...

  6. PGM学习之七 MRF,马尔科夫随机场

    之前自己做实验也用过MRF(Markov Random Filed,马尔科夫随机场),基本原理理解,但是很多细节的地方都不求甚解.恰好趁学习PGM的时间,整理一下在机器视觉与图像分析领域的MRF的相关 ...

  7. 自然语言处理(1)-HMM隐马尔科夫模型基础概念(一)

    隐马尔科夫模型HMM 序言 文本序列标注是自然语言处理中非常重要的一环,我先接触到的是CRF(条件随机场模型)用于解决相关问题,因此希望能够对CRF有一个全面的理解,但是由于在学习过程中发现一个算法像 ...

  8. 隐马尔科夫模型(HMM)的概念

    定义隐马尔科夫模型可以用一个三元组(π,A,B)来定义:π 表示初始状态概率的向量A =(aij)(隐藏状态的)转移矩阵 P(Xit|Xj(t-1)) t-1时刻是j而t时刻是i的概率B =(bij) ...

  9. 用hmmlearn学习隐马尔科夫模型HMM

    在之前的HMM系列中,我们对隐马尔科夫模型HMM的原理以及三个问题的求解方法做了总结.本文我们就从实践的角度用Python的hmmlearn库来学习HMM的使用.关于hmmlearn的更多资料在官方文 ...

随机推荐

  1. Hibernate入门(十)inverse

    双向关联产生多余的SQL语句 /** * 添加一个订单到id为6的客户中 */ @Test public void fun1(){ Session session = HibernateUtils.g ...

  2. 使用Linux的Crontab定时执行PHP脚本

    0 */6 * * * /home/kdb/php/bin/php /home/kdb/apache/htdocs/lklkdbplatform/kdb_release/Crontab/index.p ...

  3. [HTML/CSS]创建新元素的三种方法

    第一种:通过text/HTML var txt1="<h1>Text.</h1>"; 第二种:通过jQuery var txt2=$("<h ...

  4. 小tips:JS中this操作执行像(object.getName = object.getName)()操作改变了this

    var name = "The window"; var object = { name: "My Object", getName: function(){ ...

  5. Openlayer3中应用的技术

    ol3-ext有很多很丰富的效果,可以不用重复造轮子,ol3-ext示例大全:http://viglino.github.io/ol3-ext/ 在本次项目中使用到了ol3-ext的两个功能:图层管理 ...

  6. Android为TV端助力 deep link(深度链接)与自定义协议!

    此自定义仅供参考! 首先打开androidManifest.xml 在MainActivity中添加如下内容: <activity android:name=".MainActivit ...

  7. github上传流程图记录

    参考文章 http://blog.csdn.net/laozitianxia/article/details/50682100 首先你得先创建仓库 为仓库取一个名字,然后点击创建就会有一个仓库了, g ...

  8. django rest framework 与 Vue 整合遇到的坑

    前提是已经有了Django项目与前端Vue打包好的dist文件 好,开始整合!!! 当然还是先设置Django的setting.py 1设置模板路径 2 设置静态文件路径 TEMPLATES = [ ...

  9. Tmux 日常快捷键 及配置

    使用Linux的人不管是开发人员.还是运维人员都不可避免的需要使用到终端模拟器(比如,gnome-terminal)去执行一些命令或者脚本. tmux可以将终端模拟器方便的切分为不同的小窗口如下图如示 ...

  10. 读JP摩根的《加密货币展望》阅读笔记

    加密货币不可能死掉, 非常容易以各种形式生存下去早期加密货币的半数以上交易额是地下钱庄交易. 现在已经被投资和投机交易取代.加密货币不可能取代政府发行的货币,其影响到了美元人民币的主权利益加密货币面临 ...