carlo

15分钟入门蒙特卡洛 Monte Carlo

落爺英雄遲暮 提交于 2021-02-14 02:31:00
↑↑↑点击上方 蓝字 ,回复 资料 ,10个G的惊喜 来自 | 知乎 作者 | 薛定豆 编辑 | 深度学习这件小事公众号 链接 | https://zhuanlan.zhihu.com/p/223042372 20世纪40年代,蒙特卡洛(Monte Carlo, 位于摩纳哥的赌城,如上图)方法由John von Neumann,Stanislaw Ulam和 Nicholas Metropolis 在 Los Alamos National Lab (LANL) 曼哈顿计划中,为模拟中子扩散发展出的一种统计方法。正如名字反映出的,蒙特卡洛方法本质上是跟赌博一样具有随机特性。 一、估计圆周率 的值 如果(x,y)是独立地从0到1之间均匀分布抽样出的一系列的数对number pair, 那么这些随机的位置坐标(x,y)落在1为半径圆弧内的概率应该是:四分之一圆的面积➗整个正方形的面积: 而因为(x,y) 是0到1的均匀分布,所以这个概率当抽样足够多的时候就等于红色的点数除以总共点数: 这样一来,只要采样足够多,就可以得到无限趋近于 的值。这个例子很好的体现了Monte Carlo(MC)方法的精神:利用随机分布的特性,大数次抽样得到准确的估计。换句话说,就是我猜,我猜地又多又均匀就基本上成功了! 二、估计定积分的值 微积分里我们学到,定积分(也就是曲线下的面积

利用蒙特卡洛(Monte Carlo)方法计算π值[ 转载]

混江龙づ霸主 提交于 2021-02-13 23:47:57
部分转载自: https://blog.csdn.net/daniel960601/article/details/79121055 圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能采用近似算法。 国际公认的π值计算采用蒙特卡洛方法。 一、蒙特卡洛方法 蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试验方法。当所求解的问题是某种事件出现的概率,或某随机变量的期望值时,可以通过某种“试验”方法求解。 简单说,蒙特卡洛是利用随机试验求解问题的方法。 二、π值的计算 构造一个单位正方形和一个单位圆的1/4,往整个区域内随机投入点,根据点到原点的距离判断点是落在1/4的圆内还是在圆外,从而根据落在两个不同区域的点的数目,求出两个区域的比值。如此一来,就可以求出1/4单位圆的面积,从而求出圆周率π。 1. 简化版PI 求解的Python实现(示例一): # pi.py from random import random from math import sqrt from time import clock DARTS = 12000 # 总的实验次数 hits = 0 clock() for i in range(1, DARTS): x, y = random(), random(); dist = sqrt(x**2 + y**2) if dist <=

[Reinforcement Learning] Policy Gradient Methods

强颜欢笑 提交于 2021-01-09 17:15:14
上一篇博文的内容整理了我们如何去近似价值函数或者是动作价值函数的方法: $$ V_{\theta}(s)\approx V^{\pi}(s) \ Q_{\theta}(s)\approx Q^{\pi}(s, a) $$ 通过机器学习的方法我们一旦近似了价值函数或者是动作价值函数就可以通过一些策略进行控制,比如 $\epsilon$-greedy。 那么我们简单回顾下 RL 的学习目标:通过 agent 与环境进行交互,获取累计回报最大化。既然我们最终要学习如何与环境交互的策略,那么我们可以直接学习策略吗,而之前先近似价值函数,再通过贪婪策略控制的思路更像是"曲线救国"。 这就是本篇文章的内容,我们如何直接来学习策略,用数学的形式表达就是: $$\pi_{\theta}(s, a) = P[a | s, \theta]$$ 这就是被称为策略梯度(Policy Gradient,简称PG)算法。 当然,本篇内容同样的是针对 model-free 的强化学习。 Value-Based vs. Policy-Based RL Value-Based: 学习价值函数 Implicit policy,比如 $\epsilon$-greedy Policy-Based: 没有价值函数 直接学习策略 Actor-Critic: 学习价值函数 学习策略 三者的关系可以形式化地表示如下: <div

MCMC

