您当前的位置:首页 > 指南 > 正文

蒙特卡洛模拟技术,于随机中找确定

关于【蒙特卡洛模拟技术】,今天犇涌小编给您分享一下,如果对您有所帮助别忘了关注本站哦。

内容导航:1、蒙特卡洛模拟技术:于随机中找确定 - 蒙特卡洛模拟2、蒙特卡洛模拟技术,蒙特卡罗方法概述

1、蒙特卡洛模拟技术:于随机中找确定 - 蒙特卡洛模拟

以下文章来源于质量优势 ,作者高云

导读

蒙特卡洛,摩纳哥公国的一座赌城。为什么用这个赌城的名字命名一个模拟方法呢?于随机性中找确定性,赌城永恒的追求,也是企业发展中要不断去破解的命题。

文章来源

本文作者:公众号「质量优势」高云,数字化企业经授权发布。

01

什么是蒙特卡洛模拟?

学过PMP的应该对蒙特卡洛模拟不陌生,这个方法在PMBOK中经常出现,是项目管理用于做项目定量风险分析的一个工具。

蒙特卡洛模拟是一种统计学的方法,基本概念是利用随机性来解决理论上可能是确定性的问题。根据输入数据的特征,模拟出大量输入数据,得到相应输出的结果及其累积概率分布图,最后形成一些确定性的结论。

这样的解释还是既抽象又拗口,下面我们通过一个浅显易懂的例子并用Excel来演示一下整个模拟过程,保证每个人都能看懂。

02

案例:蒙特卡洛模拟的过程

假设我们有一个新项目,包含开发、验证、试制这三个要素,三要素的工期(单位:天)都符合正态分布,工期的最悲观/最乐观的估计定在均值正负3个标准差的位置,汇总如下表:

蒙特卡洛模拟技术,于随机中找确定

这时,作为一个项目经理,往往要回答这类问题:平均总工期是65天,那么在65天内项目能如期完成的概率有多少?

接下来我们就通过蒙特卡洛模拟来定量回答这个问题。

基本步骤是:

◉ 第一步:随机生成每个要素的工期值作为输入(根据要素的均值与标准差生成随机值),用Excel中的NORMINV函数生成随机数,再用ROUND函数取整。

蒙特卡洛模拟技术,于随机中找确定

◉ 第二步:把三个要素的随机生成值相加得到整个项目的工期值,完成了一次模拟。

蒙特卡洛模拟技术,于随机中找确定

◉ 第三步:重复以上两步,通过这样一次次的模拟,得到大量的项目总工期的数值,在这个例子中,我们生成了300组数据。

蒙特卡洛模拟技术,于随机中找确定

◉ 第四步:再对这些模拟得到大量总工期数值进行统计分析,计算出每个总工期值出现的概率,以及累积概率,最后得出其项目总工期估计的概率分布。

蒙特卡洛模拟技术,于随机中找确定

此时,我们已经能回答项目经理面对的那个问题了:项目在65天内能完成的概率是52%,不能如期完成的风险挺大的。

蒙特卡洛模拟技术,于随机中找确定

通过这个概率分布S曲线,我们可以预测整个项目在多少天内完工的概率。比如我们需要预测整个项目在69天完工的概率,通过S曲线了解到69天对应的累积概率是80%左右,那么69天内不能完工的概率就是1-80%=20%,这就是项目风险。

蒙特卡洛模拟的基本概念和操作介绍到这,基本逻辑就是这么简单。

03

蒙特卡洛模拟

在新产品导入中的应用

上文的例子中,我们分析的是变量对结果的影响。这个逻辑能做项目风险定量分析,也能应用到过程变量对过程结果的定量影响分析上。

假设你公司设计了一个全新的产品,具有许多的新功能,可以创造更好的客户体验。现在,你必须确保新产品高标准、高质量地制造出来,这样它才能从客户那里获得长期的良好声誉。

你需要快速、无缝地从研发转移到大规模生产。为了高质量的新产品导入,研发设计团队必须向供应商提供正确的零部件与组件规格,这些规格再转化为制造过程的工艺规范。

蒙特卡洛模拟技术,于随机中找确定

如果规格的合理设置(产品规格与工艺窗口的综合考虑)没有妥善执行,制造工程师将不得不依靠自己的“创造力”来解决各类规格不匹配的问题。

我们知道,所有的过程都受到变化源的影响(环境波动和过程变量),这些变异通常会导致重大质量问题。如果产品规格与整个工艺变异相比足够大,那么低成本的高质量产品(具有高Ppk能力值)将有可能。否则,不合格产品比例将大幅增加且质量水平不稳定。

