数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 593|回复: 0

马尔可夫链蒙特卡罗方法零数学入门

[复制链接]
发表于 2024-11-2 19:20 | 显示全部楼层 |阅读模式
马尔可夫链蒙特卡罗方法零数学入门

原创 金朝老师来上课 数据分析学习与实践 2024 年 09 月 21 日 08:38 北京

对我们中的许多人来说,贝叶斯统计法往好了说是巫术魔法,往坏了说就是完全主观的无稽之谈。在贝叶斯方法的标志中,马尔科夫链蒙特卡罗方法尤其神秘。它们肯定是数学繁重、计算量巨大的逻辑,但其背后的基本推理,就像数据科学中的其他许多东西一样,可以变得直观。这就是我的目标。

那么,什么是马尔科夫链蒙特卡罗(MCMC)方法呢?简而言之,就是

MCMC 方法是通过在概率空间中随机抽样来逼近相关参数的后验分布。

在本文中,我将在不涉及任何数学知识的情况下解释这个简短的答案。

首先是一些术语。一个感兴趣的参数只是一些概括我们感兴趣的现象的数字。一般来说,我们使用统计来估计参数。例如,如果我们想了解人类成年人的身高,我们感兴趣的参数可能是以寸为单位的平均身高。分布是参数的每种可能值以及我们观察到每种值的可能性的数学表示。最有名的例子就是钟形曲线:



贝叶斯的统计方法中,分布还有另外一种解释。贝叶斯学派认为,分布不只是代表参数的值以及每个值成为真值的可能性,而是描述我们对参数的信念。因此,上面的钟形曲线表明,我们非常确定参数值非常接近零,但我们认为真实值高于或低于该值的可能性相同,但以某一点为限。

事实上,人类的身高确实遵循一条正态曲线,所以假设我们认为人类平均身高的真实值遵循这样一条钟形曲线:



显然,这个图表所代表的有信念的人多年来一直生活在巨人中间,因为据他们所知,最有可能的成人平均身高是 6 英尺 2 英寸(但他们并不十分自信)。

让我们想象一下,这个人去收集了一些数据,他们观察到一些身高在 5 英尺到 6 英尺之间的人。



在贝叶斯统计中,代表我们对某个参数的信念的分布被称为先验分布,因为它表达了我们在看到任何数据之前的信念。似然分布概括了已知的数据对我们的启示,它表示参数值的范围,并附有每个参数解释我们观察到的数据的可能性。估算使似然分布最大化的参数值只是在回答一个问题:什么样的参数值最有可能观测到我们所观测到的数据?在没有先验信念的情况下,我们可能会止步于此。

然而,贝叶斯分析的关键在于结合先验分布和似然分布来确定后验分布。这就告诉我们,考虑到我们的先验信念,哪些参数值能使我们观测到特定数据的几率最大化。在我们的案例中,后验分布是这样的。



上图中,红线代表后验分布。你可以把它看作是先验分布和似然分布的一种平均值。由于先验分布更短、更分散,因此它代表了一组对人类平均身高真实值 “不太确定 ”的信念。与此同时,似然分布将数据归纳在一个相对较窄的范围内,因此它代表了对真实参数值 “更有把握 ”的猜测。

当先验概念和似然概念相结合时,数据(由似然概念代表)就会主导在巨人中长大的假设个体的微弱先验概念。虽然这个人仍然认为人类的平均身高比数据告诉他的略高,但他主要还是被数据说服了。

在两个钟形曲线的情况下,求解后验分布非常简单。有一个简单的方程可以将两者结合起来。但是,如果我们的先验分布和似然分布不那么乖巧呢?有时,使用形状并不合适的分布来模拟我们的数据或先验信念是最准确的。如果我们的似然最适合用一个有两个峰值的分布来表示,而出于某种原因,我们想要考虑一些非常古怪的先验分布,那该怎么办呢?我在下面手绘了一个丑陋的先验分布,将这种情况可视化了:


用 Matplotlib 渲染的可视化效果

和以前一样,存在某种后验分布,可以给出每个参数值的可能性。但要看到它的样子有点困难,而且也无法通过分析求解。这就是 MCMC 方法。

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

蒙特卡罗模拟只是一种通过重复生成随机数来估计固定参数的方法。在直接计算参数不可能或过于昂贵的情况下,蒙特卡罗模拟可以利用生成的随机数进行计算,从而提供参数的近似值。假设我们想估算下面圆的面积:



由于圆位于边长为 10 英寸的正方形内,因此面积很容易计算为 78.5 平方英寸。不过,我们可以在正方形内随机投放 20 个点。然后我们计算落在圆内的点的比例,再乘以正方形的面积。这个数字就很接近圆的面积了。



由于 20 个点中有 15 个位于圆圈内,因此圆圈看起来大约有 75 平方英寸。对于只有 20 个随机点的蒙特卡罗模拟来说,这还不算太坏。

现在,假设我们想计算蝙蝠侠方程所绘制形状的面积:



这是一个我们从未学过等式的图形!因此,找到蝙蝠信号的面积非常困难。不过,通过在包含该形状的矩形内随机投放点,蒙特卡罗模拟可以很容易地得出面积的近似值!

蒙特卡罗模拟不仅用于估算困难图形的面积。通过生成大量随机数,它们可以用来模拟非常复杂的过程。在实践中,它们被用来预测天气或估计赢得选举的概率。

了解 MCMC 方法的第二个要素是马尔科夫链。马尔可夫链简单来说就是事件序列,这些事件在概率上相互关联。每个事件来自一组结果,每个结果根据一组固定的概率决定下一个结果。

