最近因为研究需要,要开始学习机器学习了。之前只是懂些CNN什么的皮毛,对机器学习的整体认识都比较缺乏,后面我会从头开始一点点打基础,正好也用博客把自己的学习历程记录一下,如果有大牛看到博文中有错误,欢迎指正!

正好目前有个智能控制的小项目,我就先从增强学习开始。主要的参考文献是吴恩达的专题论文:Shaping and policy search in Reinforcement learning

增强学习(reinforcement learning,RL)是近年来机器学习和智能控制领域的主要方法之一。在增强学习中有三个概念:状态、动作和回报。

“状态(state)”是描述当前情况的。对一个正在学习行走的机器人来说,状态是它的两条腿的位置。对一个围棋程序来说,状态是棋盘上所有棋子的位置。

“动作(action)”是一个智能体在每个状态中可以做的事情。给定一个机器人两条腿的状态或位置,它可以在一定距离内走几步。通常一个智能体只能采取有限或者固定范围内的动作。例如一个机器人的步幅只能是0.01米到1米,而围棋程序只能将它的棋子放在19×19路棋盘(361个位置)的某一位置。

“回报(reward)”是一个描述来自外界的反馈的抽象概念。回报可以是正面的或者负面的。当回报是正面的时候,它对应于我们常规意义上的奖励。当回报是负面的时候,它就对应于我们通常所说的惩罚。

因此,增强学习的核心目标就是解决这样的问题:一个能够感知环境的自治agent,怎样学习到最优动作策略π:S->A,它能在给定当前状态S集合中的s时,从集合A中输出一个合适的动作a。

在研究用于寻找策略的算法之前,我们必须充分了解马尔科夫决策过程(MDP)。

马尔科夫决策过程(MDP)

在面对许多问题时,马尔科夫决策过程为我们提供了一种对规划和行动进行推理的形式。大家应该都知道马尔科夫链(Markov Chain),它与MDP有一个共同性质就是无后效性,也就是指系统的下个状态只与当前状态有关,而与更早之前的状态无关,这一特性为我们增强学习打下了理论基础。不同的是MDP考虑了动作,即系统下个状态不仅和当前的状态有关,也和当前采取的动作有关。

因此MDP可以表示为一个元组(S, A, Psa, R):

  • S:所有可能状态的集合。
  • A:针对每个状态,我们都要做出动作,这些动作的集合就是A。
  • Psa状态转换分布(statetransition distribution),如果我们在状态s中采取了动作a,系统会转移到一个新的状态,状态转换分布描述了转移到哪个状态的概率分布。
  • R:回馈函数(rewardfunction),增强学习的核心概念,描述了动作能够产生的回报。比如Rπ(s,a)描述了在状态s下采用策略π所对应的动作a的回报,也叫做立即回报,回馈函数可以有不同的表达形式。

但是在选取最优策略的过程中,我们只看立即回报并不能判定哪种策略更优,我们希望的是在采取了策略π以后,可以使得整个状态序列的折扣回馈最大:

R(s0, a0)+ γR(s1, a1) + γ2R(s2, a2)+            (1)

其中γ被称为折扣因子,在经济学上的解释叫做无风险折现率(risk-freeinterest rate),意思是马上得到的钱(回馈)比未来得到钱更有价值。

因此,以上概念就组成了增强学习的完整描述:找到一种策略,使得我们能够根据状态s0, s1, s2…采取策略中对应的动作a0, a1, a2…,并使公式(1)的期望值最大化,这也叫做 价值函数(value function)V π: S→R,表明当前状态下策略π的长期影响。这个函数从状态s开始,根据π来采取行动:

Vπ(s) =Eπ[ R(s0, a0) + γR(s1, a1)+ γ2R(s2, a2) + … | s0= s ]

这个函数也被称为状态价值函数(statevalue function),因为初始状态s和策略π是我们给定的,动作a = π(s)。与之相对应的是动作价值函数(actionvalue function),也叫做Q函数

Qπ(s, a)= Eπ[ R0 + γR1 + γ2R2 + …| s0= s, a0= a]

其中的初始状态和初始动作都是我们给定的。

函数最优与求解:

进一步,我们定义了最优价值函数(optimalvalue function)最优Q函数(optimal Q-function):

V*(s) =maxπ Vπ(s)

Q*(s, a)= maxπ Qπ(s, a)

不难证明,V*和Vπ满足下面两个方程:

上式称为最优贝尔曼方程,给出了V*和Vπ的递归定义形式,也是V的求解方法。V*的公式说明了通过每一步选取最优的动作a,并在后面的动作中也保持最优,就可以得到V*。Vπ的含义是:如果我们持续根据策略π来选择动作,那么策略π的期望回报就是当前的回报加上未来的期望回报。

相似的,下列对于Q函数的方程也成立:

这种递归的定义形式也有利于我们在具体实现时的求解。

在知道V*和Q*后,我们可以通过下面的公式来得到最优的策略π *

也就是说,如果我们知道了Q*,可以更加方便的计算出最优策略,而要从V*得到最优策略,还必须知道状态转换分布Psa才行。