一个过程会有很多的输入,只有一个输出。某些输入是可控因素,但有些输入是不可控的噪声因素。

蒙特卡洛模拟技术,于随机中找确定

在产品开发阶段,往往只有少数的原型样机可用于验证概念设计。我们更需要研究输入变异是如何传导到最终输出的,基于中试规模实验设计(DOE)、计算机辅助设计等方式可以建立起这个模型,然后,你就可以预测全面生产启动时的能力指数。

基于建立的输入输出模型,我们可以通过蒙特卡洛模拟来生成大量随机样本,以模拟复杂系统中的变异,以便我们能够预测质量问题,避免后期高成本的的设计更改。

04

敏感性分析

在进行蒙特卡洛模拟时,如果预测出来的能力指数不足,就需要做一些改进,减少某些输入的变异。然而,减少输入变异也往往成本很高。因此,要找到那个关键的输入变量来加以改进,而不是全面铺开。蒙特卡洛模拟就能使决策者看到单个输入对结果的影响,这就是敏感性分析。

下图是敏感性分析的一个例子,模型有时间与温度两个变量。通过模拟可以发现,时间变量标准偏差的减少预计会使得最终规格超标的比例大幅度降低,那么我们就能清晰确定改进方向了,而不是盲目地广撒网。

05

总结

蒙特卡洛模拟通常是六西格玛设计(DFSS)的关键部分。随着各个公司在创新方面的投入越来越多,这种基于模拟的方法也将变得更加重要。以前蒙特卡洛模拟需要很高的计算成本,但随着各类越来越强大的模拟软件的出现,现在这已经不是问题了。

2、蒙特卡洛模拟技术,蒙特卡罗方法概述

作为一种随机采样方法,马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,以下简称MCMC)在机器学习,深度学习以及自然语言处理等领域都有广泛的应用,是很多复杂算法求解的基础。

从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Simulation,简称MC)和马尔科夫链(Markov Chain ,也简称MC)。要弄懂MCMC的原理我们首先得搞清楚蒙特卡罗方法和马尔科夫链的原理。

蒙特卡罗方法

蒙特卡罗原来是一个赌场的名称,用它作为名字大概是因为蒙特卡罗方法是一种随机模拟的方法,这很像赌博场里面的扔骰子的过程。原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值。

它非常强大和灵活,又相当简单易懂,很容易实现。对于许多问题来说,它往往是最简单的计算方法,有时甚至是唯一可行的方法。

给定统计样本集,如何估计产生这个样本集的随机变量概率密度函数,是我们比较熟悉的概率密度估计问题。

求解概率密度估计问题的常用方法是最大似然估计、最大后验估计等。但是,我们思考概率密度估计问题的逆问题:给定一个概率分布p(x),如何让计算机生成满足这个概率分布的样本。

这个问题就是统计模拟中研究的重要问题–采样(Sampling)。

如果有一个我们很难求解出f(x)f(x)的原函数的函数, 现要求其在定义域 [a, b] 上的积分, 如果这个函数是均匀分布, 那么我们可以采样 [a,b] 区间的 n 个值:${x 0,x_1,…x {n-1}}$,用它们的均值来代表 [a,b] 区间上所有的 f(x) 的值。这样我们上面的定积分的近似求解为:

如果不是均匀分布, 并 假设我们可以得到 xx 在[a,b][a,b]的概率分布函数p(x)p(x),那么我们的定积分求和可以这样进行:

上式最右边的这个形式就是蒙特卡罗方法的一般形式。当然这里是连续函数形式的蒙特卡罗方法,但是在离散时一样成立。

可以看出,最上面我们假设x在[a,b]之间是均匀分布的时候,p(xi)=1/(b−a),带入我们有概率分布的蒙特卡罗积分的上式,可以得到:

也就是说,我们最上面的均匀分布也可以作为一般概率分布函数p(x)p(x)在均匀分布时候的特例。那么我们现在的问题转到了如何在已知分布求出 x 的分布p(x)p(x)对应的若干个样本上来。

采样方法

主要有概率分布采样及接受-拒绝采样方法.

概率分布采样

如果求出了xx的概率分布,我们可以基于概率分布去采样基于这个概率分布的 n 个xx的样本集,带入蒙特卡罗求和的式子即可求解。但是还有一个关键的问题需要解决,即如何基于概率分布去采样基于这个概率分布的 n 个xx的样本集。