马尔科夫链的一个重要特征是它们是无记忆的:预测下一个事件所需的一切信息在当前状态下都是可用的,了解事件的历史不会带来新的信息。像 Chutes and Ladders 这样的游戏就体现了这种无记忆性,或者说马尔可夫属性,但现实世界中很少有东西能真正这样运行。然而,马尔科夫链是理解世界的有力方法。

19 世纪,人们观察到钟形曲线是自然界的一种常见模式。(我们注意到,例如,人类的身高就遵循着一条钟形曲线。)高尔顿棋盘(Galton Boards)通过在一块装有钉子的棋盘上投掷弹珠来模拟重复随机事件的平均值,其弹珠分布再现了正态曲线:



俄罗斯数学家和神学家帕维尔-涅克拉索夫认为,钟形曲线以及更广义的大数定律只是儿童游戏和琐碎谜题的产物,在这些游戏和谜题中,每个事件都是完全独立的。他认为,现实世界中相互依存的事件,如人类行为,并不符合漂亮的数学模式或分布。

以马尔科夫链命名的安德烈-马尔科夫试图证明,非独立事件也可能符合模式。他最著名的一个例子是计算俄罗斯诗歌作品中成千上万的双字符对。利用这些字符对,他计算出了每个字符的条件概率。也就是说,如果前面有某个字母或空格,那么下一个字母就有一定几率是 A 、T 或空格。利用这些概率,马尔科夫能够模拟任意长的字符序列。这就是马尔科夫链。虽然最初的几个字符在很大程度上取决于起始字符的选择,但马尔科夫证明,从长远来看,字符的分布是有规律可循的。因此,即使是相互依存的事件,如果它们的概率是固定的,也会符合一个平均值。

举个更有用的例子,想象一下你住在一栋有五个房间的房子里。你有卧室、浴室、客厅、餐厅和厨房。让我们收集一些数据,假设你在任何给定的时间点上所处的房间就是我们所需要的,来说明你下一个可能进入的房间。例如,如果你在厨房,你有 30% 的几率留在厨房,30% 的几率进入餐厅,20% 的几率进入客厅,10% 的几率进入浴室,10% 的几率进入卧室。利用每个房间的概率集,我们可以构建一个预测链,预测你接下来可能会去哪个房间。

如果我们想预测房子里的某个人在厨房待了一会儿后会去哪里,那么对几个状态之外的预测可能会有用。但是,由于我们的预测只是基于对一个人在房子里的位置的一次观察,我们有理由认为预测结果不会很好。举例来说,如果某人从卧室去了浴室,那么与从厨房出来相比,他更有可能马上回到卧室。因此,马尔可夫性质通常并不适用于现实世界。

然而,运行马尔可夫链进行数千次迭代后,确实可以长期预测出你可能会在哪个房间。更重要的是,这种预测完全不受一个人一开始在哪个房间的影响!从直觉上讲,这是有道理的:为了模拟和描述一个人在长期或一般情况下可能会呆在的房间,他在某一时刻呆在房子里的哪个房间并不重要。因此,马尔科夫链虽然看起来是一种不合理的方法,但如果我们理解了支配随机变量行为的概率,就可以用它来计算该变量的长期趋势。

如果我们对蒙特卡罗模拟和马尔可夫链有一定的了解,我希望对 MCMC 方法工作原理的无数学解释会非常直观。

回想一下,我们正试图估计我们感兴趣的参数--人类平均身高的后验分布:



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

我们知道后验分布在先验分布和似然分布的某个范围内,但无论出于什么原因,我们都无法直接计算它。使用 MCMC 方法,我们可以有效地从后验分布中提取样本,然后计算所提取样本的平均值等统计数据。

首先,MCMC 方法会选择一个随机参数值。模拟将继续产生随机值(这是蒙特卡洛部分),但要遵循某些规则,以确定什么是好的参数值。诀窍在于,对于一对参数值,可以计算出哪个参数值更好,方法是根据我们的先验信念,计算出每个参数值解释数据的可能性有多大。如果一个随机生成的参数值比上一个参数值更好,它就会以一定的概率被添加到参数值链中,这个概率由它比上一个参数值好多少决定(这是马尔可夫链的部分)。

为了直观地解释这一点,让我们回顾一下,某个值的分布高度代表观察到该值的概率。因此,我们可以认为我们的参数值(x 轴)呈现出高概率和低概率区域,如 y 轴所示。对于单个参数,MCMC 方法首先沿 x 轴随机抽样:


红点为随机参数样本

由于随机样本的概率是固定的,因此它们往往会在一段时间后趋同于我们感兴趣的参数的最高概率区域:



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

收敛发生后,MCMC 采样会产生一组点,这些点是后验分布的样本。围绕这些点绘制直方图,并计算任何你喜欢的统计数据:



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

MCMC 方法还可用于估计不止一个参数(如人类身高和体重)的后验分布。对于 n 个参数,在 n 维空间中存在高概率区域,在这些区域中,某些参数值集能更好地解释观察到的数据。因此,我认为 MCMC 方法是在_概率空间内随机抽样,以近似计算后验分布。

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

MCMC 方法用于通过在概率空间中随机抽样来逼近相关参数的后验分布。

希望我的简短回答已经解释了为什么要使用 MCMC 方法,以及它们是如何工作的。这篇文章的灵感来源于数据科学沉浸式课程中的一次演讲。那次演讲的目的是向非技术听众解释马尔科夫链蒙特卡洛方法,我在这里也尝试做了同样的解释。

金朝老师来上课

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-5-10 05:17 , Processed in 0.081335 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表