Skip to content

Latest commit

 

History

History
130 lines (76 loc) · 10.5 KB

ai-anyone-can-understand-part-8-the-monte-carlo-method-6b77ccf7203.md

File metadata and controls

130 lines (76 loc) · 10.5 KB

人人都能理解的人工智能:第八部分——蒙特卡罗方法

原文:https://pub.towardsai.net/ai-anyone-can-understand-part-8-the-monte-carlo-method-6b77ccf7203?source=collection_archive---------2-----------------------

了解蒙特卡罗方法的基础

马克·德容Unsplash 上拍摄的照片

简化解释

蒙特卡罗方法是一种利用随机数和概率解决问题的方法。它可以用来对难以精确计算的事物进行预测或估计。

例如,假设你有一个装有 100 颗弹珠的袋子,你想知道有多少颗弹珠是蓝色的。你可以一个一个地拿出每个弹珠,数出有多少是蓝色的,但这需要很长时间。相反,你可以使用蒙特卡罗方法来有根据地猜测有多少个弹珠是蓝色的。你可以摇动袋子,随机挑出 10 颗弹珠。如果其中 5 个是蓝色的,你可以用这个信息估计出袋子里大约有 50 个蓝色的弹珠(因为 5 是 10 的一半)。当你没有准确解决问题所需的所有信息,但你想做出一个好的猜测时,蒙特卡罗方法是有用的。

照片由纳赛尔·塔米米Unsplash 上拍摄

深入解释

蒙特卡罗方法是一种用于模拟复杂系统并评估其行为的数学技术。它是以摩纳哥的蒙特卡洛城命名的,该城以其赌场和在赌博游戏中使用机会和随机性而闻名。同样,蒙特卡罗方法依靠随机抽样和统计分析来近似求解复杂问题。

历史

蒙特卡洛方法的起源可以追溯到 20 世纪初,当时科学家和工程师们首次开始使用计算机模拟物理系统。该方法最早的应用之一是在核物理领域,用于研究原子粒子的行为。多年来,蒙特卡罗方法已经被应用到广泛的领域,包括金融、工程和计算机科学。

Natalia Yakovleva 在 Unsplash 上拍摄的照片

蒙特卡罗方法背后的基本思想是使用随机抽样来生成给定系统的可能结果,然后使用统计分析来评估每个结果的可能性。例如,假设您正试图确定一只股票的价值。您可以使用蒙特卡罗方法来模拟股票随时间推移的潜在表现,同时考虑市场条件、利率和其他股票的行为等因素。通过运行许多模拟并评估结果,您可以估计股票的预期价值以及与您的估计相关的不确定性。

如何使用它

要使用蒙特卡罗方法,首先需要定义你有兴趣研究的系统。这通常包括指定一组描述系统状态的变量,以及控制系统如何随时间演化的规则。例如,在上面的股票示例中,变量可能包括股票的当前价格、回报率和市场的波动性。这些规则可能包括股票价格随机波动的假设,以及回报率由整体市场表现决定的假设。

一旦定义了系统,下一步就是生成大量随机样本,代表系统可能的结果。这通常使用计算机程序来完成,该程序使用随机数生成器来创建样本。程序应该设计成从与系统中的变量相同的分布中取样,以便样本准确地代表可能的结果。

样本生成后,下一步是评估每个结果的可能性。这通常包括对样本应用统计技术,例如计算结果的平均值、中值和标准偏差。通过比较不同模拟的结果,您可以估计系统的期望值以及与您的估计相关的不确定性。

照片由登·哈森Unsplash

优势

蒙特卡洛方法的一个优点是,它允许你考虑预测中的不确定性。因为该方法依赖于随机抽样,所以它可以生成一系列可能的结果,而不仅仅是一个估计值。这使您可以看到您的预测对输入变量的变化有多敏感,并确定哪些变量对结果有最大的影响。

蒙特卡洛方法的另一个优点是,它可以用来研究用其他方法难以分析的复杂系统。因为该方法依赖于统计分析,所以它可以处理具有大量变量和相互作用的系统,而不需要系统的详细数学模型。这使得它非常适合于研究金融等领域的系统,在这些领域,系统的行为是由许多不同的因素决定的。

不足之处

蒙特卡罗方法的一个缺点是计算量很大。因为该方法依赖于运行许多模拟来评估可能的结果,所以它可能需要大量的计算能力来生成样本并执行统计分析。这使得该方法不适合研究非常大或复杂的系统。

蒙特卡罗方法的另一个缺点是很难验证模拟的结果。因为该方法依赖于随机抽样,所以很难知道样本是否准确地代表了系统的可能结果。这使得确定结果的可靠性和识别模拟中的任何偏差或误差变得很困难。