对于寻找最优策略的具体算法,包括了价值迭代、策略迭代、蒙特卡洛算法和Q学习算法等,后期我会继续整理。

增强学习(一)——马尔科夫决策过程(MDP)相关推荐

  1. 漫谈机器学习经典算法—增强学习与马尔科夫决策过程

    公式及图片正常显示的精美排版版请移步http://lanbing510.info/2015/11/17/Master-Reinforcement-Learning-MDP.html 写在前面 现有的机 ...

  2. 强化学习——day13 马尔科夫决策过程MDP

    马尔科夫决策过程 简介 马尔可夫过程 随机过程 马尔可夫性质 马尔可夫过程 马尔可夫奖励过程 回报 价值函数 马尔可夫决策过程 策略 状态价值函数 动作价值函数 贝尔曼期望方程 蒙特卡洛方法 占用度量 ...

  3. 强化学习——day11 马尔科夫决策过程MDP

    第 3 章 马尔可夫决策过程 3.1 简介 马尔可夫决策过程(Markov decision process,MDP)是强化学习的重要概念.要学好强化学习,我们首先要掌握马尔可夫决策过程的基础知识.前 ...

  4. 强化学习note1——马尔科夫奖励过程MRP和马尔科夫决策过程MDP各个函数的定义与区别

    马尔科夫奖励过程MRP 状态转移函数:P(St+1=s′∣st=s)P\left(S_{t+1}=s^{\prime} \mid s_{t}=s\right)P(St+1​=s′∣st​=s) 奖励函 ...

  5. 机器学习笔记 增强学习与马尔科夫模型(1)

    本文根据博客以及课堂老师讲授内容整理而来. 吐槽: 继上周介绍了Minimax和Expectimax后,外教这周又给我们介绍了马尔科夫模型,上周兴高采烈的感觉对Optimal Policy有点理解了但 ...

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

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

  7. 强化学习——马尔科夫决策过程 MDP

    马尔可夫决策过程是强化学习里面的一个基本框架. 马尔可夫过程.马尔可夫反馈过程是马尔可夫决策过程的基础,所以本博客将会一并介绍. 文章目录 1. 马尔科夫过程 Markov Process,MP 1. ...

  8. 【机器学习】强化学习:马尔科夫决策过程(Markov decision process)

    本章是强化学习的基础,主要讲的就是马尔科夫决策过程,以后的内容都是以这一节为基础的,所以对本节的相关概念的理解是很重要的. 这一节的概念比较多,也是后面章节的基础,一开始笔者也是一头雾水,只有多看几遍 ...

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

    1. 强化学习引入MDP的原因 强化学习的环境的状态转化模型,它可以表示为一个概率模型,即在状态下采取动作a,转到下一个状态s′的概率,表示为 如果按照真实的环境转化过程看,转化到下一个状态s′的概率 ...

  10. 马尔科夫决策过程(MDP)

    聊一聊我对强化学习的理解 对应的代码请访问我的GitHub:fxyang-bupt(可能你进去之后发现什么都没有,那是因为我注册了新的账号还在整理,这并不影响你先follow一下我的GitHub~) ...

最新文章

  1. linux运算_LinuxShell算术运算
  2. 记录一下(session共享的文章,wcf记录一下学习地址,Firebug)
  3. python数码时钟代码_python时钟的实现
  4. 大部分人不知道的 5 个强大HTML5 API
  5. 推荐一个视频 Postive Psychology
  6. 什么是分布式微服务架构?-开课吧
  7. 监督学习的分类:判别/生成模型,概率/非概率模型、参数/非参数模型
  8. Java基础0309
  9. 电信华为 HG526 破解 - 简易启用USB恢复
  10. Unity3D游戏开发入门引导:Unity3D收费方案和版本、下载地址、安装教程
  11. Qt系列文章之 mousePressEvent
  12. 从Dijkstra谈帅才的洞察力(王选)
  13. python做地图热力图保存为png_Python如何实现热力图?可视化入库图实战演示
  14. java代码实现打气球游戏_javascript+css3开发打气球小游戏完整代码
  15. Nginx中root与alias区别
  16. 同花顺股票交易接口定义被类实现
  17. 虽说是递推式,但我还是觉得是逆推法
  18. 几款常用LED显示屏驱动芯片介绍及选择VK1624
  19. layui.layer 弹出层使用
  20. 地球的半径为6400km,一长跑健将9.8s跑了100m,那么他以改速度绕赤道跑一圈,需要几天时间。

热门文章

  1. offce2019更改密钥方法
  2. ES 查询时报错 I/O 异常: Request cannot be executed; I/O reactor status: STOPPED
  3. Brave 狮子王浏览器,撕裂式创新?
  4. 关于HTC Touch Diamond 2的ROM和WM软件开发高手看过来…
  5. 用友UAP-studio启动项目时如何修改启动端口
  6. 日常生活中的人际关系其实是个人内心的反映
  7. 计算机科学前千分之一高校,中国高校109个ESI千分之一学科统计,北大、浙大最多,建议收藏!...
  8. mosquitto常见库函数总结
  9. 解决: 误将分区的GHO镜像文件恢复到整个硬盘
  10. 如何在 CVPR 上查看 Papers