怎么计算“蝙蝠侠”的面积?室友唱的玛卡巴卡之歌,给了我灵感…

来源:网络 时间:2022-11-03 13:00 阅读量:18052   
分享:

对于大多数人来说,贝叶斯统计可能只是听说过的一个概念。马尔可夫链蒙特卡罗方法作为其符号化方法之一,多少有些神秘。这种方法虽然涉及到巨大的计算量,但背后的基本原理却可以直观地表达出来。这就是这篇文章想要呈现给你的。那么,什么是马尔可夫链蒙特卡...

怎么计算“蝙蝠侠”的面积?室友唱的玛卡巴卡之歌,给了我灵感…

对于大多数人来说,贝叶斯统计可能只是听说过的一个概念。马尔可夫链蒙特卡罗方法作为其符号化方法之一,多少有些神秘。这种方法虽然涉及到巨大的计算量,但背后的基本原理却可以直观地表达出来。这就是这篇文章想要呈现给你的。

那么,什么是马尔可夫链蒙特卡罗方法呢?简单来说,就是:

MCMC方法是一种在概率空间中通过随机抽样来逼近感兴趣参数后验分布的方法。

看不懂?不要怕,我会在这篇文章里解释这个简单的表达式,但是没有任何数学推导!

首先介绍一些术语。我们感兴趣的参数是一些数字,也就是我们感兴趣的是什么量。我们通常使用统计方法来评估参数。比如我们想知道成年人的身高,我们感兴趣的参数可能是平均身高。分布是参数可能值及其概率的数学表示。最著名的例子是钟形曲线:

如果我们采用贝叶斯统计的方法,我们将对分布有更好的理解。贝叶斯统计除了简单的把分布理解为一个参数的值,以及这些值取真值的可能性,还认为分布描述了我们对一个参数的期望,也就是在看到实际测量数据之前的期望数据和相应的可能性。所以上面的钟形线说明我们非常确信参数的值接近于0,但是在某种程度上我们认为真实值大于或小于0的概率是一样的。

这样看来,人类的身高确实遵循一条正常的曲线。如果我们认为人类的真实平均身高遵循如下钟形曲线:

显然,具有如图认知的人可能生活在巨人国,因为他们认为最有可能的成年人平均身高是6英尺2英寸。

让我们想象一下,这个人去收集一些数据,他找到了一些5到6英尺高的人。我们可以将这些数据呈现如下,另一条正态曲线为这些数据提供了最好的解释。

在贝叶斯统计中,代表我们对一个参数的期望的分布称为先验分布,因为这种知识在我们看到一组真实数据之前就存在了。似然分布通过呈现参数值的范围和概率来总结我们的观察数据所呈现的信息。评估使似然分布最大化的参数值,就是回答下面这个问题:在我们观察到的数据中,什么参数值出现的概率最高?没有事先的了解,我们可能就此打住。

然而,贝叶斯统计的关键在于综合先验分布和似然分布来给出后验分布。这告诉我们,如果考虑先验认知,什么参数最有可能被观察到。在我们的示例中,后验分布如下所示:

在上图中,红线代表后验分布。你可以把它看作是先验分布和似然分布的平均值。因为先验分布更短更宽,意味着我们期望真实的人平均身高有更大的“不确定性”。而似然分布是对分布在较窄范围内的数据进行概括,所以它代表真实的参数值应该具有更强的“确定性”。

当综合考虑先验和似然分布时,得到的后验分布与似然分布非常接近,即我们假设的在巨人中长大的人脆弱的先验信念似乎受到了数据的影响。虽然这个人仍然相信人类的平均身高比数据告诉我们的要高一点,但是他已经在很大程度上被数据说服了。

对于两条钟形曲线的情况,很容易求解后验概率。这两者可以用一个简单的等式结合起来。但是如果我们的先验分布和似然分布不是那么完美呢?有时,使用不规则形状分布来描述我们的数据更准确。如果我们需要用双峰分布来描述我们的数据,而我们的先验分布的形状是奇数,该怎么办?比如下面这个例子,先验分布被故意画的很丑:

