上一章我们了解了马尔可夫决策过程的动态规划方法,但是动态要求一个完全已知的环境模型,这在现实中是很难做到的。另外,当状态数量较大的时候,动态规划法的效率也将是一个问题。所以本章我们引用一种不需要完整的环境模型的方法概念——蒙特卡罗方法。

蒙特卡洛是一个赌城的名字。又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法。相对于确定性的算法,蒙特卡洛方法是基于抽样数据来计算结果。

蒙特卡洛方法在强化学习中的基本思路为:模拟 -> 抽样 -> 估值。我们已知强化学习的目的是得到最优策略。蒙特卡罗方法仅仅需要经验就可以求解最优策略,这些经验可以在线获得或者根据某种模拟机制获得。我们仅将蒙特卡罗方法定义在episode task上,所谓的episode task就是指不管采取哪种策略π,都会在有限时间内到达终止状态并获得回报的任务。比如玩棋类游戏,在有限步数以后总能达到输赢或者平局的结果并获得相应回报。所谓经验其实就是训练样本。比如在初始状态s,遵循策略π,最终获得了总回报R,这就是一个样本。如果我们有许多这样的样本,就可以估计在状态s下,遵循策略π的期望回报,也就是状态值函数Vπ(s)了。蒙特卡罗方法就是依靠样本的平均回报来解决增强学习问题的。

策略评估迭代过程:
1. 探索 - 选择一个状态(s, a)。
2. 模拟 - 使用当前策略π,进行一次模拟,从当前状态(s, a)到结束,随机产生一段情节(episode)。
3. 抽样 - 获得这段情节上的每个状态(s, a)的回报G(s,a),记录G(s,a)到集合Returns(s,a)。
4. 估值 - q(s, a) = Returns(s, a)的平均值。
(因为状态(s, a)可能会被多次选择,所以状态(s, a)有一组回报值。)

策略优化 - 使用新的行动价值q(s,a)优化策略π(s)。

策略评估迭代步骤一般会针对所有的状态-行动,或者一个起始(s0,a0)下的所有状态-行动。这也说明持续探索(continual exploration)是蒙特卡洛方法的主题。模拟过程 - 会模拟到结束。是前进式的,随机选择下一个行动,一直前进到结束为止。因此可以看出蒙特卡洛方法需要大量的迭代,才能正确的找到最优策略。策略评估是计算行动价值(q(s,a))。

蒙特卡罗策略估计(Monte Carlo Policy evalution)

首先考虑用蒙特卡罗方法来学习状态值函数Vπ(s)。估计Vπ(s)的一个明显的方法是对于所有到达过该状态的回报取平均值。这里又分为first-visit MC methods和every-visit MC methods。这里,我们只考虑first MC methods,即在一个episode内,我们只记录s的第一次访问,并对它取平均回报。当我们经过无穷多的episode后,Vπ(s)的估计值将收敛于其真实值。

动作值函数的MC估计(Mote Carlo Estimation of Action Values)

