蒙特卡洛算法
💡 随机算法,通过随机样本估算真实值。
一、 Calculate π \pi π
用蒙特卡洛近似估算出 π \pi π的值
- 随机生成平面坐标系中的点 ( x , y ) , x ∈ [ − 1 , 1 ] , y ∈ [ − 1 , 1 ] (x,y),\space x\in[-1,1],\space y\in[-1,1] (x,y), x∈[−1,1], y∈[−1,1], x , y x,\space y x, y为 [ − 1 , 1 ] [-1,1] [−1,1]之间的均匀分布,所有的点都有相同的概率密度;
- 正方形内切圆半径为1,随机样本落在圆内的概率=圆的面积/正方形的面积: P = π 4 P=\frac{\pi}{4} P=4π;
- 从正方形区域均匀随机抽样
n
{\color{d44d37}n}
n个点,在圆内的点的数量期望为
P
n
=
π
n
4
P{\color{d44d37}n}=\frac{\pi{\color{d44d37}n}}{4}
Pn=4πn;
- 已知坐标 ( x , y ) (x,y) (x,y)判断是否在圆内:若 x 2 + y 2 ≤ 1 x^2+y^2\le1 x2+y2≤1则在圆内。
- 均匀随机抽样后有 m {\color{d44d37}m} m个点在圆内,若 n {\color{d44d37}n} n非常大,则真实观测值 m ≈ π n 4 {\color{d44d37}m}\approx\frac{\pi{\color{d44d37}n}}{4} m≈4πn;
- 即得到 π ≈ 4 m n \pi\approx\frac{4{\color{d44d37}m}}{{\color{d44d37}n}} π≈n4m;
- 大数定律保证蒙特卡洛的正确性: 4 m n → π , as n → ∞ \frac{4{\color{d44d37}m}}{{\color{d44d37}n}}\rightarrow\pi,\space \text{as}\space {\color{d44d37}n}\rightarrow\infty n4m→π, as n→∞。
【结论】:从如图正方形中均匀抽样 n {\color{d44d37}n} n个点,观测到 m {\color{d44d37}m} m个点落在内切圆中,可近似得到 π ≈ 4 m n \pi\approx\frac{4{\color{d44d37}m}}{{\color{d44d37}n}} π≈n4m。
二、 Buffon’s Needle Problem
近似估算 π \pi π值
- 在纸上画几条距离为 d {\color{337ea9}d} d的平行线;
- 准备一些长度为 l {\color{337ea9}l} l的针;
- 随机将针抛到纸上,针可能与平行线相交也可能不相交;
- 假设针的位置和角度都是均匀随机的,通过微积分算出相交的概率 P = 2 l π d P=\frac{2{\color{337ea9}l}}{\pi{\color{337ea9}d}} P=πd2l;
- 随机往纸上扔 n {\color{d44d37}n} n根针,与平行线相交的针的数量期望为 P n = 2 l n π d P{\color{d44d37}n}=\frac{2{\color{337ea9}l}{\color{d44d37}n}}{\pi{\color{337ea9}d}} Pn=πd2ln;
- 真实观测到有 m {\color{d44d37}m} m根针与平行线相交,若 n {\color{d44d37}n} n非常大,则真实观测值 m ≈ 2 l n π d {\color{d44d37}m}\approx\frac{2{\color{337ea9}l}{\color{d44d37}n}}{\pi{\color{337ea9}d}} m≈πd2ln;
- 即得到 π ≈ 2 l n m d \pi\approx\frac{2{\color{337ea9}l}{\color{d44d37}n}}{{\color{d44d37}m}{\color{337ea9}d}} π≈md2ln。
三、估算阴影面积
- 对如图正方形区域内做均匀随机抽样得到多个点,判断点是否在阴影部分需满足两个条件;
- 在圆内: ( x − 1 ) 2 + ( y − 1 ) 2 ≤ 1 (x-1)^2+(y-1)^2\le1 (x−1)2+(y−1)2≤1;
- 不在扇形内: x 2 + y 2 ≥ 4 x^2+y^2\ge4 x2+y2≥4;
- 假设阴影部分面积为 A A A,随机抽样的点落在阴影部分的概率为 P = A 4 P=\frac{A}{4} P=4A;
- 均匀随机抽样 n {\color{d44d37}n} n个点,点落在阴影部分的期望为 P n = A n 4 P{\color{d44d37}n}=\frac{A{\color{d44d37}n}}{4} Pn=4An;
- 真实观测到有 m {\color{d44d37}m} m个点落在阴影部分,若 n {\color{d44d37}n} n非常大,则真实观测值 m ≈ A n 4 {\color{d44d37}m}\approx\frac{A{\color{d44d37}n}}{4} m≈4An;
- 即得到 A ≈ 4 m n A\approx\frac{4{\color{d44d37}m}}{{\color{d44d37}n}} A≈n4m。
四、 近似积分
1. 用蒙特卡洛求一元函数定积分
Task:求 I = ∫ b a f ( x ) d x I=\int^a_bf(x)dx I=∫baf(x)dx。
- 首先做随机均匀抽样:从 [ a , b ] [a,b] [a,b]中抽取 n n n个样本 x 1 , … , x n x_1,\dots,x_n x1,…,xn;
- 计算 Q n = ( b − a ) ⋅ 1 n ∑ i = 1 n f ( x i ) Q_n=(b-a)\cdot\frac{1}{n}\sum^n_{i=1}f(x_i) Qn=(b−a)⋅n1∑i=1nf(xi);
- Q n Q_n Qn即为积分 I = ∫ b a f ( x ) d x I=\int^a_bf(x)dx I=∫baf(x)dx的近似值;
- 大数定律保证蒙特卡洛的正确性: Q n → I , as n → ∞ Q_n\rightarrow I,\space \text{as}\space n\rightarrow\infty Qn→I, as n→∞
2. 用蒙特卡洛求多元函数积分
Task:给出多元函数 f ( x ) f(\bold x) f(x),其中向量 x ∈ R d \bold x\in\Bbb R^d x∈Rd,求函数在集合 Ω \Omega Ω( Ω ⊂ R d \Omega \subset \Bbb R^d Ω⊂Rd)上的定积分: I = ∫ Ω f ( x ) d x I=\int _\Omega f(\bold x)d\bold x I=∫Ωf(x)dx。
- 随机抽样:从集合 Ω \Omega Ω中均匀抽取 n n n个样本,记作 x 1 , … , x n \bold x_1,\dots,\bold x_n x1,…,xn;
- 计算集合
Ω
\Omega
Ω的体积:
V
=
∫
Ω
d
x
V=\int_\Omega d\bold x
V=∫Ωdx;
- 求体积 V V V也需要定积分,有可能与原问题同样困难,因此需要让集合 Ω \Omega Ω是简单的形状(长方体、球体等),用公式直接计算出体积,避免积分运算。
- 计算 Q n = V ⋅ 1 n ∑ i = 1 n f ( x i ) Q_n=V\cdot\frac{1}{n}\sum^n_{i=1}f(\bold x_i) Qn=V⋅n1∑i=1nf(xi);
- Q n Q_n Qn即为积分 I = ∫ Ω f ( x ) d x I=\int _\Omega f(\bold x)d\bold x I=∫Ωf(x)dx的近似估计。
五、 近似期望
- 定义 X {\color{d44d37}X} X为 d d d维随机变量;
- 定义
p
(
x
)
{\color{orange}p(\bold x)}
p(x)为概率密度函数;
- 性质: ∫ R d p ( x ) d x = 1 \int_{\Bbb R^d}{\color{orange}p(\bold x)}d\bold x=1 ∫Rdp(x)dx=1(连续分布)。
- 函数 f ( x ) f(\bold x) f(x)的期望: E X ∼ p [ f ( X ) ] = ∫ R d f ( x ) ⋅ p ( x ) d x \Bbb E_{{\color{d44d37}X}\sim{\color{orange}p}}[f({\color{d44d37}X})]=\int_{\Bbb R^d}f(x)\cdot{\color{orange}p(\bold x)}d\bold x EX∼p[f(X)]=∫Rdf(x)⋅p(x)dx;
- 首先随机抽样:(注意此处不是均匀抽样)根据概率密度函数 p ( x ) {\color{orange}p(\bold x)} p(x)随机抽取 n n n个样本,记作 x 1 , … , x n \bold x_1,\dots,\bold x_n x1,…,xn;
- 计算 Q n = 1 n ∑ i = 1 n f ( x i ) Q_n=\frac{1}{n}\sum^n_{i=1}f(\bold x_i) Qn=n1∑i=1nf(xi);
- Q n Q_n Qn即为对期望 E X ∼ p [ f ( X ) ] \Bbb E_{{\color{d44d37}X}\sim{\color{orange}p}}[f({\color{d44d37}X})] EX∼p[f(X)]的估计。(样本数量 n n n越大,蒙特卡洛估计越准确)