我只是一个虾纸丫 提交于 2020-12-29 17:03:12
MCMC MCMC算法 的核心思想是我们已知一个概率密度函数,需要从这个概率分布中采样,来分析这个分布的一些统计特性,然而这个这个函数非常之复杂,怎么去采样?这时,就可以借助MCMC的思想。 它与 变分自编码 不同在于:VAE是已知一些样本点,这些样本肯定是来自于同一分布,但是我们不知道这个分布函数的具体表达式,然而我们需要从这个分布中去采取新的样本,怎么采样,这时,就需要借助VAE的思想。 MCMC原理讲解 以下内容博客转自: https://www.cnblogs.com/xbinworld/p/4266146.html 背景 随机模拟也可以叫做蒙特卡罗模拟(Monte Carlo Simulation)。这个方法的发展始于20世纪40年代,和原子弹制造的曼哈顿计划密切相关,当时的几个大牛,包括乌拉姆、冯.诺依曼、费米、费曼、Nicholas Metropolis, 在美国洛斯阿拉莫斯国家实验室研究裂变物质的中子连锁反应的时候,开始使用统计模拟的方法,并在最早的计算机上进行编程实现。[3] 随机模拟中有一个重要的问题就是给定一个概率分布p(x),我们如何在计算机中生成它的样本。一般而言均匀分布 Uniform(0,1)的样本是相对容易生成的。 通过线性同余发生器可以生成伪随机数,我们用确定性算法生成[0,1]之间的伪随机数序列后,这些序列的各种统计指标和均匀分布 Uniform

MCMC等采样算法

不羁岁月 提交于 2020-12-29 13:36:15
一、直接采样 直接采样的思想是,通过对均匀分布采样,实现对任意分布的采样。因为均匀分布采样好猜,我们想要的分布采样不好采,那就采取一定的策略通过简单采取求复杂采样。 假设y服从某项分布p(y),其累积分布函数CDF为h(y),有样本z~Uniform(0,1),我们令 z = h(y),即 y = h(z)^(-1),结果y即为对分布p(y)的采样。 直接采样的核心思想在与CDF以及逆变换的应用。在原分布p(y)中,如果某个区域[a, b]的分布较多,然后对应在CDF曲线中,[h(a), h(b)]的曲线斜率便较大。那么,经过逆变换之后,对y轴(z)进行均匀分布采样时,分布多的部分(占据y轴部分多)对应抽样得到的概率便更大, 局限性 实际中,所有采样的分布都较为复杂,CDF的求解和反函数的求解都不太可行。 二、拒绝采样 拒绝采样是由一个易于采样的分布出发,为一个难以直接采样的分布产生采样样本的通用算法。既然 p(x) 太复杂在程序中没法直接采样,那么便一个可抽样的分布 q(x) 比如高斯分布,然后按照一定的方法拒绝某些样本,达到接近 p(x) 分布的目的。 计算步骤 设定一个方便抽样的函数 q(x),以及一个常量 k,使得 p(x) 总在 k*q(x) 的下方。(参考上图) x 轴方向:从 q(x) 分布抽样得到 a; y 轴方向:从均匀分布(0, k*q(a)) 中抽样得到 u;

【强化学习】马尔科夫决策过程之Bellman Equation(贝尔曼方程)

拥有回忆 提交于 2020-11-26 13:54:28
前面总结了马尔科夫决策过程之Markov Processes(马尔科夫过程),见下文:马尔科夫决策过程之Markov Processes(马尔科夫过程) 马尔科夫决策过程之Markov Reward Process(马尔科夫奖励过程),见下文:马尔科夫决策过程之Markov Reward Process(马尔科夫奖励过程) 本文总结一下马尔科夫决策过程之Bellman Equation(贝尔曼方程) 1Bellman Equation for MRPs 首先我们从value function的角度进行理解,value function可以分为两部分: 见下面的推导公式: 我们直接从第一行到最后一行是比较好理解的,因为从状态s到状态s+1,是不确定,还是之前的例子。 比如掷骰子游戏,当前点数是1的情况下,下一个状态有可能是1,2,3,4,5,6的任意一种状态可能,所以最外层会有一个期望符号。 如果我们跟着一直推下来的话:有疑问的会在导出最后一行时,将G(t+1)变成了v(St+1)。其理由是收获的期望等于收获的期望的期望。参考叶强童鞋的理解。 则最后我们得到了针对MRP的Bellman方程: 通过方程可以看出v(s)由两部分组成,一是该状态的即时奖励期望,即时奖励期望等于即时奖励,因为根据即时奖励的定义,它与下一个状态无关。 这里解释一下为什么会有期望符合

强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)

