什么是蒙特卡洛法?
就是随机投点计算圆周率的那个例子。
三门问题如何理解?(当然你可以用暴力蒙特卡洛算出)
比如说主持人和你做游戏,你有一个箱子,里面有1个球;主持人一个箱子,里面有2个球。他知道每个球的颜色,但你啥也不知道。但是3个球里面只有1个紫色的球,2个蓝色的球,谁手里面有紫色的球,谁就获得大奖。
主持人说:你要和我换箱子吗?
当然换,我箱子里只有1个球,中奖率
1
3
\frac{1}{3}
31,他箱子里有2个球,中奖率
2
3
\frac{2}{3}
32 ,换的中奖率是不换的2倍。
这是这个游戏的结论。现在情况变了:
主持人从他的箱子里扔了一个蓝色的球之后说:你要和我换箱子吗?
当然换,我箱子里只有1个球,中奖率
1
3
\frac{1}{3}
31,他箱子里有2个球,中奖率
2
3
\frac{2}{3}
32。扔了一个蓝色的,中奖率没变还是
2
3
\frac{2}{3}
32,换的中奖率是不换的2倍。
蒙特卡洛算法实际上是大数定理的应用吧,同分布,有期望就行。蒙特卡罗法的核心是随机抽样(random sampling)。
下面是如何求积分
p
(
x
)
p(x)
p(x)是一个分布,那么
f
(
x
)
p
(
x
)
\frac{f(x)}{p(x)}
p(x)f(x)就相当于
x
x
x一样了。整体就会变成一个期望。然后估计这个期望值就用蒙特卡洛暴力法了,采样就是采用
p
(
x
)
p(x)
p(x)的概率分布采样,如果是均匀分布呢?实际上大一的积分估计介绍就是这么来的,蒙特卡洛的特例而已。这就足以证明其正确性了。
现在的问题转到了如何按照
p
(
x
)
p(x)
p(x)采样若干个样本上来。但是,按照
p
(
x
)
p(x)
p(x)采样绝非易事,因为有些时候我们根本不知道
p
(
x
)
p(x)
p(x)是什么,或者有时候是一个很复杂的表达式,计算机没法直接抽样。也就是说,
p
(
x
)
p(x)
p(x)也不是随随便便取的。
随机抽样方法1:拒绝-接受采样
随机抽样方法2:重采样技术reparameterization trick
我们需要大量采样,虽然我们有拒绝-接受采样和重采样技术,但是依旧面临采样困难的问题。巧了,马尔科夫链可以帮我们解决这个难题。
马尔科夫链你是知道是什么样的。如果我们得到了某个平稳分布所对应的马尔科夫链状态转移矩阵,我们就很容易采用出这个平稳分布的样本集。