Monte Carlo Algorithms
Calculating Pi
-
假设我们有一个随机数生成器,它可以随机生成[-1,1]之间的实数,我们每次生成两个随机数,一个作为x,一个作为y,这样我们就有了一个点,所有的点都会落在蓝色的正方形里面,由于x和y都是在[-1,1]之间均匀分布,所以正方形中所有的点都有相同的概率密度,正方形中包含一个绿色的原,半径为1,圆心是原点。刚刚随机生成的点可能会落在圆里面,可能会落在圆外面。这里我们不难得到落在圆中的概率为 π 4 \frac{\pi}{4} 4π。
-
假设我们在正方形区域中随机抽样n个点,那么点落在圆中的期望就是 P n = π n 4 Pn=\frac{\pi n}{4} Pn=4πn。当然这里只是期望,可能我们抽五个点,他们都不在圆中。
-
那么我们怎么判断点是不是在圆中呢?我们可以使用圆的方程可以得到下面一个不等式: x 2 + y 2 ≤ 1 x^2+y^2 \leq 1 x2+y2≤1
-
假设我们均匀随机抽样n个点,通过上述不等式,我们发现有m个点在圆中。如果我们的抽样n非常大,这样我们就可以观测到 m ≈ π n 4 m\approx \frac{\pi n}{4} m≈4πn,所以我们得到 π ≈ 4 m n \pi\approx\frac{4m}{n} π≈n4m。大数定律保证蒙特卡洛的正确性,当 n → ∞ n \rightarrow \infty n→∞, 4 m n → π \frac{4m}{n}\rightarrow\pi n4m→π。
-
这样我们可以得出结论,当我们在正方形中随机抽样n个点,有m个点落在圆中,我们就可以将 π \pi π近似为 4 m n \frac{4m}{n} n4m。这里我们需要保证抽样是均匀的,抽到所有点的概率都相同,否则就不成立。
Buffon’s Needle Problem
- 这也是一个计算Pi的例子,通过画几条平行线,然后撒一把针,通过针与平行线相交的个数可以推算出pi。
- 先画一些平行线,两个平行线之间的距离为d
- 取一些针,针的长度为l。
- 随机把针抛到纸上,针的长度是l,针可能与平行线相交也可能不相交。
- 假设针的位置和角度都是均匀随机的,那么针和平行线有一定概率相交,通过微积分可以计算出相交的概率为
P
=
2
l
π
d
P=\frac{2l}{\pi d}
P=πd2l。
- 上面我们得到了针与平行线相交的概率$ P=\frac{2l}{\pi d} , 这 样 我 们 就 可 以 得 到 期 望 ,这样我们就可以得到期望 ,这样我们就可以得到期望Pn = \frac{2ln}{\pi d} , 这 样 我 们 不 难 计 算 ,这样我们不难计算 ,这样我们不难计算\pi \approx \frac{2ln}{dm}$
近似求积分
-
假设给我们一个函数: f ( x ) = 1 1 + s i n ( x ) ⋅ ( l o g e x ) 2 f(x)=\frac{1}{1+sin(x)\cdot (log_e x)^2} f(x)=1+sin(x)⋅(logex)21
-
计算定积分: I = ∫ 0.8 3 f ( x ) d x I = \int_{0.8}^{3} f(x)dx I=∫0.83f(x)dx
-
这个函数太复杂了我们没有办法求它的定积分,这时候我们就需要用数值方法近似求它的定积分了,蒙特卡洛就是最常用的数值方法。
- 我们首先在[0.8,3]上均匀随机抽样n个样本
- 然后我们计算n个样本的函数值
- 然后用 Q n = ( b − a ) ⋅ 1 n Σ i = 1 n f ( x i ) Q_n=(b-a)\cdot\frac{1}{n}\Sigma_{i=1}^{n}f(x_i) Qn=(b−a)⋅n1Σi=1nf(xi)
- 然后就可以使用 Q n Q_n Qn来近似定积分。
-
刚刚计算的是一元函数的定积分,下面我们看看多元函数的定积分
- 假设f(x)是一个多元函数,自变量是向量x
- 计算函数在集合
Ω
\Omega
Ω上的定积分:
I
=
∫
Ω
f
(
x
)
d
x
I=\int_{\Omega}f(x)dx
I=∫Ωf(x)dx
- 从集合 Ω \Omega Ω中随机抽样n个向量
- 计算 Ω \Omega Ω集合的体积: V = ∫ Ω d x V=\int_{\Omega}dx V=∫Ωdx
- 然后计算 Q n = V ⋅ 1 n Σ i = 1 n f ( i ) Q_n=V\cdot\frac{1}{n}\Sigma_{i=1}^nf(i) Qn=V⋅n1Σi=1nf(i)
- 然后我们使用 Q n Q_n Qn来近似定积分
近似求期望
-
定义X为d维的随机变量
-
P(x)为概率密度函数,它描述了变量X在某个点附近取值的可能性。有这样的性质: ∫ R d p ( x ) d x = 1 \int_{\mathbb{R}^d}p(x)dx = 1 ∫Rdp(x)dx=1
-
使用蒙特卡洛来近似求期望
- 根据概率密度函数 p ( x ) p(x) p(x)来随机抽样
- 计算每个样本 f ( x i ) f(x_i) f(xi)的值,然后求所有n个函数值的平均,将平均值记为: Q n Q_n Qn
- 使用 Q n Q_n Qn作为期望的估计。