在接触强化学习过程中,大家可能在很多场合听说蒙特卡洛这个词,例如Monte Carlo Tree Search,Monte Carlo CFR。实际即便在策略梯度(Policy Gradients)算法中也使用了蒙特卡洛方法,本文将介绍Monte Carlo算法和在强化学习中的应用。

基本概念

Monte Carlo方法源于20世纪40年代,由冯.诺依曼,斯塔尼斯拉夫·乌拉姆在核武器研究过程中提出。和许多以作者名字(如拉格朗日定理,柯西定理)命名不同,Monte-Carlo其实并不是某位学者名字,实际上是一座位于摩洛哥的赌场。统计和概率学经常会将概率和博彩联系在一起,或许某天也会出现澳门葡京方法/定理

Monte Carlo本质上是一种统计学方法,这类方法通过随机抽样,根据随机事件出现的频率来估算随机变量的特征

大家小时候都学过撒豆子估算不规则图形的面积,使用一个规则图形包裹不规则图形,然后将一定数量的豆子均匀的洒向这个图形,通过计算不规则图形中豆子比例和规则形状的面积,即可以估算出不规则形状的面积。随着计算机技术产生,撒豆子被随机数替代,这一类方法也被各个领域广泛使用。

如果我们并不知道圆形面积计算公式,假设圆形半径为1,我们使用变长为2的正方形包裹这个圆形,然后均匀采样,随着样点数量的增加,圆形面积将越来越接近理论值

from math import sqrt, pi
from random import uniform# 正方形边长和面积
side_length = 2.0
square_area = side_length * side_length
# 圆形半径
radius = side_length / 2def in_circle(x, y):return sqrt(x * x + y * y) < radiusnum_sample = 10000000
num_in_circle = 0
for i in range(num_sample):x = uniform(-1, 1)y = uniform(-1, 1)num_in_circle += in_circle(x, y)# 落入圆形的样点个数
ratio = num_in_circle / num_sample
# 圆形面积
circle_area = ratio * square_area
print('circle area: {}, theory area: {}'.format(circle_area, pi * radius * radius))

执行结果

circle area: 3.1413452, theory area: 3.141592653589793

强化学习中的应用

基础应用

在深度学习和强化学习领域中,许多算法实际上使用了Monte-Carlo方法,并没有给它冠名。这些算法如此基础,我们经常会忽略它的存在。

例如由于计算资源受限,深度学习把一个批次样本的梯度作为整体梯度的估计,来更新模型的权重,同时通过多次采样(迭代次数,或者step数)修正偏差。

经典的强化学习算法中,无论Q-Learning还是Policy Gradient算法中,都需要估算累计收益,例如多步TD Target

Monte-Carlo Tree Search

蒙特卡洛树搜索包含两层含义,首先它是一种树搜索方法,和深度优先、广度优先搜索算法类似,它需要对树进行遍历。其次蒙特卡洛强调了它并不是一种确定性的搜索算法,而是通过启发式的方式,让树向着最优解方向生长,降低搜索空间,实现了类似剪枝的功能。

具体流程如下:

  • 选择(Selection): 从根节点开始,通过UCT(Upper Confidence Bounds to Trees)方法向下直至选择出一个叶子节点。UCT方法对每个节点进行打分,通常包含利用-探索两个分量。利用分量源于先验知识,例如之前仿真的结果,有时也会包含神经网络给出的评分;探索分量一般和这个节点的访问次数有关,如果节点访问的越少,则探索分量的值越大。

  • 扩展(Expansion):选择结束之后,我们得到一个叶子节点。当叶子节点已经被充分评估时,会在这个节点基础上拓展出一个新的叶子节点。评估是否充分一般以这个叶子节点已经被仿真过多少次来衡量。

  • 仿真(Simulation):从叶子节点开始游戏,直至游戏结束。

  • 反向传播(Back Propagation):仿真结束后,我们会得到本次模拟的结果,拿这个结果刷新沿途节点分值。

Monte-Carlo CFR

CFR算法需要对博弈树进行遍历,从而计算某个动作的遗憾值。当博弈树规模非常大时,遍历整棵树的成本非常高,改进的方法:

  • 在单局博弈中,对动作进行剪枝。例如在某个信息集上,所有合法的动作有M个,算法人为的限制它的搜索为N,N的数值还可以随着遍历层级的加深而减少;
  • 作为补充,算法需要增加博弈的次数,尽可能覆盖更多的动作

