蒙特卡罗方法:当丢失确定性时的处理办法

yizhihongxing

一、简介

  蒙特卡罗(Monte Carlo),也可翻译为蒙特卡洛,只是不同的音译选词,比较常用的是蒙特卡罗。是摩洛哥的一片城区,以拥有豪华赌场闻名,蒙特卡罗方法是基于概率的。基本思想:如果你想预测一件事情的结果,你只要把随机生成的各种输入值,把这件事模拟很多遍,根据模拟出的结果就可以看到事情的结果大致是什么情况。蒙特卡罗算法是基于蒙特卡罗方法的算法。

二、应用

1. 计算π

  在白纸中间画一个正方形,在正方形里画一个内切的圆。假设正方形的边长为a,正方形面积S=a2,圆的半径为a/2,圆的面积S=π(a/2)2。则S/S=π/4,即圆的面积是正方形面积的π/4倍,接下来我们通过数值模拟来计算这两个面积。

蒙特卡罗方法:当丢失确定性时的处理办法

  你找些小颗粒,比如小米或者花粉之类的,随机洒落在白纸上。白纸上有了足够多的颗粒之后,你数一数落在正方形里的小颗粒有多少个——这个数字代表正方形的面积;再数一数落在圆形里的小颗粒有多少个——这个数字代表圆的面积。那么这代表小颗粒数量的两个数字之比,就应该约等于圆形和正方形的面积之比即π/4。你只需要数一数就可以计算出π大约等于几。通过大量均匀洒落小颗粒可以让π值更精确,显然这个方法不够精确——但是这个方法却很有用。很多时候我们根本无法对方程精确求解,那么蒙特卡罗方法就是你的朋友。

2. 原子弹的研制

  在第二次世界大战中,美国原子弹的研制就第一次用到了蒙特卡罗方法。原子弹的爆炸依赖于裂变时产生的链式反应反应。在链式反应中,核物质中游离的中子会撞击铀原子,释放大量的能量,同时释放出来三个新的中子。这些中子如果又能撞击其它铀原子,链式反应就会发生。这样原子弹就能爆炸了。但释放出来的中子是不是能撞击到其它铀原子,是一个不确定的过程。这些中子运动的方向,携带的能量是随机的。如果整个核物质的质量太小,很有可能中子被释放出来之后,直接离开了核物质,没撞击到任何铀原子,那链式反应就不会发生,原子弹就爆炸不了了。在核物理中有一个概念,叫“临界质量”,是让链式反应能够发生的最小质量。而这个临界质量,就是对各个中子运动中的随机变量进行取样,通过蒙特卡罗模拟算法计算得到。

三、注意事项

1. 蒙特卡罗方法是对问题的估算,而不是精确计算。

2. 蒙特卡罗方法的成功,非常依赖于参数和模型的正确。

  比如我是北京国安的狂热球迷,认为国安打哪只球队的胜率都是90%。结果其他球队这一年都引入了特厉害的外援,实力大增。不对这些信息进行考虑,修正国安90%的胜率,那随机模拟的结果就是不可信的。模拟次数再多,也没用。

  最近大火的AI如Chat-GPT有资料显示使用了蒙特卡罗方法。GPT-3的参数有1750亿个,根据OpenAI的CEO山姆·阿尔特曼(Sam Altman)说GPT-4的参数并不比GPT-3多很多,但大家猜测,GPT-5的参数将会是GPT-3的100倍。

3. 蒙特卡罗方法会减小我们发现问题本质的机会。

  我们知道GPT很厉害,可是不知道GPT为什么厉害。

四、启示

  蒙特卡罗方法在哲学上是一种随机试验,在物理学上是通过人为制造的随机性——噪声来探索系统的多个可能性,在数学上,它还有一个惊喜:能减少计算量!也许是因为有了噪声自动代表了多种可能性,有了噪声,你不用太高的分辨率和预测精度就能达到很不错的计算结果。