在Matplotlib中呈现的可视化,由MS Paint增强

和之前一样,后验分布是存在的,它给出了每个参数的可能性。但是很难看出是什么样子,也很难给出解析解。于是出现了MCMC方法。

MCMC方法允许我们在没有直接计算的情况下估计后验分布的形状。为了理解它的工作原理,我先介绍蒙特卡罗模拟,然后讨论马尔可夫链。

蒙特卡罗模拟是一种通过重复产生随机数来估计特定参数的方法。利用生成的随机数,进行一些计算,就可以得到参数的估计值,但是直接计算这个值是不可能的或者非常昂贵的。

假设我们想估计以下圆的面积:

因为圆是边长十英寸的正方形的内切圆,所以很容易算出它的面积是78.5平方英寸。另一种方法,我们可以在正方形空间中随机散布一些点。接下来我们统计点落在圆内的比例,然后乘以正方形的面积。得到的数字非常接近圆的面积。

因为20个点中有15个落在圆内,所以看起来圆的近似面积是75平方英寸。看来蒙特卡罗方法即使只用20分也能得到很好的答案。

现在,想象一个场景,我们需要计算以下“蝙蝠侠”方程对应的图形面积:

你如何找到这个形状的面积?我们从来没学过!所以这似乎是一项艰巨的任务。但是蒙特卡罗模拟通过在包含这个图形的矩形空间内随机散射点,可以很容易的给我们一个近似的答案!

蒙特卡罗模拟不仅可以用来估计复杂形状的面积。通过生成许多随机数,它们可以用来模拟一个复杂的过程。事实上,它们被用来预测天气或评估赢得选举的可能性。

为了理解MCMC方法,我们需要知道的第二个元素是马尔可夫链。这是一系列概率相关的事件。每一个事件都是由一系列结果引起的,每一个结果都按照一组固定的概率决定了接下来会发生什么。

马尔可夫链的一个重要特点是无记忆性:在当前时刻,预测下一时刻所需的任何信息都是已知的,追溯历史不会带来新的信息。像滑道和梯子这样的游戏显示了这种无记忆或马尔可夫属性。世界上很少有事件是这样运作的,但马尔可夫链仍然是我们认识世界的有力武器。

在19世纪,人们发现钟形曲线是自然界中的一种常见模式。使用高尔顿板时,人们用钉子在板上投掷弹子,模拟重复随机事件的平均值,弹子的分布再现正态曲线:

俄罗斯数学家和神学家帕维尔·涅克拉索夫(Pavel Necrasov)认为,钟形曲线和更普遍的大数定律只是儿童游戏和琐碎谜题的产物,其中每个事件都是完全独立的。他认为现实世界中相互依存的事件,比如人类的行为,并不符合美好的数学模型或分布。

安德烈·马尔科夫试图证明非独立事件也可能符合某种模式,马尔科夫链就是以他的名字命名的。他的代表性工作之一是计算一首俄罗斯诗歌中的数千个双字对。利用这个词对,他计算了每个词的条件概率。也就是说,给定前面某个字母或空格,有一定几率下一个字母是A、T、空格或其他字符。使用这些概率,Markov有能力模拟任意长的字符序列。这是一个马尔可夫链。虽然最初的几个字符很大程度上是由起始字符的选择决定的,但马尔科夫表明,字符的分布在足够长的时间后会形成一种模式。所以,只要受固定概率的影响,即使是相互依存的事件也符合一个平均值。

举个更实际的例子,假设你住在一个有五个房间的房子里。你有卧室、浴室、客厅、餐厅和厨房。让我们收集一些数据:假设在任何给定的时间点你在哪个房间,我们需要知道你接下来可能会进入哪个房间。比如你在厨房,那么你有30%的机会待在厨房,30%的机会进餐厅,20%的机会进客厅,10%的机会进卫生间,10%的机会进卧室。使用每个房间的一组概率,我们可以建立一个预测链来预测您接下来可能会在哪个房间。

