专栏首页数据魔术师强化学习读书笔记(5)|蒙特卡洛方法(Monte Carlo Methods)

强化学习读书笔记(5)|蒙特卡洛方法(Monte Carlo Methods)

前面两章都假设我们已知MDP的分布p(s'r|s,a)(model),但有时这一点难以做到,或者说这种Markov假设可能是不合理的,那么我们只能从真实/模拟环境中去获取这些知识。蒙特卡洛方法只需要经验知识,即:来自线上或者模拟环境交互过程的样本序列(包括状态序列、动作序列、奖励序列)。“蒙特卡洛”这个词被广泛用在利用大量随机元素作估计的地方。在这里我们用它来表示基于完全return平均值的方法。

Monte Carlo(MC)

蒙特卡洛方法是用样本分布代替总体分布,估计一些总体分布的参数。

简单来说,就是假设想知道一些真实分布的一些信息,比如期望,或函数的期望,如果我们不知道真实分布的表达式,或者知道,但是很难推导求解,就需要模拟出一批样本,再做平均,虽然有误差,可只要样本量足够大,根据大数定律还是收敛的。

蒙特卡洛方法的使用条件

· 环境是可模拟的 在实际的应用中,模拟容易实现。相对的,了解环境的完整知识反而比较困难。由于环境可模拟,我们就可以抽样。

· 只适合情节性任务(episodic tasks) 因为,需要抽样完成的结果,只适合有限步骤的情节性任务。

蒙特卡洛方法的优势与劣势

蒙特卡洛方法在强化学习中的基本思路

MC估算value function

蒙特卡洛方法在强化学习中的应用

只要满足蒙特卡洛方法的使用条件,就可以使用蒙特卡洛方法。 比如:游戏类都适合:完全信息博弈游戏,像围棋、国际象棋。非完全信息博弈游戏:21点、麻将等等。

蒙特卡洛方法实例:blackjack

blackjack游戏逻辑定义及预设policy

作为玩家,只有hit和stick两种action,其进行决策只需考虑如下三点:

玩家手头是否有A牌,且能叫为11点而不爆牌;

手头牌面值和在12-21范围,0-11则不需考虑,因为无论抽到什么牌都不可能爆牌,故一定是hit;

庄家的明牌,1,…10(J,Q,K都是10);

所以共有2*10*10=200个state,故policy表和value表就是2*10*10的。

Monte Carlo Sample with On-Policy

Monte Carlo with Exploring Starts

Monte Carlo Sample with Off-Policy

实验结果

本文分享自微信公众号 - 数据魔术师(data-magician),作者:老薛带你学Python

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据结构-线性表|顺序表|链表(下)

    1 1 1 哈喽。各位小伙伴好久不见,热心的小编赶在开学季又来给大家送上满满的干货了。祝大家开心快乐! 继上两次咱们聊了顺序表、单链表、静态链表等知识。那么热爱...

    用户1621951
  • 代码 | 自适应大邻域搜索系列之(1) - 使用ALNS代码框架求解TSP问题

    上次出了邻域搜索的各种概念科普,尤其是LNS和ALNS的具体过程更是描述得一清二楚。不知道你萌都懂了吗?

    用户1621951
  • 10分钟教你用C++写一个贪吃蛇附带AI功能(附源代码详解和下载)

    刚学完C++。一时兴起,就花几天时间手动做了个贪吃蛇,后来觉得不过瘾,于是又加入了AI功能。希望大家Enjoy It.

    用户1621951
  • scratch生成1-10随机不相同的10个数字

    生成10个随机数很简单,循环10次,循环里面每次获取一次1-10范围内的一个随机数。

    用户7054460
  • 内存的计算

    因为本人考试经常MLE,所以想总结一下与内存计算有关的内容 内存计算公式 内存=变量数量*变量类型所占的字节/1024/1024(M) 常见的变量类型所占的字节...

    attack
  • NOIP 2018普及组初赛C/C++答案详解

    1 D 打印机是把电脑里的资料打印到纸上,所以是输出设备。 扫描仪、键盘和鼠标都是往电脑里输入东西,是输入设备。

    海天一树
  • 大数据平台CDH搭建

    Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”),基于Web的用户界面,...

    KaliArch
  • 性能调优之redo切换频率(47天)

    生产系统的一个库(负责容错处理的),目前遇到了严重的性能问题,数据量也大的出奇,一个分区表一百多个分区,blob字段达到了800多G.查看 AWR 系统负载倒不...

    jeanron100
  • Numpy 修炼之道 (6)—— 复制和视图

    当计算和操作数组时,它们的数据有时被复制到新的数组中,有时不复制。这里我们做个区分。

    abs_zero
  • 强网杯2019-高明的黑客

    https://www.ctfwp.com/%E5%AE%98%E6%96%B9%E8%B5%9B%E4%BA%8B%E9%A2%98/2019%E5%BC%B...

扫码关注云+社区

领取腾讯云代金券