原文链接:https://www.cnblogs.com/inverseEntropy/p/17302528.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:蒙特卡罗方法:当丢失确定性时的处理办法 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • python绘制评估优化算法性能的测试函数

    下面是详细讲解“Python绘制评估优化算法性能的测试函数”的完整攻略,包含两个示例说明。 测试函数的作用 在评估和优化算法性能时,测试函数是非常有用的工具。函数是一个数学函数,它可以用来评估算法的性能。测试函数通常具有以下特点: 可以在多个维度进行测试 具有多个局部最小值和全局最小值 可以在不同的搜索空间中进行测试 测试函数的作用是提供一个标准化的方法来评…

    python 2023年5月14日
    00
  • Python实现的数据结构与算法之链表详解

    下面是详细讲解“Python实现的数据结构与算法之链表详解”的完整攻略,包括链表的定义、链表的基本操作链表的应用和两个示例说明。 链表定义 链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表的头节点指向第一个节点,尾节点指向最后一个节点,如果链表为空,则头节点和尾节点都为None。 链表基本操作 链表的基操作包括插入、…

    python 2023年5月14日
    00
  • python的常见矩阵运算(小结)

    下面是关于“Python的常见矩阵运算(小结)”的完整攻略。 1. 矩阵的创建 在Python中,我们可以使用numpy模块来创建矩阵。下面是一些常见的矩阵创建方法: 1.1 通过列表创建矩阵 import numpy as np # 通过列表创建矩阵 matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) …

    python 2023年5月13日
    00
  • C语言实题讲解快速掌握单链表上

    C语言实题讲解快速掌握单链表 什么是单链表? 单链表是一种链式存储的线性数据结构,它由一系列称为节点的组成。每个节点都包括两个部分:数据域和指针域。指针域指示了下一个节点的地址,因此,我们可以通过遍历链表的方式访问所有节点。 单链表的操作 创建一个单链表 我们可以通过以下步骤来创建一个单链表:1. 定义单链表的节点结构体,包括数据域和指针域。2. 定义一个指…

    数据结构 2023年5月17日
    00
  • C语言数据结构之堆、堆排序的分析及实现

    C语言数据结构之堆、堆排序的分析及实现 什么是堆 堆(Heap)是一种特殊的树形数据结构,它满足两个条件: 堆是一棵完全二叉树; 堆中任意节点的值总是不大于/不小于其子节点的值。 如果父节点的值不大于所有子节点的值,此堆称为小根堆,又称为最小堆。如果父节点的值不小于所有子节点的值,此堆称为大根堆,又称为最大堆。 堆通常可以使用数组来实现,具体实现方法是将堆的…

    数据结构 2023年5月17日
    00
  • 一文了解mysql索引的数据结构为什么要用B+树

    MySQL索引的数据结构主要为B+树,那么B+树为什么是最适合作为索引数据结构呢?在介绍B+树之前,我们先来了解下B树。 B树B树是一棵多路平衡查找树,也称为B-树(B-tree),主要应用在文件系统和数据库中,可以显著减少I/O操作次数。B树的每个节点存储的元素个数比二叉查找树的节点多,且节点存储的元素是按顺序排列的,这些特点使得在查找过程中可以快速定位需…

    数据结构 2023年5月17日
    00
  • 【ACM算法竞赛日常训练】DAY16【奇♂妙拆分】【区区区间间间】【小AA的数列】数学 | 位运算 | 前缀和

    DAY16共3题: 奇♂妙拆分(简单数学) 区区区间间间(单调栈) 小AA的数列(位运算dp) ? 作者:Eriktse? 简介:19岁,211计算机在读,现役ACM银牌选手?力争以通俗易懂的方式讲解算法!❤️欢迎关注我,一起交流C++/Python算法。(优质好文持续更新中……)?? 阅读原文获得更好阅读体验:https://www.eriktse.com…

    算法与数据结构 2023年4月20日
    00
  • F – 产生冠军(不使用拓扑排序)

    题目描述 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。球赛的规则如下:如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。根据这个规则,无需循环较量,或许就能确定冠军。你的任务就是面对一群比赛选手,在经过了若干场撕杀之…

    算法与数据结构 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部