1. 马尔可夫模型的几类子模型

  马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM)。它们具有的一个共同性质就是马尔可夫性(无后效性),也就是指系统的下个状态只与当前状态信息有关,而与更早之前的状态无关。

  马尔可夫决策过程(Markov Decision Process, MDP)也具有马尔可夫性,与上面不同的是MDP考虑了动作,即系统下个状态不仅和当前的状态有关,也和当前采取的动作有关。还是举下棋的例子,当我们在某个局面(状态s)走了一步(动作a),这时对手的选择(导致下个状态s’)我们是不能确定的,但是他的选择只和s和a有关,而不用考虑更早之前的状态和动作,即s’是根据s和a随机生成的。

  我们用一个二维表格表示一下,各种马尔可夫子模型的关系就很清楚了:

  不考虑动作 考虑动作
状态完全可见 马尔科夫链(MC) 马尔可夫决策过程(MDP)
状态不完全可见 隐马尔可夫模型(HMM) 不完全可观察马尔可夫决策过程(POMDP)

2. 马尔可夫决策过程

一个马尔可夫决策过程由一个四元组构成M = (S, A, Psa, R ) [注1]

  • S: 表示状态集(states),有s∈S,si表示第i步的状态。
  • A:表示一组动作(actions),有a∈A,ai表示第i步的动作。
  • Psa: 表示状态转移概率。Psa 表示的是在当前s ∈ S状态下,经过a ∈ A作用后,会转移到的其他状态的概率分布情况。比如,在状态s下执行动作a,转移到s'的概率可以表示为p(s'|s,a),也可以说s‘的分布服从Psa
  • R: S×A€ℝ ,R是回报函数(reward function)。有些回报函数状态S的函数,可以简化为R: S € ℝ。如果一组(s,a)转移到了下个状态s',那么回报函数可记为r(s'|s, a)。如果(s,a)对应的下个状态s'是唯一的,那么回报函数也可以记为r(s,a)。(这里分为确定性和不确定。确定性的回报,即当在s下执行a时,下个状态s’是确定的;而不确定性的回报是指当在s下执行a时,下个状态s’是不确定的,即带概率的,这时我们需要用确定的期望值来代替不确定,即 E(r(s'|s, a)) = Σs1[p(s1|s,a) * r(s1|s,a)] )

  MDP 的动态过程如下:某个agent(智能体,也翻译成代理、学习者)的初始状态为s0,然后从 A 中挑选一个动作a0执行,执行后,agent 按Psa概率随机转移到了下一个s1状态,s1∈ Ps0a0。然后再执行一个动作a1,就转移到了s2,接下来再执行a2…,我们可以用下面的图表示状态转移的过程。

如果回报r是根据状态s和动作a得到的,则MDP还可以表示成下图:

最新文章

  1. Sql server 备份还原后出现“受限制用户”问题
  2. TLB初始化 Missing Handler,MIPS R3K mips_init_tlb
  3. ez_setup.py(安装python下setuptools用)
  4. HTML 父窗口打开子窗口,并从子窗口返回值
  5. Java程序设计 实验五
  6. SharePoint 2010 文档管理系列
  7. POJ 1170 Shopping Offers -- 动态规划(虐心的六重循环啊!!!)
  8. mysql in 的两种使用方法
  9. HTML中meta的应用
  10. 使用Gradle发布Android开源项目到JCenter
  11. C# ACtiveMQ 收发数据
  12. 高效的SQLSERVER分页查询
  13. <codis><jodis>
  14. suse glibcxx版本过高问题
  15. win10装回win7。PE下把原来的系统盘格掉,再安装hdd,重启就好了
  16. fastdfs 图片服务器 使用java端作为客户端上传图片
  17. 已有数据库(单机)部署Database Vault
  18. Hangfire初探
  19. Restframework中常见API的编写方式
  20. 生产者,消费者,CDN

热门文章

  1. Hadoop MapReduce任务的启动分析
  2. 关于Struts2配置文件名修改的问题
  3. C++何时使用引用
  4. leetcode720
  5. 学习 Python 编程的 19 个资源 (转)
  6. JAVA压缩 解压缩zip 并解决linux下中文乱码
  7. 前面部分(WCF全面解析1)
  8. 索引(index)
  9. java基础强化——深入理解java注解(附简单ORM功能实现)
  10. IDEA04 工具窗口管理、各种跳转、高效定位、行操作、列操作、live template、postfix、alt enter、重构、git使用