有些话、适合烂在心里 提交于 2020-11-06 05:41:55
    在 强化学习(十七) 基于模型的强化学习与Dyna算法框架 中,我们讨论基于模型的强化学习方法的基本思路,以及集合基于模型与不基于模型的强化学习框架Dyna。本文我们讨论另一种非常流行的集合基于模型与不基于模型的强化学习方法:基于模拟的搜索(Simulation Based Search)。     本篇主要参考了UCL强化学习课程的第八讲,第九讲部分。 1. 基于模拟的搜索概述     什么是基于模拟的搜索呢?当然主要是两个点:一个是模拟,一个是搜索。模拟我们在上一篇也讨论过,就是基于强化学习模型进行采样,得到样本数据。但是这是数据不是基于和环境交互获得的真实数据,所以是“模拟”。对于搜索,则是为了利用模拟的样本结果来帮我们计算到底应该采用什么样的动作,以实现我们的长期受益最大化。     那么为什么要进行基于模拟的搜索呢?在这之前我们先看看最简单的前向搜索(forward search)。前向搜索算法从当前我们考虑的状态节点$S_t$开始考虑,怎么考虑呢?对该状态节点所有可能的动作进行扩展,建立一颗以$S_t$为根节点的搜索树,这个搜索树也是一个MDP,只是它是以当前状态为根节点,而不是以起始状态为根节点,所以也叫做sub-MDP。我们求解这个sub-MDP问题,然后得到$S_t$状态最应该采用的动作$A_t$。前向搜索的sub-MDP如下图:    

强化学习七

随声附和 提交于 2020-10-29 06:57:09
一.前言   之前我们讨论的所有问题都是先学习action value,再根据action value 来选择action(无论是根据greedy policy选择使得action value 最大的action,还是根据ε-greedy policy以1-ε的概率选择使得action value 最大的action,action 的选择都离不开action value 的计算)。即 没有action value的估计值就无法进行action选择,也就没有Policy,这类方法被称为 value-based methods. 其实我们可以直接产生不依赖于action value 的polcy ,这类直接生成action的方法就叫policy-based methods.他们关系如下:   value-based方法,需要计算价值函数(value function),根据自己认为的高价值选择行(action)的方法,如Q Learning。   policy-based方法,不需要根据value function选择action,可以直接得出policy的方法。   图中第三类方法(Actor critic)结合了上述两者, 即计算value function,但不直接根据value function选择action,action 由policy-based方法得到。 二.

项目经理必须知道什么是PERT网络分析(计划评审技术)

拈花ヽ惹草 提交于 2020-09-30 03:06:48
目录 什么是PERT网络分析? PERT的基本要求[2] PERT的计算特点 [1] PERT网络分析法的工作步骤 [1] PERT网络分析法的改进[3] β分布及其性质 改进后的计划评审技术 PERT网络技术的作用 [4] 时间网络分析法的优点和局限性[5] PERT网络分析法的案例分析 PERT的案例一:办公楼的施工过程 PERT的案例二:工程机械类新产品开发过程[6] 相关阅读 相关链接 参考文献 原文地址: https://wiki.mbalib.com/wiki/PERT 在线PERT 图表软件: https://online.visual-paradigm.com/cn/diagrams/features/pert-chart-tool/ PERT 图表工具: https://www.visual-paradigm.com/cn/features/enhanced-pert-chart/ PERT网络分析法( 计划评估和审查技术 ,Program Evaluation and Review Technique) 什么是PERT网络分析?    PERT(Program Evaluation and Review Technique) 即计划评审技术,最早是由美国海军在计划和控制北极星导弹的研制时发展起来的。PERT技术使原先估计的、研制北极星潜艇的时间缩短了两年。  

蒙特卡罗(monteCarlo)

左心房为你撑大大i 提交于 2020-08-17 18:24:49
蒙特卡罗(Monte Carlo)是世界著名的赌城,是摩纳哥的标志,与拉斯×××、澳门号称世界三大赌城。但是这里我们要讲到的蒙特卡罗并不是,而是一种统计方法。其原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值。它诞生于上个世纪40年代美国的"曼哈顿计划",名字来源于赌城蒙特卡罗,象征概率。 通过蒙特卡罗的概率计算,可以解决许多数学问题及业务问题,其最经典的案例即求解圆周率π。在一个正方形内画出一个跟四边正切的圆,设圆的半径r=1,则可知圆的面积为π·r·r,此时正方形的面积则为2r·2r,如下图: 将圆面积同正方形面积进行对比,可得:π·r·r / 2r·2r = π / 4,由此可知当在正方形中随机生成一个点,它落入圆内的概率为π / 4。假设随机生成100个点,其中94个落入圆中,则可得π = 4 * 94 / 100(随机生成的点越多,π越逼近真实值)。 使用蒙特卡罗求解π: # --*-- coding: utf-8 --*-- import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import Circle def monteCarlo(n): o, r = (0., 0.), 1.0 #设置圆心及半径 a, b = (o[0] - r , o[0] + r),