zoukankan      html  css  js  c++  java
  • 强化学习-MDP(马尔可夫决策过程)算法原理

    1. 前言

    前面的强化学习基础知识介绍了强化学习中的一些基本元素和整体概念。今天讲解强化学习里面最最基础的MDP(马尔可夫决策过程)。

    2. MDP定义

    MDP是当前强化学习理论推导的基石,通过这套框架,强化学习的交互流程可以很好地以概率论的形式表示出来,解决强化学习问题的关键定理也可以依此表示出来。

    MDP(马尔可夫决策过程)包含以下三层含义:

    1. “马尔可夫”表示了状态间的依赖性。当前状态的取值只和前一个状态产生依赖,不和更早的状态产生联系。虽然这个条件在有些问题上有些理想,但是由于它极大地简化了问题,所以人们通常会选择使用它。
    2. “决策”表示了其中的策略部分将由Agent决定。Agent可以通过自己的行动改变状态序列,和环境中存在的随机性共同决定未来的状态。
    3. “过程”表示了时间的属性。如果把Agent和环境的交互按时间维度展开,那么Agent行动后,环境的状态将发生改变,同时时间向前推进,新的状态产生,Agent将获得观测值,于是新的行动产生,然后状态再更新”

    3. 价值函数

    前面介绍了MDP的基本形式,我们发现游戏的关键在于策略(policy),也就是如何做出决策与执行行动。在理想状态下,每一个行动都要为最终的目标——最大化长期回报努力,那么理论上只要能够找到一种方法,量化每一个行动对实现最终目标贡献的价值,这个方式就是用价值函数(简称值函数)来衡量。

    值函数分两类:

    • 状态值函数(v_{pi}(s)):也就是已知当前状态s,按照某种策略行动产生的长期回报期望。
    • 状态-行动值函数(q_{pi}(s,a)):也就是已知当前状态s和行动a,按照某种策略行动产生的长期回报期望。

    其中的(pi)是一个行动策略。

    3.1 状态值函数

    我们从下图中来学习状态值函数:

    image

    我们计算左边的(s^0)状态的(v(s^0)),我们可以通过它后面的(r_{a_i}^{s^1_{0,i}}+s^1_{0,i})加权的和,其中(r_{a_i}^{s^1_{0,i}})是采取行动(a_i)后获得的奖励。

    所以有状态值函数的Bellman公式:

    [v_{pi}(s_t)=sum_{a_t}pi(a_t|s_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})];;;;;;(1) ]

    通过这样的计算,我们发现状态值函数可以以递归的形式表示。假设值函数已经稳定,任意一个状态的价值可以由其他状态的价值得到。

    3.2 状态-行动值函数

    和状态值函数的推到一样,我们有下面这张状态-行动值函数,它是以(q(s,a))为目标来计算值函数。

    image

    同样和状态值函数一样,状态-行动值函数也有相应的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 * sum_{a_{t+1}}pi(a_{t+1}|s_{t+1})q_{pi}(s_{t+1},a_{t+1})];;;;;;(2) ]

    这个公式和上面的状态值函数的非常类似。

    以上((1)(2))个Bellman公式是MDP中最核心的内容,后面的各种强化学习的算法也是建立在上面2个Bellman公式之上。

    通过((1)(2)),我们还能推导出(v_{pi}(s_t),q_{pi}(s_t,a_t))之间的关系。

    [v_{pi}(s_t)=sum_{a_t}pi(a_t|s_t)q_{pi}(s_t,a_t);;;;;;(3) ]

    [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})];;;;;;(4) ]

    其实((3)(4))也可以通过上面2幅图得到验证。

    4. 总结

    MDP是强化学习入门的关键一步,如果这部分研究的比较清楚,后面的学习就会容易很多。因此值得多些时间在这里。虽然MDP可以直接用方程组来直接求解简单的问题,但是更复杂的问题却没有办法求解,因此我们还需要寻找其他有效的求解强化学习的方法。

  • 相关阅读:
    JAVA中获取当前系统时间
    struts2文件下载及 <param name="inputName">inputStream</param>的理解
    struts2文件下载,动态设置资源地址
    IE8上传文件时文件本地路径变成"C:fakepath"的问题
    Java设置session超时(失效)的三种方式
    学一点Git--20分钟git快速上手
    关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题
    GBK、GB2312、iso-8859-1之间的区别
    mysql的多表查询
    mysql错误:“ Every derived table must have its own alias”(每个派生出来的表都必须有一个自己的别名)
  • 原文地址:https://www.cnblogs.com/huangyc/p/10371915.html
Copyright © 2011-2022 走看看