如果我们想预测房子里的某人在进入厨房后的一段时间内会在哪里,预测以下状态可能会有用。然而,由于我们的预测只是基于对一个人在房子里的位置的观察,我们有理由认为这个预测并不完美。例如,如果有人从卧室去浴室,他们更有可能直接回到卧室,而不是从厨房出来。所以马尔可夫属性通常不适用于现实世界。

但是,使用马尔可夫链进行上千次迭代,确实可以对你可能在哪个房间进行长期预测。更何况这个预测完全不受这个人从哪个房间开始的影响!直觉上,这是有意义的:为了模拟和描述一个人在长期或一般情况下可能在哪里,他在房子里某个点的行为并不重要。因此,马尔可夫链预测一个随机变量在几个时间步内的行为并不完全合理,但只要知道支配其行为的概率,就可以用它来计算该变量的长期趋势。

在了解了蒙特卡罗模拟和马尔可夫链的一些知识后,希望不用数学推导就能直观地展示MCMC方法是如何工作的。

回顾过去,我们试图估计我们感兴趣的参数,即人类平均身高的后验分布。

我不是可视化专家,显然我也不擅长将我的例子保持在常识范围内:我的后验分布例子严重高估了人类的平均身高。

我们知道后验分布的信息包含在我们的先验分布和似然分布中,但是不管是什么原因,我们都无法直接计算出来。使用MCMC方法,我们将有效地从后验分布中提取样本,然后计算提取样本的平均值等统计数据。

首先,通过MCMC方法选择一个随机参数值。模拟将继续生成随机值,但应遵循一些规则来确定什么是好的参数值。诀窍在于我们有数据的先验知识,所以对于一对参数值,我们可以通过计算哪个参数值更能解释数据来评价哪个参数值更好。如果一个随机产生的参数值比上一个更好,它将被添加到参数价值链中,其概率由它的“好”程度决定(这是马尔可夫链部分)。

为了直观地解释这一点,让我们回忆一下,分布在某个值上的高度代表观察到那个值的概率。所以可以认为我们的参数值显示的是高低概率区域,显示在Y轴上。对于单个参数,MCMC方法首先沿X轴随机采样:

红点是随机参数样本。

由于随机样本服从固定的概率,所以在一段时间后,它们倾向于收敛到我们感兴趣的参数的概率最高的区域:

蓝点仅代表任何时间点之后的随机样本,此时预计会出现收敛。注意:我将点垂直堆叠纯粹是为了说明问题。

收敛后,MCMC采样产生一组点,这些点是后验分布的样本。围绕这些点画一个直方图,并计算你想要的任何统计数据。

根据MCMC模拟生成的样本集计算的任何统计数据都是我们对该统计数据真实后验分布的最佳猜测。

MCMC方法还可以用来估计多个参数的后验分布。对于n个参数,在n维空间中存在概率较大的区域,某些参数值集可以更好地解释观测数据。所以我认为MCMC方法是在一个概率空间内随机抽样逼近后验分布的过程。

马尔可夫链的蒙特卡罗方法是什么?“这个问题的简短回答是:

MCMC方法是一种在概率空间中通过随机抽样来逼近感兴趣参数后验分布的方法。

我希望我已经解释清楚了这句话,那就是你为什么使用MCMC方法,以及它们是如何工作的。本文灵感来源于我在美国华盛顿关于数据科学的演讲。那次演讲的目的是向非专业观众解释马尔可夫链的蒙特卡罗方法,我在这篇文章中也试图这样做。

免责声明:该文章系本站转载,旨在为读者提供更多信息资讯。所涉内容不构成投资、消费建议,仅供读者参考。

热文推荐
头条推荐
最新资讯