在状态转移概率p(s'|a,s)已知的情况下,策略估计后有了新的值函数,我们就可以进行策略改进了,只需要看哪个动作能获得最大的期望累积回报就可以。然而在没有准确的状态转移概率的情况下这是不可行的。为此,我们需要估计动作值函数Qπ(s,a)。Qπ(s,a)的估计方法前面类似,即在状态s下采用动作a,后续遵循策略π获得的期望累积回报即为Qπ(s,a),依然用平均回报来估计它。有了Q值,就可以进行策略改进了。

持续探索(Maintaining Exploration)

我们通过一些样本来估计Q和V,并且在未来执行估值最大的动作。这里就存在一个问题,假设在某个确定状态s0下,能执行a0, a1, a2这三个动作,如果智能体已经估计了两个Q函数值,如Q(s0,a0), Q(s0,a1),且Q(s0,a0)>Q(s0,a1),那么它在未来将只会执行一个确定的动作a0。这样我们就无法更新Q(s0,a1)的估值和获得Q(s0,a2)的估值了。这样的后果是,我们无法保证Q(s0,a0)就是s0下最大的Q函数。Maintaining Exploration的思想很简单,就是用soft policies来替换确定性策略,使所有的动作都有可能被执行。比如其中的一种方法是ε-greedy policy,即在所有的状态下,用1-ε的概率来执行当前的最优动作a0,ε的概率来执行其他动作a1, a2。这样我们就可以获得所有动作的估计值,然后通过慢慢减少ε值,最终使算法收敛,并得到最优策略。简单起见,在下面MC控制中,我们使用exploring start,即仅在第一步令所有的a都有一个非零的概率被选中。

蒙特卡罗控制(Mote Carlo Control)

MC版本的策略迭代过程:

值函数Qπ(s,a)的估计值需要在无穷多episode后才能收敛到其真实值。这样的话策略迭代必然是低效的。我们看动态规则的值迭代算法,每次都不用完整的策略估计,而仅仅使用值函数的近似值进行迭代,这里也用到了类似的思想。每次策略的近似值,然后用这个近似值来更新得到一个近似的策略,并最终收敛到最优策略。这也就是我们常说的广义策略迭代思想。即:在每个episode后都重新估计下动作值函数(尽管不是真实值),然后根据近似的动作值函数,进行策略更新。

总结:

蒙特卡洛方法的适用条件:1.环境是可模拟的:在实际的应用中,模拟容易实现。相对的,了解环境的完整知识反而比较困难。由于环境可模拟,我们就可以抽样。2.只适合情节性任务(episodic tasks)因为,需要抽样完成的结果,只适合有限步骤的情节性任务。尽管蒙特卡罗方法和动态规划方法存在诸多不同,但蒙特卡罗方法也借鉴了很多动态规划中的思想。比如他们都是首先进行策略估计,计算特定策略π对应的Vπ和Qπ,然后进行策略改进,最终形成策略迭代。

人工智障学习笔记——强化学习(3)蒙特卡洛方法相关推荐

  1. 强化学习笔记-强化学习概述

    强化学习笔记-强化学习概述 机器学习分类 强化学习与监督学习的异同点 强化学习基本原理 强化学习解决的是什么样的问题 强化学习分类 请分别解释随机性策略和确定性策略 回报.值函数.行为值函数三个指标的 ...

  2. 人工智障学习笔记——强化学习(5)DRL与DQN

    在普通的Q-learning中,当状态和动作空间是离散且维数不高时可使用Q-Table储存每个状态动作对的Q值,而当状态和动作空间是高维连续时,Q-Table则不再适用. 通常做法是把Q-Table的 ...

  3. 人工智障学习笔记——强化学习(4)时间差分方法

    前两章我们学习了动态规划DP方法和蒙特卡洛MC方法,DP方法的特性是状态转移,状态值函数的估计是自举的(bootstrapping),即当前状态值函数的更新依赖于已知的其他状态值函数.MC方法的特性是 ...

  4. 学习笔记|强化学习(Reinforcement Learning, RL)——让AlphaGo进化得比人类更强

    文章目录 1. 题外话:人类棋手的最后赞礼 2. 强化学习概述 2.1 强化学习的目标也是要找一个Function 2.2 强化学习的三个基本步骤 2.2.1 定义一个function 2.2.2 定 ...

  5. 【学习笔记】强化学习1——强化学习概述

    强化学习概述 机器学习主要分为监督学习.非监督学习.强化学习.强化学习的训练样本没有标记,根据训练样本学习迭代获得最优策略,强化学习需要与环境不断地交互学习. 强化学习的基本原理是智能体从环境中接收一 ...

  6. 人工智障 2 : 你看到的AI与智能无关

    2019独角兽企业重金招聘Python工程师标准>>> " Artificial-Intelligently Challenged " 前言 大家好,我又出来怼人 ...

  7. 赠书 | 人工智能变“人工智障”?关于因果关系的新科学

    文末有福利哦! 每当别人跟我提起"无人驾驶"汽车技术如何强大,又被大众赋予了怎样的期待,我都会想起HBO电视剧Silicon Valley<硅谷>中的一个情节: 硅谷大 ...

  8. 喂,315吗?我花299元买到一只人工智障!

    2017年,AlphaGO刷爆朋友圈:碳基围棋天才柯洁居然输给了硅基计算机.这让"人工智能"迅速走红,进入公众视野. 人工智能为何这么强?2019年,距离充满人工智能设备的未来还有 ...

  9. “人工智障”,我们还能忍你多久?

    "每年我们都能看到媒体上人工智能失败案例的报道,背后是否反思了为什么会发生这些啼笑皆非的事儿?本文盘点了人工智能的失败事件,与大众与专家看待人工智能的态度,试图找到所谓"人工智障& ...

最新文章

  1. Clion 远程开发 配置
  2. 手机QQ重构移动社交市场
  3. ios 自定义UIView绘制时文字上下颠倒问题解决
  4. 注意.NET Core进行请求转发问题
  5. Gartner:6个容器和Kubernetes策略的最佳实用技巧
  6. c 中oracle连接字符串,Oracle连接字符串C#
  7. 服务器linux启动,Linux 服务器环境启动
  8. nginx配置静态资源允许跨域访问
  9. 华为P50系列旗舰恐延期至5月发布:首发预装鸿蒙系统
  10. 【Mavne】log4j-slf4j-impl cannot be present with log4j-to-slf4j
  11. vue获取编辑器纯文字_vue中使用富文本编辑器
  12. 挑战程序设计竞赛(第二章:2.1 搜索)
  13. Flash 3D引擎比较
  14. 软件测试入门基础自卸
  15. android project build with ant
  16. 被高企的社会化网络精准营销
  17. xp升级到win7傻瓜教程_MeGUI教程-软件环境配置(转)
  18. 为大众而写的程序员小说——从《简单易懂的现代魔法》说开去。
  19. 写给Gallen1983
  20. 菏泽话务员机器人方案_智能打电话机器人让电话营销变得更简单

热门文章

  1. 49 MM配置-库存管理和实际库存-设置容差限制
  2. 华为政企云副总裁 年薪_看好“新基建”华为云战略投入政企市场
  3. 图表示学习(Graph Representation Learning)笔记
  4. C++:值传递、指针传递、引用传递
  5. 剖析Caffe源码之Net---Net构造函数
  6. finetune代码实战讲解(李沐)
  7. 关于jupyter出现kernel dead问题
  8. vue项目引入CNZZ数据专家(方法汇总篇)
  9. linux自动归档,Linux之归档、压缩
  10. php nginx 实时输出,phpnginx实时输出实现方法分享