什么是蒙特卡洛模拟?
蒙特卡洛模拟是一种通过反复生成随机数来估计特定参数的方法。通过使用生成的随机数并对其进行一些计算,我们可以得到对参数的估计值,而直接计算这个值是不可能的或者代价非常昂贵。
蒙特卡洛模拟不仅可以用来估计一个复杂形状的面积。通过生成很多随机的数字,它们可以被用于对一个复杂过程建模。事实上,它们被用于预报天气,或者评估赢得选举的可能性。
马尔科夫链是什么意思?
这是一系列在几率上相互关联的事件。每一个事件都是一系列结果导致的,而且每一个结果根据一组固定的几率决定接下来将要发生什么。
马尔科夫链的一个重要特征就是无记忆性:在当前时刻,任何预测下一时刻事件所需要的信息都是已知的,追溯历史并不会带来新的信息。像《Chutes and Ladders》等游戏便呈现出了这种无记忆性或马尔可夫属性。现实世界中很少有事件是这样运作的,然而马尔科夫链依然是我们理解世界的有力武器。
在 19 世纪,人们观察到钟形曲线是自然界中的一种常见模式。(比如我们已经注意到,人类的身高遵循一个钟形曲线。)在使用高尔顿(Galton)板时,人们通过在装有钉子的板子上投掷弹珠来模拟重复随机事件的平均值,而在弹珠的分布中再现了正态曲线。
俄罗斯数学家和神学家帕维尔-涅克拉索夫(Pavel Nekrasov)认为,钟形曲线和更普遍的大数定律只是儿童游戏和琐碎谜题的产物,其中每个事件是完全独立的。他认为,现实世界中相互依赖的事件,如人类的行为,并不符合漂亮的数学模式或分布。
安德烈-马尔科夫(Andrey Markov)试图证明非独立的事件也可能符合某种模式,而马尔科夫链正是以他的名字命名的。他的代表工作之一是需要计算一部俄罗斯诗歌作品中成千上万的两字符对。利用这种字对,他计算了每个字的条件概率。也就是说,给定前面的某个字母或空白,下一个字母有一定的机会是 A、T、空白或其他字符。利用这些概率,马尔科夫有能力模拟一个任意长的字符序列。这就是一个马尔科夫链。尽管前几个字符在很大程度上是由起始字符的选择决定的,但马尔科夫表明字符的分布经过足够长的时间会形成一种模式。因此只要受到固定概率的影响,即使是相互依赖的事件也符合一个平均值。
举一个更实用的例子,想象你住在一个有五个房间的房子里。你分别有一间卧室、浴室、客厅、餐厅和厨房。让我们收集一些数据:假设你在任何给定的时间点处在哪个房间,我们需要了解你接下来可能会进入哪个房间。例如,如果你在厨房,接下来你有 30% 的机会呆在厨房,30% 的机会进入餐厅,20% 的机会进入客厅,10% 的机会进入浴室,10% 的机会进入卧室。利用每个房间的一组概率,我们可以构建一个预测链,预测你接下来可能会处于哪些房间。
如果我们想预测房子里的某个人在进入厨房后的一段时间内会在哪里,那么对随后的几个状态进行预测可能是有用的。但是,由于我们的预测只是基于对一个人在房子里的位置的观察,我们有理由认为这种预测不是很完善。例如,如果有人从卧室到浴室,他们更有可能直接回到卧室,而不是从厨房出来。所以马尔科夫属性通常不适用于现实世界。
然而,利用马尔可夫链进行数千次的迭代,确实可以得出你可能在哪个房间的长期预测。更重要的是,这个预测完全不受这个人开始在哪个房间的影响! 从直觉上讲,这是有道理的:为了模拟和描述一个人在长期或一般情况下可能在哪里,他在房子里某个时间点的行为并不重要。因此,马尔科夫链用于预测一个随机变量在几个时间步内的行为并不完全合理,但只要我们了解支配其行为的概率,就可以用来计算该变量的长期趋势。
关键词: 蒙特卡洛模拟 马尔科夫链 平均高度 正态曲线