尽管有这些限制,蒙特卡罗方法仍然是研究复杂系统和评估这些系统行为的有力工具。它已被应用于各个领域,从金融和工程到计算机科学和物理。随着计算能力的不断提高,蒙特卡罗方法有可能应用于更广泛的问题,有助于揭示复杂系统的行为及其行为相关的不确定性。

行动中:金融

蒙特卡罗方法最著名的应用之一是在金融领域。金融分析师经常使用该方法来评估投资的表现,如股票、债券和衍生品。通过模拟这些投资在一段时间内的表现,分析师可以估计每项投资的预期回报和相关风险。这些信息可用于做出明智的决策,决定在投资组合中包括哪些投资,以及如何平衡投资组合以在最小化风险的同时最大化回报。

行动中:工程

蒙特卡罗方法也被应用到工程领域。工程师们使用这种方法来模拟复杂系统的行为,如建筑物、桥梁和电网。通过运行这些系统的模拟,工程师可以评估设计的强度和稳定性,并确定潜在的弱点或故障点。这些信息可用于改进设计,确保系统安全可靠。

行动:计算机科学

蒙特卡罗方法的另一个重要应用是在计算机科学领域。计算机科学家使用该方法来评估算法的性能,例如用于排序、搜索和优化的算法。通过运行算法的模拟,计算机科学家可以评估算法的效率和准确性,并确定改善其性能的方法。这有助于提高算法的效率和效果,更快更准确地解决复杂问题。

总的来说,蒙特卡罗方法是模拟复杂系统和评估这些系统行为的有价值的工具。通过使用随机抽样和统计分析,该方法允许我们考虑不确定性,并研究太复杂而无法用其他方法分析的系统。随着计算能力的不断提高,蒙特卡罗方法很可能将继续成为解决各种复杂问题的有价值的工具。

詹姆斯·哈里森在 Unsplash 上拍摄的照片

例子

下面是一个如何使用 Python 中的蒙特卡罗方法来估计圆周率值的示例:

import random

def inside_circle(x, y):
  return x*x + y*y <= 1

total_points = 1000000
inside = 0
for i in range(total_points):
  x = random.uniform(-1, 1)
  y = random.uniform(-1, 1)
  if inside_circle(x, y):
    inside += 1

pi_estimate = (inside / total_points) * 4
print(pi_estimate)

这个代码使用蒙特卡罗方法来估计圆周率的值。它通过在一个正方形内产生 1,000,000 个随机点,并计算其中有多少点落在该正方形内接的圆内来实现这一点。圆内的点数与总点数之比用于估计圆周率的值。

初学者理解代码

下面是代码的分解:

  • import random行导入了random模块,该模块提供了生成随机数的函数。
  • inside_circle()函数接受两个坐标xy,如果点在圆内,则返回True,否则返回False。它通过检查该点是否在圆的半径内(半径为 1)来做到这一点。方程x*x + y*y <= 1是以原点(0,0)为圆心,半径为 1 的圆的方程。
  • total_points变量设置为 1,000,000,这是将要生成的随机点的总数。
  • inside变量设置为 0,用于计算有多少随机点落在圆内。
  • for循环在 1,000,000 的范围内迭代,并为每次迭代生成一个随机点。它使用random.uniform(-1, 1)生成一个介于-1 和 1 之间的随机x值,使用random.uniform(-1, 1)生成一个介于-1 和 1 之间的随机y值。然后使用inside_circle()功能检查该点是否在圆内,如果是,则递增inside计数器。
  • pi_estimate变量的计算方法是将圆内点数与总点数之比乘以 4。这是因为正方形内切圆的面积是pi * r^2,其中r是圆的半径(本例中为 1)。正方形的面积是 4,所以圆的面积与正方形的面积之比等于pi / 4。将这个比率乘以 4,我们得到一个估计值pi
  • print(pi_estimate)行将pi的估计值打印到控制台。

关键要点

  • 蒙特卡罗方法是一种用于模拟复杂系统并评估其行为的数学技术。
  • 这种方法是以摩纳哥的蒙特卡洛城命名的,该城以其赌场和在赌博游戏中使用机会和随机性而闻名。
  • 蒙特卡罗方法依靠随机抽样和统计分析来近似求解复杂问题。
  • 它已被应用于广泛的领域,包括金融、工程和计算机科学。
  • 该方法允许评估预测中的不确定性,并可用于研究具有许多变量和相互作用的复杂系统。
  • 然而,这可能在计算上是昂贵的,并且可能难以验证模拟的结果。

[## 每当安德鲁·奥斯汀发表文章时,就收到一封电子邮件。

每当安德鲁·奥斯汀发表文章时,就收到一封电子邮件。通过注册,您将创建一个中型帐户,如果您还没有…

medium.com](https://medium.com/@MoneyAndData/subscribe)

如果你开始爱上 Medium 来寻找一个好的内容来源,你也可以通过我的推荐链接得到一个 Medium 来支持我:https://medium.com/@MoneyAndData/membership