蒙特卡洛(Monte Carlo)方法

简介

蒙特卡罗方法也称统计模拟方法,是指使用随机数(或者更常见的伪随机数)来解决很多计算问题的方法。它的工作原理就是两件事:不断抽样、逐渐逼近。

相关数学基础

条件概率

P(AB)P(A|B):在随机事件BB发生的条件下,随机事件AA发生的概率。

全概率公式:P(B)=i=1nP(BAi)P(Ai)P(B) = \sum_{i=1}^n P(B|A_i) \cdot P(A_i)

  • 证明思路:P(BAi)P(Ai)P(B|A_i) \cdot P(A_i)等于P(BAi)P(BA_i),再利用概率的可加性进行加和。

贝叶斯(Bayes)公式:P(AiB)=P(AiB)P(B)=P(BiA)P(A)j=1nP(BAj)P(Aj)P(A_i|B) = \frac{P(A_i B)}{P(B)} = \frac{P(B_i|A)P(A)}{\sum^n_{j=1} P(B|A_j) \cdot P(A_j)}

随机变量的特征值

期望

  • 离散分布:E(Y(X))=Y(X)p(Y(X))E(Y(X)) = Y(X) \cdot p\,(Y(X))

  • 连续分布:E(Y(X))=y(x)f(x)dxE(Y(X)) = \int_{-\infty}^{\infty} y(x) \cdot f(x) \, dx

方差

D(X)=E[(XE(X))2]=E(X2)E2(X)D(X) = E[(X - E(X))^2] = E(X^2) - E^2(X)

  • 连续分布:D(Y(X))=(y(x)E(Y))2f(x)dx=E(Y2)(E(Y))2D(Y(X)) = \int_{-\infty}^{\infty} (y(x) - E(Y))^2 \cdot f(x) \, dx = E(Y^2) - (E(Y))^2

常见分布

二项分布 (Binomial Distribution)

单次实验有两种结果,发生目标事件(概率为pp)或者不发生(概率为1p1-p)。那么NN次实验发生kk次目标事件的概率、期望、方差为:

P(N,k)=N!k!(Nk)!pk(1p)NkE(k)=Np,D(k)=Np(1p)P(N, k) = \frac{N!}{k!(N - k)!} p^k (1 - p)^{N - k} \\ E(k) = Np, \quad D(k) = Np(1 - p)

  • 对应物理实例:

泊松分布 (Poisson Distribution)

泊松分布是二项分布的一种特殊极限,当单次实验pp \rightarrow 0 、nn \rightarrow \infty,且NpNp\,适中(有限)时,在相同时间内,随机过程发生kk次的概率为:

P(X=k)=λkeλk!,k=0,1,2,P(X = k) = \frac{\lambda^k e^{-\lambda}}{k!}, \quad k = 0, 1, 2, \ldots

其中λ>0\lambda > 0 为平均发生次数(速率参数)。

泊松分布的方差和期望均是λ\lambda

  • 对应的物理实例:

正态分布 (Normal Distribution)

自然科学中(同时也是生活中)最常见的分布形式?

高斯分布的概率密度函数(PDF):

f(x)=12πσe(xμ)22σ2,xRf(x) = \frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{(x - \mu)^2}{2\sigma^2}}, \quad x \in \mathbb{R}

正态分布的期望和方差分别为:

E(X)=μ,D(X)=σ2E(X) = \mu, \quad D(X) = \sigma^2

中心极限定理

中心极限定理指出,无论原始随机变量的分布如何,其样本均值的标准化形式在样本量 nn 足够大时,将近似服从标准正态分布。这是统计学中连接概率分布与正态分布的桥梁。

X1,X2,,XnX_1, X_2, \dots, X_n 是独立同分布(i.i.d.)的随机变量,且E(Xi)=μ,D(Xi)=σ2<E(X_i) = \mu, \quad D(X_i) = \sigma^2 < \infty。定义样本均值为:Xn=1ni=1nXi\overline{X_n} = \frac{1}{n} \sum_{i=1}^n X_i,则当 nn \to \infty 时,标准化随机变量:Zn=Xnμσ/nZ_n = \frac{\overline{X_n} - \mu}{\sigma / \sqrt{n}}的分布收敛于标准正态分布 N(0,1)N(0,1),即:

ZndN(0,1)Z_n \xrightarrow{d} N(0,1)

随机抽样

离散随机变量

离散随机变量的抽样相对简单,我们可以根据各变量的频率及其概率,从 [0,1)[0,1) 均匀分布中分区间直接抽样。

具体方法:设随机变量为X1,X2,...,XnX_1, X_2, ..., X_n,相应概率为P1,P2,...,PnP_1, P_2, ..., P_n

定义累积概率 ξ\xiξ0=0\xi_0 = 0ξi=j=1ipj,i=1,2,...,n\xi_i = \sum_{j=1}^i p_j, i = 1, 2, ..., n。接着我们从[0,1)[0, 1)中均匀分布抽样得到xx^*,如果满足:

ξk1<=x<=ξk\xi_{k-1} <= x^* <= \xi_k

那么此时抽样的随机变量为XkX_k

辅助理解的图例(谢谢伟大的陈海老师的ppt!):

连续随机变量

直接抽样法

变换抽样法

舍选抽样法

蒙特卡洛方法的具体应用

积分运算

一维积分运算

投点法

平均值法

重要抽样法

多维积分运算

统计力学中的运用

Metropolis-Hastings算法

量子力学中的运用

路径积分

模拟退火算法

随机行走的生长模拟