一般而言均匀分布 Uniform(0,1) 的样本是相对容易生成的。 通过线性同余发生器可以生成伪随机数,我们用确定性算法生成[0,1]之间的伪随机数序列后,

这些序列的各种统计指标和均匀分布 Uniform(0,1) 的理论计算结果非常接近。这样的伪随机序列就有比较好的统计性质,可以被当成真实的随机数使用。线性同余随机数生成器如下:

式中a,c,ma,c,m是数学推导出的合适的常数。这种算法产生的下一个随机数完全依赖当前的随机数,当随机数序列足够大的时候,随机数会出现重复子序列的情况。

当然,也有很多更加先进的随机数产生算法出现,比如 numpy 用的是 Mersenne Twister 等.

而其他常见的概率分布,无论是离散的分布还是连续的分布,它们的样本都可以通过 Uniform(0,1) 的样本转换而得, 但是如何产生满足其他分布下的随机数呢?

比如二维正态分布的样本(Z1,Z2)(Z1,Z2)可以通过通过独立采样得到的 uniform(0,1) 样本对(X1,X2)(X1,X2)通过如下的式子转换而得:

其他一些常见的连续分布,比如 t分布 , F分布 , Beta分布 , Gamma分布 等,都可以通过类似的方式从 uniform(0,1) 得到的采样样本转化得到。在python的 numpy , scikit-learn 等类库中,都有生成这些常用分布样本的函数可以使用。

不过很多时候,我们的x的概率分布不是常见的分布,这意味着我们没法方便的得到这些非常见的概率分布的样本集。那这个问题怎么解决呢?

接受-拒绝采样

对于概率分布不是常见的分布,一个可行的办法是采用接受-拒绝采样来得到该分布的样本。既然 p(x)p(x) 太复杂在程序中没法直接采样,那么我设定一个程序可采样的分布 q(xq(x) 比如高斯分布,然后按照一定的方法拒绝某些样本,以达到接近 p(x)p(x) 分布的目的,其中q(x)q(x)叫做 proposal distribution 。

具体采用过程如下,设定一个方便采样的常用概率分布函数 q(x),以及一个常量 k,使得 p(x) 总在 kq(x) 的下方。

蒙特卡洛模拟技术,于随机中找确定

首先,采样得到 q(x) 的一个样本$z 0$,采样方法如上,使用 uniform(0,1) 转换得到。然后,从均匀分布(0,kq(z0))(0,kq(z0))中采样得到一个值uu。如果uu落在了上图中的灰色区域,则拒绝这次抽样,否则接受这个样本z0z0。重复以上过程得到 n 个接受的样本 $z_0,z_1,…z {n−1}$,则最后的蒙特卡罗方法求解结果为:

整个过程中,我们通过一系列的接受拒绝决策来达到用q(x)模拟p(x)概率分布的目的。

小结

使用接受-拒绝采样,我们可以解决一些概率分布不是常见的分布的时候,得到其采样集并用蒙特卡罗方法求和的目的。但是接受-拒绝采样也只能部分满足我们的需求,在很多时候我们还是很难得到我们的概率分布的样本集。比如:

对于一些二维分布p(x,y)p(x,y),有时候我们只能得到条件分布p(x|y)p(x|y)和p(y|x)p(y|x),却很难得到二维分布p(x,y)p(x,y)一般形式,这时我们无法用接受-拒绝采样得到其样本集。对于一些高维的复杂非常见分布p(x1,x2,…,xn)p(x1,x2,…,xn),我们要找到一个合适的q(x)和q(x)和k$非常困难。

从上面可以看出,要想将蒙特卡罗方法作为一个通用的采样模拟求和的方法,必须解决如何方便得到各种复杂概率分布的对应的采样样本集的问题。

此时就需要使用一些更加复杂的随机模拟的方法来生成样本。比如马尔科夫链蒙特卡罗方法,了解这个算法我们首先要对马尔科夫链的平稳分布的性质有基本的认识。

本文关键词:蒙特卡洛仿真法的步骤,蒙特卡洛模拟技术原理,蒙特卡洛模拟技术 什么过程的工具,蒙特卡洛仿真案例,做蒙特卡洛模拟分析的工具有哪些。这就是关于《蒙特卡洛模拟技术,于随机中找确定》的所有内容,希望对您能有所帮助!


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 蘑菇的做法大全家常 蘑菇的做法大全家常菜素炒蘑菇

下一篇: 蔡司镜头的优点,蔡司55mm F1.8真香



推荐阅读