强化学习基础-蒙特卡洛(Monte Carlo)相关推荐

  1. 蒙特卡洛方法求解强化学习任务——蒙特卡洛方法介绍

    蒙特卡洛方法求解强化学习任务--蒙特卡洛方法介绍 目录 概率的统计定义 大数定律 蒙特卡洛方法 动态规划方法的缺陷 相关参考 目录 本节从概率的统计定义.大数定律的角度介绍蒙特卡洛方法的思想,并简单介 ...

  2. 回溯法采用的搜索策略_强化学习基础篇(三十四)基于模拟的搜索算法

    强化学习基础篇(三十四)基于模拟的搜索算法 上一篇Dyna算法是基于真实经验数据和模拟经验数据来解决马尔科夫决策过程的问题.本篇将结合前向搜索和采样法,构建更加高效的搜索规划算法,即基于模拟的搜索算法 ...

  3. 强化学习基础知识梳理(4)

    顺序以周博磊老师强化学习纲要课程为主,增加王树森老师强化学习基础的知识补充,和蘑菇书的知识补充,作为学习记录 第四章:价值函数近似 主要内容包括: 价值函数近似基本原理介绍(Value Functio ...

  4. 强化学习基础总结(三)

    强化学习基础总结(三) @(Machine Learning) 覆盖以下几个主题: Markov过程 Markov奖励过程 Markov决策过程 MDPs扩展 MDP简介 MDP是用于正式描述强化学习 ...

  5. 蒙特卡洛python求解派_利用蒙特卡洛(Monte Carlo)方法计算π值[ 转载]

    圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能采用近似算法. 国际公认的π值计算采用蒙特卡洛方法. 一.蒙特卡洛方法 蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试 ...

  6. 利用蒙特卡洛(Monte Carlo)方法计算π值

    圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能采用近似算法. 国际公认的π值计算采用蒙特卡洛方法. 蒙特卡洛方法 蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试验方 ...

  7. 蒙特卡洛(Monte Carlo)方法简介

    蒙特卡洛(Monte Carlo)方法的本质 蒙特卡洛(Monte Carlo)方法,即蒙特卡洛采样,是一种根据某已知分布的概率密度函数f(x),产生服从此分布的样本X的方法. 蒙特卡洛采样有很多种, ...

  8. 蒙特卡洛(Monte Carlo)方法的介绍和应用

    蒙特卡洛(Monte Carlo)方法的介绍和应用 蒙特卡洛(Monte Carlo)方法 在渲染中,我们经常听到术语"蒙特卡洛"(通常缩写为MC).但是这是什么意思?实际上,它所 ...

  9. Task 01 强化学习基础

    文章目录 1. 理论部分 1.1 初探强化学习 1.2 强化学习基础 1.3 强化学习简史 1.4 强化学习应用 2. 实验部分 2.1 Gym 2.2 小车上山 (MountainCar-v0) 1 ...

  10. 深度强化学习基础知识 思维导图

    学习了王树森老师的深度强化学习入门课件,将各个算法整理在如下思维导图中. 深度强化学习基础知识 思维导图

最新文章

  1. 计算机书籍-Exploring Cloud Computing免费电子书
  2. 面试常见问题_软件实施工程师面试中的常见问题都有哪些呢?
  3. SecureCRT 全屏切换
  4. 发消息给非windows窗体程序
  5. 明明还有空间,硬盘却写不进去了!
  6. Qt图形界面编程入门(创建一个简单的程序)
  7. python,进程和线程
  8. GiraffeDet的学习笔记
  9. 电子面单打印通用解决方案(PHP代码示例)
  10. python2 python3 print_python2和python3中print有什么区别
  11. elementui messagebox没有取消按钮
  12. 国内外php商城系统 开源
  13. 前台传入数据后台被转义问题解决
  14. 大家查找医疗英文文献都去哪个网?
  15. ubuntu 18.04 卸载firebox
  16. docker一个镜像启动多个容器的操作
  17. Flutter移动电商实战 --(14)首页_拨打电话操作
  18. c++ switch语句
  19. stm32——USB学习(一)
  20. (*p)[3]与*p[3]的区别

热门文章

  1. php qps是什么意思,tps和qps的区别和理解
  2. 加拿大布鲁克大学计算机科学,布鲁克大学(Brock University)
  3. myeclipse破解补丁
  4. 铁路“探花儿”:每天徒步8公里 一个月穿坏一双鞋
  5. 读史可以明智_明智的话
  6. springboot整合支付宝网页支付PC端,沙箱环境,无JSP
  7. 解决安装 Bun 之后出现 zsh compinit: insecure directories, run compaudit for list. Ignore insecure directorie
  8. 百家讲坛 黄帝内经(第一部)
  9. 天神娱乐实控人朱晔宣布离职:暂时的离开是为更好相见
  10. QoS mechanisms——LLQ(拥塞管理,低延时队列)